Cesium 中坐标相互转换
经纬度 degree <-> 弧度 radian
radians -> degrees
const coordWGS84Lon = Cesium.Math.toDegrees(coordCartographic.longitude);
const coordWGS84Lat = Cesium.Math.toDegrees(coordCartographic.latitude);
degrees -> radians
const coordCartographicLon = Cesium.Math.toRadians(coordWGS84Lon);
const coordCartographicLat = Cesium.Math.toRadians(coordWGS84Lat);
Cartographic <-> GCS(WGS84)
Cartographic -> GCS(WGS84)
const coordWGS84Lon = Cesium.Math.toDegrees(coordCartographic.longitude);
const coordWGS84Lat = Cesium.Math.toDegrees(coordCartographic.latitude);
const coordWGS84Height = coordCartographic.height;
return [coordWGS84Lon, coordWGS84Lat, coordWGS84Height];
GCS(WGS84) -> Cartographic
const coordCartographic = Cesium.Cartographic.fromDegrees(coordWGS84Lon, coordWGS84Lat, coordWGS84Height, resultCartographic);
Cartesian3 <-> Cartographic
Cartesian3 -> Cartographic
const coordCartographic = Cesium.Cartographic.fromCartesian(coordCartesian3);
const coordCartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(coordCartesian3);
Cartographic -> Cartesian3
const coordCartesian3 = Cesium.Cartographic.toCartesian(coordCartographic);
Cartesian3 <-> GCS(WGS84)
Cartesian3 -> GCS(WGS84)
需要通过 Cartographic 做过渡
Cartesian3 -> Cartographic -> WGS84
通过 Cesium.Cartographic.fromCartesian
const coordCartographic = Cesium.Cartographic.fromCartesian(coordCartesian3);
const coordWGS84Lon = Cesium.Math.toDegrees(coordCartographic.longitude);
const coordWGS84Lat = Cesium.Math.toDegrees(coordCartographic.latitude);
const coordWGS84Height = coordCartographic.height;
return [coordWGS84Lon, coordWGS84Lat, coordWGS84Height];
通过 Cesium.Ellipsoid.WGS84.cartesianToCartographic
单个坐标转换
const coordCartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(coordCartesian3);
const coordWGS84Lon = Cesium.Math.toDegrees(coordCartographic.longitude);
const coordWGS84Lat = Cesium.Math.toDegrees(coordCartographic.latitude);
const coordWGS84Height = coordCartographic.height;
return [coordWGS84Lon, coordWGS84Lat, coordWGS84Height];
多个坐标转换
const coordCartographicArray = Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray(coordCartesian3Array);
const coordWGS84Array = new Array(coordCartographicArray.length)
coordCartographicArray.forEach((coordCartographic, index) => {
const coordWGS84Lon = Cesium.Math.toDegrees(coordCartographic.longitude);
const coordWGS84Lat = Cesium.Math.toDegrees(coordCartographic.latitude);
const coordWGS84Height = coordCartographic.height;
coordWGS84Array[index] = [coordWGS84Lon, coordWGS84Lat, coordWGS84Height];
})
return coordWGS84Array;
GCS(WGS84) -> Cartesian3
需要通过 Cartographic 做过渡
WGS84 -> Cartographic -> Cartesian3
- [static] Cesium.Cartographic.fromDegrees(longitude, latitude, height, result) → Cartographic
- [static] Cesium.Cartographic.toCartesian(cartographic, ellipsoid, result) → Cartesian3
const coordCartographic = Cesium.Cartographic.fromDegrees(coordWGS84Lon, coordWGS84Lat, coordWGS84Height);
const coordCartesian3 = Cesium.Cartographic.toCartesian(coordCartographic);
return coordCartesian3;
标签:coordCartographic,const,Cartographic,坐标,Cesium,转换,Math,toDegrees
From: https://www.cnblogs.com/zheyi420/p/17855911.html