首页 > 其他分享 >地图开发中的坐标系系统(二)

地图开发中的坐标系系统(二)

时间:2023-04-18 09:33:12浏览次数:34  
标签:WGS84 大地 WKID 地图 GCJ02 开发 坐标 坐标系

04-地图开发中的坐标系系统(二)

因为投影方式的不同,所以并没有一个严格的标准且统一的方式来表述某个点的位置。当没有统一标准的时候,就会存在很多体系标准,而当各种体系标准变得庞大且失去统一管理的时候,人们想将不同体系之间的坐标互相转化的话就会变得异常困难。EPSG就是来管理这些坐标体系的一个组织。
EPSG成立于1986年,并已于2005年“重组”为国际石油和天然气生产商协会(The OGP Surveying and Positioning Committee),维护并发布坐标参照系统的数据集参数,以及坐标转换描述。该数据集被广泛接受并使用,通过一个Web发布平台进行分发。
EPSG 通过 WKID(well-known ID) 来管理不同的坐标体系,WKID 简单理解就是 ID,每个坐标体系拥有独一无二的ID。接下来拿一些常用的WKID 举例。

(1)WGS84 (WKID = 4326)

在介绍 WGS84 之前,我们需要弄清楚一个概念:大地坐标系。大地坐标系是以参考椭球面为基准面而建立起来的坐标系,也可以简单理解成属于地理坐标系的一种。大地坐标系又分为参心大地坐标系和地心大地坐标系。其中参心坐标系是以椭球几何中心为原点构建的坐标系,一般用来对局部地区大地测绘使用,而地心坐标系是以地球质心为原点构建的坐标系,一般用来对地球整体大地测绘使用。
WGS84 则属于地心大地坐标系,是世界上第一个统一的大地坐标系,所以也被称为世界大地坐标系,而我们常说的GPS定位系统就是依据此坐标系建立的,其初次WGS84的精度为1-2m。除了中国地区以外,很多电子地图比如谷歌、Bing等都是用的是 WGS84。

(2)CGCS2000(WKID = 4490)

我国在上世纪50年代和80年代分别建立了北京54和西安80参心大地坐标系,后随着社会经济,科学的发展,中国测绘、地震部门和科学院有关单位重新建立了中国新一代地心大地坐标系,也就是 CGCS2000,所以也被称为2000国家大地坐标系。
和 WGS84 相比,两者本质上可以算是一致的,只是在计算过程中采用的参数有细微的差别。这个差别映射到地图上,也只会有cm级别的不同,因此如果在精度不需要严格到 cm 级别的应用中,两者可以默认相同。

(3)Web 墨卡托 (WKID = 3857)

Web 墨卡托也在 EPSG 的管理范围下,可见 EPSG 管理的坐标系不仅仅只有地理坐标系,同样也包括投影坐标系。
其实原本 EPSG 不准备将 web 墨卡托纳入 WKID,因为 web 墨卡托毕竟是采用了不严谨的假设,使得原本是等角投影的墨卡托变成了近似等角,从而直接影响到投影坐标的精度。但是随着 web 墨卡托在 web 领域被广泛使用从而名声大噪,EPSG 也只能将其接受。

