GPS坐标在基于WGS84坐标系统的地图上显示出现偏移,误差很大,而且不是线性的,网上有人给出算法公式,都是胡说八道,根本不好用,更离谱的还要根据不同的城市,进行不同的加偏,还有的提供了一个加偏数据库,瞎扯淡。
商业地图数据提供和服务提供商,都必须要到国家测绘管理部门,进行评审通过后才能在大陆发布,谷歌地图也也一样。地图服务器商都需将真实坐标的电子地图,加密成火星地图和火星坐标。
GPS导航设备也一样。
开发者之所以遇到偏移的悲剧,主要原因是:
GPS设备是小公司开发的,没有做加偏,所以在经过加偏的正版地图和谷歌、百度、Bing地图上是偏移的。
所以偏移其实给地图一点关系都没有,管你是谷歌、百度还是搜狐地图,只要对GPS坐标进行加偏处理就能够解决这个问题。
为了解决偏移的问题,我就开发了一个纠偏的动态库给开发者来使用,直接在.NET的工程项目中调用转换方法即可,绝对好用,在谷歌和百度地图上,车辆行驶的轨迹和地图的道路是严丝合缝的吻合的。
本系统是实时加偏,采用加偏算法和逆向纠偏算法,可以实时的进行百度地图的坐标系统转换,不需要百度自带的webservice服务,避免了百度调用接口的限制及性能的损失,因为每次远程调用http,都要耗费不固定的远程调用时间及调用超时的时间。
另外存在一个问题是,无论是那个地图,在地图上画的区域存储在数据库的都是自己地图坐标系统的经纬度节点,如果要进行电子围栏报警,下发给终端的时候,终端是百分百误报的,因为终端的坐标和地图坐标系统不符,需要在下发给终端前,还原成原始坐标再下发给终端。所以就需要逆向还原的纠偏算法。我们提供正向和反向的算法库。
GPS算法服务库Demo 已下载 82 次
view source开发说明:
1 | double latitude = 38.123; |
2 | double longitude = 124.5; |
4 | GpsPoint gp = MapFix.Fix(latitude, longitude); |
6 | List<GpsPoint> needTransformGpsPoints; |
7 | List<GpsPoint> gpsPoints = MapFix.Fix(needTransformGpsPoints); |