Cesium:加载本地高程/地形数据

下载所需地区的高程DEM数据

一般在地理空间数据云上进行数据下载。地理空间数据云

选择高级检索,根据需求选择数据集,然后选择区域,进行检索后就可以进行下载。

下载数据完成后,一般是多个压缩包,将每个压缩包内的×××_dem.tif进行转换,推荐将tif格式转换为terrain格式。这里使用Cesiumlab,方便便捷而且免费。Cesium实验室下载地址

下载完成网页打开后,进行以下操作。

存储类型

  1. 紧凑 (pak)

    • 这种方式通常会将多个文件或数据压缩并打包成一个单一的文件(如 .pak 文件)。
    • 优点 :
      • 减少文件数量,便于管理。
      • 可能通过压缩减少文件体积。
      • 提高读取效率(一次性加载整个包)。
    • 缺点 :
      • 修改单个文件时需要重新打包整个文件。
      • 不方便直接查看或编辑内部内容。
  2. 散列

    • 这种方式通常是将文件分散存储,每个文件独立存在。
    • 优点 :
      • 修改单个文件时无需重新打包。
      • 更容易调试和直接访问文件内容。
    • 缺点 :
      • 文件数量多,管理起来可能较为复杂。
      • 可能占用更多的存储空间(没有压缩)。

选择依据:

  • 如果需要更高的性能和更少的文件管理复杂性,选择"紧凑 (pak)"。
  • 如果需要灵活性和方便调试,选择"散列"。

这个根据大家的需求自行选择

导出数据后目录长这样子

使用Cesium进行地形展示

方法一: 可以使用Cesium实验室自带的发布服务,加载本地DEM数据(仅限本地和同局域网访问)

生成的terrain数据在本地服务器的url地址,可以作为加载地址加载

方法二. 将生成好的terrain数据文件夹发布到服务器,使用url访问

加载代码

php 复制代码
   const terrain = new Cesium.Terrain(
    Cesium.CesiumTerrainProvider.fromUrl("http://xxxxxx/tile/terrain")
  );
  const viewer = new Cesium.Viewer("map", {
    terrain: terrain,
    selectionIndicator: false, //自带的选中框
    baseLayerPicker: false, //是否显示图层选择控件
    geocoder: false, //是否显示地名查找控件
    timeline: false, //是否显示时间线控件
    homeButton: false, //是否显示Home按钮
    sceneModePicker: false, //是否显示投影方式控件
    navigationHelpButton: false, //是否显示帮助信息控件
    infoBox: false, //是否显示点击要素后显示的信息
    animation: false, //隐藏左下角的仪表盘播放动画按钮
    fullscreenButton: false
  });

特别注意 Cesium 版本问题,我的版本是1.128.0,低版本的API不兼容

php 复制代码
let terrainProvider = new Cesium.CesiumTerrainProvider({
    url: 'http://xxxxxx/tile/terrain'
});
  const viewer = new Cesium.Viewer("map", {
    terrainProvider: terrainProvider,
    selectionIndicator: false, //自带的选中框
    baseLayerPicker: false, //是否显示图层选择控件
    geocoder: false, //是否显示地名查找控件
    timeline: false, //是否显示时间线控件
    homeButton: false, //是否显示Home按钮
    sceneModePicker: false, //是否显示投影方式控件
    navigationHelpButton: false, //是否显示帮助信息控件
    infoBox: false, //是否显示点击要素后显示的信息
    animation: false, //隐藏左下角的仪表盘播放动画按钮
    fullscreenButton: false
  });

最终效果如下

相关推荐
paopaokaka_luck1 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
栀椩1 小时前
Electron 内嵌页面跨域问题(CORS/PNA)解决全记录
前端·javascript·electron
SEO_juper2 小时前
Chrome 扩展一键查看当前页面 SEO 信息:不用切页面,点一下全出来
前端·javascript·chrome
Highcharts.js2 小时前
CSUN 2026|Highcharts无障碍数据与AI分享
javascript·人工智能·数据分析·highcharts·图表开发
系统集成-鹰翔2 小时前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
小大宇3 小时前
Vue知识点-ElementPlus-05 输入框
前端·javascript·vue.js
外贸GEO优化3 小时前
外贸独立站的可抓取性:JS 渲染、懒加载与无限滚动到底影响什么
开发语言·javascript·ecmascript
web打印社区3 小时前
Lodop在Edge和双核浏览器-先分清内核
前端·javascript·edge·pdf·ecmascript·html5
系统集成-鹰翔3 小时前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端
她说可以呀14 小时前
Vue插槽
前端·javascript·vue.js