按需生成的地形切片

2024 年初,Sogelink Research 团队开始了一个激动人心的项目:开发一项名为CTOD的开源服务,即 Cesium Terrain On Demand。该服务根据云优化 GeoTIFF (COG) 的量化网格格式按需生成 TILES。这些tiles非常适合在开源 Cesium 查看器中显示详细地形,甚至可以与 Unity 和 Unreal 的 Cesium 插件配合使用。

为什么按需生成图块会改变游戏规则?因为,我们不必用数百万个预先生成的图块(其中大多数可能永远不会面世)来填满存储空间,而是可以将 COG 文件存储在云中,例如 S3 存储中,并仅在需要时生成图块。这就像只在有人真正想吃饼干时才烤饼干一样——浪费少得多!此外,CTOD 具有高度可配置性,允许您决定图块的详细程度。它还可以消除其他工具经常遇到的那些令人讨厌的法线边缘问题。

在这篇文章中,我们将逐步介绍如何 准备数据集以供 使用。

图片

CTOD 使用网格法生成图块,显示线框

生成步骤:

  1. 从所有下载的 DTM GeoTIFF创建云优化 GeoTIFF 文件。

  2. 创建一个包含所有这些 COG 的.vrt (虚拟光栅表)。

  3. 在线上传 COG并通过 客户端 请求图块。

优化重心

如果您处理的是小型数据集,您可能无需优化云优化 GeoTIFF (COG)。但是,当您处理较大的数据集时,优化可以显著提高性能。

投影

为了确保 CTOD 正确返回图块以供在 Cesium 中查看,数据需要采用 EPSG:4326 投影。虽然 CTOD 可以动态处理任何投影中的 COG,但这可能是一个瓶颈,尤其是对于大型数据集。因此,为了保持顺畅和快速,最好在创建 COG 之前将我们的 GeoTIFF 文件重新投影到 EPSG:4326。

TILE方案

Cesium 查看器使用WorldCRS84Quad切片模式请求切片。当切片请求进入 CTOD 时,它会使用HTTP 范围请求获取 COG 的相关部分。通过在考虑 WorldCRS84Quad 切片模式的情况下创建 COG,我们可以提高性能。此设置将图像划分为切片,每个切片代表栅格数据的小块,大小固定,与用于请求地形切片的切片模式完美匹配。在本文末尾的脚本中可以找到如何执行此操作的示例。

图片

WorldCRS84Quad 平铺方案

概述

概览图本质上是原始图像的缩小版和低分辨率版本,这一过程称为降采样。通过增加网格单元的大小,可以使图像更小、细节更少。GeoTIFF 文件通常包含不同缩放级别的多个概览图。如果没有这些概览图,图块请求可能会从 COG 中提取大量数据,然后必须对其进行降采样才能适合 256x256 图块。

图片

GeoTIFF 概览

对于我们的数据集,拥有 10 个概览效果很好,因为最低概览级别恰好适合单个 256x256 图块。您可以使用该gdalinfo工具检查不同概览级别的图像大小。

网站优化

为了提高一点性能,我们可以将数据集与切片方案精确对齐。这可以通过在创建 COG 时使用--aligned-levels标志来实现。对齐级别是指 GeoTIFF 图块与切片方案中定义的图块完美匹配的概览级别数。rio-cogeo

但是,有一个问题:设置过多对齐级别可能会在数据集周围引入明显的“无数据”边界。当通过 .vrt 文件使用多个 COG 时,这尤其成问题。如果重叠太多,CTOD/GDAL 将需要从所有重叠文件中获取多个图块并合并它们,这可能会减慢速度。

下面是将对齐级别设置为 8 时可以添加多少无数据(以红色突出显示)的示例。

图片

由于重叠,对齐级别 8 导致对 COG 文件产生巨大的额外请求

使用对齐级别 2,我们可以在对齐和在数据周围添加无数据之间找到一个中间立场

图片

对齐级别 2

当然,也存在以下问题。

高度不正确

在创建了一些测试用例并通过 CTOD 请求地形后,我们注意到了一些奇怪的东西:漂浮的房屋和树木!它看起来就像是超现实科幻电影中的场景。显然,高度数据有些不对劲……

图片

是大地水准面与椭球体的问题,我们的数据最初是 平面坐标系,但需要转换为 EPSG:4326才能获得正确的基于椭球体的高度。通过这种转换,一切都恢复正常,并且高度现在看起来是正确的!

图片

Nodata 值异常

我们的 GeoTIFF 带有大量无数据值,尤其是在水体周围。这导致了一些不太理想的视觉效果,存在明显的间隙和峰值。问题源于 CTOD 自动将无数据值视为高度 0 以便能够处理数据,这会导致出现那些奇怪的伪影。显然,这不是我们想要的效果!

图片

为了解决无数据问题,我们可以填充这些空白区域。虽然可能还有更完善的解决方案,但事实证明这种蛮力方法对我们来说非常有效。有时,当有疑问时,最好大胆尝试!

图片

投影后边缘参差不齐

将 GeoTIFF 投影到不同的坐标系后,我们注意到了一些对齐问题。具体来说,图块之间有 1 像素宽的狭窄间隙。这些微小的间隙会变得非常明显,并破坏我们想要的无缝外观。

这就是 QGIS 中 Tiff 数据不显示的情况

图片

GeoTIFF 文件之间的像素宽度差距

这是渲染地形时这些间隙的样子

图片

但在无数据值的数据周围添加一个像素。地形看起来好多了!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS工具-gistools2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值