cesium学习记录04-坐标系

一、地理坐标系和投影坐标系的关系

地理坐标系 (Geographic Coordinate System, GCS)

定义:地理坐标系是一个基于三维地球表面的坐标系统。它使用经度和纬度来表示地点的位置。
特点:
使用经纬度来定义位置。
基于特定的地球参考椭球体。
适用于全球范围的数据表示。
主要问题:由于地球是一个椭球体,直接使用经纬度坐标计算距离、面积或方向会产生误差。

投影坐标系 (Projected Coordinate System, PCS)

定义:投影坐标系是一个基于二维平面的坐标系统。它是通过将地球(或其部分)投影到一个平面上来得到的。
特点:
使用X和Y坐标(在平面上)来定义位置。
能够直接计算距离、面积和方向,因为它是在二维平面上。
所有的投影都会有某种形式的扭曲,无法完美地将地球的三维表面表示在二维平面上。
主要用途:适用于地图制作和本地/区域空间分析。

它们之间的关系:

投影是一个过程,通过它,地理坐标系(GCS)中的数据(经纬度)可以转换为投影坐标系(PCS)中的数据(X, Y坐标)。反之亦然。
由于地球是一个椭球体(或近似为一个凸形的物体),我们不能直接将其完美地展平到二维平面上。因此,当我们进行投影时,必然会引入一些扭曲。根据具体的投影方法,这种扭曲可能影响到面积、形状、距离或方向(也有属性不发生改变,故有等角、等积、任意投影)。
在 GIS 中,经常需要在这两种坐标系统之间进行转换,当我们将地理空间数据从一个坐标系转换到另一个坐标系时,我们通常说是在执行"坐标转换"或"坐标投影"。。

二、中国常用坐标系及EPSG代码:

(1)CGCS2000 地理坐标系:

EPSG:4490

(2)CGCS2000 3度带 Gauss-Kruger 投影:

东经 75° - EPSG:4501
东经 78° - EPSG:4502
…(依此类推,每隔3°一个投影带,直到东经 132° - EPSG:4543)

(3)CGCS2000 6度带 Gauss-Kruger 投影:

东经 75° - EPSG:4544
东经 81° - EPSG:4545
…(依此类推,每隔6°一个投影带)

(4)北京1954 地理坐标系:

EPSG:4214

(5)北京1954 3度带 Gauss-Kruger 投影:

东经 75° - EPSG:2421
东经 78° - EPSG:2422
…(依此类推,每隔3°一个投影带)

(6)WGS 84 地理坐标系:

EPSG:4326
这个是一个全球通用的坐标系,通常被 GPS 和许多国际数据集所采用。

(7)WGS 84 / Pseudo-Mercator:

EPSG:3857
这个是 Web Mercator 投影,主要被 Web 地图(如 Google Maps, Bing Maps)使用。

(8)Xian 1980 地理坐标系:

EPSG:4610
用于某些特定区域的数据。

其它坐标系代码查询

三、坐标转换

这里使用epsg网站在线转换举例说明
在这里插入图片描述
坐标由WGS 84 地理坐标系转换为WGS 84 / 伪墨卡托投影坐标系

四、cesium中的坐标系知识及坐标转换

