三維GIS開(kāi)發(fā)-vue+cesium坐標(biāo)系統(tǒng)
屏幕坐標(biāo)系/平面直角坐標(biāo)系
笛卡爾空間直角坐標(biāo)系/世界坐標(biāo)
-
地理坐標(biāo)/弧度坐標(biāo)
屏幕坐標(biāo)系統(tǒng)/平面直角坐標(biāo)系 - Cartesian2
常用來(lái)描述屏幕坐標(biāo)系往堡,比如鼠標(biāo)在電腦屏幕上的點(diǎn)擊位置水援,返回的就是Cartesian2.具體的是鼠標(biāo)點(diǎn)擊位置距離canvas左上角的像素值。屏幕左上角為原點(diǎn)(0, 0),水平方向?yàn)閄軸皿伺,向右為正,垂直方向?yàn)閅軸,向下為正。
常用方法:
-
getPickRay(windowPosition, result) → Ray
在世界坐標(biāo)系中創(chuàng)建從相機(jī)位置到windowPosition
處的像素光線嚷闭。Name Type Description windowPosition
Cartesian2 像素的x和y坐標(biāo)。 result
Ray (可選)將結(jié)果存儲(chǔ)到的對(duì)象赖临。 返回Cartesian3射線的位置和方向胞锰。
-
pickPosition (windowPosition, result ) → [Cartesian3]
返回從深度緩沖區(qū)和窗口位置重構(gòu)的笛卡爾位置。
Name Type Description windowPosition
Cartesian2 窗口坐標(biāo)以執(zhí)行拾取 result
Cartesian3 (可選)恢復(fù)結(jié)果的對(duì)象兢榨。 返回Cartesian3笛卡爾位置
笛卡爾空間直角坐標(biāo)系/世界坐標(biāo) - Cartesian3
笛卡爾空間坐標(biāo)的原點(diǎn)就是橢球的中心嗅榕,我們?cè)谟?jì)算機(jī)上進(jìn)行繪圖時(shí),不方便使用經(jīng)緯度直接進(jìn)行繪圖吵聪,一般會(huì)將坐標(biāo)系轉(zhuǎn)換為笛卡爾坐標(biāo)系凌那,使用計(jì)算機(jī)圖形學(xué)中的知識(shí)進(jìn)行繪圖。
new Cesium.Cartesian3(x, y, z)
返回3D笛卡爾點(diǎn)
類(lèi)型是Number哦吟逝!
類(lèi)型是Number哦帽蝶!
類(lèi)型是Number哦!
地理坐標(biāo)/弧度坐標(biāo) - Cartographic
WGS84坐標(biāo)系(World Geodetic System 1984)是為GPS全球定位系統(tǒng)使用而建立的坐標(biāo)系統(tǒng)块攒,坐標(biāo)原點(diǎn)為地球質(zhì)心励稳,其地心空間直角坐標(biāo)系的Z軸指向BIH (國(guó)際時(shí)間服務(wù)機(jī)構(gòu))1984.O定義的協(xié)議地球極(CTP)方向,X軸指向BIH 1984.0的零子午面和CTP赤道的交點(diǎn)局蚀,Y軸與Z軸麦锯、X軸垂直構(gòu)成右手坐標(biāo)系。我們平常手機(jī)上的指南針顯示的經(jīng)緯度就是這個(gè)坐標(biāo)系下當(dāng)前的坐標(biāo)琅绅,經(jīng)度范圍[-180扶欣,180],緯度范圍[-90,90]千扶。
BUT!
BUUUUUT!!!
Cesium目前支持兩種坐標(biāo)系WGS84和WebMercator料祠,但是沒(méi)有實(shí)際的對(duì)象來(lái)描述WGS84坐標(biāo),都是以弧度的方式澎羞,即Cartographic類(lèi)來(lái)運(yùn)用的
new Cesium.Cartographic ( longitude , latitude , height )
由經(jīng)度髓绽,緯度和高度定義的位置。
Name | Type | Description |
---|---|---|
longitude |
Number | (可選)經(jīng)度妆绞,以弧度為單位顺呕。 |
latitude |
Number | (可選)緯度,以弧度為單位括饶。 |
height |
Number | (可選)橢球上方的高度株茶,以米為單位。 |
單位是弧度哦图焰!
單位是弧度哦启盛!
單位是弧度哦!
坐標(biāo)相互轉(zhuǎn)換
只寫(xiě)一下自己用得多的
以后要是有用到新的再說(shuō)
弧角轉(zhuǎn)換
簡(jiǎn)記版本:弧度就是幾分之,角度就是多少多少度僵闯,Math.xxx(x)里的x通常需要是弧度N钥埂!鳖粟!
角轉(zhuǎn)簧珩伞:Cesium.CesiumMath.toRadians(degrees)
弧轉(zhuǎn)角:Cesium.CesiumMath.toDegrees(radians)
兩C(Cartesian3, Cartographic)互換
Cartesian3→Cartographic
通常是對(duì)獲取的坐標(biāo)進(jìn)行計(jì)算的時(shí)候用,比如同文件夾下的測(cè)距測(cè)面里牺弹,測(cè)距測(cè)面都是首先要把cartesian3形式的坐標(biāo)轉(zhuǎn)換成Cartographic形式拿到經(jīng)緯高度浦马,然后才好計(jì)算
Cesium.Cartographic.fromCartesian(position)
Cartographic→Cartesian3
通常是算好一個(gè)需要的點(diǎn)以后要添加實(shí)體的時(shí)候用时呀,比如測(cè)距的時(shí)候添加線段中點(diǎn)
Cesium.Ellipsoid.WGS84.cartographicToCartesian(cartographicPosition)
世界坐標(biāo)Cartesian3轉(zhuǎn)角度WGS84地理坐標(biāo)
思路:先從笛卡爾坐標(biāo)轉(zhuǎn)到弧度坐標(biāo)张漂,再?gòu)幕∞D(zhuǎn)角
/**
* cartographic 轉(zhuǎn)Degrees下地理坐標(biāo)
* @param point radius下的WGS84坐標(biāo)
* @return degrees下的WGS84坐標(biāo)
*/
cartesian3ToWGS84(point) {
const cartographic = Cesium.Cartographic.fromCartesian(point);
const lat = Cesium.Math.toDegrees(cartographic.latitude);
const lng = Cesium.Math.toDegrees(cartographic.longitude);
const alt = cartographic.height;
return {
longitude: lng,
latitude: lat,
height: alt,
};
}