原文作者: 深白Andy

原文地址: http://my.eoe.cn/gueryue/archive/15390.html

众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对应的转换参数确定。 基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的基准面。基准面是在椭球体基础上建立的,椭球体可以对应多个基准面,而基准面只能对应一个椭球体。 意思就是无论是谷歌地图、搜搜地图还是高德地图、百度地图区别只是针对不同的大地地理坐标系标准制作的经纬度,不存在准不准的问题,大家都是准的只是参照物或者说是标准不一样。

谷歌地图采用的是WGS84地理坐标系(中国范围除外),谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系,百度采用的是BD09坐标系,而设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,为什么不统一用WGS84地理坐标系这就是国家地理测绘总局对于出版地图的要求,出版地图必须符合GCJ02坐标系标准了,也就是国家规定不能直接使用WGS84地理坐标系。所以定位大家感觉不准确很多又叫出版地图为火星地图其实只是坐标系不一样而已。

这就是为什么设备采集的经纬度在地图上显示的时候经常有很大的偏差,远远超出民用GPS 10米偏移量的技术规范,于是我们就有了谷歌地图纠偏 腾讯搜搜纠偏 混合地图纠偏 百度谷歌互转存在的价值。

那如何对谷歌地图纠偏、搜搜soso地图纠偏或者对百度地图纠偏呢,如果用算法目前没有太好的算法直接转换,所以大家采用的都是比对的方法吧地球划分成若干个小块找到地图的偏差量记录下来,然后根据任意经纬度找寻最接近的偏差量加上偏差量就可以实现不同地图之间的经纬度转换。现在有0.01度纠偏经纬度信息,可以提供任意格式,可以直接把经纬度偏移量调整回来。

百度地图纠偏信息包含中国海域一共29,699,997条纠偏数据,谷歌地图只包含中国陆地一共12,597,551条纠偏数据,基站数据移动和联通的共340万数据。

移动联通基站数据字段说明: MCC:国家 (460是中国) MNC:0是移动,1是联通 LAC:小区号 CELL:基站号 LNG:纬度 LAT:经度 O_LNG:纠偏后的纬度(用于google地图显示) O_LAT:纠偏后的经度(用于google地图显示)PRECISION:基站半径范围单位米 ADDRESS:详细地址中文描述 REGION:省份 CITY:城市 COUNTRY:国家

以上摘自http://www.haotsp.com/

之所以说这个是因为前些日子做的项目有这样的一个需求,展示的是百度地图,然后想利用百度地图上取到经纬度的点,用高德地图的api逆地理编码获取当前位置的文字信息。一开始以为全球的经纬度都是确定值的嘛,大家共用的。其实不然,由于每个地图使用的坐标系不同,我伟大的祖国为了保密需要,规定不能直接使用WGS84地理坐标系,于是应用于中国的各个地图就会在原来坐标的基础上经过一个加密的加偏算法,把加偏过的坐标呈现给你,而不同地图的加偏算法又是不一样的,有的甚至是多次加偏。也就是说同样你是在人民广场,用百度地图和谷歌地图取到的坐标值是不一样的。

经研究发现,百度地图的坐标系为BD09,高德地图坐标为GCJ02,这样就存在不同坐标系的坐标之间转换的问题了,查api吧,然后又发现无论百度地图还是高德地图,api列表里都没有提这个事情。但是上网一查,还是发现了他们都有个隐藏类:CoordinateConvert,但是这个类只提供了转向他们自己坐标系的方法,比如说:

 123456789
10
11

//百度api
CoordinateConvert.fromGcjToBaidu(GeoPoint geoPoint);
//从gcj02坐标系转到bd09坐标系
CoordinateConvert.fromWgs84ToBaidu(GeoPoint geoPoint);
//从wgs84坐标系转到bd09坐标系//高德api
//从wgs84坐标系转到gcj02坐标系
CoordinateConvert.fromGpsToAMap(double arg0, double arg1);
CoordinateConvert.fromSeveralGpsToAMap(String arg0);
CoordinateConvert.fromSeveralGpsToAMap(String arg0);