1,坐标系1.1,屏幕坐标系屏幕坐标系即二维笛卡尔坐标系,Cesium中使用Cartesian2来描述,原点在屏幕左上角,x轴向右,y轴向下,单位为像素。1.2,笛卡尔空间直角坐标系笛卡尔空间直角坐标系即三维笛卡尔坐标系,Cesium中使用Cartesian3来描述,原点在地球中心,x轴向东,y轴向北,z轴向上,单位为米。1.3,WGS84地理坐标系WGS84地理坐标系即经纬度坐标系,在表示经纬度时有度数制和弧度制两种,Cesium中使用Cartographic来描述弧度制的WGS84坐标系,原点在地球中心,x轴向东,y轴向北,z轴向上。1.4,WebGL坐标系WebGL坐标系即WebGL空间直角坐标系,Cesium中使用Cartesian4来描述,原点在地球中心,x轴向东,y轴向北,z轴向上,w轴向外,单位为米。2,坐标转换2.1,角度与弧度互转角度转弧度:let radians=Cesium.Math.toRadians(degrees)弧度转角度:let degrees=Cesium.Math.toDegrees(radians)2.2,WGS84(经纬度)与笛卡尔坐标(Cartesian3)互转WGS84转Cartesian3:(1)  直接通过经纬度转换(1).1 let cartesian3=Cesium.Cartesian3.fromDegrees(longitude,latitude,height); 格式:[113.21, 25.61, 100.0],高度默认为0,可以不写(1).2 let cartesian3s = Cesium.Cartesian3.fromDegreesArray(coordinates); 格式:[113.21, 25.61, 113.54, 25.24],不带高度格式的数组(1).3 let cartesian3s = Cesium.Cartesian3.fromDegreesArrayHeights(coordinates); 格式:[113.21, 25.61, 100.0, 113.54, 25.24, 200.0],带高度格式的数组弧度制也类似,使用Cesium.Cartesian3.fromRadians, Cesium.Cartesian3.fromRadiansArray, Cesium.Cartesian3.fromRadiansArrayHeights(2)  使用椭球体转换let position=Cesium.Cartographic.fromDegrees(longitude,latitude,height);(2).1 let cartesian3=Cesium.Ellipsoid.WGS84.cartographicToCartesian(position); 单个坐标(2).2 let cartesian3s=Cesium.Ellipsoid.WGS84.cartographicArrayToCartesianArray(positions); 坐标数组Cartesian3转WGS84(1)  直接转换let cartographic=Cesium.Cartographic.fromCartesian(cartesian3);  直接转换得到的是WGS84弧度制的经纬度坐标,可将其再转换为角度制(2)  使用椭球体转换(2).1 let cartographic=Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian3);  单个坐标(2).2 let cartographics=Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray(cartesian3s);  坐标数组2.3 屏幕坐标与笛卡尔坐标互转屏幕坐标转笛卡尔坐标(Cartesian2转Cartesian3)(1) 屏幕坐标转椭球面笛卡尔坐标,不包含地形、模型等的坐标let cartesian3=viewer.scene.camera.pickEllipsoid(cartesian2);(2) 屏幕坐标转场景坐标,包含地形和模型等的场景坐标let cartesian3=viewer.scene.pickPosition(cartesian2);(3) 屏幕坐标转地表笛卡尔空间坐标,通过相机与屏幕点位连线来求取坐标let ray=viewer.camera.getPickRay(cartesian2);let cartesian3=globe.pick(ray,viewer.scene);笛卡尔坐标转屏幕坐标(Cartesian3转Cartesian2)let cartesian2=Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene,cartesian3);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/29867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设备固定资产管理系统

资产管理是企业经营和发展的基础,特别是设备资产管理。适当的设备资产管理可以有效地提升企业的经营效率,为提高核心竞争能力提供高效的前提。 固资及设备管理系统(EAM)它是一种有效的固定资产管理模式,可以帮助企业更…

不同组件之间相互传递信息的方式(拓展知识)

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:🏨补充知识:不同组件之间通过get()方式传递信息 🎀父组件与子组件之间的信息交互 $emit 方法🏅父组件给子组件发…

gradle 命令行单元测试执行问题

文章目录 问题:命令行 执行失败最终解决方案(1)ADB命令(2)Java 环境配置 问题:命令行 执行失败 命令行 执行测试命令 无法使用(之前还能用的。没有任何改动,又不能用了) …

Unity游戏源码分享-仿开心消消乐Match3Jewel

Unity游戏源码分享-仿开心消消乐Match3Jewel 工程地址: https://download.csdn.net/download/Highning0007/88198762

uniapp 微信小程序 上下滚动的公告通知(只取前3条)

效果图&#xff1a; <template><view class"notice" click"policyInformation"><view class"notice-icon"><image mode"aspectFit" class"img" src"/static/img/megaphone.png"></i…

企业权限管理(三)-产品添加

产品添加 从product-list.jsp跳转到product-add.jsp <button type"button" class"btn btn-default" title"新建" onclick"location.href${pageContext.request.contextPath}/pages/product-add.jsp"><iclass"fa fa-file…

spring技术栈面试题

1 Spring支持的事务管理类型有哪些&#xff1f;你在项目中使用哪种方式&#xff1f; Spring支持两种类型的事务管理&#xff1a; 编程式事务管理&#xff1a;这意味你通过编程的方式管理事务&#xff0c;给你带来极大的灵活性&#xff0c;但是难维护。声明式事务管理&#x…

springboot集成分布式任务调度系统xxl-job(调度器和执行器)

一、部署xxl-job服务端 下载xxl-job源码 下载地址&#xff1a; https://gitee.com/xuxueli0323/xxl-job 二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库 三、启动项目、访问首页 访问地址&#xff1a; http://localhost:8080/xxl-job-admin/ 账号&#xff1…

