2015年7月23日 星期四

縣市政府前宣導自由軟體的 「數位路平」 單車活動路線規畫地圖製作步驟

「數位路平--台灣騎跡」 活動路線規畫地圖 8/10-8/14 有一個 「數位路平--台灣騎跡」 活動 , 幾位朋友要騎腳踏車從北到南向各縣市政府宣導自由軟體的重要性。 我自己任命為地圖股長, 用 GraphHopper 規畫路線, 再合併其他有用資訊, 製作了 「數位路平--台灣騎跡」 路線規畫地圖。 這一篇正好作為最近幾篇 GIS (地理資訊系統) 轉檔文章的小結與實作練習。

首先要撈出所有縣市政府所在地。 感謝 OSM 大大 陳瑞霖 提供 overpass turbo 查詢指令。 假設存檔為 government.geojson。 填入圖示及顏色資訊: jq '.features | map(.properties += {_storage_options:{color:"Yellow",iconUrl:"/uploads/pictogram/commercial-24.png"}})' government.geojson > gov.geojson 然後把 gov.geojson上傳到 umap 我的私房地圖

再來 把捷安特租車地點 也上傳到同一張地圖。 最好是放在另一個圖層, 將來要獨立刪改比較方便。

重頭戲是路線規畫。 文字描述版的路線規畫 拿來放進 GraphHopper、 每天分別獨立規畫, 這樣將來要獨立刪改比較方便。 然後請把 gh2umap.sh 存檔、 改名並且搬移至 /usr/bin/gh2umap、 更改屬性成可執行檔。 這個小程式專門用來把 GraphHopper 所匯出的 gpx 檔轉成 umap 喜歡的 geojson 格式, 並且用 「路徑指示文字」 作為顯示名稱。 細節在 gpx => geojson 一文裡面已解釋大半了哦; 但身為 end-user 的你可忽略那篇, 直接拿它來用就好了。 假設從 GraphHopper 下載回來的五個 gpx 檔分別叫做 day1.gpx、 day2.gpx、 ... day5.gpx。 產生五個 geojson 檔:

for f in day?.gpx ; do gh2umap $f > ${f%%.*}.geojson ; done
然後把五個檔串成一個, 比較好上傳:
jq -s '.[0] + .[1] + .[2] + .[3] + .[4]' day?.geojson > biking-route.geojson

或者比較炫的寫法、 同樣的效果:

jq -s 'reduce .[] as $item ([]; . + $item)' day?.geojson > biking-route.geojson

或者比較精簡的寫法、 同樣的效果:

jq -s 'map(.[])' day?.geojson > biking-route.geojson

再把 biking-route.geojson 上傳到 umap 的新圖層, 就得到一份詳細的活動路線地圖囉!

8/15、16 的 coscup 開源人年會 我要報告的, 就是這張地圖的製作過程囉。 雖然我自己寫了一點程式, 但這些程式都有重複利用的價值。 未來想做類似事情的人, 只要不怕下指令, 都可以把我的程式直接拿去用不必修改囉。

沒有留言:

張貼留言