背景:项目前端使用Cesium,地形服务一直使用外网的,经常由于FQ访问的问题,致使地形数据取不到,进而致使地球不能加载,故决定搭建本身的地形服务,完全解决这个问题。博文包含如下几个过程:前端
下载原始地形数据,格式为.tif。
处理地形数据,将零散的地形文件整合成一个地形文件。
配置CTB环境
使用ctb-tile指令将地形文件(.tif)加工成.terrain文件。
发布地形服务并使用Cesium调用。json
1、下载原始地形数据服务器
下载地址(精度90m):
http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp
若是你恰好须要的也是全国地形,能够从楼主网盘下载,更快更方便(密码zyt9):https://pan.baidu.com/s/1YYC25b48QAVb64mW77vCEw
网盘包含两部份内容:工具
dem.rar:原始数据,须要自行使用ArcMap工具整合。
合并后的数据:通过ArcMap工具处理的数据,已经整合成了一个地形文件,能够直接跳到第三步。
在网站下载流程:
一、打开网页http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp。如图:网站
二、根据须要选择方便的选取方式:spa
MutilpleSelection:点击哪一个选哪一个,能够选择多个,双击取消。
EnableMouseDrag:框选,框选了什么范围就是什么范围。
InputCoordinates:输入最西,最东。最南,最北的坐标来下载该范围内的全部数据。.net
三、选择好范围后,点击“Click here to Begin Search”,进入下一步。3d
四、能够看到刚刚选择了几个数据,点击每一个数据的DownLoad,下载数据(这个地方比较繁琐,须要耐心)。rest
五、下载完数据后解压全部的压缩包,并将tifwen文件拷贝到统一的文件夹内,这里的内容和我网盘中的dem.rar是同样的code
2、处理地形数据
因为CTB工具不支持DEM为NoData值和float的数据,因此须要对数据进行处理。
我使用的是ArcGis10.5,打开ArcMap:
这个处理过程好久,能够在Result面板里查看转换过程。成功后,处理NoData值,处理公式为:
Con(IsNull("xxxx.tif"),0,"xxxx.tif")//xxxx.tif对应你的合并后的文件
3、配置CTB环境
4、使用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
这个过程更加费时间,须要等待好久,直到执行结束。
5、发布并使用Cesium调用