我们在开发中经常听见GCJ02,那么GCJ02又起到什么作用呢?
GCJ02 是中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)所制定的坐标系统,其本质就是在 WGS84 经纬度的基础上进行了一层加密。由于国家相关安全保密规定,我国所有对外的地图系统都需要进行加密。所以高德以及谷歌的中国地图都是使用GCJ02坐标系。所以如果在 GCJ02 的坐标系下直接使用 GPS 的经纬度坐标,那么就会得到一个错误的定位地点。
比如在手机上下载一个GPS定位软件(部分硬件设备获取的GPS信息是原始的GPS信息,而一般地图软件的定位信息都是GCJ02加密过后的,得到天安门的经纬度。但是在高德地图上,使用该坐标点则定位到其他地方。所以 GCJ02 坐标系在业内也常常被称为火星坐标系。而百度在GCJ02 的基础上又进行了一层加密,这就是 BD09。
至于 GCJ02 的加密算法是不对外公开的,只有通过相关地图资质的审核,有关部门才会提供相应的加密算法。而国内一些拿到资质的厂商也提供了相应的 API 对外提供,可供用户将 WGS84的坐标转换成 GSJ02的坐标。高德API和百度API均提供对应的转换方法。
此外,严格意义上并没有 GCJ02 转化成 WGS84 的反向转化算法。

标签:WGS84,大地,WKID,地图,GCJ02,开发,坐标,坐标系
From: https://www.cnblogs.com/DTCLOUD/p/17328404.html

相关文章

  • 大数据开发相关技术汇总
    HadoopKaflka分布式数据日志收集,生产者消费者模式。SqoopHadoop数据导入,导出工具。自动生成mapreduce。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库;特点:可以将关系型数据库中的数据导入......
  • 开发在线客服系统聊天界面,JS实现相邻两条消息之间间隔小于3分钟,就不展示消息时间
    我在开发一个客服聊天界面,每条消息都有发送时间,我想要实现相邻两条消息之间间隔小于3分钟的就不展示发送时间.下面就是消息的JSON结构,里面的time就是发送时间message={"msg_id":629255,"time":"2023-02-1100:41:04","content":"chatGPT","mes_type":"vi......
  • QT MVC开发模式
    一、简单介绍今天我来记录一下在Qt中使用MVC模式进行开发的过程。MVC(Model-View-Controller)是一种常见的软件架构模式,用于将应用程序的逻辑和用户界面分离开来。在Qt中,使用MVC模式可以大大提高应用程序的可维护性和可扩展性。通过将应用程序的逻辑和用户界面分离开来,可以更轻松地......
  • 【Database开发】国产数据库之涛思TDengine(开发入门)
    1、简介TDengine是一款开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达TB甚至PB级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。2、开发指南......
  • Mac打不开身份不明的开发者
    当遇到系统提示“因为它来自身份不明的开发者”信息时,这时请先打开“系统偏好设置”应用接着在系统设置窗口点击打开“安全与隐私”选项随后在安全与隐私的通用设置中,可以看到系统默认是只允许“MacAppStore和被认可的开发者”选项,也就是其它应用程序都会被系统阻止打开。不过......
  • 在linux系统下搭建STM32单片机开发环境
    在linux系统下搭建STM32单片机开发环境的记录目录在linux系统下搭建STM32单片机开发环境的记录前言准备安装交叉编译工具链vscode的配置编码问题include问题关于其他报错处理makefile前言懒得说了,过后再补准备ubuntu系统,vscode,交叉编译工具链gcc-arm-none-eabi,还需要一个下载......
  • linux开发之ls -l命令实现
    效果大致思路首先,程序需要通过参数接受一个文件名。接着通过stat函数获取文件的信息,通过处理,进行合适的输出。转换时间戳可以用localtime函数来进行。判断文件类型时候要按位与S_IFMT。判断权限时候,也要按位与对应的宏。具体流程判断程序用法是否正确通过stas函数获取文......
  • Qt音视频开发38-ffmpeg视频暂停录制的设计
    一、前言基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件必须是能够正常播放的连续......
  • 定制开发软件系统要清楚哪些核心?这些核心要记住
     许多企业商家不知道的是,自己在找开发商定制一个软件系统的时候要清楚一些核心,否则会降低自己开发的成功率。那么定制开发软件系统要清楚哪些核心?今天名锐讯动为大家总结这些核心要记住。 1.功能需求。众所周知,定制开发一个软件系统是需要围绕功能需求而实现的。如果没有具......
  • 定制开发系统平台能够具备的亮点,让企业蒸蒸日上
     分析市场上迅速发展的企业我们就会发现这些企业都曾经找开发商帮助自己定制开发一个系统平台,给自身企业的发展带来很大的助力。下面名锐讯动为大家介绍定制开发系统平台能够具备的亮点。 1.针对性强。由于系统平台是开发商根据企业提供的自身需求进行量身定制,所以系统平台体......