cesium可以支持多種地形數據,推薦採用流式地形切片方式加載海量地形數據
先來看helloworld
var viewer = new Cesium.Viewer('cesiumContainer');
一行代碼就可以顯示出地球,但此時的是沒有地形效果的,默認是採用的EllipsoidTerrainProvider,也就是高度爲0的默認地形提供器
Cesium 加載在線地形數據
Cesium ion提供了全球地形數據服務,可以通過token訪問
var viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider: Cesium.createWorldTerrain()
});
此時的createWorldTerrain()方法創建的就是CesiumTerrainProvider的實例
可以看它的實現
function createWorldTerrain(options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
return new CesiumTerrainProvider({
url: IonResource.fromAssetId(1),
requestVertexNormals: defaultValue(options.requestVertexNormals, false),
requestWaterMask: defaultValue(options.requestWaterMask, false)
});
}
所以也可以通過CesiumTerrainProvider鏈接本地地形服務
Cesium 加載離線地形切片
本地化的離線地形切片首先要有地形數據,然後再進行切片處理,最後發佈服務
初始數據獲取和處理後面分析,假設已拿到tif格式的數據
切片處理有以下幾種方式:
- CesiumLab 最簡單直接並且免費的第三方轉換工具
- CTB(Cesium Terrain Builder)轉換
轉換完成後,發佈就可以通過IIS或nginx任意服務器發佈
然後加載
var terrainLayer = new Cesium.CesiumTerrainProvider({
url: "http://localhost:6666/terrain_tiles",
requestVertexNormals: true, // 請求照明
requestWaterMask: true // 請求水波紋效果
});
var viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider: terrainLayer,
});
Cesium 支持的地形數據
Cesium有以下地形提供器
- EllipsoidTerrainProvider 普通橢球體,默認無高度,無需請求服務,但可用程序設置高度
- CesiumTerrainProvider 最常用地形提供器,加載相關地形數據服務
- VRTheWorldTerrainProvider 支持從VT MAK VR-TheWorld Server服務器請求的地形圖
- GoogleEarthEnterpriseTerrainProvider 支持由Google Earth Enterprise服務器生成的地形服務
- ArcGISTiledElevationTerrainProvider ArcGIS的高程服務
地形提供器是用來結構化地形數據,內部是通過TerrainData來實際處理地形數據
TerrainData的接口由以下三個方法繼承實現:
- HeightmapTerrainData 高度圖
- QuantizedMeshTerrainData 量化網格
- GoogleEarthEnterpriseTerrainData 谷歌地球地形
Cesium支持的格式主要就是Heightmap和Quantized-Mesh,大體原理類似
地形瓦片(heightmap-1.0)格式的terrain瓦片集是根據TMS(瓦片地圖服務)global-geodetic(全球大地座標)規則進行切分
所有圖塊都具有後綴名.terrain
圖塊大小爲65x65像素大小
DEM 數據來源
DEM是數字高程模型的英文簡稱(Digital Elevation Model),是研究分析地形、流域、地物識別的重要原始資料。由於DEM 數據能夠反映一定分辨率的局部地形特徵,因此通過DEM 可提取大量的地表形態信息,可用於繪製等高線、坡度圖、坡向圖、立體透視圖、立體景觀圖,並應用於製作正射影像、立體地形模型與地圖修測。在測繪、水文、氣象、地貌、地質、土壤、工程建設、通訊、軍事等國民經濟和國防建設以及人文和自然科學領域有着廣泛的應用。
目前的一些主要數據源:
SRTM 數據
- SRTM C 波段數據,可能是最有名的高程數據了。美國航空航天局 NASA 在 2000 時利用奮進號航天飛機上的雷達測觀測所得,是以前用得最多的高程數據,覆蓋了全球南北緯 60 度以內的區域。
不同版本: - V1爲原始版本,
- V2爲利用現有水體數據庫在V1基礎上進行修正的版本,
- V4版是在V2版缺失數據區域進行插值和修補。
不同精度: - SRTM1:1角秒精度,對應精度爲30 米
- SRTM3:3角秒精度,對應精度爲90 米。谷歌地球所使用高程數據即爲 SRTM3,全球覆蓋, 幾乎沒有漏洞、空洞。
ASTER GDEM 數據
該數據是根據 NASA 的新一代對地觀測衛星 Terra 的觀測結果製作完成的。其數據覆蓋範圍爲北緯 83°到南緯 83°之間的所有陸地區域,陸地表面99%覆蓋。這是目前覆蓋最廣的高精度全球高程數據。垂直精度20米,水平精度30米,噪點較高。
- 第一版(2009):精度爲90米,全球覆蓋,保真度欠佳
- 第二版(2011):精度爲30米,全球覆蓋,保真度較好
DLR 數據
DLR數據,即SRTM X 波段數據,DLR是德國宇航中心縮寫,該數據同樣由2000 在奮進號航天飛機開展航天飛機雷達地形測繪任務時測的,當年德國航天局DLR同在奮進號上用自己的雷達搞地形測繪,美國人用的C波段雷達,德國人用的X波段雷達,後者屬於搭便車,航天飛機按美國人的測繪需求飛的,X波段覆蓋更窄,沒法掃全,所以掃出來的數據是呈網狀的,但X波段精度更高,約在10米。
DLR用更高精度的雷達(X波段),但只是呈網狀覆蓋全球,國內40%覆蓋,帶寬50KM,空白寬100KM。
精度爲 1 角秒,高程相對精度 6 米,絕對精度 16米,噪點高。
GMTED2010 數據
GMTED2010 數據,美國地質勘探局 USGS和美國國家地理空間情報局 NGA製作
全球: 30 角秒、 15 角秒和 7.5 角秒,對應的最高精度也在 250 米了。
美國: 1 角秒、 1/3 角秒,部分區域還有 1/9 角秒,即精度達到了 3 米的水平。
DEM 數據下載
可通過幾種途徑下載
- 對應數據官網,可直接訪問下載,可能會比較慢
- 中科院鏡像,速度會好點
- 地理空間數據雲,有提供免費數據下載
- 各種地圖下載器,比如圖新地圖等