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.先找到中国

 

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

 

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

4.点击搜索search

 

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

 

完数据后解压所有的压缩包,得到:

 

二、处理地形数据

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

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

1.打开ArcMap

 

2.镶嵌

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

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

 

 

3.处理NoData值

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

 

如果打开后显示

 

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

 

输入处理公式为:

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

 

三、配置CTB环境

下载CTB工具包:资源

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

PATH:

 

系统变量:

四、使用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调用

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值