大部分内容来自《http://onemo10086.com/#/school/article/165》

  “GNSS定位不准确,漂移了好几公里,是怎么回事呢?”相信有不少用户在使用GNSS时碰见过这样的问题。这主要是由于GNSS坐标转换错误造成的,下面我就来讲讲获取到GNSS数据后如何通过转换坐标,得到正确的定位。

常见坐标系介绍

  WGS-84:大地坐标系,也是目前广泛使用的GPS采用的坐标系,在中国,任何一个地图产品都不允许使用GPS坐标

  GCJ-02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS-84加密后得到的坐标系。互联网地图在国内必须至少使用GCJ02进行首次加密,不允许直接使用WGS84坐标下的地理数据,同时任何坐标系均不可转换为WGS84坐标

  CGCS2000:国家大地坐标系,通过中国GPS 连续运行基准站、 空间大地控制网以及天文大地网与空间地网联合平差建立的地心大地坐标系统

  BD-09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标

  搜狗坐标系:搜狗地图所采用的坐标系,由GCJ-02进行进一步的偏移算法得到

  图吧坐标系:图吧地图所采用的坐标系,由GCJ-02进行进一步的偏移算法得到

地图软件所采用的坐标系

地图 坐标系
百度地图 境内(含港澳台):BD-09;境外:WGS-84。
高德地图 境内(含港澳台):GCJ-02;境外:暂不支持。
Google地图 境内(含港澳台):GCJ-02,数据来源于高德,两者互通;境外:WGS-84。
腾讯地图 境内(含港澳台):GCJ-02
微软bing地图(BingMap) 全球统一:WGS-84
搜狗地图 境内(含港澳台):搜狗坐标系
图吧地图(MapBar) 境内(含港澳台):图吧坐标系
灵图地图(51ditu) 境内(含港澳台):GCJ-02

经纬度表示方法

ddd.dddddd:度 . 度的十进制小数部分(6位)
ddd.mm.mmmm:度 . 分 . 分的十进制小数部分(4位)
ddd.mm.ss:度 . 分 . 秒

1度=60分

1分 = 60秒

1度=3600秒

各表示方法之间可相互转化,如将“度.分.分”格式的120.42.4572转换为“度.度”格式,计算方式如下:

120度=120度

42.4572分÷60=0.70762度

即:120.70762度

示例

比如获取到如下NMEA语句:

$GPGSV,3,1,10,01,02,172,20,04,41,198,22,07,40,320,25,08,81,165,36,1*60
$GPGSV,3,2,10,09,49,251,28,16,26,052,37,21,17,154,21,26,08,068,23,1*69
$GPGSV,3,3,10,27,54,046,25,30,04,307,,1*67$GPGGA,023248.00,3043.506913,N,10403.514810,E,1,05,1.1,613.4,M,-31.0,M,,*4A$GPVTG,212.7,T,214.7,M,0.0,N,0.0,K,A*25$GPRMC,023248.00,A,3043.506913,N,10403.514810,E,0.0,212.7,300421,1.9,W,A,V*5B$GPGSA,A,2,07,08,09,16,27,,,,,,,,1.4,1.1,0.8,1*27

GGA的解析如下:

GGA(Global Positioning System Fix Data)GPS定位信息
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
<1> UTC时间,hhmmss(时分秒)格式,和北京时间差8个小时。
<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<3> 纬度半球N(北半球)或S(南半球)
<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<5> 经度半球E(东经)或W(西经)
<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算
<7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
<8> HDOP水平精度因子(0.5~99.9)
<9> 海拔高度(-9999.9~99999.9)
<10> 地球椭球面相对大地水准面的高度
<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)

GPGGA,023248.00,3043.506913,N,10403.514810,E,1,05,1.1,613.4,M,-31.0,M,,*4A
从GGA语句获取到GPS定位信息,经纬度如下:北纬3043.506913,东经10403.514810
此时经纬度的格式是ddmm.mmmm的,坐标系是WGS-84。
如果想在百度地图中显示具体位置,需要转换坐标系为BD-09。
此时可以使用坐标转换工具:

就可以看到转换出了104.067537189513,30.7288549033661
再把该坐标复制到百度地图http://www.toolzl.com/tools/getGpsArea.html
就可以看到具体的位置了:

再推荐一个百度地图拾取坐标系统,也可以根据坐标查看位置,也可以根据位置拾取坐标。

坐标系转换代码

  这里提供坐标系转换的c++代码和上面用到的转换小工具,下载链接
  可以完成WGS84转GCJ02、GCJ02转WGS84、GCJ02转百度坐标系(BD-09)、百度坐标系(BD-09)转火星坐标系(GCJ-02)、WGS坐标转百度坐标系(BD-09)、百度坐标系(BD-09)转WGS84坐标。

使用百度API做坐标系转换

