2022-01-24 cesium中的坐标转
2022-01-24 本文已影响0人
MrSwilder
1.cesium中的常用坐标系统
笛卡尔平面坐标(Cartesian2)
new Cesium.Cartesian2(x, y)
笛卡尔空间直角坐标(Cartesian3)
new Cesium.Cartesian3(x, y, z)
地理坐标(Cartographic)
注:默认弧度
new Cesium.Cartographic(longitude, latitude, height)
屏幕坐标(Cartographic)
2.实践中获取坐标
- 获取鼠标点在屏幕中的坐标
// 获取画布
var canvas = viewer.scene.canvas;
var mouseHander = new Cesium.ScreenSpaceEventHandler(canvas);
// 绑定鼠标左点击事件
mouseHander.setInputAction(function (event){
// 获取鼠标点的windowPosition
var windowPosition = event.position;
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);)
2.屏幕坐标转换为笛卡尔空间直角坐标
var ray = viewer.camera.getPickRay(windowPosition);
var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
- 三维笛卡尔空间直角坐标转换为地理坐标
3.1 三维笛卡尔空间直角坐标转换为地理坐标(弧度)
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=ellipsoid.cartesianToCartographic(cartesian);
3.2三维笛卡尔空间直角坐标转换为地理坐标(经纬度)
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=ellipsoid.cartesianToCartographic(cartesian);
var lat=Cesium.Math.toDegrees(cartographic.latitude);
var lng=Cesium.Math.toDegrees(cartographic.longitude);
var alt=cartographic.height;
4.地理坐标转换为三维笛卡尔空间直角坐标
4.1.经纬度转换为笛卡尔空间直角坐标
# Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result)
var position = Cesium.Cartesian3.fromDegrees(-115.0, 37.0);
4.2 弧度转化为笛卡尔空间直角坐标
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=Cesium.Cartographic.fromDegrees(lng, lat, alt);
var cartesian = ellipsoid.cartographicToCartesian(cartographic);
- 笛卡尔空间直角坐标转换为屏幕坐标
var pick = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian);
常见的其他转换
- 三维笛卡尔坐标转换为二维笛卡尔坐标
Cesium.Cartesian2.fromCartesian3(cartesian, result)
2.弧度与经纬度的相互转换
2.1 经纬度转换为弧度
Cesium.Math.toRadians(degrees)
2.2 弧度转换为经纬度
Cesium.Math.toDegrees(radians)