Skip to main content

Cesium 坐标相互转换-9

cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系(世界坐标)。
WGS84坐标一般以经纬度来指明一个地点,原点在椭球的质心 。
笛卡尔空间坐标系常用来做一些空间位置变换如平移旋转缩放等等,坐标原点在椭球的中心 。
屏幕坐标----------------------------------------------->Pick
世界坐标----------------------------------------------->Cartesian
地理坐标(弧度) ---------------------------------->cartographic
经纬度坐标-------------------------------------------->Point

坐标系

new Cesium.Cartesian2(1,1) //表示一个二维笛卡尔坐标系,也就是直角坐标系(屏幕坐标系)
new Cesium.Cartesian3(1,1,1) //表示一个三维笛卡尔坐标系,也是直角坐标系(真实世界的坐标系)

二维屏幕坐标系到三维坐标系的转换

var pick1= scene.globe.pick(viewer.camera.getPickRay(pt1), scene) 
//其中pt1为一个二维屏幕坐标。

三维坐标到地理坐标的转换

var geoPt1= scene.globe.ellipsoid.cartesianToCartographic(pick1) 
//其中pick1是一个Cesium.Cartesian3对象。

地理坐标到经纬度坐标的转换

var point1=[geoPt1.longitude / Math.PI * 180,geoPt1.latitude / Math.PI * 180]; 
//其中geoPt1是一个地理坐标。

经纬度坐标转地理坐标(弧度)

var cartographic = Cesium.Cartographic.fromDegree(point) //point是经纬度值
var coord_wgs84 = Cesium.Cartographic.fromDegrees(lng, lat, alt);//单位:度,度,米

经纬度坐标转世界坐标

var cartesian = Cesium.Cartesian3.fromDegree(point)

计算两个三维坐标系之间的距离

var d = Cesium.Cartesian3.distance(
    new Cesium.Cartesian3(pick1.x, pick1.y, pick1.z), 
    new Cesium.Cartesian3(pick3.x, pick3.y, pick3.z)
); 
//pick1、pick3都是三维坐标系

发表回复