参考https://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition,使用API将WGS-84坐标转换为BD-09坐标。
调用方法:GET http://api.map.baidu.com/geoconv/v1/?coords=106.494335,29.61921&from=1&to=5&ak=你的密钥

GNSS系列--GNSS坐标系转换相关推荐

  1. GNSS系列(2)------OneMO模组LBS定位使用方法全攻略

    由于工作需要,最近开启了GNSS系列文章的撰写工作,发布于公司官网,现将其同步至CSDN. 原文链接: http://onemo10086.com/#/school/article/166 各位小伙伴 ...

  2. V2X定位-GNSS系列定位方法小结

    定位对V2X来说是非常重要的一个环节,是否能有效的定位,定位的精确度如何,会对V2X场景算法的设计和软件开发造成巨大影响.最近在工作中也刚好在负责location模块的开发,顺便整理了V2X中常用的定 ...

  3. NtripShare GNSS系列软件家族

    最近有空重新梳理了一下自己GNSS系列软件家族,NtripShare系列软件历经一年,关注于差分数据播发与解算,作为2020-2021年的成绩单,勉强可以交差,还是希望能与各位朋友加强沟通交流,欢迎骚 ...

  4. python坐标系转换函数_python WGS84和ECEF坐标的转换

    地心地固坐标系(Earth-Centered, Earth-Fixed,ECEF),简称地心坐标系. 地理坐标系统(Geographic Coordinate System,GCS)1,坐标系是地心坐 ...

  5. python坐标系转换_GNSS学习笔记-坐标转换

    GNSS 坐标转换 GNSS计算主要涉及三个坐标系,地心地固坐标系,地理坐标系和站心坐标系.这里主要介绍一下三个坐标的含义和转换公式. 地心地固坐标系如图X,Y,Z表示 (ECEF坐标系),以地心O为 ...

  6. 使用pca进行坐标系转换、降维

    利用PCA进行坐标系转换 pca是一种常用的数据降维的方法,而其中的降维的步骤就是: 选取前 k 个特征值. 如果我们不选择这个步骤,那么就不会进行降维了,反而会进行坐标系的转换. 具体步骤 1.首先 ...

  7. 【安信可A9G专题④】A9G模块/开发板GPS定位注意事项 坐标系转换

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  8. 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)

    1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...

  9. threejs中坐标系转换和实现物体跟随鼠标移动

    坐标系转换 下面函数可以将鼠标所在点的屏幕坐标转化成一个Threejs三维坐标: convertTo3DCoordinate(clientX,clientY){var mv = new THREE.V ...

最新文章

  1. 你知道什么是AVL树吗?
  2. 死磕 synchronized 底层实现
  3. 2019年招聘python工程师薪资飙升,Python这些技能你掌握了吗
  4. C++ string 使用详解(含C++20新特性)
  5. 204. Count Primes
  6. 对精致码农大佬的 [理解 volatile 关键字] 文章结论的思考和寻找真相
  7. 转mjpeg协议到httpflv
  8. python接口脚本实例_python图形用户接口实例详解
  9. python tkinter listbox控件 简书_python tkinter模块的控件操作(1)
  10. 个人网站的制作HTML,制作个人网站从HTML开始.doc
  11. asp net core 微信公众号开发 (一)
  12. 命令执行(ctfshow)
  13. 解决win10注册错误 错误代码0x8002801c
  14. 干货教程:如何把一张照片用PS做成漫画风格(附最新视频教程)
  15. 改造,分刷新显卡BIOS和驱动修改两种
  16. cufflinks 介绍使用
  17. Android 各版本 设置 USB 默认连接 MTP 模式 ( Android 6.0+ )
  18. Ubuntu下使用ss-local+simple-obfs
  19. R3300L Android相关的记录
  20. 网站作为互联网产品如何平衡艺术与商业,网站设计需要掌握哪些思维?

热门文章

  1. Python-EEG工具库MNE中文教程(3)-MNE中数据结构Epoch及其用法简介
  2. centos apache php mysql zend_CentOS 5.5搭建Apache+PHP5.2x+MySQL5+Zend3(yum安装)
  3. 英伟达新卡皇3090Ti:功耗飙至450W换来性能涨11%
  4. 担心GPT-3被喂假消息?谷歌新研究,将知识图谱转成“人话”用于训练丨NAACL 2021...
  5. 哈佛博士教你如何摆脱「尬聊」
  6. Vue核心50讲 | 第四回:Vue 官方赠送的橙色装备,岂能不要
  7. 甘肃宕昌山货“触网”外销:山民乐衷创业“等客来”
  8. 【347天】跃迁之路——程序员高效学习方法论探索系列(实验阶段105-2018.01.18)...
  9. 【Silverlight】Bing Maps开发应用与技巧三:Bing Maps Silverlight Control的离线开发
  10. 【11分钟训练完ImageNet】DNN训练再破纪录,1024 CPU Caffe开源