之前為了想練習寫 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 來轉換了~

  1. 首先要去下載 Proj4js
  2. 解壓縮後把 \lib 資料夾裡的東西放到專案資料夾裡,
    並且在要使用 Proj4js 的網頁裡引用 \lib\proj4js.js。
  3. 接下來就是知其然不知其所以然的亂抄了Orz

 

相關連結

 

文章標籤

創作者介紹
創作者 fannys23 的頭像
fannys23

小攻城師的戰場筆記

fannys23 發表在 痞客邦 留言(0) 人氣()