博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于地图坐标和定位偏差
阅读量:5941 次
发布时间:2019-06-19

本文共 1260 字,大约阅读时间需要 4 分钟。

 

实验背景:

  研究并比较,三种定位结果(主要是讨论GPS定位):

  1Google Maps + Android API的定位

  2.百度地图SDK+百度定位SDK

  3.高德地图SDK+高德定位SDK

 

  测试条件:国产Android手机。

 

定位结果:

  2和3都比较靠谱,定位精度符合预期(室外GPS定位误差在10米以内),当然由于百度和高德的定位SDK中一般是混合定位,会结合利用网络定位和后台数据支持什么的。

  1的定位结果基本无效,显示的位置和在地图上标记的位置会有几十米的差距。

  虽然谷歌地图可以同时注册多种定位方式,比如GPS和网络定位同时开启,然后手动编程选择最佳位置,但是网络定位的精度太低,GPS的精度虽然高但是存在固有偏差(精确但不准确),所以无法拯救这种位置偏差。

 

原因分析:

  由于国家测绘局的规定,地图坐标必须加密,加入随机的偏移。至少需要满足的一个标准叫GCJ-02

  GCJ-02参见百度百科:

  GCJ-02是由中国国家测绘局制订的地理信息系统的坐标系统。

  它是一种对经纬度数据的加密算法,即加入随机的偏差。
  国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

 

Google Maps为什么出错:

  Google Maps的原生坐标是WGS-84,国际坐标,但是中国区域的部分,为了符合中国测绘法律规定,加入了偏移,满足了GCJ-02标准。

  而Android API得出的定位结果值,是GPS读出的,是没有加入偏移的,是WGS-84坐标

  所以坐标体系的不对应导致了误差。

 

 

百度地图为什么是对的:

  百度定位SDK部分介绍

()

  可以通过public void setCoorType ( String )方法定义返回位置值的坐标类型。

  支持返回若干种坐标系,包括国测局坐标系、百度坐标系,需要更多坐标系请联系百度。

  目前这些参数的代码为

  返回国测局经纬度坐标系 coor=gcj02

  返回百度墨卡托坐标系 coor=bd09

  返回百度经纬度坐标系 coor=bd09ll

  百度手机地图对外接口中的坐标系默认是bd09ll,如果配合百度地图产品的话,需要注意坐标系对应问题。

 

  相关问题:

()

  国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。

  百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。

  百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。

 

高德地图的处理方式

  大致也是和百度类似的:

  
  高德地图的对外提供的坐标都是经过国家测绘局加密处理的,符合国家测绘局对地理信息保密要求,因此如果使用GPS获得的原始坐标在高德地图显示,会有偏差,需要将原始坐标经过加密转换,转化为高德坐标。

 

一些参考资料:

  (也不知道靠谱不)

  

  转换算法:

 

 

 

转载地址:http://gymtx.baihongyu.com/

你可能感兴趣的文章
清橙A1202&Bzoj2201:彩色圆环
查看>>
使用data pump工具的准备
查看>>
springMVC---级联属性
查看>>
get和post区别
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
cmd.exe启动参数说明
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>
从零开始来看一下Java泛型的设计
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
让我们荡起双桨,Android 小船波浪动画
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
tomcat 8.0虚拟机配置文档
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>