代码改变世界

GPS地图坐标偏移及地图纠偏解决方法和代码

2013-05-08 08:14  GPS视频平台产品经理  阅读(8295)  评论(0编辑  收藏  举报

GPS地图坐标偏移及地图纠偏解决方法和代码

 很多国内开发者使用ArcGIS等地图引擎或者基于谷歌百度地图、GMap.NET开发地图应用程序,非常方便,可是在实际应用中傻眼了,因为GPS坐标的位置在谷歌地图上出现了严重的便宜,这个是要了命的,地图应用就是要给别人一个精确的Location,解决不了偏差,前面的开发都是白费。但是地图引擎只是一个对瓦片操作和客户端GDI输出的操作进行了较好的封装,对于有中国特色的国情,跟人家八竿子打不着。

这和地图引擎没有关系, 在中国商业地图数据提供和服务提供商,都必须要到国家测绘管理部门,进行评审通过获得牌照后才能在大陆发布,谷歌地图也也一样。地图服务器商都需将真实坐标的电子地图,加密成火星地图和火星坐标。GPS导航设备生产制造商也需要这样做。所以就出现了GPS坐标在基于WGS84坐标系统的地图上显示出现坐标偏移,误差很大很严重,而且不是线性的,网上有人给出算法公式,都是胡说八道,根本不好用,更离谱的还要根据不同的城市,进行不同的加偏,还有的提供了一个加偏数据库,瞎扯淡。

开发者之所以遇到坐标偏移的悲剧,主要原因是:

     GPS设备是小公司开发的,没有做加偏,所以在经过加偏的正版地图和谷歌、百度、Bing地图上是偏移的。

所以偏移其实给地图一点关系都没有,管你是谷歌、百度还是搜狐地图,只要对GPS坐标进行加偏处理就能够解决这个问题。

为了解决GMap.NET的谷歌地图坐标偏移的问题,我就开发了一个加偏的动态库给开发者来使用,直接在.NET的工程项目中调用转换方法即可,绝对好用,在谷歌和百度地图上,车辆行驶的轨迹和地图的道路是严丝合缝的吻合的。

实时加偏,采用加偏算法和逆向纠偏算法,可以实时的进行百度地图的坐标系统转换,不需要百度自带的webservice服务,避免了百度调用接口的限制及性能的损失,因为每次远程调用http,都要耗费不固定的远程调用时间及调用超时的时间。

另外存在一个问题是,无论是那个地图,在地图上画的区域存储在数据库的都是自己地图坐标系统的经纬度节点,如果要进行电子围栏报警,下发给终端的时候,终端是百分百误报的,因为终端的坐标和地图坐标系统不符,需要在下发给终端前,还原成原始坐标再下发给终端。所以就需要逆向还原的纠偏算法。我们提供正向和反向的算法库。

需要购买C# .netframework2.0 离线版 DLL 的300元 算法源码600元,包含原始坐标加偏和逆向纠偏还原成原始坐标。提供火星坐标和百度坐标两种接口,不是数据库,提供的是算法源码,实时解析,需要的可以直接联系我(speed.zheng@gmail.com)购买。

 离线版的是基于C#动态库调用,不需要联网,不需要数据库,体积不超过1M。 在线试用版可以试用一个月,一个月后功能自动失效。

很多人宁愿在网上找一打算法,花很多时间自己捣鼓,最好没有什么好的效果。其实纠偏这个功能,准不准,下载下来,在地图商测试一目了然。收费有收费的道理。

GPS坐标地图纠偏GPS坐标地图纠偏 已下载 1414 次

调用说明:

1.环境.NET4.0 类库支持;

2.引用GpsFix.dll此动态库到你的工程项目中;

3.C#开发:

double latitude = 38.123;
double longitude = 124.5;
//单个坐标转换
GpsPoint gp = MapFix.Fix(latitude, longitude);

//批量转换
List<GpsPoint> needTransformGpsPoints;
List<GpsPoint> gpsPoints = MapFix.Fix(needTransformGpsPoints);