坐标系的冷知识

坐标体系

第一种分类:

1、 GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。

2、 GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。

3、 其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。

第二种分类:

首先明白,所有坐标体系的原点,都是非洲

1、 经纬度。这个是球面坐标,对于北京来说,就是(116.388171,39.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转换为GCJ-02坐标

谷歌,高德,腾讯的地图API官网上,都不直接提供这样的坐标转换。如果要得到GCJ-02坐标,最好在他们的地图上直接取点,或者通过地址解析得到。(这个工具我后续会贴出来的。我就爱干这样的事情,哈哈。)

不过,在网上搜到了这样的接口,该接口的type=1就是GPS转到GCJ-02的墨卡托坐标。请大家对接口保密,哈哈。详见:

http://map.sogou.com/api/documentation/javascript/api2.5/interface_translate.html#late_intro

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

5、各家API公司坐标转换接口的申请

一般需要将您的公司名称、项目名称、项目简介、联系人和联系方式,发邮件至地图API公司的商务部,经过申请,才能使用。

时间: 2024-12-09 07:01:07

坐标系的冷知识的相关文章

前端不为人知的冷知识

前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来.现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容. HTML篇 浏览器地址栏运行JavaScript代码 这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开

你根本不知道的冷知识,看完我惊呆了,原来.....

有些冷知识,非常的有趣,而且说不定就是之后与人交流的谈资,所以,这些必须收藏. 历史文学 1. 朱熹一辈子不吃豆腐 3.方孝儒是中国历史上唯一一个被"株十族"的人 4.猫是<圣经>里唯一没有提到的家养动物 5.埃及金字塔四面均为等边三角形,正对东南西北四个方位 6.条条大路通罗马的原因如图: 科学百科 1. 兔子不会流汗 2.玫瑰和苹果属同科,百合和大葱属同科 3.一张纸不能对折8次 4.北极熊是左撇子 5. dreamt 是唯一以"mt"结尾的英文单词

科普你知道,运动冷知识,火速围观

也许你是一名资深的健身爱好者,对健身知识已经了如指掌:也许你刚加入健身行列不久,对健身只有片面的认识.但不算是健身新手还是老手,总有一些你不知道的"冷知识"! 关于跑步 1.90%的马拉松运动员腿都很细,所以跑步根本不用担心粗腿: 2.在跑步机上如果你抓着扶手跑步,会直接到时你所消耗的热量降低20%: 关于饮食 1.断食12个小时,会是你的基础新陈代谢下降40%,靠节食减肥基本等同于无用功: 2.快餐店老板不会告诉你一份套餐热量有多少,最好的办法就是自己烹饪: 关于热量 1.人体每增加

前端冷知识集锦[转载]

作者:伯乐在线专栏作者 - 刘哇勇 前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来.现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容. HTML篇 浏览器地址栏运行JavaScript代码 这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代

前端不为人知的一面--前端冷知识集锦

前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来.现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容. HTML篇 浏览器地址栏运行JavaScript代码 这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开

前端不为人知的一面–前端冷知识集锦

前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来.现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容. HTML篇 浏览器地址栏运行JavaScript代码 这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以 javascript:

前端不为人知的一面——前端冷知识集锦

前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来.现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容. HTML篇 浏览器地址栏运行JavaScript代码 这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开

(转)前端不为人知的一面--前端冷知识集锦

转自:http://www.cnblogs.com/Wayou/p/things_you_dont_know_about_frontend.html 前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来.现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容. HTML篇 浏

记录java中冷知识

Java冷知识 1.Number的Class类不是Integer的Class的父类 2.final的静态的变量第一次访问会是类进行初始化,而fianl的静态常量访问不会使类初始化 3.通过Class.forName("oo.oo.A")得到的Class应用会使该类初始化,而Integer.class得到的应用不会使该类初始化 4.这样子Class<Number> clazz = int.class会报错而Class<? extends Number>clazz