Monday, March 12, 2007

[技術相關]GPS

全球定位系統 (Global Position System,簡稱GPS )是由美國研製的導航、授時和定位系統。該系統包括空中衛星、地面跟蹤監測站、地面衛星數據注入站、地面數據處理中心和數據通訊網路等部分。這個系統透過 24顆地球同步衛星全天候向地面發送授時和定位信號,其中高精度的信號僅供美國軍方和北約盟軍使用,普通用戶只能夠接收和解析低經度的民用信號。如果對接 收到的民用信號進行差分處理,也可以得到精度很高的定位數據。目前一般的差分GPS 接收機都可以得到1 米精度的定位數據,在歐美市場上已經出現了厘米級的差分GPS 接收機。普通用戶只需購買GPS 接收機,就可享受免費的導航、授時和定位服務。目前全球定位系統技術在農業、林業、水利、交通、航空、測繪、安全防范、軍事、電力、通訊、城市管理等領域 都有廣泛應用。
在上述所述應用領域中,GPS 接收機通常是某些便攜式設備或者是嵌入式系統的外接輸入設備。一般的GPS 接收機均透過串行通訊口主動向主機發送數據,其通訊參數為4800(波特率),8(數據位),1(停止位),0(奇偶校驗位)。 由於 Java語言的平台無關性,很多基于便攜式設備和嵌入式系統的應用程式都採用Java 語言進行開發。因此,一個基于標準Java語言的GPS 接收機解析器,無疑具有廣泛的應用前景。
本文所介紹的基于Java的GPS 接收機解析器從標準GPS 接收機的GGA 輸出訊息中解析標準時鐘(Universal Time Coordinate, UTC)、緯度(Latitude)、經度(Longitude )和高程(Altitude)等基本授時和定位訊息。根據美國海軍電子設備標準界面規定,該訊息包含標準時間、經緯度、高程等數據,每個數據之間用逗號分 隔,以一個返回符號結束,一般格式如下︰
$ GGA,標準時間,緯度,南北,經度,東西,信號質量,衛星總數,水準精度,高程,米,地理間隔,米,差分數據齡期,差分基準站ID*hh
$ GGA ─ GGA 訊息標示符,根據接收機的不同,該標示符中的第二和 第三個位元組會有所不同。
標準時間 ─ 一個浮點數,數據格式hhmmss.ss。
緯度 ─ 數據格式ddmm.mm,其中dd為度(整數,0 到90);mm.mm為 分(浮點數,0 到60)。
南北 ─ 南北半球標示符號,一個位元組,S 為南半球,N 為北半球。
經度 ─ 數據格式dddmm.mm,其中ddd為度(整數,0到180);mm.mm 為分(浮點數,0 到60)。
東西 ─ 東西半球標示符號,一個位元組,E 為東半球,W 為西半球。
信號質量 ─ 一個整數,從0 到8。
衛星總數 ─ 一個整數,從0 到24。
水準精度 ─ 一個浮點數。
高程 ─ 該地點在平均海平面以上的高程,一個浮點數。
米 ─ 長度單位標示符,一個位元組,M。
地理間隔 ─ WGS-84地球橢球表面與平均海平面表面之間的距離,一個浮 點數。
米 ─ 長度單位標示符,一個位元組,M。
差分數據齡期 ─ 上一次SC-104標定到當前的總秒數,一個浮點數。
查分基準站ID ─ 一個整數,從0000到1023。
除 了GGA 訊息以外,一般的GPS 接收機還會輸出其他類型的訊息,例如AAM 訊息,ACK 訊息,GNS 訊息等等。本文所介紹的Java類庫持續的監聽GPS 接收機所在的串行通訊口,從其輸出訊息中截獲GGA 訊息並進行解析,從而獲得當前的時間和定位訊息。本類庫包括三個Java模塊以及一組測試數據︰
GPS 數據模塊 ─ 實時保存當前數據(GpsInfo.java)。
GPS 接收機模塊 ─ 供外部程式調用(GpsReceiver.java)。
數據接收與解析模塊 ─ 接收與解析GPS 訊息(GpsParser.java)。
測試模塊 ─ 功能測試與範例(TestGps.java)。
測試數據 ─ 一組實際GPS 測量數據(gps.dat)。

資料來源
http://www.qyjohn.net/?p=222

No comments: