日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python解析nmea0183协议获取GPS定位信息

發布時間:2023/12/9 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python解析nmea0183协议获取GPS定位信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里寫自定義目錄標題

  • python解析nmea0183協議獲取GPS定位信息

python解析nmea0183協議獲取GPS定位信息

nmea0183協議里面定位數據主要在GPRMC報文里面,下面是報文的大體形式:

b'$GPRMC,111025.00,A,2517.033747,N,11019.176025,E,0.0,144.8,270920,2.3,W,A*2D\r\n' b'$GPRMC,,V,,,,,,,,,,N*53\r\n' b'$GPRMC,024443.0,A,2517.038296,N,11019.174048,E,0.0,,120201,0.0,E,A*2F\r\n'

下面是報文說明
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1> UTC時間,hhmmss(時分秒)格式
<2> 定位狀態,A=有效定位,V=無效定位
<3> 緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)
<4> 緯度半球N(北半球)或S(南半球)
<5> 經度dddmm.mmmm(度分)格式(前面的0也將被傳輸)
<6> 經度半球E(東經)或W(西經)
<7> 地面速率(000.0~999.9節,前面的0也將被傳輸) 1節=1.852千米(km/h)
<8> 地面航向(000.0~359.9度,以真北為參考基準,前面的0也將被傳輸)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也將被傳輸)
<11> 磁偏角方向,E(東)或W(西)
<12> 模式指示(僅NMEA0183 3.00版本輸出,A=自主定位,D=差分,E=估算,N=數據無效)

#把度秒轉成小數 def parse_loc_val(val, d):v = float(val)/100v = int(v) + (v-int(v))*100/60if d=='S' or d=='W':v = v * -1return v #獲取經緯度信息 def parse_gprmc(data):'''b'$GPRMC,111025.00,A,2517.033747,N,11019.176025,E,0.0,144.8,270920,2.3,W,A*2D\r\n'b'$GPRMC,,V,,,,,,,,,,N*53\r\n'b'$GPRMC,024443.0,A,2517.038296,N,11019.174048,E,0.0,,120201,0.0,E,A*2F\r\n'$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF> <1> UTC時間,hhmmss(時分秒)格式 <2> 定位狀態,A=有效定位,V=無效定位 <3> 緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸) <4> 緯度半球N(北半球)或S(南半球) <5> 經度dddmm.mmmm(度分)格式(前面的0也將被傳輸) <6> 經度半球E(東經)或W(西經)<7> 地面速率(000.0~999.9節,前面的0也將被傳輸) 1節=1.852千米(km/h)<8> 地面航向(000.0~359.9度,以真北為參考基準,前面的0也將被傳輸) <9> UTC日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也將被傳輸) <11> 磁偏角方向,E(東)或W(西) <12> 模式指示(僅NMEA0183 3.00版本輸出,A=自主定位,D=差分,E=估算,N=數據無效)'''li = data.decode().replace('$GPRMC,', '').strip().split(',')lat=log=speed=direct=0if li[1] == 'A':lat = round(parse_loc_val(li[2], li[3]), 6) #緯度log = round(parse_loc_val(li[4], li[5]), 6) #經度speed = float(li[6]) * 1.852if len(li[7])>0:direct = float(li[7])else:direct = 0#logging.info('lat:{:.6f},log:{:.6f},speed:{},direct:{}'.format(lat, log, speed, direct))return (lat,log,speed, direct)

總結

以上是生活随笔為你收集整理的python解析nmea0183协议获取GPS定位信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。