WGS84、WebMercator、GCJ02和BD09坐标系简介与转换
WGS84(GPS):
- 地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
- 通过GPS可以直接获取WGS84下的坐标(B,L,H),B为纬度,L为经度,H为大地高即到WGS84椭球面的高度;
- 我国地图采用的是北京1954或西安1980坐标系下的高斯投影坐标(x,y),也有采用北京1954或西安1980坐标系下的经纬度坐标(B,L),高程一般为海拔高度;
- 世界大地坐标系是美国国防部制图局(Defence Mapping Agency, DMA)为统一世界大地坐标系统,实现全球测量标准的一致性,定义用于制图、大地、导航的坐标基准。
- 它包括标准地球坐标框架、用于处理原始观测数据的标准椭球参考面(即基准和参考椭球)和定义标准海平面的重力等势面(大地水准面)。
- GPS的测量结果与北京54或西安80坐标相差几十米到一百多米,随区域各异;
- WGS 1984 的具体定义参数
GCS_WGS_1984
WKID: 4326 Authority: EPSGAngular Unit: Degree (0.0174532925199433)
Prime Meridian: Greenwich (0.0)
Datum: D_WGS_1984
Spheroid: WGS_1984
Semimajor Axis: 6378137.0
Semiminor Axis: 6356752.314245179
Inverse Flattening: 298.257223563
WebMercator:投影坐标系统,其基准面是 WGS1984
- Web Mercator 坐标系使用的投影方法不是严格意义的墨卡托投影,而是一个被 EPSG(European Petroleum Survey Group)称为伪墨卡托的投影方法,这个伪墨卡托投影方法的大名是 Popular Visualization Pseudo Mercator,PVPM。
- 该坐标系统是 Google Map 最先使用的,或者更确切地说,是Google 最先发明的。
- 谷歌地图(WGS_1984_Pseudo_mercator)、Virtual Earth、Bing Maps、百度地图、Mapabc、ArcGIS Online等采用Web Mercator或Spherical Mercator坐标系,天地图采用CGCS2000国家大地坐标系;
- 在投影过程中,将表示地球的参考椭球体近似的作为正球体处理(正球体半径 R = 椭球体半长轴 a)。这也是为什么在 ArcGIS 中我们经常看到这个坐标系叫 WGS 1984 Web Mercator (Auxiliary Sphere)。Auxiliary Sphere 就是在告知你,这个坐标在投影过程中,将椭球体近似为正球体做投影变换,虽然基准面是WGS 1984 椭球面。(Web Mercator与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体)
- 尽管这个坐标系由于精度问题一度不被GIS专业人士接受,但最终 EPSG 还是给了 WKID:3857。
GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。
BD09(百度GCJ02):百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
百度坐标转WebMercator
BMapToWebMercatorTransform:function (lng,lat) {
console.log("百度地图坐标是("+lng+","+lat+")");
//百度转GCJ-02
var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
var x = lng - 0.0065;
var y = 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);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
//GCJ02转web墨卡托84
var earthRad = 6378137.0;
lng = gg_lng * Math.PI / 180 * earthRad;
var a = gg_lat * Math.PI / 180;
lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
console.log("WebMercator坐标是("+lng+","+lat+")");
},
WebMercator转百度坐标
WebMercatorToBMapTransform:function (lng,lat) {
console.log("WebMercator坐标是("+lng+","+lat+")");
//Web墨卡托转GCJ02
lng = lng / 20037508.34 * 180;
var mmy = lat / 20037508.34 * 180;
lat = 180 / Math.PI * (2 * Math.atan(Math.exp(mmy * Math.PI / 180)) - Math.PI / 2);
//GCJ02转百度
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
lng = z * Math.cos(theta) + 0.0065;
lat = z * Math.sin(theta) + 0.006;
console.log("百度地图坐标是("+lng+","+lat+")");
}
84转web墨卡托
function WGS84ToWebMercator(wx,wy){
var x = wx *20037508.34/180;
var y = Math.log(Math.tan((90+wy)*Math.PI/360))/(Math.PI/180);
y = y * 20037508.34/180;
return {x:x,y:y};
}
web墨卡托转84
function WebMercatorToWGS84(cx,cy){
var x = cx/20037508.34*180;
var y = cy/20037508.34*180;
y = 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
return {x:x,y:y};
}

