小弟寫了一個程式,可以利用PocketPC記錄GPS軌跡座標並且匯出KML檔案,
而各位先進如果有安裝Google Earth,則可以利用該KML檔繪出軌跡路線。

本程式使用VB8 with .NET CompactFramework 1.0的版本,基本上PPC2003以及WM5都有內建.NET CF1.0,因此理論上是可以直接執行本程式,若是無法使用,請至微軟網站安裝.NET CF1.0 SP3,或按此下載安裝

10/5bug修正
1.修正在讀取GPS資料時,容易造成讀取錯誤而產生error.log的問題 (感謝Adar3349大大提供error.log錯誤檔)


10/2更新
1.新增GPX格式(GPS eXchange)匯出 (目前無法相容於MAPSOURCE)
2.新增高度紀錄的功能(目前無法在Google Earth顯示實際高度,未來會支援)
3.新增夜間配色模式
4.修正在匯出檔案時更穩定
5.修正讀取NMEA sentence的驗證機制,增加讀取GPS資料的正確性


8/24更新
1.修正在"記錄軌跡"時更穩定記錄
2.修正使用自建點的"啟用自動記錄"功能後,在匯出軌跡檔時會出現無法匯出的情形
3.修正匯出KML檔案能更穩定
4.修正若軌跡檔匯出錯誤時,在關閉程式後會將暫存檔留下(之前會移除)
備註--此功能用意為:如果匯出檔案錯誤時,您還可以將record.tmp、sw.tmp及error.log都PM給小弟,以協助小弟debug。但是在發生錯誤後並重新執行本程式後,程式會提示您是否要載入暫存檔,請千萬不要選擇載入,以免匯出軌跡檔時一樣會再發生錯誤!
5.新增時間記錄支援全球格式(之前僅支援台灣時間 GMT+8)
6.新增匯出記錄中繼點條件:小於或大於某時速
7.新增[顯示]頁面,使用者可以在區域時間內得知該區域的時間、時速、均速、最高速及距離,並可顯示強調項目(此功能建議PPC開太多程式或CPU不夠力時不要使用)
8.新增版本管理功能,使用者不必再手動刪除GPS2KML.sav檔案
9.新增傳輸速率--115200


預訂未來更新項目:(但不知道何時才會實作)
1.對於XML檔案結構做調整
2.可設定暫存檔的位置
3.自建點管理功能
4.支援Google Earth顯示實際高度功能


※KML規範請參考這裡
※Waypoint+規範請參考這裡
※GPX規範請參考這裡


首先要先感謝ec大大提供的分享: ppc 記錄 gps 定位的小程式 (含 source),該範例提供在下很多參考。接下來介紹本程式的使用方法:

1.如果各位先進除了要使用本程式記錄軌跡,還要使用導航功能的話,請先參考LYB大大所寫的[分享] virtual serial ports FOR PPC軟體 GpsGate ,可以多種軟體同時導航。但是小弟強烈建議,能不要用GpsGate就不要用,個人測試後覺得GpsGate並不是很穩!

2.本程式為綠色軟體,將附件的執行檔(GPS2KML.exe)複製到PDA的任何位置即可。

3.執行GPS2KML.exe後,會進入[記錄]頁面,如下圖:



4.設定完畢後,請至[記錄]頁面,按下[開始記錄]即可記錄(在設定完成的情況下),如下圖:

附註--清除記錄功能說明:在記錄軌跡的過程中,按下[停止記錄]後,爾後再按下[開始記錄]的話,記錄會延續先前的記錄繼續記錄;如果按下"[清除記錄]"的話,則會將之前記錄全都清除(包括軌跡及自建點都會清除)。

5.下圖是已定位完成。

附註--由於衛星定位後仍會產生飄移現象,因此移動距離現在高度僅供參考。

6.進入[設定]頁面,可設定GPS的COMPORT、傳輸速率、記錄GPS座標的間隔時間、忽略記錄速限值,以及決定是否要自動匯出KML檔案,如下圖:

附註1--設定內容全部會儲存在/Program Files/GPS2KML.sav裡
附註2--目前的傳輸速率有1200、2400、4800、9600、14400、19200、38400、57600、115200,如果這些沒有支援您的GPS傳輸速率,請PM給小弟,小弟會在下次改版為您增加。
附註3--自動匯出KML檔案功能說明:如果在[設定]頁面中將自動匯出KML檔案功能打勾的話,在記錄軌跡後按下"[停止記錄]"後,則會在My Documents目錄下自動匯出KML檔案(檔名為"時間".kml),而匯出方式會依照[匯出]頁面的設定匯出KML檔案。

附註4--忽略記錄速限功能說明:在記錄軌跡時,若是行車速度低於該設定值將不被記錄。如果希望停下來時不要記錄的話,建議設定為5或10(因為即使在車輛停下來的情況下,GPS定位會飄移,在飄移的情況下是會有速度產生的),若是設定"皆不忽略"的話則不管什麼時速都會記錄。

7.於[記錄]頁面中,按下[建立自建點]的按鈕後會進入[自建點]頁面,於說明中可寫入說明文字(該文字會顯示在Google Earth),亦可按下按鈕在說明內加上當時時間及時速,如下圖:

8.自建點建立完成後,在[匯出]頁面內,自建點數目會增加1個。

9.於[自建點]頁面中,將"啟用自動記錄"打勾的話,則在[記錄]頁面中按下[建立自建點]後,則會依照"自動記錄項目"的選擇內容自動建立自建點及說明文字,如下圖:


