Cesium中的坐标系统简单说明
创作时间:
作者:
@小白创作中心
Cesium中的坐标系统简单说明
引用
CSDN
1.
https://blog.csdn.net/hap1994/article/details/139521720
Cesium是一款功能强大的开源3D地球和地图可视化工具,广泛应用于地理信息系统、虚拟现实等领域。在使用Cesium进行开发时,理解其坐标系统及其转换方法是至关重要的。本文将详细介绍Cesium中的三种坐标系统:地理坐标、世界坐标和屏幕坐标,并提供具体的转换方法和代码示例。
一、坐标系统
Cesium中坐标系统主要分为三种:地理坐标、世界坐标(X,Y,Z)和屏幕坐标。
- 地理坐标:通常用于位置表达,可以采用经纬度或弧度两种方式表示。
- 世界坐标:采用右手系的笛卡尔空间直角坐标系,原点位于椭球中心。在Cesium中,使用
Cartesian3类表示,类似于三维系统中的Point3D对象。 - 屏幕坐标:用于表示屏幕显示的二维坐标,左上角为坐标原点,常用于用户交互。
二、坐标转换
1. 角度和弧度互转
var radians = Cesium.Math.toRadians(degrees); // 经纬度转弧度
var degrees = Cesium.Math.toDegrees(radians); // 弧度转经纬度
2. 地理经纬度转地理弧度
// 方法一:
var longitude = Cesium.Math.toRadians(lng); // 其中 lng为经度
var latitude = Cesium.Math.toRadians(lat); // 其中 lat为纬度
var cartographic = new Cesium.Cartographic(longitude, latitude, height);
// 方法二:
var cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height); // 其中,lng和lat为经纬度
// 方法三:
var cartographic = Cesium.Cartographic.fromRadians(longitude, latitude, height); // 其中,longitude和latitude为弧度
3. 经纬度转世界坐标
lnglatToCartesian(lng, lat, height) {
// 直接转换
var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height);
// 先转弧度后转笛卡尔
// var cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height); // 单位:度,度,米
// var ellipsoid = viewer.scene.globe.ellipsoid;
// var cartesian3 = ellipsoid.cartographicToCartesian(cartographic);
return cartesian3;
}
4. 世界坐标转经纬度
Cesium不支持笛卡尔坐标直接转经纬度,需要先转换为弧度,再由弧度转化为经纬度
cart3Tolnglat(cartesian3) {
var ellipsoid = this._viewer.scene.globe.ellipsoid;
const cartograhphic = ellipsoid.cartesianToCartographic(cartesian3);
var lat = Cesium.Math.toDegrees(cartograhphic.latitude);
var lng = Cesium.Math.toDegrees(cartograhphic.longitude);
var height = cartographic.height;
return [lng, lat, height];
}
5. 世界坐标转屏幕坐标
var cartesian2 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian3);
6. 屏幕坐标转世界坐标
坐标获取
var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
handler.setInputAction(function (event) {
// event.position为屏幕坐标
console.log(event.position);
// 获取包含了地形、倾斜摄影表面、模型的世界坐标
// 解决在没有3dTile模型下的笛卡尔坐标不准问题, viewer.scene.globe.depthTestAgainstTerrain = true; // 默认为false
var pickedPosition = viewer.scene.pickPosition(event.position);
if (Cesium.defined(pickedPosition)) {
console.log('1', pickedPosition);
}
// 获取地球表面的世界坐标,包含地形,不包含其他模型
// Create a ray from the camera position through the pixel at windowPosition in world coordinates.
var ray = viewer.camera.getPickRay(event.position);
// Find an intersection between a ray and the globe surface that was rendered. The ray must be given in world coordinates.
var position2 = viewer.scene.globe.pick(ray, viewer.scene);
console.log('2', position2);
// 获取参考椭球的世界坐标
var position3 = viewer.scene.camera.pickEllipsoid(event.position, viewer.scene.globe.ellipsoid);
console.log('3', position3);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
本文详细介绍了Cesium中的坐标系统及其转换方法,对于学习Cesium开发的读者具有较高的参考价值。通过本文,读者可以更好地理解Cesium中的坐标系统,掌握各种坐标之间的转换方法,从而更高效地进行开发工作。
热门推荐
一文读懂ISO 7173椅子和凳子强度和耐久性测试
健身增肌:蛋白粉还是增肌粉?
水磨钻施工方案
2025年交通违规学习心得体会范文(2篇)
中国十大散文著作
租房押金的法律风险与合同条款设计
高效编辑PPT文本的7大技巧
PPT制作技巧之一:如何合理规划和组织PPT大纲
赛车赛事过程中除了车手外,还需要哪些辅助人员?在比赛中的分工是什么?
40分钟,虹桥到浦东
制冷机组常见的节流装置工作原理与选择
网络安全机构如何查询
水中氟化物检测与治理全解析:从来源危害到高效监测方案
硕士就业,输给本科
杠杆的作用是什么?如何合理运用杠杆?
中国护照免签国家全攻略:50个免签目的地详解
最新!又一国对中国公民免签
通过网络社交软件对账未回复构成默认吗?
企业注销后公章怎么处理
SiP封装技术是什么?封装工艺有哪些?
男人想和你结婚的6个表现,很准
深入了解股票交易费用,查询指南与费用明细解析
3焦煤市场分析与未来发展趋势探讨
热门音频成书,《细说五千年:写给普通人的中国史》出版
AI大模型催生的新职业:提示词工程师是什么?
冷茶水的饮用禁忌与影响:了解其潜在危害及健康影响
日本旅游必去的10大绝美景点
Excel右下角求和功能不见了怎么办?多种实用解决方案帮你轻松应对
办公软件求和功能无法使用怎么办?原因分析与解决方案
KONO滤杯黄金曼特宁中深烘焙咖啡豆手冲心得建议及技巧 水温研磨