在cesium中使用3D地形数据terrain builder的打开步骤

本文介绍了如何在Ubuntu环境下,利用cesium-terrain-builder生成cesium可读的地形数据,并通过cesium-terrain-server进行发布。详细步骤包括:下载所需工具,预处理DEM数据,编译cesium-terrain-builder,生成tilesets和layer.json,安装并运行cesium-terrain-server。最后提到了cesium在前端的部署以及遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来题目名字叫做(大龄无经验程序员终成正果----纪念上班第三天),后加之后再,不行,必须把这篇博文发出去了。本篇用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的那个文件夹前的文件夹,如图所示,测试成功!(cesium-terrain-server -dir 你的路径)
layer.json文件测试
最后就是前端部署了,把cesium.js解压缩后,其build文件夹放在你的项目根目录上,head里添加js和css引用。直接上代码

<!DOCTYPE html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值