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中的坐标系统,掌握各种坐标之间的转换方法,从而更高效地进行开发工作。
热门推荐
3元烤肠真能放心吃?揭秘成分大起底
严范孙与南开中学的百年传承
微信密码忘了?这招轻松找回!
福建土楼 vs 厦门和贵楼:谁才是打卡圣地?
玩转福建三大旅游胜地:鼓浪屿、武夷山和平潭岛
武夷山:入选最美自然景观榜单的世遗瑰宝
福州科技馆新馆开门迎客,七大展厅展现海空科技魅力
甲流新药昂拉地韦临床试验成功,有望成为全球首个PB2抑制剂类抗流感药物
梁拱联拱活动式并存,中国四大古桥展现古代建桥智慧
台湾烤肠调料大揭秘:独家配方公开!
12岁男孩学中国舞,这些要点家长要知道
现代手机来电显示功能设置与使用技巧详解
现代手机来电显示功能设置与使用技巧详解
狗狗驯化之谜:中东地区的秘密
迷你比熊、哈士奇、泰迪熊:谁才是最萌小型犬?
中西文化里的狗狗:从历史符号到情感伴侣
泰国购物退税攻略:机场退税流程详解
人参西洋参灵芝等制成的保健品,功效真相如何?
AI改变音乐产业:创作、教育、传播全面革新
阮籍《咏怀诗》:古诗词里的现代启示录
冰箱冷藏藏红花,健康生活小窍门
藏红花储存全攻略:保质期、储存方法及注意事项
中国零食进军泰国免税市场,商机无限!
四平交警严查非法改装车炸街扰民,市民可依法维权
飙车炸街,罚你没商量!
春夏季鼻部疾病高发,中医护鼻有良法
预防鼻肿瘤:健康生活方式与早期筛查的重要性
微信通话录音功能全攻略:设置方法、应用场景及注意事项
微信视频通话黑科技揭秘:虚拟摄像头的秘密
北斗,不止导航这么简单