本站留言版

工具軟體分享: GPX轉JPEG

DTang88(茶)

2010/2/25


以前爬山時,都是帶著〔藍天地圖〕.有一次午後起了大霧,因而在樹林中迷了路,摸索了一陣子還是找不到正確的路,只好退回到自己熟悉的叉路.最後是安全的下山了,但確種下了買Garmin的因.

後來,買了第一台Garmin VISTA C(TW),以現在來說,記憶體小,螢幕小,收訊較差,除此之外,用起來還不錯.但因為非高感度天線,當需要它的時候,它確收不到訊號.

當Garmin Taiwan發表Colorado 400t後,我迫不急待跑到建國北路買了它,硬體部份,除了電力稍弱外,還算滿意.電力問題在購買前就已經知道.

在後來使用中,發現另一個現象,這個現象困擾我很久,一直到現在,仍然存在這個現象. 我以〔圓開〕大師於2010/02/16發表的〔插天山系地區登山路線GPS航跡圖〕一文中的GDB檔案來說明.

下載下來的GDB檔案,利用MapSource將它轉換為GPX檔,(為什麼要轉換呢?因為Colorado 400t只支援讀取GPX格式),假定檔案名稱為〔插天山系.GPX〕,我把〔插天山系.GPX〕檔案存到Colorado 400t的記憶體內後,在Colorado 400t內看到的不是〔插天山系.GPX〕,而是該GPX檔案內的航段名稱,所以,會出現"ACTIVE LOG","ACTIVE LOG 005",...共有371個. 而且,每次只能選擇顯示其中一個.所以,我都需要把這些ACTIVE LOG XXX合併,再改個名字以方便Colorado 400t觀看.371個名字要改,想起來也夠頭痛的了.

反觀VISTA,檔案上傳到機台後,可以同時顯示所有的航段.還可以更換不同的顏色.(Colorado 400t只有水藍色).為什麼會這樣?產品定位不同嗎?很少登山客用,所以,沒人要求這個功能嗎?我也不清楚?也不知後來的Oregon可否同時顯示好幾個航段?

第一個想到的方法是,利用MapSource印出來,需要時,再拿出來參考.但MapSource只能列印螢幕上看得到的部份,像〔插天山系地區登山路線GPS航跡圖〕這樣大的航跡檔,無法看清楚細部.

後來想到的方法是像〔圓開〕大師一樣,手動拼接成一張JPEG圖檔,再列印出來.但Garmin的地圖因為含DEM的關係,印表機印出來的效果不是很好.這個問題比較好解決,就是在拼接地圖時,不要選擇地圖,讓背景空白即可.還有一個問題,就是尺規,沒有尺規不方便.

今年過年天天下雨,台北初一時,還有半天不錯的天氣,我所在的桃園,雨一直沒停過.就利用這幾天的時間,寫個小程式,直接將GPX檔案輸出成JPEG,並且印上方格,一格是1公分,實際上是100公尺.所以,比例尺是10000:1.

目前程式初步完成,還有許多需要改進的地方,以及可能包含很多虫,各位如果需要的話,請到下列網址下載.目錄下有一張PNG檔案是我拿〔圓開〕於2010/02/16〔陽明山國家公園東側古道GPS航跡圖--更新〕一文中的GDB檔案轉出來的效果.因為輸出JPEG格式的關係,導致檔案大小高達15MB,所以,我用〔小畫家〕另存為16色BMP,再另存為PNG.

http://cid-5cbb594b7cd275eb.skydrive.live.com/browse.aspx/Public

檔案是以7-Zip壓縮的, 無法解開壓縮檔的話,請到http://www.7-zip.org下載解壓縮程式.7-Zip是免費軟體.

本程式免費供大家使用,不需安裝.但僅在Windows XP 32bit上試過,VISTA/Windows 7上沒試過可不可以執行.

目前已知的問題:
 (1) 輸出JPEG檔案太大,不利網路交流.
 (2) 目前只能輸出10000:1,考慮增加幾種選擇
(3) 考慮能以不同顏色顯示航跡
(4) 航點太密時,會重疊,看不清楚
(5) 座標系統問題,本來想以Taiwan/TWD 67輸出,但小弟不會轉換方法.
(6) 已知有些GDB檔案,經由MapSource/BaseCamp轉換為GPX後,該GPX檔案無法被MapSource/BaseCamp讀取,也導致GPX2JPEG程式發生錯誤.例如〔插天山系地區登山路線GPS航跡圖〕.猜想是中文航點名稱的問題.我試過,刪除所有的航點後,就可以被MapSource/BaseCamp讀取.至於是那個航點名稱,要花點時間試試.

如果要列印出來,您可能要使用IE或是〔小畫家〕.我使用IE8輸出PDF後,在螢幕上以100%檢視,再拿尺來量,每1格大約是1公分.

剛完成的軟體,有很多例外的情況沒有考慮到,也許您會發生無法使用的情形!

