Cesium 生成terrain地形数据----CTB方式及步骤

后记:如果你只是需要将tif处理成terrain,而不是学习处理过程,可以直接使用这个简单的工具:CesiumLab。不需要拼接成一个TIF,也不需要处理No-Data,地形功能免费。

背景:项目前端使用Cesium,地形服务一直使用外网的,常常因为访问的问题,导致地形数据取不到,进而导致地球不能加载,故决定搭建自己的地形服务,彻底解决这个问题。博文包含以下几个过程:

目录

一、下载原始地形数据

1.先找到中国

2.接着找到地图上显示的潮州或者潮州旁边的城市所在的块,由于潮州比较小,地图上只看到汕头

3.确认潮州市处于该块中

4.点击搜索search

5.进入下载页面,点击下载

二、处理地形数据

1.打开ArcMap

2.镶嵌

3.处理NoData值

三、配置CTB环境

四、使用CTB生成.terrain文件:

五、发布并使用Cesium调用

一、下载原始地形数据

下载地址(精度90m): http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp

将地图指向包含需要下载地形数据的城市所属的块,比如潮州

1.先找到中国

 

Cesium 生成terrain地形数据----CTB方式及步骤_第1张图片2.接着找到地图上显示的潮州或者潮州旁边的城市所在的块,由于潮州比较小,地图上只看到汕头

Cesium 生成terrain地形数据----CTB方式及步骤_第2张图片

 

3.确认潮州市处于该块中

Cesium 生成terrain地形数据----CTB方式及步骤_第3张图片

4.点击搜索search

Cesium 生成terrain地形数据----CTB方式及步骤_第4张图片

 

5.进入下载页面,点击下载

 

Cesium 生成terrain地形数据----CTB方式及步骤_第5张图片完数据后解压所有的压缩包,得到:

Cesium 生成terrain地形数据----CTB方式及步骤_第6张图片

 

二、处理地形数据

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

多个tif必须县合并镶嵌成一张tif pixeltype从float转为int NoData值处理为0 我使用的是ArcGis10.2,arcgis10.2中文破解版

1.打开ArcMap

Cesium 生成terrain地形数据----CTB方式及步骤_第7张图片

 

2.镶嵌

打开 地图处理->ArcToolbox->数据管理工具(Data Management Tools)->栅格(Raster)->栅格数据集(Raster Dataset) ->镶嵌(Mosaic)。

Cesium 生成terrain地形数据----CTB方式及步骤_第8张图片

Cesium 生成terrain地形数据----CTB方式及步骤_第9张图片

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

 

 

3.处理NoData值

地图处理->ArcToolbox->spatial Analyst Tool->地图代数(Map Algebra)->栅格计算器(Raster Calculator)

Cesium 生成terrain地形数据----CTB方式及步骤_第10张图片

 

如果打开后显示

Cesium 生成terrain地形数据----CTB方式及步骤_第11张图片

 

则在 自定义->扩展模块->把Spatial Analyst 和 3D Analyst 都勾上。

Cesium 生成terrain地形数据----CTB方式及步骤_第12张图片

 

输入处理公式为:

Con(IsNull("srtm_60_08.tif"),0,"srtm_60_08.tif")//srtm_60_08.tif对应你的文件

Cesium 生成terrain地形数据----CTB方式及步骤_第13张图片

 

三、配置CTB环境

下载CTB工具包:资源

将ctb和gdal-data拷贝至合适的目录下, 比如:D:\wizard\resource\chaozhou\geojson\CTB 配置环境变量:

PATH:

Cesium 生成terrain地形数据----CTB方式及步骤_第14张图片

 

系统变量:

Cesium 生成terrain地形数据----CTB方式及步骤_第15张图片

四、使用CTB生成.terrain文件:

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

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

ctb-tile -o D:\wizard\resource\chaozhou\geojson\terrain -s 14 -e 0 -r nearest -c 4 C:\Users\DELL\Desktop\result.tif

注:result.tif 第二步是最后生成的tif文件

Cesium 生成terrain地形数据----CTB方式及步骤_第16张图片

 

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

生成文件如下:

 Cesium 生成terrain地形数据----CTB方式及步骤_第17张图片

五、发布并使用Cesium调用

将生成的文件拷贝到Tomcat服务器下。 拷贝“覆盖至生成tiles结果”目录中的layer.json文件和0文件夹至生成结果目录下: 调用代码: var terrainLayer = new Cesium.CesiumTerrainProvider({ url: "http://localhost:8080/terrain", // 默认立体地表 }); scene.terrainProvider = terrainLayer; 至此,地形发布完成。如有错误之处欢迎指正。

你可能感兴趣的:(cesium)