GPRMC转经纬度 地理位置

本文介绍了GPRMC在汽车路测中的作用,详细解析了GPRMC定位数据格式,并展示了如何将GPRMC数据转换为经纬度。接着,通过Python代码演示了如何将经纬度用于地图定位,利用geocoder和folium库进行坐标反查和地图展示。此外,还探讨了使用Python直接输出位置的方法,涉及百度地图API的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


前言

在实际汽车路测的时候会出现GPS偏移,这个时候就需要将GPRMC数据整理出来来判断芯片接收的原始数据是否正常来定位bug。


提示:以下是本篇文章正文内容,下面案例可供参考

一、GPRMC是什么?

GPRMC是NMEA协议里面定位数据。

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

<1> UTC时间,hhmmss.sss(时分秒.毫秒)格式

<2> 定位状态,A=有效定位,V=无效定位

<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)

<4> 纬度半球N(北半球)或S(南半球)

<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)

<6> 经度半球E(东经)或W(西经)

<7> 地面速率(000.0~999.9节,前面的0也将被传输)

<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=数据无效)

*后hh为$到*所有字符的异或和

二、GPRMC如何转经纬度

十进制北纬度数 = dd + mm.mmmmmm/60;

三、python加地图实现定位

1.Python代码

import wx
from decimal import Decimal
import folium
import geocoder

class TranSl_GPRMC(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, title = "GPRMC", size = (400,250))
        panel = wx.Panel(self)


        self.label1 = wx.StaticText(panel, -1, label = "纬度", pos = (50, 20))
        self.textfile = wx.TextCtrl(panel, -1, value = "", pos = (110, 20), size = (100, 20))

        self.label2 = wx.StaticText(panel, -1, label = "经度", pos = (50, 40))
        self.textfile1 = wx.TextCtrl(panel, -1, value = "", pos = (110, 40), size = (100, 20))
        
        self.textfile2 = wx.TextCtrl(panel, -1, value = "", pos = (110, 80), size = (100, 20))
        self.textfile3 = wx.TextCtrl(panel, -1, value = "", pos = (110, 100), size = (100, 20))


        self.button = wx.Button(panel, -1, label = "compile", pos = (50, 60), size = (50, 25))
        self.button.Bind(wx.EVT_BUTTON, self.cul_value)

    def cul_value(self, event):
        
        latitude = float(self.textfile.GetValue())
        print(latitude)
        longitude = float(self.textfile1.GetValue())

        result_lat = (int)(latitude/100) + (latitude - (int)(latitude/100)*100) / 60
        print(result_lat)
        result_long = (int)(longitude/100) + (longitude - (int)(longitude/100)*100) / 60
        print(result_long)
        self.textfile2.AppendText(str(result_lat))
        self.textfile3.AppendText(str(result_long))

if __name__ == '__main__':
    app = wx.App()
    frame = TranSl_GPRMC(parent = None, id = -1)
    frame.Show()
    app.MainLoop()

2.地图定位

通过计算出经纬度后,进入百度拾取坐标系统拾取坐标系统,输入经纬度然后勾选坐标反查。

四、通过python直接输出位置的尝试

1.需要用到的库geocoder

需要事先准备好百度地图开放平台的key百度地图开放平台 | 百度地图API SDK | 地图开发

l = [lng, lat]
g = geocoder.baidu(l, method='reverse', key='@自己百度地图开发者key')

2.需要准备的库folium


 

总结

仅作记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值