国产超低功耗32位MCU的应用

随着物联网技术的不断发展&#xff0c;超低功耗MCU已经成为了物联网方案中主要的芯片处理技术。超低功耗MCU具有众多的优点&#xff0c;其中一大所用就是能够大大提高物联网设备的续航能力&#xff0c;保证设备在长时间内不掉电不断电。那么&#xff0c;超低功耗MCU在物联网方案…

three.js修改内置材质着色器代码

通常我们是通过修改扩展three.js内置的材质来实现一些复杂的效果的&#xff0c;而不是使用shaderMaterial材质从零开始实现。比如说很满意MeshStandardMaterial&#xff08;一种常规材质&#xff09;的效果&#xff0c;但是我们希望在这个材质上添加一些顶点动画。如果我们打算…

手游联运平台的运营模式是什么?

手游联运平台的运营模式是指通过平台将多款手游进行联运和推广&#xff0c;从而实现游戏开发商、发行商和渠道方之间的合作与合力&#xff0c;共同推动游戏的发展与推广。具体来说&#xff0c;手游联运平台的运营模式主要包括以下几个方面&#xff1a; 游戏接入&#xff1a;手…

Python 程序设计入门(017)—— 选择结构程序设计

Python 程序设计入门&#xff08;017&#xff09;—— 选择结构程序设计 目录 Python 程序设计入门&#xff08;017&#xff09;—— 选择结构程序设计一、if 语句二、if…else 语句三、if…elif…else 语句四、多分支选择语句与字典相结合五、逻辑运算符 and六、逻辑运算符 or…

php webshell 免杀入门

webshell 查杀软件&#xff1a; d盾、安全狗、护卫神、Sangfor WebShellKill 在线查杀 百度WEBDIR https://scanner.baidu.com 河马 https://www.shellpub.com cloudwalker牧云 https://webshellchop.chaitin.cn 查杀技术 静态检测、动态检测、日志检查 静态检查&#xff1a…

【安卓串口通信】

安卓串口通信需要使用到串口适配器和USB OTG线。首先需要在Android设备上安装串口调试助手或其他支持串口通信的应用程序。然后将串口适配器连接到Android设备&#xff0c;使用USB OTG线连接即可。 接下来&#xff0c;您需要打开串口调试助手或其他应用程序&#xff0c…

研发工程师玩转Kubernetes——PVC使用storageClassName选择PV

除了《研发工程师玩转Kubernetes——PVC使用Label和storage选择PV》中介绍的使用Label做选择因子外&#xff0c;PVC还可以通过storageClassName选择符合条件的PV。 StorageClass的设计是用于描述如何动态创建PV。最开始时&#xff0c;管理员需要一次性申请好所有的PV&#xff0…

Cesium中通过射线计算日照

Cesium中通过射线计算日照 前段时间接触到一个需求&#xff0c;需要实时的计算建筑的日照&#xff0c;通常优先通过shadow map来实现。通过shadow map可以直接获取某一时刻的光照信息&#xff0c;累积不同太阳光位置的shadow map即可得到物体表面的光照时长。 不过本人技术有限…

SPINN:基于设备和云的神经网络协同递进推理

SPINN&#xff1a;基于设备和云的神经网络协同递进推理 论文标题&#xff1a;SPINN: synergistic progressive inference of neural networks over device and cloud 原文链接&#xff1a;https://dl.acm.org/doi/10.1145/3372224.3419194 论文动机 现代CNN过多的计算需求&am…

redis的缓存更新策略以及如何保证redis与数据库的数据一致性

redis的缓存更新策略有这么几种&#xff1a; 1、由应用直接和redis以及数据库相连接&#xff1a; 查询数据时&#xff0c;应用去redis中查询&#xff0c;查不到的话再由应用去数据库中查询&#xff0c;并将查询结果放在redis&#xff1b; 更新数据时&#xff…

在jupyter中下载数据集失败及解决方法(以IMDB为例)

在IMDB数据集下载时&#xff0c;由于网络原因下载失败&#xff0c;报错如下&#xff1a; Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz ConnectionResetError Traceback (most recent call last) … Exception: URL fetch f…

windos wsl2 docker unix:///var/run/docker.sock

解决方案 问题如下 rootDESKTOP-VM0J0I4:~# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?启动下docker sudo service docker startcsdn 等风来不如迎风去 htp://t.csdn.cn/Gh365