Cesium中的地形和坐标转换说明
Cesium坐标系主要分为:地理坐标系、WGS84坐标系
地理坐标系(经度、纬度、高度)【LLA】
采用三元组定义地球上任意一点的位置:(经度、纬度、高度)。大部分矢量数据是在地理坐标系中进行定义的。在程序中,经度和纬度通常采用弧度来描述的。在OpenGlobe中,地理坐标系采用类Geodetic2D和Geodetic3D表达。
WGS84坐标系(x,y,z)【ECEF】
该坐标系属于笛卡尔积坐标系的一种,该坐标自适应于地球,在WGS84坐标系中定义的物体保持相对地球固定。在OpenGlobe中笛卡尔坐标常使用类Vector3D来表示
坐标系种类:
a. 笛卡尔直角坐标系/三维坐标系
b.球面坐标系/球坐标系
地理坐标系(空间大地坐标系、LLA )【采用大地经纬度、大地高来描述空间位置,即用经纬度和大地高表示点位】表示地球上任何一点的位置。
地心地固坐标系:(ECEF也称地球坐标系,是一种笛卡尔坐标系)分为地心空间直角坐标系(以x,y,z为其坐标元素);地心大地坐标系(以B,L,H为其坐标元素)。
【WGS-84坐标系属于地心坐标系【在大地体内建立的O-XYZ坐标系】。地理坐标系】
- 经纬度地理坐标:这个没有实际的封装类(常用来经纬度来指明一个地理位置)
- 弧度地理坐标
站心坐标系:(也称站点坐标系、ENU)以所站位置为坐标极点O,分直角坐标系和极坐标系。
一、Cesium中的坐标系:
1、笛卡尔平面坐标系(Cartesian2);
2、笛卡尔空间直角坐标系(Cartesian3);
3、4D笛卡尔坐标系Cartesian4(unknown,在应用中几乎用不到)
4、地理坐标Cartographic(地理坐标系下经纬度和弧度表示),通常情况下通过它和WGS84坐标系之间互转。(WGS84弧度坐标系)以弧度的方式来进行运用的也就是Cartographic类:new Cesium.Cartographic(longitude, latitude, height)
5.WGS84经纬度坐标系(没有实际的对象)
1.世界坐标(笛卡尔三维空间直角坐标系/全球地心坐标系)
以椭球中心为原点的空间直角坐标系中的一个点的坐标。Cesium中用Cartesian3变量表示,用new Cesium.Cartesian3(x, y, z) 创建。(三维坐标轴,x,y,z)
2.地理坐标
就是测绘中的地理经纬度坐标,坐标原点在椭球的质心。
经度:参考椭球面上某点的大地子午面与本初子午面间的两面角。东正西负。
纬度 :参考椭球面上某点的法线与赤道平面的夹角。北正南负。
Cartographic变量表示。用**new Cesium.Cartographic(longitude, latitude, height)**创建。是用弧度表示的经纬度,这里的参数也叫做longitude,latitude,即经度和纬度。弧度即角度对应弧长是半径的倍数。
角度转弧度 π/180×角度 ;
弧度变角度 180/π×弧度。
二、坐标转换
投影坐标系:为平面坐标。参考平面地是水平面
地理坐标系:为球面坐标。 参考平面地是椭球面
坐标的定义:
1:Cartesian2-----new Cesium.Cartesian2(x, y) //投影坐标
2:Cartesian3---- new Cesium.Cartesian3(x, y, z) //笛卡尔直角坐标,世界坐标
3:Cartographic----new Cesium.Cartographic(longitude, latitude, height) //弧度。注:经纬度为弧度单位
转换:
Cartesian3→ Cartesian2, Cesium.Cartesian2.fromCartesian3(cartesian, result)→ Cartesian2
经纬度坐标(WGS84)→ Cartesian3, Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result) → Cartesian3
弧度坐标 → Cartesian3, Cesium.Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result) → Cartesian3
Cartesian3→ Cartographic, Cesium.Cartographic.fromCartesian(cartesian, ellipsoid, result) → Cartographic
经纬度坐标(WGS84)→ Cartographic, Cesium.Cartographic.fromDegrees(longitude, latitude, height, result) → Cartographic
第三个:投影坐标->地理坐标
单位:
经纬度坐标和弧度坐标也可以通过Cesium.Math来转换。
Cesium.CesiumMath.toDegrees(radians) → Number
Cesium.CesiumMath.toRadians(degrees) → Number
1.坐标系
new Cesium.Cartesian2(1,1) //表示一个二维笛卡尔坐标系,也就是直角坐标系(屏幕坐标系)
new Cesium.Cartesian3(1,1,1) //表示一个三维笛卡尔坐标系,也是直角坐标系(就是真实世界的坐标系)
2.二维屏幕坐标系到三维坐标系的转换
var pick1= scene.globe.pick(viewer.camera.getPickRay(pt1), scene) //其中pt1为一个二维屏幕坐标。
3.三维坐标到地理坐标的转换
var geoPt1= scene.globe.ellipsoid.cartesianToCartographic(pick1) //其中pick1是一个Cesium.Cartesian3对象。
4.地理坐标到经纬度坐标的转换
var point1=[geoPt1.longitude / Math.PI * 180,geoPt1.latitude / Math.PI * 180]; //其中geoPt1是一个地理坐标。
5.经纬度坐标转地理坐标(弧度)
var cartographic = Cesium.Cartographic.fromDegree(point) //point是经纬度值
var coord_wgs84 = Cesium.Cartographic.fromDegrees(lng, lat, alt);//单位:度,度,米
6.经纬度坐标转世界坐标
var cartesian = Cesium.Cartesian3.fromDegree(point)