TWD97 convert to WGS84 with MongoDB
政府資料開放平臺的資料很多都是 shp 檔案而不提供 json 檔案。(這次的練習之前根本沒聽過 shp 格式)。在此記錄研究了一天之後的成果跟心得。
TWD97 convert to WGS84 with MongoDB
政府資料開放平臺的資料很多都是 shp 檔案而不提供 json 檔案。(這次的練習之前根本沒聽過 shp 格式)。在此記錄研究了一天之後的成果跟心得。
要把 json 資料匯入 MongoDB ,寫一個 javascript 檔讓 mongo shell 執行,就可以操作資料庫,直接轉換座標資料! 大致流程:
shp 檔案 -> json 檔案 -> import to MongoDB database -> 寫一個 javascript 檔,讓 mongo shell 直接操作資料庫轉換、更新資料。
這個 javascript 檔 主要做兩件事:
- 轉換:讀取 database 的 TWD97 座標 然後轉換成 WGS84 座標
- 更新:然後把 WGS84 座標丟回 database,更新coordinates 這個欄位
shp 檔案
政府資料開放平臺原始資料:**臺鐵車站(共266個)shp 檔案**
轉成 json 檔案
- shp to Json https://mygeodata.cloud/converter/shp-to-json
- 把解壓縮之後的 .shp / .dbf / .prj /.shx 都上傳到上述網站, 選擇輸出 GeoJSON 。得到一個 geojson 檔案。副檔名 .geojson 改成 json,用 IDE 編輯器開啓。最前面有類似 Header 的多餘資料,不需要 import 進資料庫,把它去除。

在 IDE 下顯示的 json 檔
json 檔案 匯入 MongoDB 資料庫
mongoimport -d mydb -c mycollection — jsonArray < your/path/data.json
用 MongoDB Compass 看一下資料狀況。

座標數值一看就很怪,網路上做一下功課,原來這種座標是 TWD97 格式,要轉換成 WGS84。
mongo shell 執行 js 檔案,進行座標轉換
- mongo shell 可以直接執行 javascript 檔案,mongoDB 操作語法原生就是 javascript,寫起來很親切。
- 整個轉換過程中,最重要的就是轉換函數了 。感謝 Kuro 還有之前編寫此函數的大大們!
- terminal 執行下方 javascript 程式碼
mongo theCode.js
[embed]mongo theCode.js
一些特別要注意的重點。複習一下 MongoDB operator 重要觀念。
- $set operator 只更新特定 filed 不會覆蓋掉其他的 ; dot notation 讓可讀性變好,多善用。
- _id 不能只傳 string , 要用 ObjectId 包起來
- 座標的格式(注意 Lon , Lat 經緯度順序,跟 google map 或其他常用 api 順序相反):
type: Point , coordinates: [ **Lon, Lat** ]
- Mongo shell 讀懂 ES6 語法,平常怎麼寫 js 這邊也就怎麼寫不用擔心。不過 console.log 不能使用,mongo shell 使用的是 print() ; printjson() 這兩個方法。

全臺灣車站分佈圖

轉換後,用 MongoDB Compass 看一下資料狀況。
轉換後,用 MongoDB Compass 看一下資料狀況。
- 當資料格式是:type: Point , coordinates: [ Lon, Lat ] 順序是 [ 經,緯 ]( WGS84)這樣形式的時候,MongoDB Compass 的 Schema 視窗下,會用地圖方式顯示每筆資料地理位置,可以用圓面積選取的方式多筆 query。在 Schema 視窗 ,拖拉出同心圓做選擇(不知能否改用矩形區域做圈選,待研究)。

圈選後的每筆資料
메타데이터
- post_id
- e474e962bf2a
- slug
- twd97-convert-to-wgs84-with-mongodb-e474e962bf2a
- url
- https://medium.com/@wodyaln/twd97-convert-to-wgs84-with-mongodb-e474e962bf2a
- canonical_url
- https://medium.com/@wodyaln/twd97-convert-to-wgs84-with-mongodb-e474e962bf2a
- author_url
- https://medium.com/@wodyaln
- status
- ok
- fetched_at
- 2026-07-30 02:25:47