1. 程式人生 > >cesium學習——cesium中的座標

cesium學習——cesium中的座標

一、座標展現形式

  在cesium中,對於座標數值單位有三種:角度、弧度和座標值

  1.角度

    角度就是我們所熟悉的經緯度,對於地球的座標建立如下:

     

    圖中以本初子午線作為x和z的面,建立了一個空間座標系。可知在緯度方向上,角1的範圍為-90~90,即南緯90°~北緯90°,角2的範圍是-180~180,即東經180°~西經180°。

   2.弧度

    角度還可以用弧度表示,初中數學知識,180°=Π。在cesium中很多函式的引數都是使用弧度作為單位。

  3.座標值

    這個座標值就如上圖中所建立的座標系,但是不同的是數值是我們所說的座標系的資料,例如Cartesian3(笛卡爾座標系)物件中的x、y、z所代表的數值。那麼這個物件所代表的值是什麼樣的範圍呢?我們使用可以將地圖的0,0點作為經緯度轉換為cartesian3物件,並將其輸出例如:

1 var point = Cesium.Cartesian3.fromDegrees(0,0,0);
2 console.log(point);

    結果為(6378137, 0, 0),為什麼x座標會是6378137呢?這是因為Cartesian3在建立的時候,是需要設定橢球體,也就是地球的。我們上面使用的方法的api如下:

    第三個引數就是設定橢球體。預設是Ellipsoid.WGS84,我們把這個橢球體輸出得到的是:(6378137, 6378137, 6356752.314245179),可以看到這個x座標的值就是我們(0,0)點最後轉換後的X座標的值,構建一下座標系可能會更清楚些:

    

 

 

     這樣的話,如果經緯度座標是(90,0)轉換成笛卡爾座標就是(0,6378137,0),經緯度(0,-90)就是(0,0,-6356752.314245179)。另外可以將笛卡爾座標的單位理解成米,圓心就是橢球的中心。這樣當我們想要對cesium中的物體進行米級別的控制使用笛卡爾座標系的表示就很好控制。

 

 二、三種座標的換算方式:

  1.角度和弧度的轉換

  在cesium中Math物件中的函式可以用來完成角度和弧度之間的換算。

      角度轉為弧度:弧度值 = Cesium.Math.toRadians(角度值);

      弧度轉為角度:角度值 = Cesium.Math.toDegrees(弧度值);

  這兩個方法是單純的將二者進行換算,另外cesium中很多的物件中是有專用的換算函式的。

  2.角度、弧度與Cartesian3的轉換

    角度轉換為Cartesian3:

      Cesium.Cartesian3.fromDegrees

      Cesium.Cartesian3.fromDegreesArray

    弧度轉換為Cartesian3:

      Cesium.Cartesian3.fromRadians

      Cesium.Cartesian3.fromRadiansArray

三、高度呢

  這個時候我們可能會問Cartesian3可以通過控制x,y,z的數值來控制高度,那麼經緯度和弧度呢?

  此時Cartographic物件就登場了,看下這個物件初始化的三個引數:

  用弧度表示的經緯度,以及以米為單位的高度。此時我們就需要加入如下的轉化:

    弧度轉為Cartographic:

      Cesium.Cartographic.fromRadians

    經緯度轉為Cartographic:

      Cesium.Cartographic.fromDegrees

    Cartographic轉為Cartesian3:

      Cesium.Cartographic.toCartesian

    Cartesian3轉為Cartographic:

      Cesium.Cartographic.fromCartesian

 

至此,cesium中整個的座標轉化已經基本包括,Cartesian2和Cartesian4因為沒有用過,暫時沒有加進來。下面我繪製座標轉換圖來表示:

 

第二週技術文件