国内地图坐标系介绍及常见地图(百度、高德、凯立德)之间的坐标系转换
一、国内地图坐标系简介
1、 WGS84(地图坐标)
美国GPS使用的是WGS84的坐标系统。GPS系统获得的坐标系统,基本为标准的国际通用的WGS84坐标系统
2、 GCJ-02(火星坐标)
GCJ-02是由中国国家测绘局制订的地理信息系统的坐标系统。它是一种对经纬度数据的加密算法,即加入随机的偏差。国内出版的各种地图系统(包括电子形式),出于国家安全考虑,必须至少采用GCJ-02对地理位置进行首次加密。
所有的电子地图所有的导航设备,都需要加入国家保密插件。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标的电子地图,加密成“火星坐标”,这样的地图才是可以出版和发布的,然后才可以让GPS公司处理。第二步,所有的GPS公司,只要需要汽车导航的,需要用到导航电子地图的,统统需要在软件中加入国家保密算法,将COM口读出来的真实的坐标信号,加密转换成国家要求的保密的坐标,这样,GPS导航仪和导航电子地图就可以完全匹配,GPS也就可以正常工作。
在国内发行的地图都使用GCJ02进行首次加密,
地图 | 坐标系 |
---|---|
百度地图 | 百度坐标(BD-09) |
腾讯搜搜地图 | 火星坐标 |
图吧MapBar地图 | 图吧坐标 |
高德MapABC地图API | 火星坐标 |
凯立德地图 | 火星坐标(转为K码) |
I、 百度坐标:在GCJ02基础上,进行了BD-09二次加密措施,API支持从WGS/GCJ转换成百度坐标,不支持反转。
II、凯立德K码:
a) K码将地图分成了四块进行编码,中心点在内蒙的阿拉善左旗境内,该点的K码是7uy1yuy1y。以该点为中心分别在东西方向和南北方向画一条线当横纵(XY)坐标轴,那么第一象限(即东北方向的那块)的K码的第1位全部都是5,第2象限的K码的第一位全是6,第3、4象限的K码的第一位分别全是7、8。并且该点有4个K码,即用四个K码定位都是这一点,这四个K码分别是7uy1yuy1y、80000uy1y、500000000、6uy1y0000。
b) K码的第2-5位表示东西方向上的坐标,第6-9位代表南北方向上的坐标。实际上K码就是一个凯立德特有的34进制数,(26个字母加10个阿拉伯数字,再去掉不用的小写L和O共34个字符),这个34进制数从左向右从低位向高位排列(我们常用的10进制是从右向左由低位向高位排列),其中第2-5位东西方向上的数每一个单位代表2.5m左右,南北方向上的数每一个单位代表实际距离3米左右。比如80000uy1y向东约2.5米的点的K码就是81000uy1y,向东约34×2.5m的点的K码就是80100uy1y
c)K码与火星坐标可相互转换。
二、坐标系转换
1、地球坐标系(WGS)到火星坐标系(GCJ-02)的转换算法
var M_PI = 3.14159265358979324;
var a = 6378245.0;
var ee = 0.00669342162296594323;
var x_pi = M_PI * 3000.0 / 180.0;
function out_of_china(lat, lon) {if (lon < 72.004 || lon > 137.8347)return true;if (lat < 0.8293 || lat > 55.8271)return true;return false;
}function wgs2gcj_lat(x, y) {var ret1 = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y+ 0.2 * Math.sqrt(Math.abs(x));ret1 += (20.0 * Math.sin(6.0 * x * M_PI) + 20.0 * Math.sin(2.0 * x* M_PI)) * 2.0 / 3.0;ret1 += (20.0 * Math.sin(y * M_PI) + 40.0 * Math.sin(y / 3.0 * M_PI)) * 2.0 / 3.0;ret1 += (160.0 * Math.sin(y / 12.0 * M_PI) + 320 * Math.sin(y * M_PI/ 30.0)) * 2.0 / 3.0;return ret1;
}function wgs2gcj_lng(x, y) {var ret2 = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1* Math.sqrt(Math.abs(x));ret2 += (20.0 * Math.sin(6.0 * x * M_PI) + 20.0 * Math.sin(2.0 * x* M_PI)) * 2.0 / 3.0;ret2 += (20.0 * Math.sin(x * M_PI) + 40.0 * Math.sin(x / 3.0 * M_PI)) * 2.0 / 3.0;ret2 += (150.0 * Math.sin(x / 12.0 * M_PI) + 300.0 * Math.sin(x / 30.0* M_PI)) * 2.0 / 3.0;return ret2;
}function wgs2gcj(poi) {if (out_of_china(poi.lat, poi.lng)) {return poi;}var poi2 = {};var dLat = wgs2gcj_lat(poi.lng - 105.0, poi.lat - 35.0);var dLon = wgs2gcj_lng(poi.lng - 105.0, poi.lat - 35.0);var radLat = poi.lat / 180.0 * M_PI;var magic = Math.sin(radLat);magic = 1 - ee * magic * magic;var sqrtMagic = Math.sqrt(magic);dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * M_PI);dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * M_PI);poi2.lat = poi.lat + dLat;poi2.lng = poi.lng + dLon;return poi2;
}
2、火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
// 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
function gcj2bd(poi) {var poi2 = {};var x = poi.lng, y = poi.lat;var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);poi2.lng = z * Math.cos(theta) + 0.0065;poi2.lat = z * Math.sin(theta) + 0.006;return poi2;
}function bd2gcj(poi) {var poi2 = {};var x = poi.lng - 0.0065, y = poi.lat - 0.006;var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);poi2.lng = z * Math.cos(theta);poi2.lat = z * Math.sin(theta);return poi2;
}
3、火星坐标系 (GCJ-02) 与凯立德K码 的转换算法
var codes = "0123456789abcdefghijkmnpqrstuvwxyz";
function __decode(pch)
{var v = 0;for (var i = 3; i >= 0; --i)v = v * 34 + (codes.indexOf(pch.charAt(i)));v = v * 250 / 9;return v;
}function __encode(v)
{var pch = "";v = v * 9 / 250;for (var i = 0; i < 4; ++i){pch += codes.charAt(v % 34);v /= 34;}return pch;
}function DecodeLon(k)
{var lon = __decode(k.substring(1, 5));if (k.charAt(0) == '5' || k.charAt(0) == '8')lon += 35000000;lon += 70000000;return lon/1000000.0;
}function DecodeLat(k)
{var lat = __decode(k.substring(5, 9));if (k.charAt(0) <= '6')lat += 35000000;lat += 5000000;return lat/1000000.0;
}function Encode(lat, lon)
{lat = parseInt(lat*1000000);lon = parseInt(lon*1000000);var k;lon -= 70000000;lat -= 5000000;if (lat > 35000000)if (lon <= 35000000)k = "6";elsek = "5";elseif (lon <= 35000000)k = "7";elsek = "8";if (lon > 35000000)lon -= 35000000;if (lat > 35000000)lat -= 35000000;k += __encode(lon);k += __encode(lat);return k;
}
国内地图坐标系介绍及常见地图(百度、高德、凯立德)之间的坐标系转换相关推荐
- 2013 12 android 凯立德秋季高清旗舰 百度云,凯立德导航常用工具软件(2013.4.12更新下载链接)...
本帖最后由 xinc 于 2013-4-12 10:59 编辑 凯立德导航常用工具软件,建议下载备用,全部软件无密码,以前找这些软件还真费了点事,现在分享给GPSHK的朋友. 这些软件都比较简单,很容 ...
- 【地图知识】城际通+凯立德+高德 各地图的介绍和比较.让你更清楚的了解地图
http://www.xici.net/#u16193481/d88258571.htm 当前,中国取得导航电子地图资质的有:四维图新,高德,灵图,畅想,瑞图万方,武汉吉奥,凯立德,易图通,这八家企业 ...
- 凯立德地图导航2020年最新版车载_明明有车载导航,为什么很多人还是选择用手机导航?有5个原因...
提到导航,你首先会想到什么导航产品呢? 如果是高德导航.百度导航之类的,那你主要用手机导航. 但是如果除了高德导航和百度导航之外,你还能随口说出四维图新导航.凯立德导航,甚至是道道通导航之类的话,那你 ...
- 凯立德导航地图文件的作用分项说明(转帖留存)
凯立德导航地图文件的作用分项说明 , , , , 凯立德导航地图在国内市场占用率及普及率都相当高,作为一款操作简捷直观,画面靓丽的界面地图,自然会得到广大用户的信赖与支持. 同时,由于凯立德地图更新速 ...
- 408自装或4S店加装的凯立德导航升级地图技术贴
轉自:408自装或4S店加装的凯立德导航升级地图技术贴 注:本贴教程仅用作技术交流分享,根据本贴刷坏导航的,楼主概不负责! 升级凯立德导航,从升级过程来看,了解了不少,特此发帖来说说 首先看看自己凯立 ...
- c3520 宝骏凯立德地图_凯立德2018车载导航地图-2018年05月凯立德高清优化版C2939-C7M05-3H21J22最新版 - 极光站...
2018年05月凯立德高清优化版C2939-C7M05-3H21J22是凯立德2018车载导航地图!经常使用凯立德的,可以下载最新版本.3H21J22春季版,非常不错.在这里,小编为你提供懒人包百度网 ...
- 凯立德地图 将地理坐标转换为经纬度
前言:因项目需求以及客户提出的要求要将百度地图更换为凯立德地图,因此就牵扯到经纬度转换的问题,凯立德官方文档对这方面提供的信息少,没有找到合适的解决方案,所以在几经周折总算是找到一个比较委托的解决办法 ...
- 2012年1月凯立德地图普高清全分辨率懒人包P1750-D5616-2721J09(完美破解,已上路实测,永久下载地址)...
2012年1月凯立德普高清全分辨率懒人包P1750-D5616-2721J09(完美破解,已上路实测,永久下载地址) 目前唯一一款普高清全分辨率懒人包,全自动扫描端口.速率,下载解压后立即使用. [更 ...
- 凯立德GPS导航地图的文件说明
以下是凯立德的文件的说明,更换地图只需要更换4个主要地图文件和POI_DATA文件夹就OK,图示以3.5寸的P0019-C5003为例,其它版本方法相同 NAVIBG.CLD NAVIMAP.CLD ...
最新文章
- EfficientNet模型的完整细节
- c# for 应输入;
- laydate兼容bootstrap
- c语言过程中的理论杂篇。
- go微服务框架-gomicro试用
- 用终端访问路由器设置端口开发_Serial for Mac(全功能串行终端管理软件)
- MySQL高级 - 内存优化 - InnoDB内存优化
- 使用jstack查看某个Java进程内的线程堆栈信息
- 美团与饿了么“鸡同鸭讲”后,又可以通过设置继续使用支付宝了?
- 高斯消元 zoj 3645 poj 1222/XOR消元
- 面试简历上的项目经验
- 局域网上网流量监控_NAT下网络流量监控解决方案
- python用海龟画圆的代码_python海龟画圆代码
- vue中SEO(搜索引擎优化)
- 求助!微信公众号页面部分手机加载后空白!
- 解救MacBook Pro老电脑显卡
- Django实现单点登录(SSO)
- Python实现矩阵奇异值分解(SVD)
- 中国最美的、令人震撼的10大名山
- NCE(Noise Contrastive Estimation) 与negative sampling
热门文章
- 微信开放平台第三方接口集成
- Address 172.16.40.216 maps to localhost, but this does not map back to the address
- 使用Oh my Posh设置Windows PowerShell主题要点
- 基于国产龙芯 CPU 的气井工业网关研究与设计(一)
- 电脑系统下载的镜像文件在哪里图解
- 连连支付将引中金入股 或为A股上市IPO铺路
- SAP License:ERP顾问与猎头的亲密接触之跳槽者必看
- 史上最全最实用HBuilder快捷键大全
- S7-1200PLC与昆仑通态触摸屏以太网通信的具体方法和步骤(图文)
- Java原理性基础知识整理[详细]