后记:如果你只是需要将tif处理成terrain,而不是学习处理过程,可以直接使用这个简单的工具:CesiumLab。不需要拼接成一个TIF,也不需要处理No-Data,地形功能免费。如果对你有用,点个赞加个关注吧๑乛◡乛๑

背景:项目前端使用Cesium,地形服务一直使用外网的,常常因为翻墙访问的问题,导致地形数据取不到,进而导致地球不能加载,故决定搭建自己的地形服务,彻底解决这个问题。博文包含以下几个过程:

  1. 下载原始地形数据,格式为.tif。
  2. 处理地形数据,将零散的地形文件整合成一个地形文件。
  3. 配置CTB环境
  4. 使用ctb-tile指令将地形文件(.tif)加工成.terrain文件。
  5. 发布地形服务并使用Cesium调用。

一、下载原始地形数据

  • 下载地址(精度90m):
    http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp
  • 如果你刚好需要的也是全国地形,可以从楼主网盘下载,更快更方便(密码zyt9):https://pan.baidu.com/s/1YYC25b48QAVb64mW77vCEw

网盘包含两部分内容:

  • dem.rar:原始数据,需要自行使用ArcMap工具整合。
  • 合并后的数据:经过ArcMap工具处理的数据,已经整合成了一个地形文件,可以直接跳到第三步。

在网站下载流程:

  1. 打开网页http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp。如图:
  2. 根据需要选择方便的选取方式:

    MutilpleSelection:点击哪个选哪个,可以选择多个,双击取消。
    EnableMouseDrag:框选,框选了什么范围就是什么范围。
    InputCoordinates:输入最西,最东。最南,最北的坐标来下载该范围内的所有数据。
  3. 选择好范围后,点击“Click here to Begin Search”,进入下一步。
  4. 可以看到刚刚选择了几个数据,点击每个数据的DownLoad,下载数据(这个地方比较繁琐,需要耐心)。
  5. 下载完数据后解压所有的压缩包,并将tifwen文件拷贝到统一的文件夹内,这里的内容和我网盘中的dem.rar是一样的:

二、处理地形数据

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

  • 多个tif必须县合并镶嵌成一张tif
  • pixeltype从float转为int
  • NoData值处理为0

我使用的是ArcGis10.5,打开ArcMap:

打开 ArcToolbox->Data Management Tools->Raster->Raster Dataset ->Mosaic。

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

成功后,处理NoData值,ArcToolbox->spatial Analyst Tool->Map Algebra->Raster Calculator 处理公式为:

Con(IsNull("xxxx.tif"),0,"xxxx.tif")//xxxx.tif对应你的合并后的文件

三、配置CTB环境

  1. 下载CTB工具包:资源 (没有积分的可以加我QQ)
  2. 将ctb和gdal-data拷贝至合适的目录下如:D:\soft\CTB
  3. 配置环境变量:                                                             

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

这个过程更加费时间,需要等待很久,直到执行结束。

