Cesium中的坐标相互转换

 

1、平面坐标系(Cartesian2)

new Cesium.Cartesian2(x, y)

 

2、笛卡尔空间直角坐标系-世界坐标(Cartesian3)

new Cesium.Cartesian3(x, y, z)

 

3、弧度(Cartographic)

new Cesium.Cartographic(longitude, latitude, height)   

注:这里的经纬度是用弧度表示的,经纬度其实就是角度。弧度即角度对应弧长是半径的倍数。
角度转弧度: π / 180 × 角度 
弧度变角度: 180 / π × 弧度 

 

4、经纬度(longitude,latitude)

地理坐标系,坐标原点在椭球的质心。

经度:参考椭球面上某点的大地子午面与本初子午面间的两面角。东正西负。

纬度:参考椭球面上某点的法线与赤道平面的夹角。北正南负。

 

坐标转换

1.经纬度转换为世界坐标

第一种方式:直接转换:
Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result) 

第二种方式:先转换成弧度再转换
var ellipsoid = viewer.scene.globe.ellipsoid;
var cartographic = Cesium.Cartographic.fromDegrees(lng,lat,alt);
var cartesian3 = ellipsoid.cartographicToCartesian(cartographic);

2.世界坐标转换为经纬度

var ellipsoid = viewer.scene.globe.ellipsoid;
var cartesian3 = new Cesium.cartesian3(x,y,z);
var cartographic = ellipsoid.cartesianToCartographic(cartesian3);
var lat = Cesium.Math.toDegrees(cartograhphic.latitude);
var lng = Cesium.Math.toDegrees(cartograhpinc.longitude);
var alt = cartographic.height;

3.弧度和经纬度

经纬度转弧度:
Cesium.CesiumMath.toRadians(degrees) 
弧度转经纬度:
Cesium.CesiumMath.toDegrees(radians) 

4.屏幕坐标和世界坐标相互转换

屏幕转世界坐标:
var pick1= new Cesium.Cartesian2(0,0);
var cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(pick1),viewer.scene);    
注意这里屏幕坐标一定要在球上,否则生成出的cartesian对象是undefined

世界坐标转屏幕坐标
Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, Cartesian3);
结果是Cartesian2对象,取出X,Y即为屏幕坐标。

5.Cartesian2

Cesium.Cartesian2.fromCartesian3(cartesian, result)→ Cartesian2

6.Cartesian3

I:经纬度坐标(WGS84)→ Cartesian3
Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result) → Cartesian3

II:弧度坐标→ Cartesian3
Cesium.Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result) → Cartesian3

7.Cartographic

I:Cartesian3→ Cartographic
Cesium.Cartographic.fromCartesian(cartesian, ellipsoid, result) → Cartographic

II:经纬度坐标(WGS84)→ Cartographic
Cesium.Cartographic.fromDegrees(longitude, latitude, height, result) → Cartographic   

另外,经纬度坐标和弧度坐标也可以通过Cesium.Math来转换
Cesium.CesiumMath.toDegrees(radians) → Number
Cesium.CesiumMath.toRadians(degrees) → Number       
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值