关于GPS坐标系和地图定位偏差

关于目前(2019)电子设备和电子地图定位的探索,希望可以回答如下几个问题:

1. 获取GPS位置后,为什么在地图上定位不准?

答:中国地图采用的坐标系和GPS坐标不是同一个坐标系,所以采用GPS坐标在地图上定位不准。

2. 国外GPS位置和国内GPS位置有差别吗?

答:GPS是美国的导航系统,全球通用,手机内置的芯片都是GPS芯片,没有差别。不同的地方是地图有着不同的GPS坐标系。

3. WGS84,GCJ-02, BD09坐标系如何理解?

答:借用百度的说明如下:
WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。
BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
链接:http://lbsyun.baidu.com/index.php?title=coordinate

4. 软件开发如何应对?

坐标系是在一个系统中的参考坐标系,所以在同一个系统内不存在问题。例如,如果需要获取某一个地图上的位置,通过地图SDK就可以获得地图坐标系的位置,不存在问题。(例如,你一直都是用百度地图,定位也是通过地图定位,那么没有任何问题)如果希望在不同的坐标系上使用,必须经过转换。最好的办法是,统一采用同一个地图,不切换坐标系。例如做国内系统,用百度地图,高德地图都可以。如果做国际项目,那么最好建议采用Google地图,国外地图数据最完整,其次是百度。
Google国内外访问地址,key需要在google账号中申请(目前需要梯子)
国内:https://ditu.google.cn/maps/api/js?key=
国外:https://maps.google.com/maps/api/js?key=
关于坐标系转换,参考百度文档:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans


以下是相关论证过程和分析

缘起,首先来看一个问题,一个朋友在柬埔寨通过GPS软件获得一个GPS位置,发现和实际位置不准的问题,赶快查询了一下,“果然不准确”。
网上各种方法,代码,工具,理论等等……看来这个问题还很普遍嘛,可是随着我的深入查找资料和验证,发现不对!下面我们听我慢慢细说。

  1. 地图和GPS定位坐标系
    先说定位坐标系,目前国际上通用的坐标系是WGS84,参考:https://en.wikipedia.org/wiki/World_Geodetic_System,也是通过GPS获取的经纬度信息是一致的,只是表示方法的存在区别:度分秒表示,还是十进制数表示。所以通过手机获取的地理位置信息,都是GPS位置信息。目前北斗卫星定位在大众手机没有用上,就算用上,估计也是不同的坐标系。
    再来看看电子地图,为什么会存在火星坐标系呢?经过查找资料,没有找到明确的关于GCJ-02国家发布的资料,只找到我国测绘法:
    国家测绘局2002年发布的《中华人民共和国测绘法》,要求使用统一的国家测绘坐标系,参看链接:http://www.gov.cn/ziliao/flfg/2005-08/05/content_20947.htm

    上文表达的意思是,国内采用统一的坐标系统,而且和国际坐标系统不一致。而GCJ-02标准和这一致。

关于坐标系查询,可以通过http://www.gpsspg.com/maps.htm网站查询。同时我可以发现这个网站可以通过国界线区分坐标系的换算,而网上不少代码均是通过经纬度范围简单的判断是否在中国境内,对于中国周边国家会存在问题,估计有问题。不过该网站的谷歌地图坐标有问题,估计是老版本的地图,而且也打不开google地图。

上图为中国云南边境

上图为中国与缅甸交界的地方。

Google地图(国际版)GPS坐标定位工具:
https://www.gps-coordinates.net

该工具可以在google地图(国际版本)上根据GPS定位,而且下发写着坐标系是WGS48。经过实际对比发现Google地图,对于中国境内采用的依然是GCJ-20坐标系。
为了验证Google地图在国内的位置依然是GCJ-20坐标系,我采用下面的方法得出的结论(有兴趣的朋友继续阅读)。