WGS84、WebMercator、GCJ02和BD09坐标系简介与转换的更多相关文章
- 使用js对WGS-84 ,GCJ-02与BD-09的坐标进行转换
获取到经纬度在用百度地图进行定位时,却发现行驶轨迹的路线定到海里面去了.从网上查阅,知道此方法. 出处:https://www.jianshu.com/p/53f00ba897f7 一.在进行地图开发 ...
- WGS84,GCJ02, BD09坐标转换
public class Gps { private double wgLat; private double wgLon; public Gps(double wgLat, double wgLon ...
- C#实现地图坐标系的转换(WGS-84、GCJ-02、BD-09)
WGS-84坐标系:全球定位系统使用,GPS.北斗等 GCJ-02坐标系:中国地区使用,由WGS-84偏移而来 BD-09坐标系:百度专用,由GCJ-02偏移而来 (PS:源于项目需求,本来是想读图 ...
- iOS在地图上WGS84、GCJ-02、BD-09互转解决方案
该项目的最新进展包括地图共享模块,android同事集团开始,使用百度地图sdk,我开始回,运用iOS SDK的mapkit做,之后,问题是,用纬度和经度坐标iOS端和Android端出现了比較大偏差 ...
- 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换 */ //定义一些常量 ...
- wgs84坐标系与gcj02坐标系转换误差分布图 | Mapping the Error in Transformation between WGS84 and GCJ02 Coordinations
国际上通用的是wgs84坐标系,而我国对于境内的坐标进行了加密,采用了gcj02坐标系,或者称为火星坐标系.亢孟军老师带的一门课<多媒体电子地图设计>要求我们从wgs84坐标系转换为gcj ...
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
$x_pi = 3.14159265358979324 * 3000.0 / 180.0; //火星坐标系 (GCJ-02)转百度坐标系 (BD-09)算法 function bd_encrypt($ ...
- 【转】火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
关于 GCJ-02 和 BD-09 ,请参考 http://developer.baidu.com/map/question.htm#qa0043 . 算法代码如下,其中 bd_encrypt 将 G ...
- WGS84、GCJ-02(火星坐标)、百度坐标,Web墨卡托坐标
GCJ-02坐标系统(火星坐标)简介:http://blog.csdn.net/giswens/article/details/8775121(存档:http://mapbd.com/cms/2012 ...
随机推荐
- JS---案例:点击按钮设置div背景色渐变
案例:点击按钮设置div背景色渐变 背景色渐变:设置透明度 <div id="dv"></div> <input type="button& ...
- Leetcode823 : 因子二叉树问题
问题描述 给定一个数组,数组中的数不重复,且均大于1.要求使用数组中的数构建二叉树,每个数字可以被重复使用,除了叶子节点,每个节点的值等于其子节点的乘积,求构建二叉树的数量,返回的结果mod 10** ...
- 12-19 js
js是一个脚本语言 可插入到HTML网页文件中 在浏览器中执行 1 如何插入到网页中 1. 内部穿插 script 标签 type属性在网页中使用 2. 外部引入 script src属性引用js文 ...
- Python - 文件管理系统
一.概述 前段时间帮公司写了一个资产管理的网站,(https://www.cnblogs.com/ddzj01/p/11316837.html),系统运行的比较稳定,小白的第一个项目得到了领导的肯定. ...
- DispatchProxy实现动态代理及AOP
DispatchProxy类是DotnetCore下的动态代理的类,源码地址:Github,官方文档:MSDN.主要是Activator以及AssemblyBuilder来实现的(请看源码分析),园子 ...
- Windows10安装Elasticsearch IK分词插件
安装插件 cmd切换到Elasticsearch安装目录下 C:\Users\Administrator>D: D:\>cd D:\Program Files\Elastic\Elasti ...
- IP地址的格式和分类
IP地址 IP地址时IP协议提供的一种地址格式,它为互联网上的网络设备分配一个用来通信的逻辑地址,目前分为IP v4和IP v6两种,v4的意思是version4,v6是同样的意思. IP v4 IP ...
- js-06-字符串
一.查找字符串的字符串 a:indexOf:没有查询到返回值为-1: b:lastIndexoOf:查找到的为重复的最后一个: c:search 查找: var str="good good ...
- 探索Dynamics 365 用户能够登录使用的最小权限需求
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- python 导入同级目录文件时报错
当你import的时候,python解释器只会在sys.path这个变量(一个list,你可以print出来看)里面的路径中找可能匹配的package或module. 而一个package跟一个普通文 ...