文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百度提供的接口来调用百度地图以及将需要标记的点显示在百度地图中等等。

此方案存在明显劣势:

a.对原系统的破坏。一套从底层开发的系统,其地图的加载方式均是从底层通过换算行列号来进行加载的。而百度地图却必须脱离此方案通过调用百度API来实现,破坏了整个系统的架构,并且导致很多基于原架构的功能无法使用。

b.自身发布的矢量服务等无法使用。因为百度采用的是非标准火星坐标,自己采集的大量shp数据如果不纠正到百度坐标系下,是无法正确叠加到百度地图上的。这同时导致了,当我们将shp数据进行矢量发布后,由于从百度获取的坐标不是该矢量服务对应的坐标系下的坐标,从而无法进行准确的查询等功能。

c.要素展示等功能无法定制。要素展示等必须使用百度API,将要素坐标等作为参数然后在百度地图上标记出来。这限制了要素的定制展示。

d.其他诸多问题。由于必须使用百度开发包,限制了AGS JS或OL的有效使用。

那么,我们是否能不使用百度API,实现百度地图的准确加载,以及实现自身图层可以准确叠加到百度地图上,从而使自身图层对应的矢量服务可以正确使用?

下面我跟大家大致介绍下目前我和一个同事这两周的研究成果。

2.解决方案

2.1 百度地图非API引用

如果我们能够算出百度地图的地图级别、切图原点、瓦片大小。我们便可以不使用百度的API来调用百度地图了。

通过对百度代码的解析,以及对标准横轴墨卡托投影的研究,我们成功获取了百度地图的各个参数。

2.2 坐标转换

我们将坐标转换分为了在线转换和离线转换,并开发了相关工具。

工具的功能是:将shp图层导入到工具后,能将shp图层转换成百度坐标系下的shp图层。

工具的原理是:建立控制点库,利用算法,实现坐标转换。

3.成果展示

4.问题

目前该成果还未用到项目中,有诸多地方需要改进或研究或实现:比如工具效率、精度厘米级上的提升、自制的百度瓦片下载工具等。

而且目前均是将坐标转到百度地图坐标系下。通过算法,我们应该是可以将百度坐标转换到通用坐标系下,但是这里又涉及到如何将百度地图瓦片(栅格图片)纠正到通用地图下,此难度比单纯的矢量数据转换难很多。

就目前应用来看,如果要使用百度地图,除我们GIS部分,需要手机组、MIS组、实景组等,均需保存的数据为百度坐标系下的坐标,如此各组对接起来才更方便。但是,此时保存的数据为百度坐标系下的数据,该数据如果要给其他公司使用,还得进行再次反算为通用坐标系下坐标。

可见,大项目上使用还是有诸多不便的。不过,这个问题是使用百度地图的通用问题,跟我们是否进行了去百度API化无关。

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                  

去百度API的百度地图准确叠加和坐标转换的解决方案研究的更多相关文章

  1. 百度API实例——google地图数据转化为百度地图数据

    前段时间做的项目前端都是用Google地图,最近在一个地方需要用到百度地图,因为不同地图都有自己的处理,同一个经纬度在不同地图上显示的位置并不相同,因此,要把以前的数据直接拿过来用需要做一个转换.查阅 ...

  2. 根据经纬度获取位置描述:百度API与高德API的区别

    百度API 使用百度坐标 1.访问方式一 http://api.map.baidu.com/geocoder/v2/?location=35.063592,118.38513&output=j ...

  3. 【百度地图API】百度API卫星图使用方法和卫星图对比工具

    原文:[百度地图API]百度API卫星图使用方法和卫星图对比工具 百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度 ...

  4. 百度地图热力图--批量地址转换应用(基于百度api)

    需求:把外卖订餐地址做个用户分布热力图 思路分析:第一步去百度地图api开放平台找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首先从百度API的demo例子 ...

  5. 如何在网中使用百度地图API自定义个性化地图

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. HTM L百度地图API 自定义工具地图实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 百度地图API和高德地图API资料集锦

    [高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行   [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...

  8. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能

    权声明:本文为博主原创文章,未经博主允许不得转载. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内.以及两点间的测距功能. 绘制多边形(蓝色) ...

  9. 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明

    前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...

随机推荐

  1. 高通AR和友盟SDK的AndroidManifest.xml合并

    高通AR和友盟SDK的AndroidManifest.xml合并 因为高通的AR在android中一开始就要启动,所有主Activity要设置为高通的Activity,即android:name=&q ...

  2. Unity3D UGUI之DoTweenAnimation脚本控制动画方法

    DOTweenAnimation脚本: Loops循环:-1时即永久循环播放. Loops Type 是选择播放模式. Ease属性里有很多,暂时只知道Linear的效果,其他有待单独写. ID下面可 ...

  3. 重载与覆盖(java)

    一般来说,分为两种情况.一是在同一个类里面有两个或两个以上的同名的方法,这些方法的名字相同,但参数不同,这种情况中叫重载.当你调用方法时,会根据你传进去的参数的类型来决定调用哪个方法.二是一个类继承了 ...

  4. git配置ssh(github)

    [参考官方文档] SSH keys are a way to identify trusted computers, without involving passwords. The steps be ...

  5. 浏览器访问Servlet

    浏览器访问Servlet1.指定一个Servlet路径(                     在web.xml :              <servlet>             ...

  6. 解决 PowerDesigner 错误 The generation has been cancelled…

    在Model Settings中按照如下图设置即可.

  7. ios视频播放器,代码和界面分离

    最近业余时间整理的一个ios播放器,界面采用storyboard,以前几乎都是用代码布局,但是用过一个项目storyboard后,就感觉storyboard很靠谱,团队合作版本控制的问题解决其实很简单 ...

  8. Centos7下安装mono3.10.0

    mono 3.10.0 正式发布:性能进一步改进,以前已经写过一篇  Centos 7.0 安装Mono 3.4 和Jexus 5.6.下面我们在CentOS 7上通过源码安装Mono 3.10, 需 ...

  9. 跨平台网络抓包工具-Microsoft Message Analyzer

    Microsoft Message Analyzer (MMA 2013)是微软最受欢迎的Netmon的最新版本. 在Netmon网络跟踪和排除故障功能的基础上提供了更强大的跨平台网络分析追踪能力.园 ...

  10. Java中常见的29个运行异常

    ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotR ...