坐标系介绍

  1. 大地坐标系统 WGS-84

WGS-84是用来表述地球上点的位置的一种地区坐标系统。它采用一个十分近似于地球自然形状的参考椭球作为描述和推算地面点位置和相互关系的基准面。一个大地坐标系统必须明确定义其三个坐标轴的方向和其中心的位置。通常人们用旋转椭球的短轴与某一规定的起始子午面分别平行干地球某时刻的平均自转轴和相应的真起始子午面来确定坐标轴的方向。若使参考椭球中心与地球平均质心重合,则定义和建立了地心大地坐标系。它是航天与远程武器和空间科学中各种定位测控测轨的依据。若椭球表面与一个或几个国家的局部大地水准面吻合最好,则建立了一个国家或区域的局部大地坐标系。大地坐标系中点的位置是以其大地坐标表示的,大地坐标均以椭球面的法线来定义。其中,过某点的椭球面法线与椭球赤道面的交角为大地纬度;包含该法线和大地子午面与起始大地子午面的二面角为该点的大地经度;沿法线至椭球面的距离为该点的大地高。大地纬度、大地经度和大地高分别用大写英文字母B、L、H表示。

        2.火星坐标系统 GCJ-02

国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。而加密后的坐标也常被人称为火星坐标系统。

目前使用火星坐标系的地图商:

  1. 腾讯搜搜地图;
  2. 搜狐搜狗地图;
  3. 阿里云地图;
  4. 高德地图;
  5. 灵图51ditu地图。

所有的电子地图所有的导航设备,都需要加入国家保密插件。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标的电子地图,加密成“火星坐标”,这样的地图才是可以出版和发布的,然后才可以让GPS公司处理。第二步,所有的GPS公司,只要需要汽车导航的,需要用到导航电子地图的,统统需要在软件中加入国家保密算法,将COM口读出来的真实的坐标信号,加密转换成国家要求的保密的坐标,这样,GPS导航仪和导航电子地图就可以完全匹配,GPS也就可以正常工作。

国内互联网公司,都必须使用GCJ-02坐标系。

3.百度坐标系统 BD-09

百度坐标对火星坐标系进行了一次加密,形成了百度坐标系。

目前使用百度坐标系的地图商:

  1. 百度Baidu地图。

少部分公司会在GCJ-02的基础上再进行一次加密,但这样的坐标不通用,只适于特定公司的地图。

坐标系转换


/*** @author by Luigi Qu* @Date 2021/12/30 3:02 下午* @Description*/
public class CoordinateTransformation {private static  double PI = Math.PI;private static  double AXIS = 6378245.0;private static  double OFFSET = 0.00669342162296594323;private static  double X_PI = PI * 3000.0 / 180.0;//GCJ-02=>BD09 火星坐标系=>百度坐标系public static double[] gcj2BD09(double glat, double glon){double x = glon;double y = glat;double[] latlon = new double[2];double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);latlon[0] = z * Math.sin(theta) + 0.006;latlon[1] = z * Math.cos(theta) + 0.0065;return latlon;}//BD09=>GCJ-02 百度坐标系=>火星坐标系public static double[] bd092GCJ(double glat, double glon){double x = glon - 0.0065;double y = glat - 0.006;double[] latlon = new double[2];double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);latlon[0] = z * Math.sin(theta);latlon[1] = z * Math.cos(theta);return latlon;}//BD09=>WGS84 百度坐标系=>地球坐标系public static double[] bd092WGS(double glat, double glon){double[] latlon = bd092GCJ(glat,glon);return gcj2WGS(latlon[0],latlon[1]);}// WGS84=》BD09   地球坐标系=>百度坐标系public static double[] wgs2BD09(double wgLat, double wgLon) {double[] latlon = wgs2GCJ(wgLat,wgLon);return gcj2BD09(latlon[0],latlon[1]);}// WGS84=》GCJ02   地球坐标系=>火星坐标系public static double[] wgs2GCJ(double wgLat, double wgLon) {double[] latlon  = new double[2];if (outOfChina(wgLat, wgLon)){latlon[0] = wgLat;latlon[1] = wgLon;return latlon;}double[] deltaD =  delta(wgLat,wgLon);latlon[0] = wgLat + deltaD[0];latlon[1] = wgLon + deltaD[1];return latlon;}//GCJ02=>WGS84   火星坐标系=>地球坐标系public static double[] gcj2WGS(double gcjLat,double gcjLon){double initDelta = 0.01;double threshold = 0.000000001;double dLat = initDelta, dLon = initDelta;double mLat = gcjLat - dLat, mLon = gcjLon - dLon;double pLat = gcjLat + dLat, pLon = gcjLon + dLon;double wgsLat, wgsLon, i = 0;while (true) {wgsLat = (mLat + pLat) / 2;wgsLon = (mLon + pLon) / 2;double[] tmp = wgs2GCJ(wgsLat, wgsLon);dLat = tmp[0] - gcjLat;dLon = tmp[1] - gcjLon;if ((Math.abs(dLat) < threshold) && (Math.abs(dLon) < threshold))break;if (dLat > 0) pLat = wgsLat; else mLat = wgsLat;if (dLon > 0) pLon = wgsLon; else mLon = wgsLon;if (++i > 10000) break;}double[] latlon = new double[2];latlon[0] = wgsLat;latlon[1] = wgsLon;return latlon;}private static boolean outOfChina(double lat, double lon){if (lon < 72.004 || lon > 137.8347)return true;if (lat < 0.8293 || lat > 55.8271)return true;return false;}private static double[] delta(double wgLat, double wgLon){double[] latlng  = new double[2];double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);double radLat = wgLat / 180.0 * PI;double magic = Math.sin(radLat);magic = 1 - OFFSET * magic * magic;double sqrtMagic = Math.sqrt(magic);dLat = (dLat * 180.0) / ((AXIS * (1 - OFFSET)) / (magic * sqrtMagic) * PI);dLon = (dLon * 180.0) / (AXIS / sqrtMagic * Math.cos(radLat) * PI);latlng[0] =dLat;latlng[1] =dLon;return latlng;}private static double transformLat(double x, double y){double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0;return ret;}private static double transformLon(double x, double y){double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0 * PI)) * 2.0 / 3.0;return ret;}}

常用坐标系介绍及转换方式相关推荐

