Cesium主要坐标系且相互转换

一、Cesium主要坐标系

1. WGS84经纬度坐标系、WGS84弧度坐标系(Cartographic):

World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统,在Cesium中没有实际对象来描述WGS84经纬度坐标系的,都是以弧度方式进行运用,也就是Cartographic类。这个类有三个构造参数:经度,纬度,高度

                        //经度     纬度     高度
new Cesium.Cartographic(longitude,latitude,height)
//该函数内部的弧度计算采用: 弧度 = π / 180 * 经纬度

2. 笛卡尔空间直角坐标系(Cartesian3)

//x,y,z分别代表三根数轴上的值
new Cesium.Cartesian3(x,y,z)

3. 平面坐标系(Cartesian2,也叫屏幕坐标系)
他是一个二维的笛卡尔坐标系,屏幕左上角为原点,屏幕水平方向为X轴,垂直方向为Y轴,向下为正

//x,y分别代表两根数轴上的值
new Cesium.Cartesian2(x,y)

4. 4D笛卡尔坐标系(Cartesian4)

二、坐标系之间相互转换

1.经纬度和弧度的相互转换

//1.经纬度转弧度
var radians = Cesium.CesiumMath.toRadians(degrees);
//2.弧度转经纬度
var degrees = Cesium.CesiumMath.toDegrees(radians);

2.WGS84经纬度坐标系、WGS84弧度坐标系转换

//1.构建WGS84弧度坐标-构造函数法
new Cesium.Cartographic(longitude弧度,latitude弧度,height米)
//2.构建WGS84弧度坐标-静态函数法
var cartographic= Cesium.Cartographic.fromDegrees(longitude经度,latitude纬度,height米)
//或者
var cartographic= Cesium.Cartographic.fromRadians(longitude弧度,latitude弧度,height米)

3.WGS84坐标系和笛卡尔空间直角坐标系的转换

//1.WGS84坐标系转笛卡尔空间直角坐标系
//(1)通过经纬度进行转换
var cartesian3= Cesium.Cartesian3.fromDegrees(longitude,latitude,height);

var cartesian3 = Cesium.Cartesian3.fromDegreesArray(coordinates);
//coordinates格式为不带高度的数组。例如:[-278.0, 66.0, -123.0, 55.0]

var cartesian3s = Cesium.Cartesian3.fromDegreesArrayHeights(coordinates);
//coordinates格式为带高度的数组。例如:[-278.0, 66.0, 6000.0, 318, 65.0, 120000.0]


//(2)间接转换
//首先调用以下任意一个函数先得到WGS84弧度坐标的值
var wgs84 = Cesium.Cartographic.fromDegrees(longitude经度, latitude纬度, height);
//或
var wgs84 = Cesium.Cartographic.fromRadians(longitude弧度, latitude弧度, height);
//然后把得到的值传入以下静态函数得到了笛卡尔空间坐标的值
var cartesian3 = Cesium.Ellipsoid.WGS84.cartographicToCartesian(wgs84);
//把多个WGS84弧度坐标值组合成一个数组传入得到一个笛卡尔空间坐标数组
var catesian3s = Cesium.Ellipsoid.WGS84.cartographicArrayToCartesianArray([wgs84_1, wgs84_2, wgs84_3])

//2.笛卡尔空间直角坐标系转WGS84坐标系
//直接转换
//通过以下两个函数传入笛卡尔空间坐标的值,直接得到WGS84弧度坐标
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3)
var cartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian3)
//从多个笛卡尔空间坐标组成的数组直接转换成WGS84坐标数组
var cartographics = Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray([cartesian1,cartesian2,cartesian3])

4.平面坐标系和笛卡尔空间直角坐标系的转换

//1.平面坐标系转笛卡尔空间直角坐标系
//(1)屏幕坐标转场景WGS84坐标:这里的场景坐标包含了地形、倾斜、模型的坐标
var cartesian3 = viewer.scene.pickPosision(Cartesian2)
//(2)屏幕坐标转地表坐标:地球表面的WGS84坐标,包含地形,不包含模型、倾斜摄影表面
var cartesian3 = viewer.scene.globe.pick(viewer.camera.getPickRay(Cartesian2),viewer.scene);
//(3)屏幕坐标转椭球面坐标:参考椭球的WGS84坐标,不包含地形、模型、倾斜摄影表面
var cartesian3 = viewer.scene.camera.pickEllipsoid(Cartesian2)
//2.笛卡尔空间直角坐标系转平面坐标系
//传入场景与笛卡尔空间坐标
var cartesian2 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene,cartesian3)

你可能感兴趣的:(Cesium,javascript,前端)