GDAL COG 怎么制作:分块压缩、概览金字塔与云端读取验证

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

GDAL COG 怎么制作:分块压缩、概览金字塔与云端读取验证

一张十几 GB 的遥感影像放到对象存储后,用户只看一个县域却仍要等待整文件下载,问题不是“云端慢”,而是影像内部组织不支持按范围读取。Cloud Optimized GeoTIFF(COG)将分块、概览和索引放在适合 HTTP Range 请求的位置。本文说明如何制作,更强调怎样验证它真的可按需读取。

GDAL COG 制作:先把问题拆成可验证的环节

GIS 工具往往能在几秒内给出一个结果,但“工具成功运行”并不等于结果可用。处理前先固定 数据版本、CRS、几何类型、字段语义和容差/尺度;处理后再核对数量、范围、面积或统计量。把这两组检查写进流程,问题才不会在交付阶段才暴露。

COG 是文件布局,不只是 TIFF 后缀

普通 GeoTIFF 即使压缩后很小,也可能把目录和概览放在不利于远程访问的位置。COG 的关键是内部瓦片、概览层和目录顺序,使客户端能先定位再读局部块。

分块大小要服务访问模式

过小的 block 增加索引和请求数量,过大则会把无关像元一并传输。浏览与 Web 地图常从 256 或 512 像素块开始试验,最终应由数据波段、压缩比和典型视窗决定。

概览影响缩小浏览的体验

没有 overviews 时,缩小到全国尺度仍可能读取原始分辨率块。概览层应覆盖常见缩放层级,重采样算法还要区分连续影像与分类栅格。

可执行实操流程

  1. 用 gdalinfo 检查原始数据的 CRS、NoData、波段类型、像元大小和是否已有概览;这些元信息在转换前后必须保持可解释。
  2. 连续型影像使用合适压缩与块大小,分类栅格避免有损压缩或错误插值;先转换一个代表性样本。
  3. 用 COG 驱动输出,并为缩小显示建立概览;将结果上传到支持 Range 请求的对象存储或 HTTP 服务。
  4. 从远程 URL 执行 gdalinfo –config GDAL_DISABLE_READDIR_ON_OPEN EMPTY_DIR,观察能否读取元数据。
  5. 分别读取小 bbox、全图缩略图和高倍率窗口,记录请求范围、耗时、文件大小与视觉质量。
gdal_translate source.tif output_cog.tif -of COG \n  -co COMPRESS=DEFLATE -co BLOCKSIZE=512 \n  -co OVERVIEWS=AUTO

项目避坑与质量检查

只在本地双击打开 COG 没有验证价值。一次项目中,文件本身符合 COG 结构,但对象存储未正确返回 Accept-Ranges,浏览器仍退化为全量下载。验收必须从远程 URL 读取,并在网络面板或服务日志确认实际 Range 请求。

检查项 合格信号 异常时优先排查
输入一致性 范围、CRS、字段含义可解释 数据源、坐标定义、空值
处理结果 数量与关键统计量符合预期 参数、分组条件、单位
空间抽检 边界与典型位置无明显异常 容差、精度、几何有效性

建议把“处理前后要比什么”写入项目 README。 这比保存一串截图更能让同事复跑,也能在数据更新时迅速判断差异究竟来自源数据还是算法。

FAQ

所有 TIFF 都适合转 COG 吗?

大多数可行,但先确认 CRS、NoData、数据类型与金字塔策略;分类栅格和科学数据尤其要防止重采样改变含义。

COG 是否一定比普通 TIFF 小?

不一定。它优先优化远程局部读取,文件大小取决于压缩、概览和数据纹理。

如何确认服务端支持 COG?

用远程 URL 做窗口读取,并检查响应是否支持字节范围请求;仅能打开文件不足以说明问题。

总结

COG 的交付标准不是“转换命令跑完”,而是目标环境能按视窗、按层级读取所需像元。真正可靠的 GIS 成果不是某一次按钮点击后的图层,而是一套知道输入边界、参数理由和复核证据的可复现流程。