  1. 三维坐标系介绍与转换

    转载自:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/OnlineHelp/Flash3D/G_ProjectDocumentatio ...

  2. 常用坐标系简介以及转换(附代码)

    原文地址:http://www.mapboxx.cn/article/geography/ ## 坐标系的基本概念 坐标系分为地理坐标系和投影坐标系,以下是对这两种坐标系的解释: * 地理坐标系:为球 ...

  3. GPS经纬度坐标WGS84到东北天坐标系ENU的转换

    GPS经纬度坐标WGS84到东北天坐标系ENU的转换 常用坐标系介绍 地理坐标系 (Geographic Coordinate System, GCS) 地心地固坐标系 (ECEF) 当地东.北.上 ...

  4. icc 颜色 c语言,浅析颜色在icc中四种不同的转换方式

    在我们使用频率最高的图像处理软件Photoshop中,我们可以在颜色设置项中的转换选项中发现"意图"一项中有可感知.饱和度.相对比色和绝对比色四个选项,这是不同颜色在icc之间转换 ...

  5. php 登录安全认证,介绍几种常用的web安全认证方式

    本文为大家介绍了五种常用的web安全认证方式,具有一定的参考价值,希望能对大家有所帮助. 1.Http Basic Auth 这是一种最古老的安全认证方式,这种方式就是简单的访问API的时候,带上访问 ...

  6. 国内地图坐标系介绍及常见地图(百度、高德、凯立德)之间的坐标系转换

    一.国内地图坐标系简介 1.  WGS84(地图坐标) 美国GPS使用的是WGS84的坐标系统.GPS系统获得的坐标系统,基本为标准的国际通用的WGS84坐标系统 2.  GCJ-02(火星坐标) G ...

  7. java常用坐标系转换

    常用 bd09.wgs84.gcj02 以及广州2000 坐标系互转 /*** 坐标转换** @author maofs* @version 1.0* @date 2021 -04-26 11:45: ...

  8. 常用的几种在线地图(天地图、百度地图、高德地图)坐标系之间的转换算法

    1.首先弄明白几种在线地图的坐标系: (1)天地图:CGCS2000,2000国家大地坐标系:我们其实很多时候直接用WGS84的坐标来代替CGCS2000坐标.因为CGCS2000的定义与WGS84实 ...

  9. Apollo进阶课程⑭ | Apollo自动定位技术——三维几何变换和坐标系介绍

    目录 1.三维几何变换---旋转 2.三维几何变换----平移 2.1刚体的位置和朝向 3. 坐标系 3.1 ECI地心惯性坐标系 3.2 ECFF地心地固坐标系 3.3当地水平坐标系 3.4 UTM ...

  10. 地图坐标系之间的转换(百度地图、GCJ、WGS84)

    文章目录 文章参考 坐标系介绍 常见坐标系 WGS84坐标系(标准的GPS坐标) WGS84 Web墨卡托(平面地图) GCJ02经纬度投影(火星坐标系) GCJ02 Web 墨卡托投影 BD09 经 ...

最新文章

  1. 年近 40,我在互联网大厂做高龄“大头兵”
  2. 通过COS上传文件至腾讯云
  3. MYSQL 入门全套
  4. c语言文件归并问题_通知:土地有变!土地归并:每亩补9万?明年起:合村并镇!能否启动?1个好消息!...
  5. mysql inner join 和join_我想说:mysql的join真的很弱
  6. 把实体 转为json 数据格式---jackson 的详细用法.
  7. 【转载】以前ioi上看到的一篇关于如何成为一名程序员的文章
  8. 电源功耗压力测试软件,整机功耗测试_机箱电源新闻-中关村在线
  9. R语言查找指定值的位置(行列)1
  10. 【STM32HF429的DSP教程】第40章 STM32F429的FIR带阻滤波器实现(支持逐个数据的实时滤波)
  11. 几种蓝屏分析及解决汇总
  12. 从外网到域控(vulnstack靶机实战一)
  13. 渗透中超全的Google hack语法
  14. python 基于Tkinter的姻缘测试器
  15. python蟒蛇画法
  16. 简单几步骤导出网易考拉海购中多个商品的图片
  17. State Threads 回调终结者
  18. kylin v10系统_Kylin10正式版 银河麒麟桌面操作系统(Kylin) V10 x86/兆芯版/海光版下载-520下载...
  19. R语言使用vtreat包的designTreatmentsC函数构建数据处理计划(treatment plan)、使用vtreat包进行数据准备
  20. 谷歌书签同步到gitee

热门文章

  1. 【uni-app踩坑记录】uni-starter本地微信一键授权登录失败
  2. 怎么调整tabcontrol的tabpage标签的宽度
  3. 嵌入式和单片机的区别是什么
  4. python算方差_python 算方差
  5. 2018年11月酷云大数据月度报告
  6. 教你玩转私域流量+会员运营体系
  7. 中了勒索病毒如何自救?20220105
  8. win10,设定「键盘布局」为【日语键盘(106/109)】【英语键盘(101/102)】
  9. 1079:计算分数加减表达式的值 题解 信息学奥赛 NOIP
  10. aria2Android服务器教程,Aria2自动更新BT Tracker服务器列表的方法