文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。算法
目前项目上若是要使用百度地图,得加载百度的开发包,而后经过百度提供的接口来调用百度地图以及将须要标记的点显示在百度地图中等等。微信
此方案存在明显劣势:架构
a.对原系统的破坏。一套从底层开发的系统,其地图的加载方式均是从底层经过换算行列号来进行加载的。而百度地图却必须脱离此方案经过调用百度API来实现,破坏了整个系统的架构,而且致使不少基于原架构的功能没法使用。工具
b.自身发布的矢量服务等没法使用。由于百度采用的是非标准火星坐标,本身采集的大量shp数据若是不纠正到百度坐标系下,是没法正确叠加到百度地图上的。这同时致使了,当咱们将shp数据进行矢量发布后,因为从百度获取的坐标不是该矢量服务对应的坐标系下的坐标,从而没法进行准确的查询等功能。blog
c.要素展现等功能没法定制。要素展现等必须使用百度API,将要素坐标等做为参数而后在百度地图上标记出来。这限制了要素的定制展现。接口
d.其余诸多问题。因为必须使用百度开发包,限制了AGS JS或OL的有效使用。图片
那么,咱们是否能不使用百度API,实现百度地图的准确加载,以及实现自身图层能够准确叠加到百度地图上,从而使自身图层对应的矢量服务能够正确使用?开发
下面我跟你们大体介绍下目前我和一个同事这两周的研究成果。get
若是咱们可以算出百度地图的地图级别、切图原点、瓦片大小。咱们即可以不使用百度的API来调用百度地图了。博客
经过对百度代码的解析,以及对标准横轴墨卡托投影的研究,咱们成功获取了百度地图的各个参数。
咱们将坐标转换分为了在线转换和离线转换,并开发了相关工具。
工具的功能是:将shp图层导入到工具后,能将shp图层转换成百度坐标系下的shp图层。
工具的原理是:创建控制点库,利用算法,实现坐标转换。
目前该成果还未用到项目中,有诸多地方须要改进或研究或实现:好比工具效率、精度厘米级上的提高、自制的百度瓦片下载工具等。
并且目前均是将坐标转到百度地图坐标系下。经过算法,咱们应该是能够将百度坐标转换到通用坐标系下,可是这里又涉及到如何将百度地图瓦片(栅格图片)纠正到通用地图下,此难度比单纯的矢量数据转换难不少。
就目前应用来看,若是要使用百度地图,除咱们GIS部分,须要手机组、MIS组、实景组等,均需保存的数据为百度坐标系下的坐标,如此各组对接起来才更方便。可是,此时保存的数据为百度坐标系下的数据,该数据若是要给其余公司使用,还得进行再次反算为通用坐标系下坐标。
可见,大项目上使用仍是有诸多不便的。不过,这个问题是使用百度地图的通用问题,跟咱们是否进行了去百度API化无关。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^