Cesium的屏幕坐标、世界坐标、WGS84坐标

Cesium的坐标系

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

  1. 笛卡尔平面坐标(Cartesian2)
new Cesium.Cartesian2(x, y)
  1. 笛卡尔空间直角坐标(Cartesian3)
new Cesium.Cartesian3(x, y, z)
  1. 地理坐标(Cartographic) lng,lat,height的单位为弧度
new Cesium.Cartographic(longitude, latitude, height)

单位说明

Cartesian3的单位为:米/米/米
Cartographic的单位为:弧度/弧度/米
使用是注意经纬伟度的单位:使用Cesium.Math.toDegrees({弧度}) 方法可将弧度输出为度

1.获取屏幕上的坐标

// 获取画布
var canvas = viewer.scene.canvas;
var mouseHander = new Cesium.ScreenSpaceEventHandler(canvas);

// 绑定鼠标左点击事件
mouseHander.setInputAction(function (event){
	// 获取鼠标点的windowPosition
	var windowPosition = event.position;
	console.log(windowPosition)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);)

2.屏幕坐标转换为Cartesian3

var ray = viewer.camera.getPickRay(windowPosition);
var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
console.log(cartesian )

3.Cartesian3转屏幕坐标

var windowPos = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, Cartesian3);
console.log(windowPos );

4.Cartesian3转Cartesian2

Cesium.Cartesian2.fromCartesian3(cartesian, result)

5.WGS84转Cartesian3

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

6.Cartesian3转WGS84坐标

var ellipsoid = viewer.scene.globe.ellipsoid;
var xyz = new Cesium.Cartesian3(x, y, z);
var wgs84 = ellipsoid.cartesianToCartographic(xyz);
// 这时输出的wgs84为弧度单位,需要转为度可参考如下代码
// Cesium.Math.toDegrees(wgs84.longitude)
// Cesium.Math.toDegrees(wgs84.latitude)
// Cesium.Math.toDegrees(wgs84.height)

7. WGS84度转弧度

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

你可能感兴趣的:(Cesium,GIS)