如何判断GPS坐标是WGS-48,还是GCJ-20坐标体系呢?
我发现,通过iPhone的指南针的经纬度,如果直接换算为Google地图的坐标进行设置时发现,和实际位置不相符(国内),通过Android 三款软件进行数据采集发现有相同位置不同软件具有两种经纬度信息:
GPS定位导航采用的GCJ-02坐标
GPS定位工具箱采用的也是GCJ-02坐标
GPS实时海拔采用的是WGS-84,和iPhone指南针相同的数据。
注意:表面上看,并不能确认软件采用的具体坐标系(无法通过数值区分),而是通过比较得出的结论。
我写作位置的GPS位置数据分别如下:

序号 采集设备/程序 纬度 经度 纬度 经度
1 iPhone/指南针 北纬28°15’18’’ 东经113°4’27’’ 28.255 113.0741666667
2 iPhone/GPS讯号 28.255055 113.074167
3 坚果手机/GPS实时海拔 北纬28°15’18’’ 东经113°4’26’’ 28.255 113.0738888889
4 坚果手机/GPS定位导航 28.251874 113.079874
5 坚果手机/GPS定位工具箱 28.251877 113.079878

如果把上述地址在https://www.gps-coordinates.net网页上输入,发现可以准确定位的是上表的4,5!是不是1,2,3。上面工具的网站声称采用WGS-48坐标系,而且Google Map英文文档也是采用WGS-48坐标系,那么是否可以推论4, 5就是WGS-48坐标系呢?
经过我的论证,他们恰恰不是WGS-48,而是GCJ-02!

