cesium坐标系相关

521 阅读1分钟

常用坐标之间的转换

常用坐标系

// 屏幕坐标(像素值)

// 笛卡尔平面坐标
new Cesium.Cartesian2(x, y)

// 笛卡尔空间直角坐标
new Cesium.Cartesian3(x, y, z)

// 地理坐标(默认为弧度制)
new Cesium.Cartographic(longitude, latitude, height)

image.png

获取鼠标单击后 在屏幕中的坐标

var hander = new Cesium.ScreenSpaceEventHandlar(viewer.scene.canvas);
hander.setInputAction(function(event) {
// 绑定鼠标左键单击事件 获取鼠标点击的windowPosition
    var windowPosition = event.position;
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

屏幕坐标 转换为 笛卡尔空间直角坐标

// 三维模式下
var ray = viewer.camera.getPickRay(windowPosition);
var cartesian = viewer.scene.globe.pick(ray, viewer.scene);

// 二维模式下
var cartesian = scene.camera.pickEllipsoid(position, scene.globe.ellipsoid);

笛卡尔空间直角坐标 转换为 屏幕坐标

var pick = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian);

笛卡尔空间直角坐标 转换为 地理坐标(弧度制)

var cartographic = Cesium.Cartographic.fromCartesian(cartesian);

地理坐标(弧度制) 转换为 笛卡尔空间直角坐标

var postion = Cesium.Cartographic.fromRadians(longitude, latitude, height);

笛卡尔空间直角坐标 转换为 地理坐标(经纬度)

var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var lng = Cesium.Math.toDegrees(cartographic.longitude);
var height = cartographic.height;

// 度数与弧度互转
Cesium.Math.toDegrees(radians)
Cesium.Math.toRadians(degrees)

地理坐标(经纬度)转换为笛卡尔空间直角坐标

var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height)