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因為沒有用過,暫時沒有加進來。下面我繪製座標轉換圖來表示:
第二週技術文件