无意中发现了谷歌、腾讯、高德地图纠偏算法

大家知道,天朝的地图都是加偏的,也就是GPS设备接收到的坐标和电子地图坐标是不一样的,有一定的偏移,如果直接把GPS坐标显示到电子地图上,有几百米的误差,必须把GPS坐标加上一定的偏移再显示到电子地图上,才和实际相符,理论上,每种地图偏移量不一样的,且都不是线性的,供应商提供在线的接口,把GPS坐标转换成地图坐标,但算法是保密的,我们可以自己创建纠偏库(参见百度谷歌等地图纠偏库),但部分地方不使用数据库,也不适合网上调用,最合适的办法就是通过算法直接计算,我在网上无意看到了用java写的谷歌地图纠偏算法,稍作修改,变成C#的了,测试了一下,居然腾讯/高德地图纠偏算法也是完全一样,因此,有了该算法,再也不用为纠偏发愁了,不知道该算法是否有泄密的嫌疑,我也是网上抄的,解决了谷歌、腾讯、高德地图纠偏问题,虽然谷歌地图已经谈出视野了。

using System;

using System.Collections.Generic;

using System.Text;

using System.Drawing;

namespace PostionOffsetCreate

{

public class GDMapOffset

{

private static double pi = 3.14159265358979324;

private static double a = 6378245.0;

private static double ee = 0.00669342162296594323;

public static Point transform(int p_Lng,int p_Lat)

{

double wgLon = 0.000001 * p_Lng, wgLat = 0.000001 * p_Lat;

if (outOfChina(wgLat, wgLon))

{

return new Point(p_Lng, p_Lat);

}

double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);

double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);

double radLat = wgLat / 180.0 * pi;

double magic = Math.Sin(radLat);

magic = 1 - ee * magic * magic;

double sqrtMagic = Math.Sqrt(magic);

dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);

dLon = (dLon * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);

return new Point((int)((wgLon + dLon) * 1000000), (int)((wgLat + dLat) * 1000000));

}

private static bool outOfChina(double lat, double lon)

{

if (lon < 72.004 || lon > 137.8347)

return true;

if (lat < 0.8293 || lat > 55.8271)

return true;

return false;

}

private static double transformLat(double x, double y)

{

double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.Sqrt(Math.Abs(x));

ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;

ret += (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0;

ret += (160.0 * Math.Sin(y / 12.0 * pi) + 320 * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0;

return ret;

}

private static double transformLon(double x, double y)

{

double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.Sqrt(Math.Abs(x));

ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;

ret += (20.0 * Math.Sin(x * pi) + 40.0 * Math.Sin(x / 3.0 * pi)) * 2.0 / 3.0;

ret += (150.0 * Math.Sin(x / 12.0 * pi) + 300.0 * Math.Sin(x / 30.0 * pi)) * 2.0 / 3.0;

return ret;

}

}

}

坐标经纬度均用百万方分之一度表示,返回Point类型,X代表经度,Y代表纬度,即传入GPS坐标,得到地图坐标,如:

Point pt=PostionOffsetCreate. Point transform(120123456,28123456);

无意中发现了谷歌、腾讯、高德地图纠偏算法

时间: 2024-10-29 03:04:31

无意中发现了谷歌、腾讯、高德地图纠偏算法的相关文章

无意中发现一个很好的资源站

今天上网无意中发现一个很好的图片资源站所有收藏起来,http://www.193meinv.com/    原文地址:https://www.cnblogs.com/heikeboys/p/9735961.html

无意中发现php的json_decode有bug

一,什么是json json是一种数据结构,易于人阅读和编写,同时也易于机器解析和生成. json建构两种结构: 1,“名称/值”成对的集合,不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array).2,值的有序列表(An ordered list of values).在大部分语言中,它被理解为数组(array).

无意中发现Markdown,最终解放了我