最後再聲明一下,
(1) 本軟體經由Norton 360 v3.8.0.41掃毒過,理論上不會有病毒.但無法保證.
(2) 本軟體不會讀取電腦使用者的任何資訊,也不會傳送任何資料到網路上.
(3) 本程式只讀取1個GPX檔案,輸出1個JPEG檔案而已.
(4) 本軟體免費供大家使用,請自行承擔風險.
(5) 如果有人因使用本程式而導致電腦掛掉或資料損失,請自行負責.


敬請指教!


所有回覆

  • 推一下 這軟體之前有想寫(包含點位間的時間與高度分析[好像Mapsource也有內建]) 不過後來想,就設定"無地圖"就好了,是故作罷! 我試了自己的兩個檔而已,有航點的不能轉換成功(fail), 另一個沒航點只有航跡的GPX轉換成功. 是沒有unicode文字轉換圖文嗎?(看內文說明好像是) 還是我試的只是湊巧沒轉換成功? ps.最後的聲明很重要,寫的很好!
  • Muni您好, GPX是以UTF-8編碼,所以,已經是UNICODE了,您可以試試,"有航點的不能轉換成功"的這個GPX,請以MapSource或BaseCamp開啟這個檔案,我想,應該是會開啟失敗的.至少我自己試的結果是, 無法使用MapSource開啟這種GPX檔案. 我曾以為是檔案編碼有問題,但,如果更名為.XML,IE8可以讀取這個檔案,那又表示檔案沒問題. 現在發現有問題的,都是來自山友的資料(我是使用Colorado,已經是GPX),航點都很多,只能猜測某些中文字的影響. 要找出來哪些字的話,要試一下. 昨天又有另一個想法,航跡裡頭包含高度資料, 給我幾天的時間, 我把高度/距離的圖加上去,也把航點畫上去. (高度/距離變化圖裡,MapSource好像不能顯示航點).
  • 我試一下,可以用Mapsource開啟該*.gpx. 因為我是gbd另存gpx的喔. 會不是因為航點以英文或數字開端的關係? 如果您作好,那我那個爛東西就可以丟了. http://www.keepon.com.tw/ActiveSite/Message/One.asp?MessageID=87875 就是說除了圖的航跡與航點簡圖之外 附上航點間的行走時間(可能也僅是參考,因為若記錄人沒有將休息時間記錄), 可以圖表,也可直接在航跡上(看資訊容量).
  • 已經找到部份GPX檔案無法讀取的原因了, 晚上改一版來修正這個問題. 原因是, 航點的"備註"欄位如果有0x03這類的碼, 會導致Microsoft XML讀取失敗.
  • Muni前輩, 您提到您有一個GPX, 轉換為JPEG時會失敗. 如果可以的話, 可否請您寄這個GPX檔案給我? 我想研究一下, 失敗的原因. 謝謝您!
  • 已將1.0.0.3版放上去了. v1.0.0.3 .原先輸出JPEG格式, 但考慮檔案常會過大, 因此, 改為PNG, 色階為16BPP/RGB555. .解決前一版, 有些GPX檔案無法轉換 .加入錯誤訊息
  • v1.0.0.4 (2010/03/04) .解決前一版, 有些GPX檔案無法轉換. 感謝ㄚ國提供GPX檔案以供測試.
  • 感謝您的辛苦付出:) 小弟有幾個建議提供,有機會請參考,謝謝! 1.Garmin 新版TOPO已經取消DEM 是否可以連等高縣一起印出呢? 或是做個選項 讓使用者可選擇是否要等高線或是不要等高線?? 2.是否有可能也可以直接由GDB輸出,因為一般好像還是比較多人使用GDB檔? 3.輸出圖檔格式建議採用GIF檔即可,因為航跡圖的顏色使用很少,GIF會比PNG 或 JPG 都可以更加縮小圖檔size喔! 您可試試看~:) 4.不太懂您座標的疑問,改變座標系統不是在機子&mapsource設定好即可嗎? 暫時想到這些,謝謝!^^"
  • p.s 剛詢問過~ oregon是有上面的狀況沒錯~ 1個檔案裡面有很多航跡的話~ 讀取時~會出現很多航段名稱,而不是檔名 不過~~oregon可以選擇同時顯示多個航段~ 而不像colorado 400~只能顯示1個~
  • 1. 等高線的問題, 我功力不夠. 不知Garmin IMG檔案的格式. 網路上高手很多, 不知有沒有高手願意分享. 我猜想: (1)需先解開IMG, 才可以讀取等高線資料 (2)也許MapSource有其它API, 可以利用來讀取等高線資料. 目前還沒頭序. 2. 未來會考慮GDB格式. 初期先考慮GPX, 是基於GPX是開放格式, 容易知道每個資料的意義. 3. 謝謝您的意見, 我會改為出輸GIF 4. GPX檔案裡頭的座標是 Grid:經緯度/Datum:WGS84. 我這個小程式是直接讀取GPX, 不經由MapSource, 所以, 不知道公式的話, 無法轉換為 Taiwan Grid/Datum:TWD67. 關於這一點, 網路上也許找得到, 如果找得到, 我會加上選擇輸出座標格式. Colorado每次只能顯示一個航段, 而且, 當切換顯示另一個航段時, Current.gpx會被清除(只剩航點). 這是一個Bug, 已反應給Garmin, 但一直沒看到新軟體修正這個問題. 謝謝大家的意見. 目前想先加上以下功能 (1)選擇輸出比例尺 (2)輸出改為.GIF (3)高度/距離變化圖
  • 關於座標轉換問題 應該可以問問站上的米勒&JOGI前輩~ http://www.keepon.com.tw/ActiveSite/MemberInfo/MemberInfoForm.asp?UserID=458&UserName=Millerliu 您可看看連結的討論串是否有幫助,感謝您的付出!:)
  • v1.0.0.5 (2010/03/05) .以不同顏色顯示航跡. .依u9123511 (LEoN)的建議, 輸出格式改為GIF. .可選擇輸出比例尺.
  • 關於座標轉換的問題, 我試了米勒推薦的PCTrans程式. 可以批次轉換WGS84到TWD67. 等我進行到這一部份時, 再請教米勒
  • 茶兄: 我試了一下,wpt tag在前面或後面都不行, 甚至修到最後一筆,連註解等都消除也不行,我是用mapsource(6.13.x?)存成gpx 放在別的電腦現在沒辦法po上來. 另外1.0.0.4的(png),之前可轉的tracklog都沒反應了. 我的作法是將螢幕解析度調最高,再最大化全螢幕mapsource,然後再copy圖下來,不過我還是以gps為主,印出來是給沒有gps的同行隊友. 當然這樣就沒有詳細的比例尺.
  • 感謝DTang88兄努力 小程式可以轉出航跡很不錯,我試過較大的航跡資料也可以轉出來 在MapSource要加灌等高線資料,才有辦法顯示等高線,所以GPX檔案裡面應該沒有等高線資料才對,只有航跡航點的座標資料 爬山要看地圖,山友當然想要有等高線,方位,登山行進路線(航跡),有MapSource程式+等高線,可以仿照Muni兄(討論串第 15 篇) 的方式COPY出來 底下連結是之前用的接圖結果(分段COPY在接圖處理)http://www.keepon.com.tw/ActiveSite/Article/One.asp?ArticleID=28585 沒有的話,可以轉出來,再下載地圖1/25000 比對位置http://map.happyman.idv.tw/~happyman/map.php 要把轉出來的航跡+地圖結合起來 可以參考 http://www.yougoipay.com/kenny/index.html 以上 小小看法
  • 感謝大家的意見. v1.0.0.6 (2010/03/06) .解決前一版, 有些Colorado原生GPX檔案無法轉換 這幾天在計算航跡的距離. 有了距離才能畫出高度/距離變化圖. 距離的算法, 試了很多, 總是與MapSource有差距. 無法100%與MapSource計算一樣. 我目前實驗的GPX檔案內有6個航段. MapSource計算的距離分別為8.0/11.4/7.7/12.8/2.1/8.4. 我試了很多方法, 最接近的數值為7.7/11.4/7.7/12.9/2.1/8.4 目前想到的是"高度/步行距離"圖及"高度/水平距離"圖. 另外, 想將航點直接標示在高度/距離圖上, 並計算出航點間的時間. Muni兄, 可否將您發現無法轉出的GDB及GPX檔案寄給我呢? 如果有您的檔案, 我可以抓一下, 看程式那裡有錯. 我的MapSource版本是6.15.11 阿國兄, 經您的說明, 才發現獨步山林的蕭郎已有介紹如何使用工具可以輸出航跡圖了. 只差了不能直接輸出GIF/PNG/JPEG. (蕭郎介紹的工具其實已經可以直接出圖了, 只是要花錢買, 免費版本不能)
  • 目前已經可以將航點名稱顯示在航跡上. 目前還不能100%確定是準確的. 再來, 就是將航點與航點間的時間, 顯示在等高線圖上
  • 等完成航點與航點間的時間計算後, 再把軟體放上去
  • v1.0.0.7版. 加上航點與航點間的時間. 因為航點並不一定在航跡上, 所以,是以推估的方式計算而來. 因此, 有些誤差. 以下是以上島山的航跡來測試. 實際行程: 9:34 由泰安溫泉停車場出發 12:07 扺達上島山前往東水洗山的叉路. 12:07 ~ 13:17 午餐, 到三角點賞雲海 13:17 出發下山. 14:51 回到停車場 其中, 午餐休息時間, 無法在高度/距離變化圖上看出來, 是一遺憾 剛才傳完檔案才發現"說明"欄位弄反了. 因為沒辦法進入修改"說明"欄位, 所以, 加註在此. [高度]/[步行距離]變化圖應該是距離較達的那張 [高度]/[平面距離]變化圖應該是距離較短的那張