GDAL VRT 怎么用:虚拟栅格拼接、按需读取与批处理入口

软件与工具
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

问题场景

手里有几十景甚至上百景栅格,很多人第一反应是先全部拼成一个大 TIFF 再处理。这样做往往既慢又占空间。GDAL 的 VRT 提供了另一条思路:先创建一个虚拟栅格描述文件,不复制原始像元,只建立统一视图。

对于批量裁剪、局部读取、拼接预览和大数据流程,VRT 往往是比“先生成大文件”更稳的入口。

核心原理与判断框架

VRT 本质上是一个 XML 描述文件,记录原始栅格的位置、范围、波段和拼接关系。它不是新的影像数据,而是一个“虚拟目录”。适合先组织数据再决定是否落地生成实体文件。

场景 VRT 是否适合 原因
多景影像统一查看 适合 无需复制原数据
大规模裁剪入口 适合 先统一视图再局部输出
最终交付单一大文件 一般 后续仍可能需要转实体栅格

实操流程

gdalbuildvrt mosaic.vrt *.tif
  1. 先用 `gdalbuildvrt` 组织多景栅格。
  2. 在 GIS 软件或 Python 中直接读取 VRT,验证拼接关系。
  3. 如果只需要局部处理,直接从 VRT 裁剪或窗口读取。
  4. 只有在最终交付或性能要求明确时,再转成实体 TIFF。

项目避坑与质量检查

VRT 依赖原始文件路径。原始栅格一旦移动或重命名,VRT 会失效。

因此在项目目录中,最好先固定原始数据组织结构,再创建 VRT。不要先建 VRT,后面再频繁挪动源数据。

FAQ

VRT 会占很多空间吗?

不会。它只是描述文件,通常很小。

VRT 能直接用于 Python 读取吗?

可以,rasterio 和 GDAL 都能读取 VRT。

VRT 能完全替代拼接后的 TIFF 吗?

不一定。预览和处理很适合,最终交付和部分软件兼容性场景仍可能需要实体文件。

总结

GDAL VRT 的价值在于先组织、后落地。对多景栅格处理来说,它经常是更轻量、更灵活的入口。