而因为我是展示的百度地图,有要获取百度地图上的中心点的经纬度然后在作为参数调用高德地图api的需求,而百度地图并未提供bd09坐标系转出的api(也可以理解,因为如果这样的话,相当于没加密啊,自己将加密算法写出来,再给个解密的api不是有毛病么,不能不把国家的规定放眼里嘛,百度也说有深层次的需求要以公司名义给他们发邮件什么的,但是一般来说一个小安卓项目客户不会那么兴师动众,而且据群众反映,邮件的效果也不怎么好),所以一时做了罢。

但是柳暗花明又一村了,虽然无法将百度地图上的任意点转为gcj02坐标系的点,但是百度地图还是在他们的定位api里提供了方法,使得应用在获取当前位置的时候,可以获取以“gcj02”为坐标系的点:

1
2

LocationClientOption option = new LocationClientOption();
option.setCoorType("gcj02");//设置坐标类型

这样以来,就可以用高德地图获取位置信息了,虽然说只能有当前位置这一个点是取成gcj02坐标的点是比较囧的o(╯□╰)o ,还有,别忘了,取得的当前点要转化成bd09的坐标系之后,再展示在百度地图上,不然是会有偏差的。

另外比较一下百度地图和高德地图(因为害怕谷歌地图在大陆地区的服务受限问题等等,所以没考虑使用谷歌地图,也就没怎么研究)。

百度地图在页面上的展示方面做的还是很好的,包括页面的缩放,信息的标注等等,相比之下高德地图就会在某些安卓版本的某些机器上出现在放缩的时候地图信息展示的不够清晰不够明确的情况,而且在定位时,百度的地位相对准确,因为我们公司的网络服务器不在公司办公所在地,所以高德地图有时候定位就定位到服务器的地址去了,百度从我使用至今还没出现过这样的错误。

但是百度地图在poi搜索这一块,在我看来是相对薄弱的,百度地图的poi搜索在不输入关键字的时候,是不能做模糊搜索的,而且也不能根据类型搜索(比如仅搜索饮食,搜索学校之类的),而在高德地图里这些就做到了。而且在逆地理编码时,高德地图获取的结果是相对比百度地图更丰富的。

