本来题目名字叫做(大龄无经验程序员终成正果----纪念上班第三天),后加之后再,不行,必须把这篇博文发出去了。本篇用cesium-terrain-builder生成cesium可以使用的地形数据并用cesium-terrain-server发布。
使用准备:
0.编译环境:linux建议是ubuntu系的,apt牛力好。Windows可以使用WSL2(妥妥的生产力工具)。
1.工具下载:cesium-terrain-builder
2.忽略这个,下文交代,工具下载:cesium-terrain-server
3.工具下载:QGIS或ArcGIS,推荐开源的QGIS,软件嘛,就得open source & copyleft。
4.cesium.js,这是官网。我们采用非node形式安装,直接把整个js包下下来。
当然你的原材料是DEM。有的可以略过此段。现在应该都不用90m的吧,30M也还行,现在有这玩意儿。12.5M高清分辨率下载,下载需注册帐号,然后左上角Dataset选ALOS PALSAR,过滤条件Filters那里文件类型File Type选Hi-Res Terrain Corrected,Polarizations选HH。如图:
然后尽情的框选吧,右侧文件包注意我们这里只需第一个,带dem的那一项,选全球的数据随你下!
预处理图片,如上所述,如果你只有一块图,就不需要合一了,在ArcGis里叫镶嵌。
然后有一步需要把无数据的替换成0。在ArcGis里是Con(IsNull("",0,""))这种公式。在QGIS里简单的直接点工具箱–>栅格工具–>填充无数据像元,填个0,瞬间解决。细节我就不过多赘述,非Giser。。
编译安装:
我们的重头戏在这一段,github真是全人类的代码宝库。cesium-terrain-builder使用C++编写,下完以后,解压缩进入根目录,ubuntu系需要安装cmake,g++,libgdal-dev,(sudo apt install -y …)然后执行mkdir build && cd build && sudo cmake … && sudo make install。不出意外你应该成功了,ctb-tile在./tools下。这里有一点需要注意,使用前需要sudo ldconfig。
运行:
生成文件的存放路径,这里应该是可以自定义的,但为了避免404,建议如下mkdir。
文件在/data/tilesets/terrain/xx下,用的时候指向/data/tilesets/terrain即可。
使用地形生成工具:
-o 生成文件的存放路径
-s 放大级数最大值,值越大,电脑计算时间越久,文件占用空间越大。
-e 放大级数最小值
-r 光栅重采样算法指定,这里是nearest( nearest; bilinear; cubic; cubicspline; lanczos; average; mode; max; min; med; q1; q3. Defaults to average.)
我的是:sudo ctb-tile -o /data/tilesets/terrain/yc -s 15 -e 0 -r nearest ~/下载/AP_05347_FBS_F0600_RT1.dem.tif
会显示:0…10…20…30…40…50…60…70…80…90…100 - done.
这里还需生成layer.json文件。cesium.js需要这个文件来描述地形文件信息。ctb-tile -l 图片路径即可,然后把这个layer.json移动mv到你的生成文件的文件夹中。
使用:
接下来就是把这些cesium可以识别的文件用cesium-terrain-server发布以供cesium在浏览器中使用。cesium-terrain-server是用go语言写的,所以要安装go语言(sudo apt install golang -y)。安装地形服务很简单,一句话:go get github.com/geo-data/cesium-terrain-server/cmd/cesium-terrain-server
因为我也没学go语言,下下来肯定有用,如果大家网络不好肯定这里很麻烦,望大神指教下下下来怎么安装。
后面应该在~/go/bin下,如果你没有部署GO_ROOT等环境变量的话。使用时只需指定-dir参数,指向之前-o的那个文件夹前的文件夹,如图所示&