公告版位
我是公告

目前日期文章:201311 (2)

瀏覽方式: 標題列表 簡短摘要
前幾天建了一個 GitHub repository: https://github.com/ronnywang/data.taipei.gov.tw/
裡面把一些臺北市政府資料開放平台的地理相關資料,從原先的 ShapeFile 轉換成 GeoJSON,包括 Big5 的也轉成 UTF-8 了,座標也都統一換成經緯度
列表在 https://github.com/ronnywang/data.taipei.gov.tw/blob/master/geo.csv

GitHub 因為現在有內建 GeoJSON 預覽功能,所以有一些資料就可以直接看了
像是 臺北都會區大眾捷運系統路網圖, 臺北都會區大眾捷運系統車站點位圖, 大臺北地區捷運車站出入口

完整列表可以到
http://ronnywang.github.io/data.taipei.gov.tw/index.html 查看

不過我也沒有轉換全部的資料,如果有需要的資料沒有轉換的,可以有以下選擇:
1. 自行 fork http://github.com/ronnywang/data.taipei.gov.tw/ ,更新 geo.csv (不需要填入更新時間) ,跑一遍 scripts/geo_update.php (需安裝 PHP, PHP-Curl, NodeJS) ,就會轉換好資料並且更新 geo.csv 的更新時間
記得要送 pull request 給我讓我也更新一下喔
2. 送 issue 給我,如果我有空的話也可以幫你抓一下

希望這些資料能夠讓大家更容易使用,這樣才能展現 open data 的力量!

榮尼王 發表在 痞客邦 PIXNET 留言(0) 人氣()

其實地球上根本就不該存在 Big5 JSON 這種東西
RFC 4627 有提到: JSON text SHALL be encoded in Unicode.
所以像是 PHP 在 json_decode 時,如果遇到非 UTF-8 字元,就會直接噴 NULL 給你,並且跳出 「Malformed UTF-8 characters, possibly incorrectly encoded」,連用都不給你

但是假如很不幸的,就真的拿到了一個 Big5 JSON 怎麼辦?
例如像我現在要用 ogr2ogr 把政府 open data 的資料轉成 GeoJSON ,結果因為他的內容是 Big5 ,產生出來就是 Big5 JSON 了
直接用 iconv 轉,就死在台北市內湖區成功路了

昨天找到一個解決方法是

1. env LC_CTYPE=c sed -i 's/[\x81-\xFE]\\\)\\/\1/g' {big5_file.json}
(如果 LC_CTYPE 預設是 UTF-8 的話,就會在 \x81 這邊出現錯誤,所以改成 c 讓他可以處理任何 binary)
2. iconv -f big5 -t utf-8 {big5_file.json}

因為 Big5 的 SPEC 有說雙位元字的第一個位元會是 0x81 - 0xfe 之間 ,所以只要針對 [0x81-0xfe] 和 \\ 連在一起的替換成只有一個 \ 就行了
這樣子許功蓋都可以解決了

(都已經快 2014 年了,還要處理 Big5 問題...)

榮尼王 發表在 痞客邦 PIXNET 留言(0) 人氣()