Cesium常用坐标转换(Cartesian3世界坐标、Cartesian2屏幕坐标、Cartographic(WGS84)弧度、经纬度)

const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction((movement) => {
// 从Cartesain2屏幕坐标获取Cartesain3世界坐标
// 根据单击的位置所拾取的要素类型不同
// 单击的位置要在球体否则转换为undefined
// 第一种方式: 获取场景坐标
let cartesian3Position01 = scene.pickPosition(movement.position)
console.log('cartesian3Position01::: ', cartesian3Position01)
// 第二种方式: 获取地表坐标
let ray = viewer.camera.getPickRay(movement.position);
// ray: 测试相交的射线,scene:当前场景
let cartesian3Position02 = viewer.scene.globe.pick(ray, viewer.scene);
console.log('cartesian3Position02::: ', cartesian3Position02)
// 第三种方式: 获取椭球面坐标
// 椭球面坐标参考椭球体的WGS-84体系,不包含地形、模型、倾斜摄影模型表面
let cartesian3Position03 = viewer.scene.camera.pickEllipsoid(movement.position);
console.log('cartesian3Position03::: ', cartesian3Position03)
// 从Cartesian3世界坐标获取WGS-84坐标(弧度表示)
let cartographic = Cesium.Cartographic.fromCartesian(cartesian3Position01);
console.log('WGS-84 position: ', cartographic);
// {
// "longitude": -1.9644396422943724,
// "latitude": 0.7562774920515126,
// "height": -265.2578173681123
// }
// 从WGS-84坐标获取经纬度坐标(弧度 转为 经纬度
let lat = Cesium.Math.toDegrees(cartographic.latitude);
let lng = Cesium.Math.toDegrees(cartographic.longitude);
let height = Cesium.Math.toDegrees(cartographic.height);
console.log('{lat, lng, height}::: ', {lat, lng, height})
// 经纬度坐标转为WGS-84弧度坐标
let cartographicPosition = Cesium.Cartographic.fromDegrees(lng, lat, height)
console.log('cartographicPosition:: ', cartographicPosition)
// =========== 经纬度坐标转为世界坐标Cartesian3
let cartesian3PositionFromDegrees = Cesium.Cartesian3.fromDegrees(lng, lat, height);
// =========== WGS84弧度坐标转为世界坐标Cartesian3
let cartesian3PositionFromWGS84 = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);
console.log('cartesian3PositionFromDegrees::: ', cartesian3PositionFromDegrees)
console.log('cartesian3PositionFromWGS84::: ', cartesian3PositionFromWGS84)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
posted @   Felix_Openmind  阅读(1513)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示