Cesium的坐标系分三种:屏幕坐标、笛卡尔空间直角坐标、地理坐标。
屏幕坐标
屏幕坐标系是一个是平面直角坐标系,即二维笛卡尔坐标系,屏幕左上角为原点(0,0),单位为像素值,屏幕水平方向为X轴,向右为正,垂直方向为Y轴,向下为正。构造函数为 new Cesium.Cartesian2(x, y)。
笛卡尔空间直角坐标
以椭球的中心为原点,建立三条两两垂直的数轴构成的坐标系。由于在计算机中不方便使用经纬度进行绘图,一般会将坐标系转换为笛卡尔坐标系。构造函数为 new Cesium.Cartesian3(x, y, z)。
WGS-84坐标
World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统,坐标原点为地球质心,其地心空间直角坐标系的Z轴指向BIH (国际时间服务机构)1984.O定义的协议地球极(CTP)方向,X轴指向BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。我们平常手机上的指南针显示的经纬度就是这个坐标系下当前的坐标,进度范围[-180,180],纬度范围[-90,90]。
WGS84坐标系包括构造函数为 new Cesium.Cartographic(x,y,z),注意参数皆为弧度制。
坐标系转换
WGS-84转笛卡尔
// 经纬度转笛卡尔
const point = new Cesium.Cartesian3.fromDegrees(116, 30, 200)
console.log(point)
笛卡尔转84
// 笛卡尔转经纬度
const cartographic1 = new Cesium.Cartographic.fromCartesian(cartesian3_1)
console.log('输入的笛卡尔坐标===',cartesian3_1)
console.log('转换后的84坐标(弧度)===',cartographic1)
弧度转角度
// 弧度转角度
let lon = Cesium.Math.toDegrees(cartographic1.longitude)
let lat = Cesium.Math.toDegrees(cartographic1.latitude)
console.log('转换后的84坐标===',lon, lat, cartographic1.height)
角度转弧度
const radians = Cesium.Math.toRadians(45.0);