坐标纠偏的实现

    因我们项目中使用了gps 、baiduMap 和 googleMap 3种坐标,且各坐标间都不能通用,相互间都存在偏差,小则几十米大则偏差几百米或者更大。其中原因,可以搜索下“火星坐标”。
    现阶段只有baidu map 有纠偏接口,精度较高,但只局限于gps转百度、谷歌转百度,而没有百度转gps、谷歌坐标的接口,虽然网上有转换算法,但都存在偏差,精度也不是很高,纯粹调用百度API来纠偏网络负载太大,延时也非常明显。因此,现在的做法是结合百度map 坐标转换的api 和本地数据库来纠偏。当遇到一个gps或谷歌坐标,查询T_GPS2BAIDU_OFFSET或T_GOOGLE2BAIDU_OFFSET表,若没有数据则调用OffsetUtil.java类实现获取偏移量并保存到数据库中,至于gps与Google 坐标偏移量可以通过baidu 坐标为中介计算出,在纠偏数据表中也都各有百度、谷歌区域标示,就是为了做gps>google坐标纠偏的,这样纠偏数据库就慢慢形成了。但有一点,随着时间的变化,各地图的坐标也有可能变化,所以暂时考虑超过半年的纠偏数据可以删除不取。
对于一些静态的坐标数据入库(如终端实时坐标),建议分别计算出百度、谷歌等坐标并将其入库,这样在地图上显示轨迹等取数据时就不需要再去计算,展示速度也就提高了。
   附件是偏移量计算工具栏和坐标转换工具类。

猜你喜欢

转载自jianfenggong.iteye.com/blog/2066176