概览

概述是数据集的低分辨率版本,可以在不需要完全分辨率时加快渲染速度。通过预计算上采样的像素,缩小后的渲染速度会明显加快。

根据文件格式,可以在内部或外部存储概述。

在某些情况下,我们可能希望复制测试数据以避免更改原始数据。

>>> import shutil
>>> path = shutil.copy('tests/data/RGB.byte.tif', '/tmp/RGB.byte.tif')

我们必须指定要为其构建概述的缩放因子。通常这些是2的指数

>>> factors = [2, 4, 8, 16]

为了控制视图的视觉质量,可以使用“最近”、“立方”、“平均”、“模式”和“高斯”重采样算法。这些可以通过 Resampling 枚举

>>> from rasterio.enums import Resampling

创建概述需要在中打开数据集 r+ 模式,这使我们能够在适当的位置更新数据。按照惯例,我们也在 rio_overview 命名空间,以便读者可以确定使用了什么重新采样方法。

>>> import rasterio
>>> dst = rasterio.open(path, 'r+')
>>> dst.build_overviews(factors, Resampling.average)
>>> dst.update_tags(ns='rio_overview', resampling='average')
>>> dst.close()

我们可以读取更新后的数据集并确认存在概述

>>> src = rasterio.open(path, 'r')
>>> [src.overviews(i) for i in src.indexes]
[[2, 4, 8, 16], [2, 4, 8, 16], [2, 4, 8, 16]]
>>> src.tags(ns='rio_overview').get('resampling')
'average'

为了充分利用这些概述,我们可以以较低的分辨率执行大量的读取,这应该允许libgdal直接从概述中读取,而不是动态计算它们。

>>> src.read().shape
(3, 718, 791)
>>> src.read(out_shape=(3, int(src.height / 4), int(src.width / 4))).shape
(3, 179, 197)