需要 Spatial Analyst 许可。
获得 Image Analyst 许可后可用。
焦点统计工具可执行用于计算输出栅格数据的邻域运算,各输出像元的值是该位置指定邻域范围内所有输入像元值的函数。 运算该函数可得出统计数据,例如最大值、平均值或者邻域内所有值的总和。
邻域处理
从概念上讲,算法在执行时会访问输入栅格中的每个像元,并计算落在其周围指定邻域形状内的像元的统计数据。 正在为其计算统计数据的像元称为处理像元。 处理像元的值通常包含在邻域统计计算中,但根据邻域的形状,它可能不包含在其中。 由于邻域将在扫描过程中重叠,因此一个处理像元的计算中包含的输入像元也可能用于另一个处理像元的计算。
有多种预定义的邻域形状可供选择。 您还可以创建自定义形状。 可以在邻域中计算得出的可用统计数据包括众数、最大值、平均值、中值、最小值、少数、百分比数、范围、标准差、总和及变异度。
NoData 像元
在计算中忽略 NoData 选项可控制邻域窗口内 NoData 像元的处理方式。 选中此选项时(DATA 选项),输出像元值的计算将会忽略邻域中的所有 NoData 像元。 取消选中此选项时(NODATA 选项),如果邻域中存在任何 NoData 像元,则输出像元将为 NoData。
如果待处理的像元本身是 NoData,则在选中在计算中忽略 NoData 选项后,将根据邻域中有效的其他像元来计算像元的输出值。 如果邻域中的所有像元均为 NoData,则输出将为 NoData。
示例
通过下图中值为 5 的处理像元演示焦点统计计算总和统计值的邻域处理过程。 可以指定矩形 3 像元 x 3 像元邻域的形状,并将在计算中忽略 NoData 参数保留为默认选中设置。 相邻像元值的总和 (3 + 2 + 3 + 4 + 2 +1 + 4 = 19) 加上处理像元 (5) 的值等于 24 (19 + 5 = 24)。 与输入栅格中处理像元位置相同的输出栅格中的像元的值设为 24。
以上逻辑示意图演示了如何在输入栅格中的单个像元上执行计算。 在以下逻辑示意图中,显示了所有输入像元的结果。 以黄色突出显示的像元用于标识与上述示例相同的处理像元和邻域。
角和边缘像元
当处理像元靠近输入栅格的角和边时,邻域中包含的像元数会相应调整。 也对统计量的计算进行了调整。
下图演示了如何根据各单个邻域中的可用像元为每个处理像元计算输出统计数据。 该过程从输入栅格的左上角开始,从左到右进行逐行扫描。 本示例中使用的邻域是 3 像元 x 3 像元矩形,使用的统计数据为总和。 将在计算中忽略 NoData 参数保留为默认选中设置。 在逻辑示意图中,邻域使用黄色轮廓线标出,处理像元使用青色轮廓线标出。
对于第一个处理像元,由于它位于输入栅格 6 像元 x 6 像元栅格的左上角,因此在邻域中只有四个像元可用。 如果将这些值加在一起,第一个像元的输出值将被指定为 11。 对于右侧的下一个像元,邻域中现在有六个像元,并将计算这些像元的总和。 将对第一行中的所有像元进行扫描。 为了节省空间,未显示所有处理像元。
请注意,在第一行中,左数第三个处理像元(值 = 1)的一个输入像元的值为 NoData。 由于该工具设置为忽略 NoData,因此在计算中将忽略此特定像元。 如果要计算的统计数据已设置为“平均值”而不是“总和”,则将计算邻域中所有非 NoData 像元的总和,然后除以 5。
对于第二行输入像元,第一个处理像元的统计数据将根据邻域中具有六个可用像元来计算。 对于下一个处理像元,计算中将考虑九个像元。 对于后续像元,将使用八个输入值进行计算,因为 3 x 3 邻域中的像元之一是 NoData。 继续对行中的其余像元执行此过程,然后继续对后续行执行此过程,直到完成对所有处理像元的分析为止。
邻域类型
邻域可以是环形(圆环)、圆形、矩形或楔形。 通过使用核文件,也可自定义邻域形状,以及在计算统计数据之前将不同的权重分配给邻域中的各个特定像元。
以下是不同邻域形状的描述及其定义方法:
- 环形
- 环由两个圆组成,一个圆位于另一个圆的内侧,从而构成圆环。 邻域处理中将包括中心位于较小圆半径和较大圆半径之间的像元。 因此,处于两个圆形之间的区域构成环形邻域。
- 半径以像元或地图单位为单位,并沿垂直于 x 轴或 y 轴的方向进行测量。 当半径以地图单位指定时,其将转换为以像元为单位的半径。 所得的以像元为单位的半径会生成一个区域,该区域能够近似地表示出以原始的地图单位为半径时计算的区域。 在邻域处理中将包含环涵盖的所有像元中心。
- 默认环形邻域具有一个像元的内半径以及三个像元的外半径。
- 以下为环形邻域的示例图:
- 圆形
- 通过指定半径值来创建圆形邻域。
- 半径以像元或地图单位为单位,并沿垂直于 x 轴或 y 轴的方向进行测量。 当半径按地图单位指定时,会使用附加逻辑条件来确定在处理邻域时要包含的像元。 首先,计算由指定半径值定义的圆的精确面积。 然后,再计算出另外两个圆面积值,一个是指定半径值向下舍入后的圆面积,另一个是指定半径值向上舍入后的圆面积。 这两个面积分别与用指定半径计算出的准确面积值进行比较,更为接近准确面积值的半径将被用于运算过程中。
- 默认圆形邻域半径为三个像元。
- 以下为圆形邻域的示例图:
- 矩形
- 通过提供以像元或地图单元为单位的宽度和高度值,指定矩形邻域。
- 仅将中心在定义对象内的像元作为矩形邻域的一部分进行处理。
- 默认矩形邻域为高和宽为三个像元的正方形。
- 邻域范围内待处理像元相对于邻域左上角的 x,y 位置可通过以下方程式来确定:
x =(邻域宽度 + 1)/2 y =(邻域高度 + 1)/2
如果输入像元数为偶数,则使用截断来计算 x,y 坐标。 例如,在 5 X 5 的像元邻域中,x 和 y 值为 3,3。 而在 4 X 4 的邻域中,x 和 y 值则为 2,2。
- 以下是两个矩形邻域的示例图示:
- 楔形
- 楔形是由半径、起始角度和终止角度指定的饼形邻域。
- 楔形按逆时针方向从起始角延伸到终止角。 角度以 0 到 360 的算术角度指定,其中 0 位于正 x 轴(3 点钟方向),并且可以是整数或浮点数。 也可使用负角度。
- 半径以像元或地图单位为单位,并沿垂直于 x 轴或 y 轴的方向进行测量。 当半径以地图单位指定时,其将转换为以像元为单位的半径。 所得的以像元为单位的半径会生成一个区域,该区域能够近似地表示出使用原始的地图单位为半径时计算的区域。 在邻域处理中将包含楔形涵盖的所有像元中心。
- 默认楔形邻域起始角度为 0 度,终止角度为 90 度,半径为三个像元。
- 以下为楔形邻域的示例图:
- 不规则
- 允许您指定待处理像元周围形状不规则的邻域。
- 不规则核文件可指定应包含在邻域范围内的各像元位置。
- 邻域范围内待处理像元相对于邻域左上角的 x,y 位置可通过以下方程式来确定:
x =(宽度 + 1)/2 y =(高度 + 1)/2
如果输入像元数为偶数,则使用截断来计算 x 和 y 坐标。
- 对于不规则邻域的核文件:
- 不规则的核文件是一种 ASCII 文本文件,用于定义不规则邻域的值和形状。 可以使用任何文本编辑器来创建此文件。
- 第一行用于指定邻域的宽度和高度(x 方向的像元数,后跟一个空格,y 方向的像元数)。
- 随后几行给出了邻域中各个位置的值。 这些值使用与其所表示的邻域中显示的相同配置进行输入。 各值之间需要添加一个空格。
- 核文件中的值非 0(零)即 1(一)。 任何不等于 0 的值均将视为 1。
- 某像元位置的值为 0(非空格)表示该像元不属于该邻域从而无法用于邻域处理。 而值为 1 则表示该值对应的像元(和像元值)属于该邻域。
- ASCII 不规则核文件及其所表示的邻域的示例如下:
- 权重
- 与不规则邻域类型相似,权重邻域用于定义像元周围的不规则形状邻域,还可以指定各输入值的权重。
- 权重核文件可指定应包含在邻域范围内的各像元位置及其权重。
- 权重邻域仅适用于平均值、标准差和总和统计类型。
- 邻域范围内待处理像元相对于邻域左上角的 x,y 位置可通过以下方程式来确定:
x =(宽度 + 1)/2 y =(高度 + 1)/2
如果输入像元数为偶数,则使用截断来计算 x 和 y 坐标。
- 对于加权邻域的核文件:
- 加权核文件是一种 ASCII 文本文件,用于定义加权邻域的值和形状。 可以使用任何文本编辑器来创建此文件。
- 第一行用于指定邻域的宽度和高度(x 方向的像元数,后跟一个空格,y 方向的像元数)。
- 随后几行给出了邻域中各个位置的加权值。 这些值使用与其所表示的邻域中显示的相同配置进行输入。 正值、负值和小数值均可用作权重。 各值之间需要添加一个空格。
- 对于邻域中不参与计算的位置,在核文件中的相应位置使用值 0。
- ASCII 加权核文件及其所表示的邻域的示例如下:
统计类型
可用的统计数据包括众数、最大值、平均值、中值、最小值、少数、百分比数、范围、标准差和总和。 默认统计类型为平均值。
某些统计类型仅在输入栅格为整型时可用。
- 众数
- 仅可将整型栅格用作输入。
- 应首先确定邻域中每个唯一像元值的频率。 如果存在一个频率最高的值(最常见),则该值将作为该像元的输出返回。 但是,如果存在两个或两个以上频率最高的输入值,则可能出现平局。 在这种情况下,待处理像元位置将在输出栅格中收到 NoData。
- 最大值
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 平均值
- 输入可以是整型或浮点型栅格。
- 输出栅格值始终为浮点型。
- 平均值统计数据适用于权重邻域类型。
- 中值
- 输入可以是整型或浮点型栅格。
- 输出栅格值始终为浮点型。
- 如果邻域中有效像元值数量为奇数,则将排列这些值然后选择位于中间的值得到中值。 如果邻域中的值为偶数,则先排序值,然后取中间两个值的平均值。
- 最小值
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 少数
- 仅可将整型栅格用作输入。
- 应首先确定邻域中每个唯一像元值的频率。 如果存在一个频率最低的值(最不常见),则该值将作为该像元的输出返回。 但是,如果存在两个或两个以上拥有最低频率的输入值,则可能出现平局。 在这种情况下,待处理像元位置将在输出栅格中收到 NoData。
- 百分比数
- 输入可以是整型或浮点型栅格。
- 输出栅格值始终为浮点型。
- 百分比统计的结果基于以下公式计算 (Hyndman 与 Fan 合著,1996):
pk = (k-1)/(n-1)
- 范围
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 通过应用以下公式可逐个像元地确定输出栅格中各个像元位置上的值:
焦点范围 = 焦点最大值 – 焦点最小值。
- 标准差
- 输出栅格值始终为浮点型。
- 标准差统计数据适用于权重邻域类型。
- 请注意标准差是在整个总体(N 方法)上计算求得,而不是在样本(N-1 方法)上进行估算。
- 总和
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 变异度
- 仅可将整型栅格用作输入。
参考资料
- Hyndman, R.J. 与 Fan, Y. 合著(1996 年 11 月) "Sample Quantiles in Statistical Packages", The American Statistician 50 (4): pp. 361-365.