为了论证这个设备的数值到底是哪种坐标系,煞费苦心。
后来发现百度地图的文档上说明,百度采用BD09LL坐标系,而且具有WGS-48,GCJ-02坐标转换接口,所以我对上述采集的数据通过以上两个转换方法对位置进行转换,得到百度的坐标系,然后在百度的坐标定位工具(http://api.map.baidu.com/lbsapi/getpoint/index.html)中定位,确认实际是否位置一致。
经过测试发现如下结论:

序号 经度 纬度 WGS48->BD09经度 WGS48->BD09纬度 GCJ02->BD09经度 GCJ02->BD09纬度 位置一致坐标类型
1 28.255 113.0741666667 113.08658610 28.25765828 113.08069003 28.26092783 WGS48
2 28.255055 113.074167 113.08658632 28.25771306 113.08069031 28.26098281 WGS48
3 28.255 113.0738888889 113.08630670 28.25766231 113.08041105 28.26093265 WGS48
4 28.251874 113.079874 113.09232310 28.25445936 113.08642390 28.25770832 GCJ02
5 28.251877 113.079878 113.09232718 28.25446229 113.08642791 28.257711260 GCJ02
  1. iPhone指南针软件,得到的都是WGS48坐标数据
  2. Android软件获得坐标就存在两种类型坐标系
    如果要想获得国内坐标系是否是WGS48,还是GCJ02,通过如下方法即可:
  3. 获得经纬度(用任何可用的工具)
  4. 如果需要换算,可以利用工具(http://www.gzhatu.com/du2dfm.html)
  5. 通过百度API转换,也可以通过工具查看(http://www.gpsspg.com/maps.htm)
curl "http://api.map.baidu.com/geoconv/v1/?coords=113.0741666667,28.255&from=1&to=5&ak=hfyzyfi3dAG8dRE3GBTmiqrvpt6ZEr5j"
curl "http://api.map.baidu.com/geoconv/v1/?coords=113.0741666667,28.255&from=3&to=5&ak=hfyzyfi3dAG8dRE3GBTmiqrvpt6ZEr5j"

注意:http://www.gpsspg.com/maps.htm网站的Google地图已经失效(2019.7)。

关于坐标系的图示理解:

上图解释了,通过相同坐标系就不会有问题。

关于GPS坐标系和地图定位偏差相关推荐

  1. 百度地图定位偏差了吗?用微信定位完美解决。

    博客好久没更新了,可能是我懒了,也可能是最近太忙了.最近项目中有个需求,需要用到定位来查看用户的位置. 于是乎..... 成功的流程 通过微信定位获取经纬度坐标 ==>拿到坐标后通过百度地图的坐 ...

  2. android 地球坐标 火星坐标系,Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差...

    Android LBS地图开发基础知识之地球地理GPS坐标系经纬度偏移偏差 通常,我们所说的地球地理经纬度是WGS-84坐标系(World Geodetic System-1984 Coordinat ...

  3. Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差

    本文作者:ZhangPhil 欢迎各位转载!但请注明转载出处: http://blog.csdn.net/zhangphil/article/details/48024831 Android LB ...

  4. react-native原生GPS与高德地图坐标,百度地图坐标系的转换

    问题 今天用react-native原生GPS拿到得定位信息,如图: 之前高德地图取到的定位数据为(显示带有longtitude,latitude===的log)准确的 121.518828125,3 ...

  5. 高德,百度,Google地图定位偏移以及坐标系转换

    本文引用地址 一.地图坐标系解释 在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Go ...

  6. Android使用百度地图定位SDK在wifi下位置偏差

    前段时间公司上马了一个Android项目,其中用到了百度地图的定位SDK(V 3.1),上线后有用户反馈来说定位的位置不准确(我们展示给用户的地址是具体的街道地址,原来是直接使用的百度地图 SDK,需 ...

  7. Android使用Google Map服务 - 根据GPS信息在地图上定位

    Android使用Google Map服务 - 根据GPS信息在地图上定位 自暑假7月7日开始,到今天的8月7日,整个一个月,我总算是学到了Google Map这部分的内容.原本挺兴奋的,却被注册ap ...

  8. GPS坐标系与实际地图坐标系

    转自博客园:http://www.cnblogs.com/jay-dong/archive/2013/03/13/2957648.html 在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲 ...

  9. php调用百度地图定位,php用百度地图API进行IP定位和GPS定位

    /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key ...

  10. LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置

    LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置 1.位置订阅 1.1.国标设备编辑 1.2.选择设备 ...

最新文章

  1. main函数的参数问题 (转载)
  2. 调度锁解决任务间资源共享问题
  3. textarea标签内容为(英文或数字不自动换行)的解决方法
  4. 芯片里的CPU、GPU、NPU是什么,它们是如何工作的
  5. [BZOJ 2500] 幸福的道路
  6. 基于时空相关属性模型的公交到站时间预测算法
  7. Cacls命令使用格式
  8. ubuntu安装php5.3
  9. Nginx实战|Nginx健康检查
  10. 后端游戏引擎调研-2021.07
  11. CS5463代码模块解析(包含下载链接)
  12. 教你用迅雷下载百度云网盘的大文件
  13. sprintf函数的详解及sprint与printf结合使用 —————— 开开开山怪
  14. 网络爬虫-爱给音效素材网js逆向思路
  15. 见证边缘的力量!全球边缘计算大会•上海站顺利召开!
  16. 用快递100企业版接口(API)实现快递查询-Python
  17. 水晶报表打印出错,未能加载文件或程序集“CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0
  18. 股权转让这个创业方向靠谱吗?关于潜力股这个创业公司的一些思考
  19. 简单3步,在线完成gif动图制作
  20. BZOJ4399 魔法少女LJJ【线段树合并】【并查集】

热门文章

  1. abaqus 帮助文档 Substructure(子结构) 理论
  2. ARCGIS拓扑检查步骤
  3. winrar加密分析
  4. 【从零开始学架构-李运华】开篇词|照着做,你也能成为架构师!
  5. PS2019橡皮擦工具、背景橡皮擦工具、魔术橡皮擦工具
  6. BP神经网络python代码详细解答(来自原文)
  7. django——三种方式实现文件下载
  8. Java并发编程系列文章目录帖及源码
  9. python+pygame安装教程win8
  10. linux wqy字体安装,给openSUSE安装文泉驿字体