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 ...
随机推荐
- 使用CocoaPods配置iOS百度地图sdk问题记录20191024
1.在Podfile中加入添加库名 pod 'BaiduMapKit' #百度地图SDK 2.安装百度地图 pod install 出现问题: [!] Error installing BaiduMa ...
- 软件开发工具(第13章: Eclipse插件的使用与开发)
一.插件简介 插件的定义(了解) 插件是一种遵循其所依附的软件的接口规范所编写出来的程序. 插件实际上是对原有软件的扩展,替应用程序增加一些所需要的特定 功能. 插件的构成(重点.记忆) 每个插件都由 ...
- opencv图像倾斜校正和切边
#include<opencv2/opencv.hpp> #include<iostream> #include<cmath> using namespace st ...
- PHP实现微信扫码自动登陆与注册,参考实例
微信开发已经是现在phper必须要掌握的一项基本的技术了,其实做过微信开发的都知道微信接口非常的强大做起来也非常的简单,这里我们一起来看一个微信自动登陆注册的例子. php 微信扫码 pc端自动登陆注 ...
- FineUICore基础版部署到docker实战
FineUI用了好多年,最近出了FineUICore版本,一直没时间是试一下docker,前几天买了一个腾讯云服务器,1核2g,装了centos7.6,开始的时候主要是整个个人博客,在腾讯云安装了宝塔 ...
- Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案
Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...
- 使用hexo、github Pages搭建博客
1. 安装node 如果本机已经有node,为避免安装出现问题,建议先升级到最新版.参考:https://juejin.im/post/5b9739d1e51d450e9f66ee3b 2. 安装he ...
- LinkedHashMap源码学习
描述 可以按照添加元素的顺序对元素进行迭代的HashMap的子类. 注意,上面说的是加元素的顺序.也就是说,更新元素时,是不会影响遍历结构的的.除非设置参数accessOrder为true,将更新元素 ...
- JS Navigator
JS Navigator window.navigator 对象包含有关访问者浏览器的信息. Window Navigator window.navigator 对象在编写时可不使用 window 这 ...
- Quartznet速记
参与 https://www.cnblogs.com/lzrabbit/archive/2012/04/14/2371420.html 1.XML配置 参考:https://www.cnblogs.c ...