栅格计算
栅格计算器用于对一个或多个栅格进行像元级(逐像元)计算。你可以用表达式对输入栅格像元值执行数学、比较、逻辑和条件运算,并输出新的栅格。
栅格引用与波段引用
- 栅格引用:直接使用输入列表中的文件引用名称(通常为文件名)
- 波段引用:
栅格名.bandN(N从 1 开始);单波段栅格a与a.band1等价
示例:
nd = 空飞-多波段栅格-100m.tif.band4 - 空飞-多波段栅格-100m.tif.band2
单语句与代码块
- 单语句:必须为
输出变量 = 表达式 - 代码块:允许多行,至少一行是赋值;若有多条赋值,以最后一条作为输出
class1 = dem.tif <= 1610
class2 = dem.tif <= 2415
class3 = dem.tif <= 3468
result = where(class1, 1, where(class2, 2, where(class3, 3, 4)))
逻辑与条件
- 不支持 Python 原生
and / or / not(它们不能对数组逐像元计算) - 请使用逐像元逻辑:
&|~,并用括号明确优先级 - 条件赋值请使用
where(条件, 值1, 值2)(不要用 Python 的if)
mask = (a.tif > 0) & (a.tif < 10)
result = where(mask, a.tif, 0)
NoData 与空间对齐
- 任一操作数为 NoData,则结果为 NoData
- 若输入栅格在 CRS、分辨率、网格对齐或范围上不一致,会自动重投影/重采样到同一网格
- 对齐基准为“输入列表中的第一个栅格”