快轉到主要內容
  1. 技術/

GPS 資料格式

·3 分鐘

什麼是 NMEA file ? 美國國家海洋電子協會 (National Marine Electronics Association,NMEA) 制定了 GPS 協定標準規格,NMEA 0183 的資料格式中記錄了座標、方位、速度、衛星有效數量等等的資訊。

GPS

資料格式
#

$ttsss,d1,d2,....

以 $ 為起始,ttsss 表示識別符,後面接上以 , 分隔的資料資料區塊,最後由 CR/LF (換行)為結尾。

識別符
#

NMEA 定義了多種 identifier,這裡列出我比較會有用到的:

GPRMC, Recommended Minimum Navigation Information#

推薦的最小定位資訊,資料格式為:

RMC

<1> UTC 時間,格式:hhmmss.ss(時分秒) <2> 定位狀態,A=有效定位,V=無效定位 <3> 緯度 ddmm.mmmm(度分)格式(位數不足則補 0) <4> 緯度半球 N(北半球)或 S(南半球) <5> 經度 dddmm.mmmm(度分)格式(位數不足則補 0) <6> 經度半球 E(東經)或 W(西經) <7> 地面速率(000.0999.9節,位數不足則補 0) <8> 地面航向(000.0359.9度,以真北為參考基準,位數不足則補 0) <9> UTC 日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,位數不足則補 0) <11> 磁偏角方向,E(東)或W(西) <12> 模式指示(僅 NMEA0183 3.00 版本輸出,A=自主定位,D=差分,E=估算,N=資料無效)

經緯度轉換
#

NMEA 紀錄格式為 ddmm.mmmm

以 4124.8963 為例 先除 100 得到 41.248963 將小數點後面運算 除60 乘100 => 0.248963*100/60 = 0.103303 再加上先小數點前的值 41+0.103303=41.103303 這樣就可在 Google Map 中使用

若要轉換成 Google Map 可用的格式可參考以下程式碼

// Javascript Code
function formatGPS(number, quadrant) {

        if (quadrant == 'W') {
            quadrant_value = -1;
        } else if (quadrant == 'S') {
            quadrant_value = -1;
        } else {
            quadrant_value = 1;
        }

        return (((number/100).toString().split(".")[0])*1 + ("0." + (number/100).toString().split(".")[1])*100/60) * quadrant_value;
    }

GPGGA, Global Positioning System Fix Data. Time, Position and fix related data for a GPS receiver#

GPS 定位資訊,資料格式為:

GGA

<1> UTC時間,hhmmss.sss(時分秒)格式 <2> 緯度 ddmm.mmmm(度分)格式(位數不足則補 0) <3> 緯度半球 N(北半球)或 S(南半球) <4> 經度dddmm.mmmm(度分)格式(位數不足則補 0) <5> 經度半球 E(東經)或 W(西經) <6> GPS 狀態:0=未定位,1=非差分定位,2=差分定位,6=正在估算 <7> 正在使用解算位置的衛星數量(0012)(位數不足則補 0) <8> HDOP 水平精度因數(0.599.9) <9> 海拔高度(-9999.9~99999.9) <10> 高度單位,M 表公尺 <11> 大地橢球面相對海平面的高度(-999.9到9999.9) <12> 高度單位,M 表公尺 <13> 差分 GPS 數據期限(RTCM SC-104),最後設立 RTCM 傳送的秒數量 <14> 差分參考基站標號,從0000到1023(位數不足則補 0) <15> checksum 校驗

GPGSV, Satellites in view
#

取目前可見到的衛星資訊,資料格式為:

GSV

<1> 收到 GPS 訊息的總數 <2> 收到 GPS 訊息的編號 <3> 可見衛星的總數,00 至 12 <4> 衛星編號,01 至 32 <5> 衛星仰角,00 至 90 度 <6> 衛星方位角,000 至 359 度 <7> 訊號雜訊比(C/No),00 至 99 dB;無表未接收到訊號 <…> 重複 4 ~ 7,最多四組(用 [] 包) <8> Checksum 校驗

GPGSA, GPS DOP and active satellites
#

當前衛星資訊,資料格式為:

GSA

<1> 模式 :M=手動,A=自動 <2> 定位型式 1=未定位,2=二維定位,3=三維定位 <3> 到 <14> 01 ~ 32 表天空使用中的衛星編號,最多可接收12顆衛星資訊 <15> PDOP 位置精度因數(0.599.9) <16> HDOP 水平精度因數(0.599.9) <17> VDOP 垂直精度因數(0.5~99.9) <18> Checksum 校驗

附加資料
#

G-Sensor 可幫助 GPS 航位推算,也可記錄當車輛碰到不同事件時所承受的力道

GSENSORD
#

部分行車記錄器中所存的 NMEA file 會紀錄 G-Sensor 的值,格式如下:

<1> X 軸 G 值 <2> Y 軸 G 值 <3> Z 軸 G 值

相關文章

淺談 SEO

·3 分鐘
SEO 是什麼呢?它的全稱是 Search Engine Optimization(搜尋引擎優化)。 要如何優化呢?其實就是想辦法讓各家的搜尋引擎看懂你的網站;當然內容正確是基本的,搜尋引擎就像一個圖書館一樣,當書目很大量時就得依靠索引、關鍵字等等的輔助去找到書籍,依照大綱、標題等等的去找到正確的內容。再來就是要針對各家的演算法去做強化,但不建議過度針對演算法優化,把內容做好&標籤打對才是基本功。

重新安裝 macOS

·1 分鐘
最近換了新的工作,因舊的 mac 已不敷使用,只好將它脫手買一台最新最潮的 MacBook Pro 了 (不知道是該難過還是高興…) 回到正題,其實 Mac 不太需要重灌,舊的 MacBook Air 也用了好幾年,這中間也都沒有重灌過,不過若是像我一樣是想要賣人,那當然要清乾淨了 ( 免得不小心流出什麼 )

CentOS 7 上安裝與設定 Nginx + PHP7

·2 分鐘
之前在工作上幾乎都是採用 Apache,前一陣子常聽到同事說 Nginx,但我卻沒有實際用過,趁這這次試用 GCP,也來試試看 Nginx 注:以下的環境是在 GCE (Google Compute Engine) + CentOS7 上完成。