如何将非高德地图坐标系坐标系转换为高德地图坐标系坐标系

地图坐标详解及转换方法
地图坐标详解及转换方法
[摘要:人人皆晓得,好国 GPS 应用的是 WGS84 的坐标体系,以经纬度的方式去透露表现天球仄里上的某一个地位,那应当是国际共鸣。但正在我国,出于国度平安斟酌,海内全部导航电子舆图必需应用]
大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际共识。但在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,我们在业内将前者称之为地球坐标,后者称之为火星坐标
下面是百度官方对百度坐标为何有偏移的解释
  国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。
一、坐标体系
首先我们要明白,开发者能接触到哪些坐标体系呢?
第一种分类:
1、&&GPS,WGS-84,原始坐标体系。
一般用国际标准的 GPS记录仪 记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度:
2、&&GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、&&其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。
第二种分类:
首先明白,所有坐标体系的原点,都是非洲。
1、&&经纬度。这个是球面坐标,对于北京来说,就是(116.961)这样的坐标。
&&&&&&&&比如腾讯、高德、百度都是这样的经纬度坐标。谷歌是经纬度顺序写反的经纬度坐标。
&&&&&&&&如果是度分秒坐标,需要进行转换,才能得到这样的经纬度坐标。详见坐标转换。
2、&&墨卡托坐标。平面坐标,相当于是直线距离,数字一般都比较大,像这样的。(26.)
墨卡托坐标,主要用于程序的后台计算。直线距离嘛,加加减减几乎计算方便。
搜狗地图API就是直接使用的墨卡托坐标。
二、坐标转换
在各种web端平台,或者高德、腾讯、百度上取到的坐标,都不是GPS坐标,都是GCJ-02坐标,或者自己的偏移坐标系。
比如,你在谷歌地图API,高德地图API,腾讯地图API上取到的,都是GCJ-02坐标,他们三家都是通用的,也适用于大部分地图API产品,以及他们的地图产品。
例外,百度API上取到的,是BD-09坐标,只适用于百度地图相关产品。
例外,搜狗API上取到的,是搜狗坐标,只适用于搜狗地图相关产品。
例外,谷歌地球,google earth上取到的,是GPS坐标,而且是度分秒形式的经纬度坐标。在国内不允许使用。必须转换为GCJ-02坐标。
1、度分秒坐标转换为经纬度
比如,在GPS记录仪,或者google earth上采集到的是39°31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。
2、&&GPS转换为GCJ-02坐标
谷歌,高德,腾讯的地图API官网上,都不直接提供这样的坐标转换。如果要得到GCJ-02坐标,最好在他们的地图上直接取点,或者通过地址解析得到。(这个工具我后续会贴出来的。我就爱干这样的事情,哈哈。)
不过,在网上搜到了这样的接口,该接口的type=1就是GPS转到GCJ-02的墨卡托坐标。请大家对接口保密,哈哈。详见:
/api/documentation/javascript/api2.5/interface_translate.html#late_intro
3、GCJ-02与BD-09之间互转
国测局GCJ-02坐标体系(谷歌、高德、腾讯),与百度坐标BD-09体系的转换,在CSDN上有很详细的讲解:
关于 GCJ-02 和 BD-09 ,请参考&/map/question.htm#qa0043&。
算法代码如下,其中&bd_encrypt&将 GCJ-02 坐标转换成 BD-09 坐标,&bd_decrypt&反之
const&double&x_pi&=&3.79324&*&3000.0&/&180.0;&& && void&bd_encrypt(double&gg_lat,&double&gg_lon,&double&&bd_lat,&double&&bd_lon)&& {&& &&&&double&x&=&gg_lon,&y&=&gg_&& &&&&double&z&=&sqrt(x&*&x&+&y&*&y)&+&0.00002&*&sin(y&*&x_pi);&& &&&&double&theta&=&atan2(y,&x)&+&0.000003&*&cos(x&*&x_pi);&& &&&&bd_lon&=&z&*&cos(theta)&+&0.0065;&& &&&&bd_lat&=&z&*&sin(theta)&+&0.006;&& }&& && void&bd_decrypt(double&bd_lat,&double&bd_lon,&double&&gg_lat,&double&&gg_lon)&& {&& &&&&double&x&=&bd_lon&-&0.0065,&y&=&bd_lat&-&0.006;&& &&&&double&z&=&sqrt(x&*&x&+&y&*&y)&-&0.00002&*&sin(y&*&x_pi);&& &&&&double&theta&=&atan2(y,&x)&-&0.000003&*&cos(x&*&x_pi);&& &&&&gg_lon&=&z&*&cos(theta);&& &&&&gg_lat&=&z&*&sin(theta);&& }
不过也有更简单的算法,线性算法(lat和lng是经纬度,球面坐标):
To_B是转到百度,To_G是转到GCJ-02。
var TO_BLNG = function(lng){return lng+0.0065;};
var TO_BLAT = function(lat){return lat+0.0060;};
var TO_GLNG = function(lng){return lng-0.0065;};
var TO_GLAT = function(lat){return lat-0.0060;};
4.地球坐标系&(WGS-84)&到火星坐标系&(GCJ-02)&的转换算法
WGS-84&到&GCJ-02&的转换(即&GPS&加偏)算法是一个普通青年轻易无法接触到的“公开”的秘密。这个算法的代码在互联网上是公开的,详情请使用&Google&搜索&"wgtochina_lb"&。
整理后的算法代码请参考&/SourceControl/changeset/view/&。代码如下
using&Snamespace&Navi {&&&&class&EvilTransform &&&&{&&&&&&&&const&double&pi&=&3.79324;&&&&&&&&// &&&&&&&&//&Krasovsky&1940 &&&&&&&&// &&&&&&&&//&a&=&,&1/f&=&298.3 &&&&&&&&//&b&=&a&*&(1&-&f) &&&&&&&&//&ee&=&(a^2&-&b^2)&/&a^2; &&&&&&&&const&double&a&=&;&&&&&&&&const&double&ee&=&0.;&&&&&&&&// &&&&&&&&//&World&Geodetic&System&==&&Mars&Geodetic&System &&&&&&&&public&static&void&transform(double&wgLat,&double&wgLon,&out&double&mgLat,&out&double&mgLon) &&&&&&&&{&&&&&&&&&&&&if&(outOfChina(wgLat,&wgLon)) &&&&&&&&&&&&{ &&&&&&&&&&&&&&&&mgLat&=&wgL &&&&&&&&&&&&&&&&mgLon&=&wgL&&&&&&&&&&&&&&&& &&&&&&&&&&&&}&&&&&&&&&&&&double&dLat&=&transformLat(wgLon&-&105.0,&wgLat&-&35.0);&&&&&&&&&&&&double&dLon&=&transformLon(wgLon&-&105.0,&wgLat&-&35.0);&&&&&&&&&&&&double&radLat&=&wgLat&/&180.0&*&&&&&&&&&&&&&double&magic&=&Math.Sin(radLat); &&&&&&&&&&&&magic&=&1&-&ee&*&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); &&&&&&&&&&&&mgLat&=&wgLat&+&dL &&&&&&&&&&&&mgLon&=&wgLon&+&dL &&&&&&&&}&&&&&&&&static&bool&outOfChina(double&lat,&double&lon) &&&&&&&&{&&&&&&&&&&&&if&(lon&&&72.004&||&lon&&&137.8347)&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&if&(lat&&&0.8293&||&lat&&&55.8271)&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&return& &&&&&&&&}&&&&&&&&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& &&&&&&&&}&&&&&&&&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& &&&&&&&&} &&&&} }
知道了这个算法之后,就可以离线进行&Google&地图偏移校正,不必像之前那么麻烦。至于&GCJ-02&到&WGS-84&的转换(即&GPS&纠偏),可以使用二分法。
如何将非高德坐标转换为高德坐标系
Dear 开发者:
如果你苦闷于如何将非高德坐标转换为高德坐标系时,请看这里。
当你在高德定位、规划路径等众多优质服务面前徘徊,请必须看这里!!
喜大普奔的消息来了!坐标转换服务在千呼万唤中,终于bulingbuling 登场。
坐标转换后,使用JS API、SDK再无烦恼,大BOSS再也不用担心我的工作,soeasy!
解决开发者的问题就是我们的使命,一切开发者的障碍必须肃清。
坐标转换service:
一.适用对象:
苦苦纠结于如何将GPS、mapbar、baidu坐标转换为高德坐标系的开发者们。
二.转换方法:
1.& && &首先当然还是需要人手一个的百宝key。注意:权限君升级权限系统后,调用坐标转换接口的童鞋们需要重新申请。注意:绑定服务需选择REST服务接口
2.& && &调用坐标转换接口,接口请求攻略如下:
1)&&服务协议为GET请求
2)&&请求地址:/v3/assistant/coordinate/convert?parameters
3)&&请求参数:
将非百度坐标转换为百度坐标接口
/map/changeposition.htm
/map/question.htm#qa0043
扫二维码关注生活艺术杂志,分享生活中创意/艺术/窍门,点亮你我多彩的生活!
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊百度地图与高德地图坐标转换_百度定位sdk获取火星坐标_DD博客
百度地图坐标转换
收款微信号 dwtedx
支付宝帐户
比特币帐户
深度剖解各个领域业务流程、全面展示自己的所长及个人发展新思路
微信公众号 : (推荐)
备案信息 :
DD博客上的所有软件和源码Demo及相关资料均为软件商和个人工作总结或网友推荐及网络收集整理而来、仅供学习和研究使用、切勿用做商业用途、如有侵犯版权者、请来信到邮箱 : 指出、DD博客将立即修正、净化网络版权环境、同时DD博客也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害
& Copyright 2016. All rights reserved.百度坐标转换高德坐标
原文: PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例 &!--小幅的坐标转换点位程序--& &!DOCTYPE html& &html& &head& &meta http-equiv=&Content-Type& content=&text/ c ...
受/blog/1404129文章中将百度坐标转换成GPS坐标的启发,这里用同样的方法可以将百度坐标转换为谷歌坐标. 假设百度坐标为(x, y),通过iOS基于百度地图的开发(6)中的方法将(x, y)视为谷歌坐标然后进行转换,转换后得到坐标(x1, y1).然后真正的谷歌坐标(x2, y2)的计算方法为: x2 = 2*x -
这里记录一下几个地图的js地图接口的级别(只有百度,高德,google,其他地图用到时再更新): 百度级别:8 高德级别:8 google级别:1 高德地图级别在时,一直定格在3级:百度地图级别在时,级别一直定格在3级,百度级别设为0时,地图显示空白,-1时会出错:google地图做的好些,从1到21都是连续缩放,没有断级,还有就是只有goog ...
/thread-1-1.html#rd?sukey=cbbc36ac2b0baceaddf5bf3a144e9ae715c2253b0bba87b05dcc82d6c0e74
摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我 ...
APP用的是高德SDK 业务是用户点击APP中的导航按钮,会根据用户当前手机安装地图APP进行导航,顺序是 1高德 2百度,如果用户没有安装高德地图APP则判断是否有百度地图APP因为APP是用的高德SDK所以在导航上没有任何问题,跳转百度后 坐标误差比较大有时候 导航提示 未搜索到结果之类的,造成这个原因是高德和百度坐标不一至,这个时候需要坐标转换 百度提供坐标转换接口
coordinate.class.php&?php class Coordinate { public $x = 0;//lat public $y = 0; // lng public $z = 0; // other function __construct($lat,$lng) { $this-&x = $ $this-&y = $
标准地球坐标即GPS设备获得的坐标,该坐标需要经过国家测绘局进行加密后形成火星坐标(WGS-84 ),我们用的google坐标和高德地图坐标也就是火星坐标
百度地图,在火星坐标的基础上再进行一次加密,形成了百度地图上的坐标,因此,直接将标准地球坐标显示在百度地图上是会有几百米的偏差的.按照此原理,标准GPS坐标经过两步的转换可得到百度坐标 ...
package club.xiaoke.supercood. import club.xiaoke.supercood.model.MyLatLngP / * @author SHANG01 * GPS坐标转换基础函数集合 */ public class CoordMath { private final static double PI = 3.141 ...
最近发现有个百度地图未公开的坐标转换API挺不错: http://api./ag/coord/convert?from=0&to=2&x=longitude&y=latitude 其中: from: 来源坐标系(0 表示 WGS-84 坐标:2 表示 GCJ-02 坐标,即 iOS 地图 / Google Maps / 高德 ...
功能亮点: 自定义标注地理坐标批量marker支持高德,百度无Key也能用
发表点拙见. 高德的地图跟随移动不够好.但是窗体阴影效果很炫. 百度的移动很合理.窗体界面功能单一.
贴上高德代码,百度的代码具体实现参考酸奶小妹的博客 /milkmap/archive//2127663.html
百度地图API中,有GPS坐标转百度坐标的功能 /wiki/static/map/API/examples/?v=1.2&0_6#0&6 http接口是:http://api./ag/coord/convert?from=0&to=4&x=116.397428&y= ...
10月22日消息,百度公司近日把高德地图告上法庭,声称高德在无事实依据的情况下指责百度&卖假药&.&把用户导入沟里&,对百度公司声誉造成不利影响.而据了解,高德方面也已经决定对百度提出反诉. 此前,双方就导航免费互相指责对手,曾爆发大规模&口水战&,8月28日,百度地图官微宣布旗下百度导航业务永久全免费:随后,高德 ...
google:打开google地图--&查找目的地--&右键:此位置居中--&地址栏键入javascript:void(prompt('',gApplication.getMap().getCenter()));回车如果上述方法没有显示.报错‘ prompt is not defined’或其他不能够,尝试以下方法firefox打开google地图--&g ...
由于需要,要调用高德和百度地图的APP. 1.判断是否存在高德和百度地图,但是又没有用到它们的SDK包,方式就是检测手机上有没有安装APP.首先要知道APP的包名.然后通过以下代码判断: private boolean isInstallByread(String packageName) { return new File(&/data/data/&
这几天由于项目需要,在编写一个地图上的导航功能: 我将百度上的sdk以及demo下载下来传入 的 坐标以及目的地的坐标,但是开启导航后位置却向西北方向偏了几百米: 经过我对百度定位sdk api 以及百度导航sdk api的查看,感觉应该是坐标类型不一样: 百度定位的默认坐标类弄是gcj02 ,而百度导航的默认坐标类型是GCJ 感觉只要导航的时候把坐标类型修改为GCJ02就 ...
如题,浏览器的geolocation一直都不准,以前是用百度地图插件解决的.想知道有没有轻量级一些,仅用于确定经纬度的第三方库,或者不添加外库能否解决这个问题? geolocation有一个选项是enableHighAccuracy: true,即使打开也一样不准! 补充:我是打算gps定位不成功的时候退而求其次用ip定位的,没想到也有很详细的地址库. 但还是希望能有gps ...
通过用户的 ip 地址获取用户的详细位置,不仅仅是省,城市,例如包括其他的街道,门牌号等等:还有一个疑问,请教下微信中滴滴打车的定位是怎么实现的,谢谢 这个要利用用户手机的GPS定位获取到经度纬度,让后判断出用户的位置.IP只是一个协议而已,不能精确表示空间位置, 滴滴打车使用的是百度地图或者高德地图提供的定位SDK实现的.而百度地图或者高德地图主要是通过基站进行定位的,通 ...
&投资者报&记者 吴培锋 手机地图正成为移动互联网的重要入口,由此也成为众多公司争夺的新焦点. 网络巨头百度近日也成立LBS事业部,将百度地图作为其布局移动互联网的战略级产品来开发.新版的百度地图谋求平台化发展,本地生活服务信息成为一个重要的发展方向. 而发力手机地图较早的高德地图近日宣称,手机地图将成为移动生活服务的入口,甚至发展成为一站式的生活门户. 业内人 ...
BOOL hasBaiduMap = NO; BOOL hasGaodeMap = NO; if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@&baidumap://map/&]]){ hasBaiduMap = YES; } if ([[UIApplicatio ...
希望对各位开发者有用,测试误差不大 #pragma mark - 高德地图GPS转坐标 // location lati, longi #define pi 3.79324 NSArray * TransformGPStoMAMAP(NSString * location) { NSArray * result = // a = 63782 ...高德火星坐标系的shp文件能够转成WGS84坐标系的吗?
现在网上能找到不少火星坐标点转到84坐标点的算法,精度对我来说基本够用,但是我现在有一个高德火星坐标的shp地图文件,请问有什么方法能转成wgs84坐标吗?
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 高德地图使用的坐标系 的文章

 

随机推荐