選舉黃頁

http://k.olc.tw/elections/

Created by 江明宗 . 政 . 路過

MPTT, Modified Preorder Tree Traversal

傳統樹狀查詢

``` $first = 'SELECT * FROM areas WHERE parent_id = ?'; foreach($first) { $second = 'SELECT * FROM areas WHERE parent_id = $first.id'; foreach($second) { $third = 'SELECT * FROM areas WHERE parent_id = $second.id'; } } ```

MPTT 找整棵樹

``` $root = 'SELECT * FROM areas WHERE id = ? LIMIT 1'; $tree = 'SELECT * FROM areas WHERE lft >= $root.lft AND rght <= $root.rght'; ```

MPTT 做麵包屑

``` SELECT * FROM areas WHERE lft <= $leaf.lft AND rght >= $leaf.rght ORDER BY lft ASC ``` **** 只要一個查詢! ****

MPTT 問題

  • 每次增刪單筆資料就需要所有的 lft & rght
  • 不適合異動頻繁的資料

選區 v.s. 行政區


ex. 臺南市議員第1選舉區 => 東山區、白河區、後壁區

UUID as PK


  • 姓名很容易重複!而且有改名的可能。
  • 中選會資料沒有可信賴的索引值

經本會評估尚不適採行

陳志明


  • [鄉鎮市民代表]宜蘭縣蘇澳鎮第4選舉區
  • [村里長]臺北市松山區東昌里
  • [村里長]臺北市士林區社新里
  • [村里長]屏東縣屏東市大湖里
  • [村里長]宜蘭縣羅東鎮國華里

utf8 utf8mb4


ex. 石𥕢里, 𦰡拔里, 新竹市北區中興里 洪熒𤎌

RFC 3629

In UTF-8, characters from the U+0000..U+10FFFF range are encoded using sequences of 1 to 4 octets.

MySQL

  • utf8 = 3-Byte UTF-8 Unicode Encoding
  • utf8mb4 = 4-Byte UTF-8 Unicode Encoding (MySQL 5.5)

鄉鎮市民代表


選區資料不完整、圖片格式

有沒有鄉鎮市民代表選區的八卦啊?

鄉民協作!

資料來源


現任資料、使用者自行建立、中選會

任何人都可以編輯!

審核介面

地圖呈現


ronnywang++

Google Maps JavaScript API v3

API (alpha)

/api/areas/index/(uuid)

  • 取得單層行政區資料, index/ 後面可以接個別行政區 id 來取得下一層資料
  • index/ 後面沒有參數會顯示最上層(目前是縣市)

/api/elections/index/(uuid)

  • 取得單層選舉區資料,index/ 後面可以接個別選舉區 id 來取得下一層資料
  • index/ 後面沒有參數會顯示最上層(目前是九種選舉類型)

/api/elections/candidates/(uuid)

  • 取得個別選舉區下所有候選人資料

/api/elections/s/(keyword)

  • 針對行政區名稱進行搜尋

/api/candidates/s/(keyword)

  • 針對候選人名稱進行搜尋

/api/candidates/view/(uuid)

  • 檢視特定候選人資料

離線版

Google 爬蟲

新聞集錦


ronnywang++

kcwu++

kiang++ (?)

Q & A