百度地图坐标纠偏和转换工具和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例子 ...
随机推荐
- Daily Scrum Meeting ——FourthDay
一.Daily Scrum Meeting照片 橙汁去北京参加 ICPC比赛了,差不多15号回来 二.Burndown Chart 终于不是一条直线了..
- 源码解析-Volley(转自codeKK)
Volley 源码解析 本文为 Android 开源项目源码解析 中 Volley 部分项目地址:Volley,分析的版本:35ce778,Demo 地址:Volley Demo分析者:grumoon ...
- IE、FF、Chrome浏览器中的JS差异介绍
FF.Chrome:没有window.event对象 FF.Chrome:没有window.event对象,只有event对象,IE里只支持window.event,而其他主流浏览器两者都支持,所以 ...
- dedecms头部常用:标题,栏目描述,关键词
调用SEO标题:<title>{dede:field.title/}_{dede:field.seotitle /}-{dede:global.cfg_webname/}</titl ...
- [Leetcode] Roman to Integer
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- Masonry小结
一,容易混淆的问题 1.make.left.equal(xxx)的参数若为某个控件,则默认为以该控件的 left 为基准对照. //these two constraints are exactly ...
- 利用轮播原理结合hammer.js实现简洁的滑屏功能
最近有个任务,做一个非常小的h5的应用,只有2屏,需要做横向的全屏滑动切换和一些简单的动画效果,之前做这种东西用的是fullpage.js和jquery,性能不是很好,于是就想自己动手弄一个简单的东西 ...
- DEV 等待窗口
DevExpress.Utils.WaitDialogForm dlg = , )); System.Threading.Thread.Sleep(); dlg.Close();
- 【hihoCoder】1033: 交错和
初探数位dp 介绍了数位类统计的基础知识.以下列出其中的基础点: 基本问题 统计在区间[l, r]中满足条件的数的个数 思路 1. [l, r] 将问题转换为 在[0, r]中满足条件的个数 - 在[ ...
- spark 2.0 Vector toBreeze
def toBreeze( _v : Vector ) : BZV[Double] = { _v match { case x : org.apache.spark.mllib.linalg.Dens ...

GPS算法服务库Demo 已下载 339 次