cesium获取模型高度_Cesium之地形制作与合并

前言

我相信使用过Cesium的小伙伴一定不会陌生CesiumLab,将DEM数据导入CesiumLab的地形切片模块工具,设置一下切片参数,喝杯咖啡,等待任务完成,然后发布服务,最后使用API调用服务,大功告成......一开始,我也是如此的成功,不就是将DEM切成Cesium指定的地形格式嘛,CesiumLab是最佳的选择(毕竟是CesiumLab团队深耕的免费工具)。但是,这只是开始,试想一下,如果我们想实现自动化切片该怎么办?毕竟CesiumLab是个桌面端程序,图形交互界面,想要直接集成CesiumLab比较困难,况且,CesiumLab并未开放命令行调用接口,需要购买源码才能拥有该权限,哎,为了一个命令行调用接口,需要上升到购买源码地步,果断,放弃集成CesiumLab。既然放弃了集成CesiumLab技术路线,花时间自己写一个,又不太实际,好在,Cesium的地形格式是开源的,截至目前为止,有Heightmap-1.0和Quantized-Mesh-1.0格式,最重要的是,已有国外的大神提供了源码级别的切片工具,在Github上可以找到(比较深藏不露),有没有很激动,又为自己省下了一大笔钱。

地形合并,一般的技术路线是先合并DEM,再切片。但有些时候,DEM的切片并不是在同一时间段发生的,也不总是一个人操作的,这样子就会面临这么一个现状:我们拥有多份切片数据(可能有些切片数据没有相应的原始数据),现在想要进行合并,如果按照之前的方式,先合并DEM,再切片,原先的DEM可能没有,而且重新切片所带来的时间消耗是令人煎熬的。因此,这个时候,直接合并切片是最佳的选择,既不用担心找不到原始的DEM,又节省时间。

我基于以上场景,各种搜集资料,并最终得以实现,与大家分享一下。如有不对的,还请大神们帮忙纠正。

地形格式介绍

掌握Cesium的地形格式是基本功,我们不能直接跳过这一步骤,并且需要阅读Cesium的官方文档,才是最准确无误的。

  • Heightmap-1.0

Heightmap-1.0是Cesium早期使用的地形切片格式,每个瓦片存储65*65个高度值,通过Cesium API进行解析、构网、渲染、查询等。优点是切片简单,存储小,缺点是精度不高等。

Heightmap-1.0官方文档​github.com
  • Quantized-Mesh-1.0

Quantized-Math-1.0是Cesium现在及未来使用的地形切片格式,会慢慢的替代Heightmap-1.0格式,因此,我们应该优先掌握该格式。

Quantized-Mesh-1.0官方文档​github.com

地形工具

仅支持Heightmap-1.0格式的CTB开源工具​github.com 支持Heightmap-1.0和Quantized-Mesh-1.0的CTB开源工具​github.com

地形工具编译

既然已经把源码的Github地址附上了,第一步,当然是下载下来啦,任意下,推荐第二个。

因为我是在Win10系统编译的,所以,我这边就基于Win10系统罗列编译的依赖与步骤:

  • 依赖
visual studio 2019​visualstudio.microsoft.com gdal-2.4.4.tar.gz​gdal.org zlib1211​zlib.net cmake-3.17.0-win64-x64.msi​github.com
  • 依赖安装与编译

1.visual studio 2019

  • 一键安装,喝杯咖啡。

2.gdal安装与编译

  • 解压,注意解压路径一定要纯英文和没有空格。
  • 修改./nmake.opt文件(最好使用vs2019打开),将57行的GDAL_HOME改成解压后的GDAL的实际路径,将191行的#WIN64=YES改为WIN64=YES(即把#去掉)。
  • 管理员运行x64 Native Tools Command Prompt for VS 2019工具,输入nmake -f makefile.vc MSVC_VER=1910 WIN64=1开始编译,喝杯咖啡,完成后,依次输入nmake -f makefile.vc install、nmake -f makefile.vc devinstall,最后,配置环境变量,将./data配置为GDAL_DATA。
  • 完成gdal的安装与编译。

3.zlib安装与编译

  • 解压,注意解压路径一定要纯英文和没有空格。
  • 使用管理员打开vs2019,然后打开./contrib/vstudio/vc14/zlibvc.sln解决方案,右键zlibvc项目,找到生成事件,把命令行的bat文件路径改成绝对路径,最后直接右键解决方案,选择生成。
  • 复制./zconf.h、./zlib.h、./contrib/vstudio/vc14/x64/ZlibDllDebug/zlibwapi.dll、./contrib/vstudio/vc14/x64/ZlibDllDebug/zlibwapi.lib到一个目录下(该目录需要自己新建)。
  • 完成zlib安装与编译。

4.cmake安装

  • 一键安装,喝杯咖啡。

CTB编译

  • 打开cmake gui,配置source code路径和build路径,勾选Advanced。
  • 配置GDAL_INCLUDE_DIR为GDAL编译后的include文件夹,GDAL_LIBRARY为GDAL编译后的.lib文件。
  • 配置ZLIB_INCLUDE_DIR是zlib动态库所在文件夹,ZLIB_LIBRARY_DEBUG , ZLIB_LIBRARY_RELEASE是zlib的.lib文件。
  • 配置完成后点击Configure,选择编译平台为MSVC2019,然后点击Generate,即可在build路径下生成MSVC2019的sln工程文件。

CTB安装与命令

  • 新建一文件夹,将上一步生成exe文件和zlib库放在该文件夹下,打开CMD命令行,输入ctb-info.exe --version,若返回ctb版本号,则说明安装成功。
  • 切瓦片(Quantized-Mesh-1.0格式):ctb-tile -f Mesh -C -o {outputDir} {demPath}
  • 生成meta文件:ctb-tile -f Mesh -C -l -o {outputDir} {demPath}
  • 可以使用ctb-tile -h命令获取帮助

CTB更改源码

由于ctb默认采用gzip压缩,因此普通的服务器如IIS和Tomcat发布地形切片后,前端解析渲染时会报错,要么就是使用cesium-terrain-server作为服务器,要么修改源码,使其默认不使用gzip压缩即可。

地形合并

由于地形切片是基于全球范围进行切片的,因此合并的时候,只需要合并相同的{z}/{x}/{y}.terrain和layer.json文件即可。

参考链接

Windows下Cesium Terrain Builder编译安装指南​www.jianshu.com
8366ae84406d1a3688cf8f46a1b4cb68.png
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值