百度地图坐标纠偏和转换工具和DLL
百度一直以来都是个即想装出一副拥抱互联网开放的样子,又为了短期商业利益封闭自己的公司,模仿谷歌地图,开放了自己的百度地图 API,为了防止别人盗用其数据和用户自由迁移,地图相比于火星坐标,又更加封闭,在火星坐标的基础上进一步的加偏,偏上加偏。国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,让开发人员倍感不爽。
为了方便开发人员调用,我们开发了百度坐标转换工具,并提供动态库方便开发者调用。算法库可见我的文章:http://www.cnblogs.com/productivity/p/3974591.html
提供功能:
1.原始GPS坐标转百度坐标
2.火星坐标转百度坐标
3.百度坐标转GPS坐标
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using MapServiceClient;
- using MapServiceClient.MapFix;
- using GpsNET.CoordService;
- using GpsNET;
- /**
- *@author: www.ltmonitor.com
- *@email: speed.zheng@gmail.com
- */
- namespace MapServiceDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- MapServiceClient.MapFix.IMapService service = MapServiceFactory.getMapService();
- double lng1 = 121.111;
- double lat1 = 32.121;
- //获取地理位置
- String location = service.GetLocation(lng1, lat1);
- Console.WriteLine(location);
- //测试点是否在圆形区域中
- double centerLng = ;
- double centerLat = ;//圆心坐标
- double radiusByMeter = ;//圆形半径,米为单位
- Boolean isInCircle = service.IsInCircle(lng1, lat1, centerLng, centerLat, radiusByMeter);
- //测试点是否在多边形中
- MyPointLatLng p = new MyPointLatLng(lat1, lng1);
- MyPointLatLng p1 = new MyPointLatLng(33.12,121.10);
- MyPointLatLng p2 = new MyPointLatLng(33.12, 121.10);
- MyPointLatLng p3 = new MyPointLatLng(33.12, 121.10);
- MyPointLatLng p4 = new MyPointLatLng(33.12, 121.10);
- MyPointLatLng[] points = new MyPointLatLng[]{p1,p2,p3};//多边形的顶点
- Boolean isInPolygon = service.IsInPolygon(p, points);
- //测试点是否在矩形中,矩形的左上角和右下角的坐标必须要输入正确,不能搞混
- //Boolean isInRect = service.IsInRect(lng1,lat1,lngLeft, latTop,lngRight,latBottom);
- int offset = ;//路线偏移的最大距离
- Boolean isOnline = service.IsPointOnLine(p, p1, p2, offset);
- //测试坐标加偏和解偏
- for (int m = ; m < ; m++)
- {
- double lng = 121.122 + m * 0.01;
- double lat = 33.222 + m * 0.01;
- //百度坐标加偏
- MyPointLatLng pt1 = service.Fix(lng, lat, "baidu");
- /**
- *反向还原成原始的GPS坐标
- */
- MyPointLatLng pt2 = service.Reverse(pt1.Lng, pt1.Lat, "baidu");
- /**
- * 获得两点之间的误差距离,单位米
- */
- double d = service.GetDistanceByMeter(lng, lat, pt2.Lng, pt2.Lat);
- Console.WriteLine("百度坐标还原后,两点之间的误差精度:" + d + "米");
- //火星坐标系(如谷歌,高德)坐标加偏
- pt1 = service.Fix(lng, lat, "google");
- /**
- *反向还原成原始的GPS坐标
- */
- pt2 = service.Reverse(pt1.Lng, pt1.Lat, "google");
- /**
- * 获得两点之间的误差距离,单位米
- */
- d = service.GetDistanceByMeter(lng, lat, pt2.Lng, pt2.Lat);
- Console.WriteLine("谷歌坐标还原后,两点之间的误差精度:" + d + "米");
- }
- Console.ReadLine();
- }
- }
- }
- 原始坐标,和经过加偏再解偏后的坐标比较,误差精度在1米左右,非常精确。运行结果如下:
本系统实时加偏,采用加偏算法和逆向纠偏算法,可以实时的进行百度地图的坐标系统转换,不需要百度自带的webservice服务,避免了百度调用接口的限制及性能的损失,因为每次远程调用http,都要耗费不固定的远程调用时间及调用超时的时间。
另外存在一个问题是,无论是那个地图,在地图上画的区域存储在数据库的都是自己地图坐标系统的经纬度节点,如果要进行电子围栏报警,下发给终端的时候,终端是百分百误报的,因为终端的坐标和地图坐标系统不符,需要在下发给终端前,还原成原始坐标再下发给终端。所以就需要逆向还原的纠偏算法。我们提供正向和反向的算法库。
需要购买C# .netframework2.0 离线版 DLL 的300元 算法源码600元,包含原始坐标加偏和逆向纠偏还原成原始坐标。提供火星坐标和百度坐标两种接口,不是数据库,提供的是算法源码,实时解析,需要的可以直接联系我(2379423771@qq.com)购买。
API |
坐标系 |
百度地图API |
百度坐标 |
腾讯搜搜地图API |
火星坐标 |
搜狐搜狗地图API |
搜狗坐标* |
阿里云地图API |
火星坐标 |
图吧MapBar地图API |
图吧坐标 |
高德MapABC地图API |
火星坐标 |
灵图51ditu地图API |
火星坐标 |
百度地图坐标纠偏和转换工具和DLL的更多相关文章
- 百度和谷歌的逆地址解析及GPS、谷歌地图和百度地图坐标之间的转换(python版)
#!/usr/bin/env python # coding:utf-8 # @author: KaiVen """ GPS坐标转换: WGS-84:是国际标准,GPS坐 ...
- GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样?
GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样? 先了解一下 高德地图 采用: GCJ-02 (不可逆) 百度百科: http://baike.baidu.com/link?url ...
- GPS坐标转百度地图坐标
百度地图提供了相关API:BMap.Convertor.translate, 但是使用上存在部分限制:1.次数限制:2.异步回调 可以用如下方法: /** * 地图位置计算工具(将GPS坐标转换成百度 ...
- 微信JS-SDK坐标位置转换为百度地图坐标
微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流 ...
- iOS 之地图坐标体系和转换
一.坐标体系 首先我们要明白,开发者能接触到哪些坐标体系呢? 第一种分类: 1. GPS,WGS-84,原始坐标体系.一般用国际标准的GPS记录仪记录下来的坐标, 都是GPS的坐标.很可惜,在中国,任 ...
- GPS坐标转换为百度地图坐标
/** * GPS坐标转换为百度地图坐标 * 需要引入javabase64.jar 和json的一些包 * */ public class Gps2BaiDu { public static void ...
- 使用百度地图API进行坐标系转换
最近在做移动APP的定位功能的时候发现系统GPS获取的位置信息再从百度地图API获取的实际地址总是有误差,偏离了好几个街道,但百度地图本身没这个问题.在网上查找一番发现了地图的坐标系一说,下面简单介绍 ...
- Java百度地图经纬度纠偏
在国内使用电子地图获取到的经纬度都不是真实的经纬度,而是经过一定的算法在真实的经纬度上添加了一个偏移量,且不同的地图有不同的算法.现在告诉大家在java中怎样对百度地图进行纠偏,主要实现将真实的经纬度 ...
- 百度地图热力图--批量地址转换应用(基于百度api)
需求:把外卖订餐地址做个用户分布热力图 思路分析:第一步去百度地图api开放平台找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首先从百度API的demo例子 ...
随机推荐
- Android开发各类常见错误解决方案
本文属于个人平时项目开发过程遇到的一些问题,记录下来并总结解决方案,希望能帮到大家解决问题,有些问题的解决方案是在StackoverFlow上找到的,建议大家遇到问题多去上面找,基本上都能找到解决方案 ...
- Javascript中的apply与call详解
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 一.方法定义 1.call 方法 语法:call([thisObj[,arg1[, arg2[, [,.arg ...
- git stash和git stash pop
git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个comm ...
- requerjs 合并 优化配置
/* * This is an example build file that demonstrates how to use the build system for * require.js. * ...
- CentOS7下安装chrome浏览器
在CentOS 7环境下安装chrome浏览器 1.修改yum源 在/etc/yum.repos.d/目录下新建文件google-chrome.repo,向其中添加如下内容: [google-chro ...
- js快速排序
function sort(arr){ if(arr.length<=1){ return arr; } var num = Math.floor(arr.length/2); var numV ...
- windows 安装MySql
转载:http://blog.csdn.net/longyuhome/article/details/7913375 Win7系统安装MySQL5.5.21图解 大家都知道MySQL是一款中.小型关系 ...
- php摇杆Tiger摇奖
先说下整体思路,代码已附下方. 1.递归产生一个非中奖数(即非连续数字:'111','222','333','444','555','666','777','888') 2.点击摇奖,把奖项通过设置的 ...
- 农业银行快捷支付php版说明和实例代码
接入的是shopnc,代码改改就可以用了,虽然不是一个完善的类,也可以按照类的方法直接调用,省得再去扣开发文档 农行在接收返回信息也会验证一次,还有一点就是页面通知返回结果 一定要用服务器通知,不然会 ...
- __DATE__ 与 __TIME__转换为标准格式时间字符串的方法
// Example of __DATE__ string: "Jul 27 2012"// 01234567890 #define BUILD_YEAR_CH0 (__DATE_ ...