10.於[軌跡]頁面中可以設定於Google Earth上的軌跡顏色及透明度。顏色格式為RGB(R:0-255 G:0-255 B:0-255);透明度(0-255) 0為最透明(設到0就看不到了),255為最不透明。移動捲軸來調整顏色及透明度;另外亦可以設定線條大小,注意!官方建議值為0-4,超過4的話,有些電腦是畫不出來的(不過筆者的電腦可以畫的出來)。顏色、透明度及大小設定如下圖:

附註--只有顏色是可以預覽的,透明度是無法預覽的,所以請靠感覺調整

11.修改完軌跡選項後,回到[匯出]頁面,顏色及大小亦會修改,如下圖:


12.在[匯出]頁面中,可設定欲顯示的中繼點資訊及間隔時間,如下圖:(資料記錄的時間間隔要為軌跡記錄的整數倍,例如軌跡間隔時間為5秒,記錄中繼點資訊的間隔時間要為5*n秒)

附註--匯出KML檔案後,亦可再更改軌跡顏色或顯示資料,因此可另外匯出其他KML檔案

13.可設定中繼點時速記錄,若是被記錄的中繼點,其速度大於(或小於)該設定值則會匯入至KML檔案中,設定項目如下圖:


14.起點、終點、記錄點地圖示及說明設定畫面,如下圖:

附註1--起點的預設文字為"起點",終點的預設文字為"終點",記錄點的預設文字為"中繼點"
附註2--系統預設會在KML上寫入起點出發及到達終點的時間,若是將"記錄時間"的勾勾取消,則GE上不會顯示時間


15.按下[選擇圖示],則可選擇其它圖示(一共有59個圖示,為GE內建),如下圖:


16.將起點說明文字改成"內湖",終點說明文字改成"永和",記錄點的預設文字改成"記錄",以及更改每個點的圖示,如下圖:(結果為最下方第二張GE軌跡圖)


17.按下[選擇儲存位置]按鈕來設定儲存位置,設定儲存檔名、儲存格式(目前支援kml及txt)及位置目錄,設定完成後請按下[儲存]按鈕,如下圖:

附註--PapagoV7以後支援Waypoint+格式,但由於Papago會將起點、終點及自建點強迫建立在道路上,因此若是在非道路的位置上記錄軌跡,Papago在繪出軌跡時可能會顯示靈異現象

18.前一項步驟建立完成後,回到[匯出]頁面會出現儲存位置及檔名,按下"匯出KML檔案"即可匯出KML檔案。
注意!如果程式有以下動作,都無法匯出檔案:1.尚未選擇儲存位置 2.正在記錄軌跡 3.根本尚未記錄任何軌跡
下圖為成功匯出KML檔案:


19.若是由於操作不當或系統當機導致程式未正常關閉的話,在下次開啟本程式時,系統會詢問是否要載入之前的暫存檔,如下圖:


20.選是的話,在[記錄]頁面其軌跡記錄點的數目已自動增加。屆時使用者可以選擇繼續記錄或是直接匯出KML檔案。

21.在記錄軌跡時,可切換至[顯示]頁面,按下[開始]後,可顯示GPS時間、行車時間、目前時速、平均時速、最高速度、移動距離。按下[停止]後則會停止顯示。按下[清除]後則歸零。如下圖:


22.可以選擇強調的項目,可選擇GPS時間、行車時間、目前時速、平均時速、最高速度、移動距離。下圖是選擇"移動距離":


23.在記錄軌跡時若是發生錯誤(發生錯誤應該不會造成程式停止或中斷),在關閉程式時會出現如下圖的訊息,麻煩各位大大能夠將錯誤確實回報給小弟,以協助小弟debug,讓GPS2KML更穩定,功能更強大



下圖是從內湖回到永和的軌跡圖(ICON為預設值,每5秒記錄一次,建立4個自建點)


下圖示亦為內湖回到永和的軌跡圖(ICON皆有更改,每5秒記錄一次,每30秒記錄時速,建立4個自建點)



後記
原本寫這個程式只是打算給我自己方便記錄用,但又覺得有些先進們或許也跟我有同樣的需求,所以小弟將檔案放在01給大家使用,這隻程式在我的PPC跑幾乎沒有任何問題,但是並不保證在各位先進的PPC上沒有問題,如果各位先進執行本軟體經常容易當機的話,請回報給小弟,小弟非常願意協助試著解決大家的問題。(不過無法保證一定能解決,畢竟容易當機有兩種可能,一種是使用者本身PPC環境的問題;另一種是小弟程式寫太差導致容易當機。如果是前者,小弟也愛莫能助。

如果各位先進執行本程式是讀取GpsGate開啟的Virtual Port而容易當機的話,請先試著只讀取Real Port(Physical Port)看看,再者如果各位先進的.NET Compact Framework1.0如果不是SP3版的話,請先更新至.NET CF 1.0 SP3。
如果還是很容易當機的話,麻煩請將錯誤訊息的圖片PM給小弟,並請註明.NET Compact Framework1.0的SP版本、當機狀態的簡述、GPS的Com Port最大傳輸速率(BaudRate)、以及作業系統(PPC2003或WM5)等相關資訊,小弟盡量試著幫大家解決問題,畢竟小弟也希望各位能夠開開心心地使用本程式。


本程式是小弟在PPC上的第一個程式,寫的不好還請多包涵。各位先進若有任何建議或問題的話,還請不吝指教。

10/5上傳
附加壓縮檔: 按此下載