建立遥感影像金字塔

对于大的遥感影像文件,在QGIS或ArcGIS中,都可以通过建金字塔的方式,提供其加载速度。通常情况,将遥感影像加载到ArcGIS中,软件会提示是否构建金字塔,同意构建金字塔后,影像的对应文件夹下会生成一个ovr类型的影像金字塔文件,提高影像加载速度。

什么是遥感影像金字塔文件呢?如何通过代码建立金字塔文件呢?

金字塔压缩类型

什么是影像金字塔

在GDAL中,金字塔(Pyramids)是一种用于栅格数据的方法,它通过创建原始影像数据的缩略图来加快显示和分析速度。每个金字塔层级都是原始影像的一个较小版本,具有更少的像素和较低的分辨率。

金字塔的主要用途包括:

  1. 快速浏览:在查看大尺寸影像时,金字塔允许用户快速浏览而不需要加载整个高分辨率影像。
  2. 地理空间分析:在进行某些地理空间分析时,可能不需要最高分辨率的数据,金字塔可以提供足够用的数据而减少计算量。
  3. 改善性能:使用金字塔可以改善地图渲染和地理信息系统(GIS)软件的性能。

对于未经压缩的栅格数据,.ovr 文件大小约为原始栅格数据集大小的 8%。

实现

可以用GDAL中的gdaladdo方法,内建金字塔,或者建外部金字塔。

Tiled Elevation Service | ArcGIS Developer

内建金字塔

gdaladdo -r average image.tif 2 4 8 16

这个方法会改变源文件,会增大源文件的大小。

img

2 4 8 16是指金字塔文件每一层的缩小倍速,这个是自定义的,你可以改为你喜欢的自增的序列,如2 4 8 12 16 32 均可。

删除内建金字塔

删除内建金字塔的方法

gdaladdo image.tif -clean

建立ovr类型外部金字塔的方法

已经有内部金字塔的,不能建外部金字塔,会报错:

Cannot add external overviews when there are already internal overviews

建立建立ovr类型外部金字塔,需要在gdaladdo方法上加上-ro参数:

gdaladdo -r average image.tif -ro 2 4 8 16

Terrain-Forest-Dataset-Showing-a-Surface-Level-of-Detail-for-Different-Pyramid-Levels

建立aux类型外部金字塔的方法

在QGIS中,可以看到,外建金字塔还有另外一种方式,是aux类型,

gdaladdo -r average image.tif --config USE_RRD YES 4 8 12 14 16

python实现

构建金字塔

from osgeo import gdal
def build_pyramid(image_path):
    """
    内置金字塔
    :param image_path:
    :return:
    """
    Image = gdal.Open(image_path, 1)
    gdal.SetConfigOption("COMPRESS_OVERVIEW", "DEFLATE") # 注释此行生成外部金字塔
    
    Image.BuildOverviews("AVERAGE", [2, 4, 8, 16, 32])