五、发布并使用Cesium调用

  1. 将生成的文件拷贝到Tomcat服务器下。
  2. 拷贝“覆盖至生成tiles结果”目录中的layer.json文件和0文件夹至生成结果目录下:
  3. 调用代码:
     var terrainLayer = new Cesium.CesiumTerrainProvider({url: "http://localhost:8080/terrain", // 默认立体地表});scene.terrainProvider = terrainLayer;

    至此,地形发布完成。如有错误之处欢迎指正。

Cesium 生成terrain地形数据----CTB方式及步骤相关推荐

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

    本来题目名字叫做(大龄无经验程序员终成正果----纪念上班第三天),后加之后再,不行,必须把这篇博文发出去了.本篇用cesium-terrain-builder生成cesium可以使用的地形数据并用c ...

  2. 导入地形数据到pointwise中生成网格

    1. 先生成dem地形数据 2. 使用脚本导入到pointwise中,将dem转化为plot3d格式 3. 在pointwise中划分网格,生成较好的贴体网格 4. 输出到求解器计算

  3. u3d使用tiff或者bat或者tif使用高程图生成真实地形

    ** 数据生成真实地形文档 ** 使用高程图数据在unity3d中实时生成真是地形,常见的方式主要分为以下几种 1:–通过unity3d插件-WorldComposer 1,首先需要在 https:/ ...

  4. Cesium-terrain-builder(CTB)在Centos7中安装并生成地形数据

    Cesium-terrain-builder(CTB)在Centos7中安装并生成地形数据 前言 步骤 安装docker 下载镜像并创建容器 生成地形数据 总结 前言 1.使用docker镜像(hom ...

  5. Cesium开发基础笔记总结(加载影像、加载地形数据、加载矢量)

    Cesium开发基础笔记总结 学习总结于GIS李胜老师博客 Cesium开发基础01加载影像数据 加载影像数据 Cesium中的影像图层类: 无论是二维地图还是三维地图,如果缺少了底图影像或电子地图, ...

  6. Cesium开发基础篇 | 02加载地形数据

    Cesium中的地形图层类 前面我们主要学习了cesium内置接口如何操作影像数据,但是在一些应用场景中我们需要操作地形数据,例如模拟逼真的三维场景.与高程相关的一些空间分析和计算等.Cesium提供 ...

  7. GIS原理篇 terrain 基于TIN的表面数据(地形数据)

    一.什么是terrain Terrain 数据集是一种多分辨率的基于 TIN 的表面数据结构,它是基于作为要素存储在地理数据库中的测量值构建而成的.通常,terrain 数据集利用激光雷达.声纳和摄影 ...

  8. cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程

    问题描述 有一小块带高程值的点状数据,需要根据该数据生成Cesium支持的3dtiles数据,在Cesium中显示.经过一周多时间的摸索,终于能够在Cesium中加载成功.现将数据处理流程做个记录,以 ...

  9. Cesium中地形数据的加载

    在cesium中为了看到更真实的世界,加载地形数据是必不可少的. 有地形数据和没有地形数据进行比较,就会一目了然了. 说明:1.地形数据是无法单独展示的,地形数据需要结合影像图或者普通瓦片来展示才能看 ...

最新文章

  1. js 变量、函数提升
  2. iOS进阶之底层原理-cache_t
  3. 随着计算机网络的广泛应用,【网络技术论文】计算机网络技术的广泛应用探析(共3558字)...
  4. 我的Android进阶之旅------gt;解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug...
  5. 【渝粤教育】电大中专建筑力学 (4)作业 题库
  6. 整理的3500个常用汉字的调用字典
  7. python调用hive与java调用区别_python3.6.5基于kerberos认证的hive和hdfs连接调用方式
  8. dbcc 删除日志_有用的DBCC日志命令
  9. 几行代码起家到实时音视频一线,6 岁声网计划赴美上市!
  10. Android的SQLite数据库增删查改(SimpleAdapter绑定ListView)
  11. shell之sed、awk
  12. 2014年度辛星css教程夏季版第五节
  13. 隐藏与显现_惠州楼盘冷热不均价格涨跌互现 差异化调控作用显现
  14. 经济数据预测 | Python实现ELM极限学习机股票价格时间序列预测
  15. 汉字拼音首字母检索筛选数据
  16. 查看弹出广告来自哪个软件
  17. 以太坊 2.0 中的验证者经济模型,Part-2
  18. 网易云阅读页面html代码,网易云阅读网页端资讯阅读器设计总结
  19. *16.5 shared_ptr使用场景、陷阱、性能分析与使用建议
  20. 请谨慎使用预训练的深度学习模型

热门文章

  1. 安全狗安装linux64位,服务器安全狗Linux版V2.0升级更新
  2. 重磅发布 , 阿里云全链路数据湖开发治理解决方案
  3. PCIe扫盲——TLP路由之Address Routing
  4. Flutter-防京东商城项目-状态管理 多页面数据共享-23
  5. iBatis 的简单入门
  6. 关于CreateFont函数
  7. 有源rc电压放大器实验报告_有源元件和无源元件的区别
  8. mysql取消mvvc机制_MySQL之MVVC简介
  9. 51单片机下载器兼串口通信模块制作(基于CH340C芯片)
  10. 人们的烦躁症,来自于社会结构的不稳定