关于百度地图和高德地图,关于地图坐标系相关推荐

  1. 直接调用高德地图_高德上线“充电地图”功能 覆盖全国96%充电桩信息

    当下,电动车车主最"头疼"的事,莫过于充电不方便了吧.当自己的爱车电量告急急需充电时,看着一个又一个的充电品牌软件,却不知道选择哪一个,也会让不少车主头大.为此,高德地图带来了不错 ...

  2. 高德h5地图api接口_html5通过腾讯地图、高德地图、百度地图开发api接口获取坐标对应的周边信息...

    在通过 geolocation 获取到当前的 GPS 坐标后,需要通过"逆地理位置解析"才能得到街道对应的街道.建筑物.周边等相关信息. 下面我使用国内的三家主要的地图厂商(腾讯地 ...

  3. ios 一步一步学会自定义地图吹出框(CalloutView)--(百度地图,高德地图,google地图)

    前言 在ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的google地图,只提供了这四个属性,如果想添加 ...

  4. 后端根据百度地图真实路径距离_导航软件哪家强?实测百度地图and高德地图哪个更靠谱...

    随着社会的不断发展,人们的生活越来越离不开地图导航,无论是开车出行还是到去到陌生的地方,我们都会用到手机地图.然而在众多导航软件中,使用最为广泛的就要属百度地图和高德地图了.但别看都是导航软件,其中差 ...

  5. 基本农田卫星地图查询_#重庆朝天门#谷歌百度腾讯高德“卫星地图”PK,谷歌更胜一筹...

    截图自便民查询网,各家卫星地图PK,各有千秋~ 谷歌精确度最高:5m,来福士修建中,嘉陵江是绿的,长江是黄的.两江交汇处有一条分明的界线. 谷歌 5m:20ft 谷歌 50m:100ft 谷歌 200 ...

  6. 通过腾讯地图、高德地图、百度地图开发接口获取坐标对应的周边相关信息

    通过腾讯地图.高德地图.百度地图开发接口获取坐标对应的周边相关信息 更新: 以前出于好意暴露了个人的KEY,现已被烂用.为不影响您的业务,请使用我的KEY的朋友去申请自己的KEY,我的KEY将在不久后 ...

  7. Android app调用第三方地图(百度地图,高德地图,谷歌地图)导航

    因为公司项目需要用到外部导航,找到一些,大兄弟们凑合看...好吧反正也没人看- - 1.调用百度导航 //开启百度导航public void startNavi() {//百度地图,从起点是LatLn ...

  8. 地图--WGS84 高德坐标 百度坐标的相互转换(好用推荐)

    在地图学中,一般将坐标分为投影坐标和地理坐标.地理坐标和投影坐标的联系和区别对于一般的地图使用者而言可能并不需要掌握的非常清楚.通俗一点来说,地理坐标是一个球体的坐标,而投影坐标是一个平面的坐标.常用 ...

  9. swift中检测跳转苹果自带地图、高德地图、百度地图、腾讯地图

    首先申明,此文章是转载 我是闰土你是猹 博主的文章,觉得有用,就拿过来,确实不好找相关案例,特此记录一下!大家可以移步文章原地址:https://blog.csdn.net/qq_30932479/a ...

最新文章

  1. winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...
  2. 对图像数据最主要的预处理: Resize
  3. Spring Boot 之构建Hello Word项目
  4. python旅游推荐系统_用python写一个简单的推荐系统
  5. 微信开发(一):用JSAPI做微信支付+微信卡包(代金券)
  6. mysql忘记root密码恢复
  7. 移动OA平台现状(移动运营商)
  8. js获取浏览器信息及版本(兼容IE)
  9. 河南初中信息技术测试软件,中学信息技术考试练习系统——河南省版
  10. Adobe PhotoShop(PS) for Windows 快捷键/PS快捷键
  11. 苹果电脑mp3转gif_用苹果电脑做gif动图的方法终于找到了...
  12. 重磅丨美国公布长达35页的《2016-2045年新兴科技趋势报告》
  13. 38、稀疏矩阵的十字链表表示和创建
  14. Python游戏之运动物体寻路——A星算法与扩展
  15. 怎么压缩gif图大小?试试这个图片压缩攻略
  16. 自己制作Chrome便携版实现多版本共存
  17. Invoking “cmake“ failed报错
  18. 2020年河南高考--各高校在河南录取分数线预测(本科二批——文科)
  19. 用计算机怎么算二进制数,计算机上的二进制是怎么算的?(计算机中使用二进制来处理和储存所有的数据“逢二进一”。它使用0和1来表示所有的数。例如:1...
  20. 华子20221012笔试第三题

热门文章

  1. Qt实现屏幕中间显示小点,打游戏瞬狙,你还在屏幕中间贴红点吗?
  2. JAVA计算机毕业设计员工健康检测系统Mybatis+源码+数据库+lw文档+系统+调试部署
  3. 获取树莓派4系统信息
  4. 小伙子开超市,抓住“人性贪婪”,二个步骤过后,生意瞬间火爆!
  5. cad 中的计算机在哪里打开,CAD计算器如何使用?
  6. 用c语音打一个简单的a+b
  7. 【2021】Structure-Preserving Deraining with Residue Channel Prior Guidance
  8. Android之Canvas画笔和画布
  9. [附源码]Python计算机毕业设计高校请假管理系统
  10. Linkerd2入门