Cesium中主要坐标
1 屏幕坐标(像素值)
Cesium的主要坐标系是属于笛卡尔系统,屏幕坐标是二维笛卡尔平面系统,即通过鼠标点击所获得的坐标,单位是像素值,Ceium表示在Cartesian2,也可以通过new Cesium.Cartesian2(x, y)插件。
2 笛卡尔空间坐标系统
笛卡尔空间坐标系统又称世界坐标,Cesium用Cartesian3表示,可通过new Cesium.Cartesian3(x, y)创建,主要用来做空间位置的变化如平移、转移、旋转和缩放等,坐标原点在椭球中心。
3 地理坐标(弧度)
Cesium的地理坐标单位默认是弧度,用Cartographic变量表示,可通过new Cesium.Cartographic(longitude, latitude,height)创建,参数分别是经度、维度和高度。
角度转弧度 - π/180×角度
弧度变角度 -180/π×弧度
4 经纬度坐标
就是地理经纬度坐标,默认是WGS84,即支持墨卡托投影,坐标原点在椭圆的质心。
Cesium中没有具体的经纬度对象,要得到经纬度首先需要将其转换为弧度,在进行转换。
Cesium中的坐标转换
1 弧度转角度
// 弧度转角度
var degree = Cesium.Math.toDegrees(2 * Math.PI)
2 角度转弧度
//角度转弧度
var radians = Cesium.Math.toRadians(90)
3 经纬度转笛卡尔坐标系(世界坐标)
// 方法1:直接转换
// var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height);
// 方法2:借助ellipsoid对象,先转换成弧度再转换
var cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height); //单位:度,度,米
var cartesian3 = ellipsoid.cartographicToCartesian(cartographic);
4 世界坐标转地理坐标
// 3.笛卡尔空间直角坐标系转为地理坐标(弧度制)
// var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
// 方法1
// var cartographic = ellipsoid.cartesianToCartographic(cartesian3);
// 方法2
// 4.地理坐标(弧度制)转为经纬度坐标
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var lng = Cesium.Math.toDegrees(cartographic.longitude);
var height = cartographic.height;
5 屏幕坐标转世界坐标
// 2.二维屏幕坐标转为三维笛卡尔空间直角坐标(世界坐标)
var cartesian3 = scene.globe.pick( viewer.camera.getPickRay(windowPostion),
6 世界转屏幕坐标
// 三维笛卡尔空间直角坐标(世界坐标)转为二维屏幕坐标
// 结果是Cartesian2对象,取出X,Y即为屏幕坐标。
windowPostion = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, cartesian3);
相关链接
Cesium开发入门篇 | 06坐标系及坐标变换 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/334540571