Skip to main content

Cesium 生成terrain地形数据-12

Cesium 生成terrain地形数据

处理地形数据


由于CTB工具不支持DEM为NoData值和float的数据,所以需要对数据进行处理。

  • 多个tif必须县合并镶嵌成一张tif
  • pixeltype从float转为int
  • NoData值处理为0

我使用的是ArcGis10.5,打开ArcMap:

打开 ArcToolbox->Data Management Tools->Raster->Raster Dataset ->Mosaic。

这个处理过程很久,可以在Result面板里查看转换过程。

成功后,处理NoData值,ArcToolbox->spatial Analyst Tool->Map Algebra->Raster Calculator 处理公式为:

Con(IsNull("xxxx.tif"),0,"xxxx.tif")//xxxx.tif对应你的合并后的文件


配置CTB环境

  1. 下载CTB工具包

    https://download.csdn.net/download/seelingzheng/12348981

  2. 将ctb和gdal-data拷贝至合适的目录下如:D:\soft\CTB

  3. 配置环境变量:

使用CTB生成.terrain文件


注意:执行前请确保输出文件夹存在且是空的,同时保证磁盘有足够的空间,全球数据大约800G。生成瓦片的等级不要太高,中国范围内单18级就需要大约700G。

打开cmd控制台,输入指令如:

ctb-tile -o D:\terrain\china\terrain -s 14 -e 0 -r nearest -c 4 C:\Users\Administrator\Documents\ArcGIS\dem_result\noData\new.tif

这个过程更加费时间,需要等待很久,直到执行结束。

发布并使用Cesium调用生成的文件拷贝到Tomcat服务器下。
拷贝“覆盖至生成tiles结果”目录中的layer.json文件和0文件夹至生成结果目录下:
调用代码:

 var terrainLayer = new Cesium.CesiumTerrainProvider({         
     url: "http://localhost:8080/terrain", // 默认立体地表   
  });
 scene.terrainProvider = terrainLayer;

发表回复