文件夹 概述 换行 删除线 链接自己主动识别 表格 代码块高亮 定义列表 脚注 自己主动生成文件夹 參考资料 正文 概述 大部分情况下,Markdown的基本的语法已够我们使用,比方随性记录点东西.非专业的分析文章等.一般仅仅用到标题.区块引用.强调.列表这种基本元素.但若要写专业性比較强的分析文章或技术性文章,这些基本的语法就不够用了.由于我们常常会用到表格.脚注.想要自己主动生成文章文件夹等,若是涉及代码的技术文章.我们还希望代码支持高亮以提升阅读体验. 这就须要用到Markdown的扩展语

iOS高德地图使用-搜索,路径规划

项目中想加入地图功能,使用高德地图第三方,想要实现确定一个位置,搜索路线并且显示的方法.耗了一番功夫,总算实现了. 效果 WeChat_1462507820.jpeg 一.配置工作 1.申请key 访问 http://lbs.amap.com/dev/key/ 在高度地图第三方开发平台申请一个key,注册账户,新建应用,这个没什么门槛.得到这个key 屏幕快照 2016-05-06 上午10.34.15.png 提示一下,这个key对应的bundle ID 要和工程里面的bundle ID 相同

谷歌高管无意中透露Google Glass未获得成功的原因

Google X高管Astro Teller在接受媒体采访时无意中透露了这款设备没有取得预期成绩的原因 最终我们发现,在他们生活的世界里,数字生活和即时物理生活根本无法融为一体. Teller提出的这个观点相当正确,可穿戴设备看不见才让人心动.然而,我们都知道,Google Glass是一款一下子就能让人们发现的产品,它就那样招摇地架在消费者的脸上.

提供一个谷歌(腾讯)、百度地图纠偏数据库

转载请说明出处:http://blog.csdn.net/cywosp/article/details/27095723 <黑天鹅--如何应对不可预知的未来> 作者:纳西姆?尼古拉斯?塔勒布 关于黑天鹅 在发现澳大利亚黑天鹅之前,所有欧洲人都确信天鹅全部都是白色的,人们在经过上百万次的确定性观察白天鹅之后得到了这一结论,而且一直延续了上千年,直到黑天鹅的出现,从而将这一结论完全打破.通过黑白天鹅的现象说明我们通过观察或经验获得的知识具有严重的局限性和脆弱性,仅仅一次的完全不同的发现就足以颠覆根

安卓开发—导入高德地图sdk后工程中无法找到相应的包

声明:本人小白,刚刚学习安卓开发,以下是自己开发中遇到的一些问题,将解决方法贴出来供大家参考,求大神勿喷-- 想学习使用高德地图的API,从官网下载了相应的sdk,按照参考文档的方法将相应的地图包,搜索包导入libs文件夹,以及进行了相关配置,我确信我真的是一步步来的没有错-- 然而,我在编写代码的时候,却根本没有这个包!!!! 为此,我几乎花了三天下午的时间找各种原因还是没有找到   = =|||  (不要喷我!!!) 也试了各种从网上查的方法,不过没有效果,最后还是自己找出来的-- 解决方法

PeopleRank从社交网络中发现个体价值

阅读导读: 1.什么是PeopleRank? 2.PeopleRank和PageRank有什么区别? 3.PR分析微博数据时,如何对微博单个账号评分? 4.R语言如何递归计算矩阵特征值? 5.如何计算粉丝的关注度? 1. PeopleRank和PageRank PageRank让Google成为搜索领域的No.1,也是当今最有影响力的互联网公司之一,用技术创新改变人们的生活.PageRank主要用于网页评分计算,把互联网上的所有网页都进行打分,给网页价值的体现. 自2012以来,中国开始进入社交

.net 4 安装未成功,无意中的解决办法!

公司 电脑是chost的系统,由于使用时间过长,重装纯净版系统的话,代价太大,故网上寻求各种解决办法! 安装.net 4 总是失败,查看百度,各种: WIN7系统哈哈跟我的问题一样,我的刚才解决了:1.开始->运行->net stop WuAuServ2.开始->运行->%windir%3.将文件夹SoftwareDistribution重命名为SDold4.开始->运行->net start WuAuServ之后再重新装.net4就能装了.我的也是开始装不了.net4