Cesium常用座標系統和轉換

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章