之前為了想練習寫 Google Map 小程式(請見[JavaScript] Google Map API的標記叢集(marker clusterer)使用心得 ),抓了新北市政府的 open data,裡面用 TWD97 記錄座標,但 Google Map 只吃 WGS84,在網路上搜尋一下公式,裡面有很多符號看不懂。 Orz
求教了唸地理系出身的表姐,她幫我找了一篇使用 PHP 轉換 TWD97 到 WGS84 的文章:
- Vexed 的《TWD97 座標轉經緯度》(PHP)
- source code: https://gist.github.com/pingyen/1346895
本來以為座標轉換就是經緯度轉度分秒這麼簡單的事,後來才知道,WGS84 是以十進位來表示經緯度,傳統的經緯度是60進位,例如北緯23.5度,是23度30分(1分有60秒,所以一度有3600")。
TWD97 是二度分帶座標,在民國87年左右台灣才公告使用(早期用 TWD67)。「想像你要把立體的地球展開成平面地圖,但展開不會很平,左右兩邊會變形,早期用六度分帶是把地球剪開成60片每片6度寬,共360度,但位於每片的左右邊邊因為弧度,誤差愈大。台灣位於東經120~122度,我們後來用『二度』一片的概念來投影,中央經線設121度。你看到的y座標有7碼,例如:2612345代表以赤道為0,位於赤道以北2612345公尺的位置,2612公里又345公尺。」
原本內心有點 murmur 新北市政府為什麼不用WGS84,接軌國際,討論後才知道 TWD97 是地區性的很詳細的座標。
總之後來就用 Proj4js 來轉換了~
- 首先要去下載 Proj4js。
- 解壓縮後把 \lib 資料夾裡的東西放到專案資料夾裡,
並且在要使用 Proj4js 的網頁裡引用 \lib\proj4js.js。 - 接下來就是知其然不知其所以然的亂抄了Orz
相關連結
- Proj4js http://trac.osgeo.org/proj4js/
- 大地座標系統與二度分帶座標解讀 - 上河文化 http://www.sunriver.com.tw/grid_tm2.htm
留言列表