TWD97 to Longitude/latitude

Tylerastro
5 min readSep 15, 2021

座標轉換

This article provides python code to transform TWD97 to longitude/latitude. Thanks to many great articles and gists that provides informative knowledge about coordinate systems. Due to it mainly applies to Taiwan datum system, this article is in Chinese. If you’d like to know more, please refer to the reference below.

Edited on 2022/5/15
重新編輯於2022.5.15

原本這篇只是工作上的副產品,結果迴響比預期的大,這次編輯會做一些補充以及把當初有用到的code重新放上。

最近接手處理地理資料,由於是關於水資源鑽井,其中座標都是使用大地座標而非經緯度,以天文處理資料的經驗,第一步一定是要確認資料的品質,最直接方法就是視覺化整個資料,那我想到的就是使用上一篇所提到的Folium,將座標換成經緯度,直接在地圖上標示出來,在使用altair或者內建的tooltip提供更多資訊,但找了一整天網路,居然沒有幾篇文章在討論這公式,倒是很多人提供寫好的程式,不過沒有python版本,之後找了幾組把他們轉成python版本。

中間過程牽涉到這些座標是從哪個投影方式出來的,是圓柱投影,麥卡托投影或者等距離投影等等,而中間67與97系統在原點座標以及地球曲率參數等有所不同,簡而言之,在67、97、經緯度三種座標系統上,我們必須有各個的轉換公式。
而中間的公式卻沒有一個彙整,經過各路大神抽絲剝繭後,這篇文章提供經緯度至97,67至97,以及97至經緯度等三種轉換方法,使用Python code。

整個code是參照kuro大的JS以及Vexed大的php來寫python版本,如果需要C#版本,可以參考ola大,或者需要經緯度轉TWD97,可以參考小提琴大的python code。
當中參考的文獻連結已經掛掉了,我猜類似或者相同的文章為這篇:https://fypandroid.wordpress.com/2011/09/03/converting-utm-to-latitude-and-longitude-or-vice-versa/,文章裡面提供了算式的實質意義,算是比較詳細的解釋整個過程。

這邊比較一下在成大水工所跟我的數值比較(成大數值與proj的結果相近)
以 TWD97 x = 174458, y = 2525824帶入,在成大結果為(120.26401727635,22.8315985084819),而在python結果為(120.2640171785886, 22.831598506259798),這誤差在小數點後7位以下才出現,我想應該是有達到目的了。

如果你喜歡這篇文章或者這篇文章有幫助到你,歡迎留個言讓我知道:)

References:

--

--

Tylerastro

Astronomy Master's graduate dedicated to coding for a better world.