UE5 + Cesium 离线卫星影像与地形加载
UE5 + Cesium 离线数字孪生:卫星影像与地形加载保姆级教程
摘要:本文总结了一套经过验证的标准工作流,手把手教你使用 SAS.Planet、QGIS 和 Docker 处理无字卫星影像与本地地形,并在 UE5 中完美呈现。
🛠️ 核心工具清单
- 数据下载: SAS.Planet (推荐 Nightly 版本)
- 数据处理: QGIS (用于切片影像)
- 地形处理: Docker Desktop + ctb-quantized-mesh
- 渲染引擎: Unreal Engine 5 + Cesium for Unreal 插件
第一部分:获取“纯净”的卫星影像
很多同学下载的影像带有地名、路网标注,这在数字孪生中非常“出戏”。一旦文字被“烘焙”进图片,后期无法消除。我们需要从源头解决。
1. 正确选择 SAS.Planet 图源
在 SAS.Planet 中,不要使用默认的 Hybrid(混合图)。请严格按照以下步骤操作:
- ❌ 坚决不选:
Bing Maps - Hybrid或Google - Hybrid(带字,达咩)。 - ✅ 推荐选择:
Bing Maps - Satellite或Google - Satellite。 - 🌟 专家推荐: Maps -> ESRI -> ArcGIS.Imagery
(ArcGIS 的影像色彩统一且绝对无字,非常适合做底图。)
2. 导出 GeoTIFF (Stitch 操作)
利用 SAS.Planet 的 Stitch 功能快速导出:
- 按快捷键
Ctrl + B打开 Selection Manager。 - 切换到 Stitch 选项卡,Output format 选
GeoTIFF。 - Map/Overlay layer: 重点!确认选择无字的图源(如 ArcGIS.Imagery)。
- Projection: 选择
Geographic (Latitude/Longitude) / WGS84 / EPSG:4326。 - 点击 Start 开始下载并拼接。
3. QGIS 影像切片 (XYZ Tiles)
将得到的 TIF 文件切成 Cesium 能读取的瓦片:
- 将 TIF 文件拖入 QGIS。
- 工具箱搜索运行
Generate XYZ tiles (Directory)。 - 选择输出目录,设置 Zoom levels(推荐 5-11 或更高),运行即可。
第二部分:制作 Quantized Mesh 地形切片
地形数据通常是 DEM TIF 格式。要在 Cesium 中加载,需转换为 Quantized Mesh 格式。推荐使用 Docker。
1. 运行 Docker 命令
打开 PowerShell,输入以下命令(假设 D盘 app 目录下有 export.tif):
docker run -it --rm -v D:/app:/data tumgis/ctb-quantized-mesh ctb-tile -f Mesh -l /data/map/linzhi_terrain/layer.json /data/export/export.tif
💡 命令解析:
-v D:/app:/data:将本机 D:/app 映射到容器内的 /data。-l .../layer.json:指定输出索引文件的位置。2. 关键修正:修改 layer.json
生成后,必须手动修改 layer.json 文件,否则 UE 本地加载会报 404。
- 用记事本打开生成的
layer.json。 - 找到
"tiles"字段,删除?v={version}部分。
修改前: ["{z}/{x}/{y}.terrain?v={version}"]
修改后:
"tiles": ["{z}/{x}/{y}.terrain"]
第三部分:在 Unreal Engine 中组装
1. 加载卫星影像 (Url 设置)
选中 CesiumTileMapServiceRasterOverlay 组件,修改 Url 为本地路径:
file:///D:/app/map/linzhi_satellite_clean/tilemapresource.xml
2. 加载地形 (Url 设置)
添加 CesiumTerrainWebMapTileService 组件,修改 Url 为:
file:///D:/app/map/linzhi_terrain/layer.json
⚠️ 注意: 路径必须以
file:/// 开头,并且使用正斜杠 /。希望这篇教程能帮你解决离线数字孪生的数据问题。