去百度API的百度地图准确叠加和坐标转换的解决方案研究
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处: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的百度地图准确叠加和坐标转换的解决方案研究的更多相关文章
- 百度API实例——google地图数据转化为百度地图数据
前段时间做的项目前端都是用Google地图,最近在一个地方需要用到百度地图,因为不同地图都有自己的处理,同一个经纬度在不同地图上显示的位置并不相同,因此,要把以前的数据直接拿过来用需要做一个转换.查阅 ...
- 根据经纬度获取位置描述:百度API与高德API的区别
百度API 使用百度坐标 1.访问方式一 http://api.map.baidu.com/geocoder/v2/?location=35.063592,118.38513&output=j ...
- 【百度地图API】百度API卫星图使用方法和卫星图对比工具
原文:[百度地图API]百度API卫星图使用方法和卫星图对比工具 百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度 ...
- 百度地图热力图--批量地址转换应用(基于百度api)
需求:把外卖订餐地址做个用户分布热力图 思路分析:第一步去百度地图api开放平台找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首先从百度API的demo例子 ...
- 如何在网中使用百度地图API自定义个性化地图
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- HTM L百度地图API 自定义工具地图实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
权声明:本文为博主原创文章,未经博主允许不得转载. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内.以及两点间的测距功能. 绘制多边形(蓝色) ...
- 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明
前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...
随机推荐
- HDU2433 BFS最短路
Travel Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Allegro之无法保存(提示和用户有关或者和lock有关)
使用中无意出现此情况 无奈重新打开文件时发现brd文件下面有个.brd.lck文件,顺手删掉,回复正常~ 此为bug解bug,具体方法下次遇到再仔细研究是为什么~ 养成隔几分钟手动保存的好习惯,防止b ...
- Windows 下的 Redis 的启动
1. 首先需要去下载Windows 版本的Redis,地址:https://github.com/MSOpenTech/redis, 这里你可以选择下载源码后自己编译,也可以直接下载发布后的版本,我是 ...
- JSP页面之间互相传值
页面一: <s:if test="#list.sourceId==1"> <a ...
- C++ 回调函数的定义与用法
一回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函 ...
- 一篇关于匿名函数(function(){})()不错的文章
代码如下: (function(){ //这里忽略jQuery所有实现 })(); (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他 ...
- 参数的元数据信息&数据库的元数据信息
package it.cast.jdbc; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql. ...
- python文件读取
1.如何将一个“lessons.txt”文档一行行输出? myfile = file(‘lessons.txt’) for f in myfile.readlines(): print f myfil ...
- SQL Server差异备份的备份/还原原理
SQL Server差异备份的备份/还原原理 记住一点:差异备份是基于最后一次完整备份的差异,而不是基于最后一次差异的差异 备份过程: 1-完整备份之后有无对数据库做过修改,如果有,记录数据库的最 ...
- 解读ASP.NET 5 & MVC6系列
本系列的大部分内容来自于微软源码的阅读和网络,大部分测试代码都是基于VS RC版本进行测试的. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介 解读ASP.NET 5 ...