openstreetmap

將EPSG3826坐標系GML檔轉換至EPSG4326後匯入openstreetmap

最近拿到一個gml檔案,發現裡面的座標檔案很奇怪,不是我們常見的120.0000,24,0000 這樣,反而是254200.000000000 2741200.00000000,經查詢才發現這是EPSG:3826坐標系的座標,這是台灣常用的坐標系統,而google 是 EPSG:4326也就是WGS84大地基準,

橫麥卡托(Transverse Mercator)系:

TM2(TWD97,中央經線121度)(適用臺灣本島,民國87年之後施行迄今) => EPSG:3826

經緯度(Latitude-Longitude)系:
WGS84經緯度(全球性資料,如:GPS) => EPSG:4326
TWD97經緯度(國土測繪中心發佈全國性資料)=> EPSG:3824

這邊有座標轉換工具可以玩看看,反正我們現在要把拿到的EPSG:3826座標gml先轉換到我們熟悉的EPSG:4326經緯度座標,我們這邊利用ogr2ogr 這套工具來轉換,請記得把對應的input.gml換成你要轉換的檔案

ogr2ogr -f "GML" -s_srs "EPSG:3826" -t_srs "EPSG:4326"  output.gml  input.gml

轉完後你可以打開來看看,gml裡面關於座標的部分,應該都已經轉換成經緯度座標檔案了

安裝ogr2osm

這套軟體是可以幫我們把gml檔案轉換成openstreetmap所需要的osm檔案

git clone https://github.com/roelderickx/ogr2osm.git
cd ogr2osm
python setup.py install

安裝完畢後你可以透過下面的指令來做轉換,請記得把對應的input.gml換成你要轉換的檔案

ogr2osm -f -o output.osm  input.gml
#或是想指定起始ID
ogr2osm -f -o output.osm --id 1999 input.gml

之後你就可以把檔案匯入你的資料庫去了

錯誤解決

如果你匯入的過程中有出現類似這樣的錯誤ERROR: Input data is not ordered: node id 97 after 98.

代表他ogr2osm 轉出來的排序有點問題,你可以安裝下面這個套件來重新排序他

#先安裝套件
sudo apt install osmium-tool
#用套件把它重新排序
osmium sort -O -o sorted.osm input.osm

這時候輸出的sorted.osm就可以匯入了

Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)