跳到主要内容

栅格数据的波段及其操作

什么是波段(Band)

在栅格数据中,**波段(Band)**是指在同一空间网格结构下的一组像元数值集合。每个波段都共享相同的空间参考、范围、分辨率和行列结构,但存储的数值含义可以不同。

  • 单波段栅格:每个像元仅包含一个数值
  • 多波段栅格:每个像元在同一位置上包含多个数值,分别存储在不同波段中

波段是栅格数据表达多维信息的基本单位,常用于表示不同时间、不同变量或不同光谱信息。

栅格数据中的波段存储方式

从数据结构上看,多波段栅格可以理解为:

一张空间网格 + 多个按波段顺序排列的二维数值矩阵

  • 所有波段使用完全一致的空间几何结构
  • 波段之间仅在数值语义上存在差异
  • 波段通常以 Band 1、Band 2、Band 3 … 的顺序编号存储

在遥感影像中,不同波段可表示不同光谱通道;在分析结果中,不同波段也可用于存储多个计算结果或派生指标。

为什么需要波段操作

在实际的数据处理和分析过程中,并非所有波段都始终有用,且不同应用对波段组合的需求也不相同。因此,需要提供对波段的管理与操作能力。

常见需求包括:

  • 添加波段 将新的计算结果、派生指标或中间结果写入同一栅格文件中,便于统一管理和后续分析。
  • 删除波段 移除不再需要或冗余的波段,以减少数据体量、提高处理效率。
  • 提取波段 从多波段栅格中提取指定波段,生成单波段或新的多波段栅格,用于特定分析或建模任务。
  • 重组波段顺序 按照分析或显示需求调整波段排列顺序,确保工具或渲染逻辑正确使用对应波段。

波段操作的意义

波段操作并不改变栅格的空间位置或分辨率,其核心作用在于管理栅格数据中承载的数值信息结构。 通过合理的波段添加、删除和提取,可以:

  • 提高数据组织的清晰度
  • 降低不必要的存储与计算开销
  • 支持更灵活的分析与建模流程

波段计算、引用与Numpy

在进行栅格计算或分析时,栅格数据通常会被映射为 NumPy 数组参与运算。此时,波段本质上对应的是 NumPy 数组的一个维度

单波段栅格

单波段栅格在 NumPy 中通常表示为一个二维数组:

(rows, cols)
  • 每个数组元素对应一个像元值
  • 数组的行列结构与栅格的行列完全一致

示意:

array[row, col]  # 单个像元值

多波段栅格

多波段栅格在 NumPy 中通常表示为一个三维数组,其中一个维度用于表示波段:

(bands, rows, cols)

这是 GIS 与遥感处理中最常见、最清晰的波段映射方式

  • 第 1 维:波段索引
  • 第 2 维:行(Row)
  • 第 3 维:列(Column)

在进行栅格计算时,有些计算仅支持对栅格数据的某一波段进行计算,不支持对栅格数据的多波段数据进行整体计算,因此需要再计算时引用栅格数据的某一波段。


波段索引与波段引用

在栅格计算器中,表达式里的“变量”可以指向某个输入栅格或其指定波段。

  1. 引用范围
  • 栅格引用仅在当前一次工具运行中有效
  • 名称区分大小写
  1. 栅格引用(Raster Name)
  • 直接使用输入列表中的“文件引用名称”(通常就是文件名)来引用栅格

示例(以文件名作为引用):

result = T50SKH_B02_100m.tif + T50SKH_B03_100m.tif
  1. 波段引用(RasterName.bandN
  • 多波段栅格可用 栅格名.bandN 引用指定波段,N 从 1 开始
  • 单波段栅格中,aa.band1 等价

示例:

nd = 空飞-多波段栅格-100m.tif.band4 - 空飞-多波段栅格-100m.tif.band2