cesium

cesium-坐标转换

2022-01-20  本文已影响0人  姜治宇

弧度和角度

度和弧度都是衡量角的大小的单位,就像米(m)和英寸(in)都是用来衡量长度的单位。度用°来表示,弧度用rad表示。
度和弧度之间可以相互转换,转换规则为:
1rad = (180/π)° ≈ 57.3°
1° = (π/180)rad ≈ 0.01745rad
比如求90°角的弧度,就是:
0.01745*90=1.5705rad

经纬度

提到经纬度,一般是指角度。经度的范围在[-180,180],而纬度在[-90,90]。当然我们也可以换算成弧度。cesium的api,有些需要传弧度,有些是角度,使用前一定要仔细阅读。

 var cartographic_rad= new Cesium.Cartographic(1.9, 0.6, 0);//经纬度参数,需要传弧度
    console.log(cartographic_rad);//Cartographic {longitude: 1.9, latitude: 0.6, height: 0}
    //弧度转为角度
    let lon = Cesium.Math.toDegrees(cartographic_rad.longitude);
    let lat = Cesium.Math.toDegrees(cartographic_rad.latitude);
    console.log(`经度:${lon}°,纬度:${lat}°`);//经度:108.8619810748564°,纬度:34.37746770784939°

    //角度转为弧度
    let lon_rad = Cesium.Math.toRadians(108.8619810748564);
    let lat_rad = Cesium.Math.toRadians(34.37746770784939);
    console.log(`经度(弧度):${lon_rad}rad,纬度(弧度):${lat_rad}rad`);//经度(弧度):1.9rad,纬度(弧度):0.6rad

世界坐标

世界坐标,表示以球心为原点的空间直角坐标系,可以与经纬度之间做转换。

  //======经纬度转世界坐标===========//
    let cartesian =  Cesium.Cartesian3.fromRadians(1.9,0.6,0);
    console.log(cartesian);//Cartesian3 {x: -1703648.8084007443, y: 4986746.192953569, z: 3581081.741917722}

    let cartesianDeg =  Cesium.Cartesian3.fromDegrees(108.8619810748564,34.37746770784939,0);
    console.log(cartesianDeg);//Cartesian3 {x: -1703648.8084007443, y: 4986746.192953569, z: 3581081.741917722}
//===========世界坐标转经纬度========//
    let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
    console.log(cartographic);//Cartographic {longitude: 1.9000000000000001, latitude: 0.6000000000000001, height: -1.3969838619232178e-9}
    //弧度转为角度
    let longitude = Cesium.Math.toDegrees(cartographic.longitude);
    let latitude = Cesium.Math.toDegrees(cartographic.latitude);
    console.log(`经度:${longitude}°,纬度:${latitude}°`);//经度:108.86198107485642°,纬度:34.3774677078494°

实体的位置一般是用世界坐标。

    let viewer = new Cesium.Viewer('cesiumContainer');
    viewer.entities.add({
    name: 'this is a box',
    position: Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300000.0),//经纬度转世界坐标
    box: {
        dimensions: new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),//世界坐标 Cartesian3 {x: 400000, y: 300000, z: 500000}
        material: Cesium.Color.YELLOW.withAlpha(0.5)
        }
    });
上一篇下一篇

猜你喜欢

热点阅读