百度地图坐标纠偏和转换工具和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例子 ...
随机推荐
- Merge的用法
merge的使用说明: merge [into] [目标表] using <源表> on 条件 when matched 操作 when not matched 操作; 首先,请参看两张表 ...
- 2016 Multi-University Training Contest 1
8/11 2016 Multi-University Training Contest 1 官方题解 老年选手历险记 最小生成树+线性期望 A Abandoned country(BH) 题意: 1. ...
- Windows平台下为Python添加MongoDB支持PyMongo
到Python官网下载pymongo-2.6.3.win-amd64-py2.7.exe 安装pymongo-2.6.3.win-amd64-py2.7.exe 参照官方的用例进行测试 打开命令提示符 ...
- JavaScript中的this指向
this是谁 技术一般水平有限,有什么错的地方,望大家指正. this代指当前对象super调用父类的构造函数,应表会运网数物,加载驱动建立链接执行SQL处理结果,直到现在每想起这三点就能想起我上大学 ...
- python 之 前端初识 html
html语法代码示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- c# 反射事件
被反射类中: public delegate void CompeletedHandler(); public static event CompeletedHandler AnalysisCompe ...
- crontab中执行任务定位到秒级
每秒执行一次: * * * * * /bin/sleep 1 ; echo "1"
- HDU1242 BFS+优先队列
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- uva116
这题是一道dp的水题,类似于数塔,从右向左倒着加上去,找到最小值,然后在从左到右输出路径. #include"iostream" #include"stdio.h&quo ...
- 使用CallableStatement的用法
package Test; import java.sql.*; public class Test7 { public static void main(String[] args) { Conne ...