柚子快报邀请码778899分享:地图中的坐标系(转)

http://yzkb.51969.com/

add by zhj:

    对于国内的地图,使用的是GCJ-02坐标系或者在GCJ-02基础上再加密(比如百度坐标和搜狗坐标),出于安全的考虑,国家不允许直接使用GPS坐标。GCJ-02坐标系又

称为火星坐标系。腾讯地图,高德地图,谷歌中国地图使用的是GCJ-02坐标系,百度地图和搜狗地图使用的是在GCJ-02基础上再加密的坐标

    地图公司测绘得到原始的GPS地图后,要上交给国家熊测绘局,测绘局给GPS坐标加上偏移(不是线性偏移),得到GCJ-02坐标,测绘局要收钱的,然后再交给地图公司。

地图公司可以直接发行或者再做一次偏移后发行。一般的偏移是在几百米,对于精度要求不高的定位,这个误差无所谓。

    GPS设备使用的是WGS-84,在国内使用地图服务时,必须将GPS输出的坐标值转为地图坐标系的坐标才行。之前有些文章提到"国内GPS设备"输出的就是GCJ-02坐标,我

认为不是,在高德开发文档 http://lbs.amap.com/home/faq/ 中,就专门提到了“为什么GPS获取的原始坐标显示在地图上为什么会出现偏差?”,说明GPS使用的不是

GCJ-02坐标。其实,对于GCJ-02也只能是欺骗普通人,军用GPS的定位精度可达厘米级,GCJ-02有个鸟用,人家干你也肯定不会用你的地图。

WGS-84坐标系是美国人定义的,Google Earch使用的是卫星地图,卫星地图就是GPS输出的WGX-84坐标系。

    地图提供商都会提供将GPS坐标或其它地图提供商的坐标转为自己的坐标的方法。比如百度地图的坐标转换API,高德地图的”Android 平台坐标转换、iOS 平台坐标转换、

web 坐标“,腾讯地图的坐标转换 等。GPS坐标是没有哪家地图提供商直接使用的,那如果将地图提供商的坐标转为GPS坐标(即WGS-84坐标)呢?这个当然不会有公开的

了,如果有的话,那测绘局搞的那个火星坐标就被轻而易举的被破解了。不过,即使没有,那其实也有办法破解,因为像腾讯地图,高德地图使用的就是火星坐标,而他们又

提供了GPS坐标转火星坐标的方法,因为两者坐标是一一对应的,所以,把中国的GPS坐标全部转为火星坐标,再反查就行了。不过,网上倒是有百度坐标转火星坐标的方法,

也有火星坐标转GPS坐标的方法,当然,这些都是近似的方法。另外,一般的,地图提供商的坐标与GPS坐标一般在几百米左右(待确认),如果对精度不高,那没必要转换。

 

原文:https://segmentfault.com/a/1190000000498434

一、坐标体系首先我们要明白,开发者能接触到哪些坐标体系呢?第一种分类:1、 GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度:

2、 GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。3、 其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。

第二种分类:首先明白,所有坐标体系的原点,都是非洲。

1、 经纬度。这个是球面坐标,对于北京来说,就是(116.38817139.935961)这样的坐标。比如腾讯、高德、百度都是这样的经纬度坐标。谷歌是经纬度顺序写反的经纬度坐标。如果是度分秒坐标,需要进行转换,才能得到这样的经纬度坐标。详见坐标转换。2、 墨卡托坐标。平面坐标,相当于是直线距离,数字一般都比较大,像这样的。(215362.00021333335 99526.00034912192)墨卡托坐标,主要用于程序的后台计算。直线距离嘛,加加减减几乎计算方便。搜狗地图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坐标或其它地图提供商的坐标转为自己的坐标的方法。比如百度地图的坐标转换API,高德地图的”Android 平台坐标转换、iOS 平台坐标转换、

web 坐标“,腾讯地图的坐标转换 等。GPS坐标是没有哪家地图提供商直接使用的,那如果将地图提供商的坐标转为GPS坐标(即WGS-84坐标)呢?这个当然不会有公开的

了,如果有的话,那测绘局搞的那个火星坐标就被轻而易举的被破解了。不过,即使没有,那其实也有办法破解,因为像腾讯地图,高德地图使用的就是火星坐标,而他们又

提供了GPS坐标转火星坐标的方法,因为两者坐标是一一对应的,所以,把中国的GPS坐标全部转为火星坐标,再反查就行了。不过,网上倒是有百度坐标转火星坐标的方法,

也有火星坐标转GPS坐标的方法,当然,这些都是近似的方法。另外,一般的,地图提供商的坐标与GPS坐标一般在几百米左右(待确认),如果对精度不高,那没必要转换。

 

 

3、GCJ-02与BD-09之间互转国测局GCJ-02坐标体系(谷歌、高德、腾讯),与百度坐标BD-09体系的转换,在CSDN上有很详细的讲解:http://blog.csdn.net/coolypf/article/details/8569813

不过也有更简单的算法,线性算法(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、经纬纬度转成墨卡托网上也有详细讲解:http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=78245

 

三、坐标偏移如果您的坐标在转换之后,还有偏移,那么考虑以下几个方面。A、原始坐标系弄错,比如以为自己是GPS坐标,但其实已经是GCJ-02坐标。解决方案:请确保采集到的数据是哪个坐标体系,需要转换到哪个坐标系,再进行坐标转换。B、原始坐标准确度不够解决方案:如果您是GPS坐标,请确保采集GPS数据时,搜到至少4颗以上的卫星。并且GPS数据准不准,还取决于周围建筑物的高度,越高越不准,因为有遮挡。如果本来就是GCJ-02坐标,在不同地图放大级别的时候,看到的地方可能不一样。比如你在地图级别4(国家)取到的坐标,放大到地图12级(街道)时,坐标就偏了。请确保在地图最大放大级别时,拾取坐标。C、度分秒的概念混淆比如,在google earth上采集到的是39°31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。D、经纬度顺序写反了有些公司(比如高德,百度,腾讯)是先经度,再纬度,即Point(lng lat)。但谷歌坐标的顺序恰好相反,是(lat lng)。

四、坐标拾取工具既然在国内必须至少使用GCJ-02的坐标系,而GCJ-02,“火星坐标”是在国内最广泛使用的坐标体系。那么,我们就来看看,如何直接获取到GCJ-02坐标呗。请大家把这段代码保存到记事本里,然后后缀名改为.html,记得用UTF-8编码来保存。然后双击这个文件,就能打开网页了。

火星坐标拾取

 

火星坐标:

地址:

说明:

1、鼠标滚轮可以缩放地图,拖动地图。

2、点击地图,即可获得GCJ-02的经纬度坐标,地址。

打开之后,是这样的:

点击一下地图,即可获得GCJ-02坐标,地址:

demo地址:http://zhaoziang.com/amap/picpoint.html

更多高德地图API技术贴>>>http://bbs.amap.com/forum.php?gid=1

柚子快报邀请码778899分享:地图中的坐标系(转)

http://yzkb.51969.com/

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。