版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 http://blog.csdn.net/xlsmn/article/details/76168510
Cesium是一個基於JavaScript的開源框架,可用於在瀏覽器中繪製3D的地球,並在其上繪製地圖(支持多種格式的瓦片服務),該框架不需要任何插件支持,但是瀏覽器必須支持WebGL。
Cesium中常用的座標系主要有兩種:WGS84座標系和笛卡爾空間直角座標系。平時我們常見的某個點的經緯度就是在WGS84座標系下某個點的座標,它的座標原點在橢球的質心;而笛卡爾座標系主要是用來做空間位置的變化如平移、旋轉和縮放等等,它的座標原點在橢球的中心。
除此之外,還有不常用的座標系:1、平面座標系(Cartesian2);2、笛卡爾空間直角座標系(Cartesian3);3、Cartesian4(unknown,在應用中幾乎用不到)4、Cartographic(地理座標系下經緯度的弧度表示),通常情況下通過它和WGS84座標系之間互轉。
下邊主要介紹 “平面座標系” 和“笛卡爾空間直角座標系”和“Cartographic”之間的相互轉換關係。
1:Cartesian2-----new Cesium.Cartesian2(x, y)
I: Cartesian3→Cartesian2:Cesium.Cartesian2.fromCartesian3(cartesian, result)→ Cartesian2
2:Cartesian3---- new Cesium.Cartesian3(x, y, z)
I:經緯度座標(WGS84)→ Cartesian3
Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result) → Cartesian3
II:弧度座標→ Cartesian3
Cesium.Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result) → Cartesian3
3:Cartographic----new Cesium.Cartographic(longitude, latitude, height) 注:經緯度爲弧度單位
I:Cartesian3→ Cartographic
Cesium.Cartographic.fromCartesian(cartesian, ellipsoid, result) → Cartographic
II:經緯度座標(WGS84)→ Cartographic
Cesium.Cartographic.fromDegrees(longitude, latitude, height, result) → Cartographic
另外,經緯度座標和弧度座標也可以通過Cesium.Math來轉換
Cesium.CesiumMath.toDegrees(radians) → Number
Cesium.CesiumMath.toRadians(degrees) → Number
舉例:
I:經緯度座標轉爲笛卡爾空間直角座標系
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;
II:笛卡爾空間直角座標系轉爲經緯度座標
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;
更多座標系轉換請參考:
http://blog.csdn.net/u013929284/article/details/52503295