Skip to main content

Cesium 中的常用坐标系及说明-8

Cesium中常用的坐标系主要有两种:WGS84坐标系和笛卡尔空间直角坐标系。平时我们常见的某个点的经纬度就是在WGS84坐标系下某个点的坐标,它的坐标原点在椭球的质心;而笛卡尔坐标系主要是用来做空间位置的变化如平移、旋转和缩放等等,它的坐标原点在椭球的中心。

除此之外,还有不常用的坐标系:1、平面坐标系(Cartesian2);2、笛卡尔空间直角坐标系(Cartesian3);3、Cartesian4(unknown,在应用中几乎用不到)4、Cartographic(地理坐标系下经纬度的弧度表示),通常情况下通过它和WGS84坐标系之间互转。

下边主要介绍 “平面坐标系” 和“笛卡尔空间直角坐标系”和“Cartographic”之间的相互转换关系。

Cartesian2-----new Cesium.Cartesian2(x, y)

Cartesian3→ Cartesian2:Cesium.Cartesian2.fromCartesian3(cartesian, result)→ Cartesian2

Cartesian3---- new Cesium.Cartesian3(x, y, z)

经纬度坐标(WGS84)→ Cartesian3

Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result) → Cartesian3

II:弧度坐标→ Cartesian3

Cesium.Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result) → Cartesian3

Cartographic----new Cesium.Cartographic(longitude, latitude, height) 注:经纬度为弧度单位

Cartesian3→ Cartographic

Cesium.Cartographic.fromCartesian(cartesian, ellipsoid, result) → Cartographic

经纬度坐标(WGS84)→ Cartographic

Cesium.Cartographic.fromDegrees(longitude, latitude, height, result) → Cartographic

另外,经纬度坐标和弧度坐标也可以通过Cesium.Math来转换

Cesium.CesiumMath.toDegrees(radians) → Number

Cesium.CesiumMath.toRadians(degrees) → Number

经纬度坐标转为笛卡尔空间直角坐标系

var ellipsoid=viewer.scene.globe.ellipsoid;

var cartographic=Cesium.Cartographic.fromDegrees(lng,lat,alt);

var cartesian3=ellipsoid.cartographicToCartesian(cartographic);

var x=cartesian3.x;   var y=cartesian3.y;   var z=cartesian3.z;

笛卡尔空间直角坐标系转为经纬度坐标

var ellipsoid=viewer.scene.globe.ellipsoid;

var cartesian3=new Cesium.cartesian3(x,y,z);

var cartographic=ellipsoid.cartesianToCartographic(cartesian3);

var lat=Cesium.Math.toDegrees(cartograhphic.latitude);

var lng=Cesium.Math.toDegrees(cartograhpinc.longitude);

var alt=cartographic.height;

发表回复