文章目錄
Cesium常用座標系統
1. 笛卡爾平面座標(Cartesian2)
new Cesium.Cartesian2(x, y)
2. 笛卡爾空間直角座標(Cartesian3)
new Cesium.Cartesian3(x, y, z)
3. 地理座標(Cartographic)
注:默認弧度
new Cesium.Cartographic(longitude, latitude, height)
4. 屏幕座標
項目實踐過程中的座標轉換
這裏是根據自己在項目中獲取座標的順序來展示基本的座標轉換
1. 獲取鼠標點在屏幕中的座標
// 獲取畫布
var canvas = viewer.scene.canvas;
var mouseHander = new Cesium.ScreenSpaceEventHandler(canvas);
// 綁定鼠標左點擊事件
mouseHander.setInputAction(function (event){
// 獲取鼠標點的windowPosition
var windowPosition = event.position;
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);)
2. 屏幕座標轉換爲笛卡爾空間直角座標
var ray = viewer.camera.getPickRay(windowPosition);
var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
3. 三維笛卡爾空間直角座標轉換爲地理座標
3.1 三維笛卡爾空間直角座標轉換爲地理座標(弧度)
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=ellipsoid.cartesianToCartographic(cartesian);
3.2三維笛卡爾空間直角座標轉換爲地理座標(經緯度)
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=ellipsoid.cartesianToCartographic(cartesian);
var lat=Cesium.Math.toDegrees(cartographic.latitude);
var lng=Cesium.Math.toDegrees(cartographic.longitude);
var alt=cartographic.height;
4.上述座標轉換的反向轉換
4.1 經緯度轉換爲笛卡爾空間直角座標
- 直接轉換
# Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result)
var position = Cesium.Cartesian3.fromDegrees(-115.0, 37.0);
- 先轉換爲弧度,再進行轉換
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=Cesium.Cartographic.fromDegrees(lng, lat, alt);
var cartesian = ellipsoid.cartographicToCartesian(cartographic);
4.2 笛卡爾空間直角座標轉換爲屏幕座標
var pick = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian);
常見的其他轉換
此處僅舉幾個例子,詳細內容大家可以參照各個座標系統的API
1. 三維笛卡爾座標轉換爲二維笛卡爾座標
Cesium.Cartesian2.fromCartesian3(cartesian, result)
2. 弧度與經緯度的相互轉換
- 經緯度轉換爲弧度
Cesium.CesiumMath.toRadians(degrees)
- 弧度轉換爲經緯度
Cesium.CesiumMath.toDegrees(radians)