cesium常用坐标转换方法


在Cesium项目开发过程中,经常需要将坐标在各个坐标系之间进行转换,以满足绘图和打印输出等需求。

1. 角度与弧度互转

使用Cesium.Math中的方法进行角度与弧度的转换。(API地址)
在这里插入图片描述
(1)角度转弧度

let radians = Cesium.Math.toRadians(degrees);

(2)弧度转角度

let degrees = Cesium.Math.toDegrees(radians);

2.WGS84(经纬度)与笛卡尔坐标(Cartesian3)互转

Cesium在绘图过程中需要使用笛卡尔空间直角坐标,因此需要将WGS84经纬度坐标转换为笛卡尔坐标,才能用于绘图。
wgs84一般使用经度,纬度,大地高表示。cartographic是弧度制表示的wgs84坐标系。

2.1WGS84转Cartesian3

(1)直接通过经纬度转换

// 角度制与笛卡尔转换
// 格式:[113.21, 25.61, 100.0],高度默认为0,可以不写
let cartesian3 = Cesium.Cartesian3.fromDegrees(lon, lat, height);
// 格式:[113.21, 25.61, 113.54, 25.24],不带高度格式的数组
let cartesian3s = Cesium.Cartesian3.fromDegreesArray(coordinates);
// 格式:[113.21, 25.61, 100.0, 113.54, 25.24, 200.0],带高度格式的数组
let cartesian3s = Cesium.Cartesian3.fromDegreesArrayHeights(coordinates);
// 弧度制也类似,使用Cesium.Cartesian3.fromRadians, Cesium.Cartesian3.fromRadiansArray, Cesium.Cartesian3.fromRadiansArrayHeights

(2)使用椭球体转换

let position = Cesium.Cartographic.fromDegrees(lon, lat, height);
// 单个坐标
let cartesian3 = Cesium.Ellipsoid.WGS84.cartographicToCartesian(position);
// 多个坐标
let cartesian3s = Cesium.Ellipsoid.WGS84.cartographicArrayToCartesianArray(positions);

2.2 Cartesian3转WGS84

(1)直接转换
直接转换得到的是WGS84弧度制的经纬度坐标,可将其再转换为角度制。

let cartographic = Cesium.Cartographic.fromCartesian(cartesian3);

(2)通过椭球体转换

// 单个坐标
let cartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian3);
// 多个坐标
let cartographics = Cesium.Ellipsoid.WGS84.cartesianArrayToCartographic(cartesain3Array);

3.屏幕坐标与笛卡尔坐标互转

3.1屏幕转笛卡尔(Cartesian2转Cartesian3)

(1)屏幕转椭球面笛卡尔坐标,不包含地形、模型等的坐标。
Cesium中的Camera提供了pickEllipsoid方法。
在这里插入图片描述
(2)屏幕转场景坐标,包含地形和模型等的场景空间坐标。
使用Scene类中的pickPosition方法实现。
在这里插入图片描述
(3)屏幕坐标转地表笛卡尔空间坐标
通过相机与屏幕点位连线来求取坐标。使用Scene类中globe属性中的pick方法。
在这里插入图片描述

3.2笛卡尔转屏幕(Cartesian3转Cartesian2)

Cesium提供了SceneTransforms的wgs84ToWindowCoordinates方法将笛卡尔坐标转换为屏幕坐标。
在这里插入图片描述

4.椭球笛卡尔坐标与局部笛卡尔坐标

上文中的笛卡尔坐标系都是默认指以椭球中心为原点的空间直角坐标系,在绘图时使用。而在建立模型或者局部计算时,则需要在计算时使用局部坐标,再转换为椭球笛卡尔坐标后绘图。

4.1建立转换矩阵

使用Transforms的eastNorthUpToFixedFrame方法建立转换矩阵。
在这里插入图片描述
则该点为局部坐标系的中心,坐标为(0, 0, 0),x轴指向东方向,y轴指向北方向,z轴指穿过该位置的椭球曲面法线方向。

4.2局部转椭球笛卡尔

基于上文建立四维转换矩阵,使用Matrix4中的multiplyByPoint方法将局部坐标转换为椭球笛卡尔坐标。
在这里插入图片描述
本文位学习笔记,内容来自
https://blog.csdn.net/weixin_45782925/article/details/123365834

  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值