焦点统计的工作原理
焦点统计工具可执行用于计算输出栅格数据的邻域运算,各输出像元的值是其指定邻域范围内所有输入像元值的函数。运算该函数可得到统计数据,例如最大值、平均值或者邻域范围内所有值的总和。
从概念上讲,此算法在执行过程中将访问栅格中的每个像元,并且根据识别出的邻域范围计算出指定的统计数据。要计算统计数据的像元称为待处理像元。待处理像元的值以及所识别出的邻域中的所有像元值都将包含在邻域统计数据的计算中。
各邻域可以重叠,因此某一邻域中的像元也可以包含在其他待处理像元的邻域中。
示例
通过下图中值为 5 的待处理像元演示焦点统计计算总和统计值的邻域处理过程。指定一个 3 X 3 的矩形邻域。邻域像元值的总和 (3 + 2 + 3 + 4 + 2 + 1 + 4 = 19) 与待处理像元的值 (5) 相加等于 24 (19 + 5 = 24)。因此输入栅格中该待处理像元位置的输出值为 24。
上图演示了如何对输入栅格中单个像元执行计算。下图将显示出所有输入像元的计算结果。以黄色高亮显示的是与上例中相同的待处理像元及其邻域。
邻域可以是环形(圆环)、圆形、矩形或楔形。邻域内可以计算的统计量有均值、众数、最大值、中值、最小值、少数、范围、标准差、总和以及变异度。
焦点统计工具可控制邻域类型和要计算的统计数据。
邻域类型
邻域可以是环形(圆环)、圆形、矩形或楔形。通过使用核文件,也可自定义邻域形状,以及在计算统计数据之前将不同的权重分配给邻域中的各个特定像元。
以下是不同邻域形状的介绍及其定义方法:
- 环形
- 环形由两个圆组成,一个圆位于另一个圆的内侧,从而构成圆环。中心落在小圆半径范围以外,但落在大圆半径范围以内的像元将包含在邻域处理范围内。因此,处于两个圆形之间的区域构成环形邻域。
- 半径用像元单位或地图单位标识并且沿着垂直于 x 轴或 y 轴的方向进行测量。采用地图单位指定半径时,会将其转换为以像元为单位的半径。所得的以像元为单位的半径会生成一个区域,该区域能够近似地表示出以原始的地图单位为半径时计算的区域。中心位于环形内的所有像元都将包括在邻域的处理范围内。
- 默认环形邻域具有一个像元的内半径以及三个像元的外半径。
- 以下为环形邻域的示例图:
- 圆形
- 圆形邻域通过指定半径值进行创建。
- 半径用像元单位或地图单位标识并且沿着垂直于 x 轴或 y 轴的方向进行测量。采用地图单位指定半径时,会采用附加逻辑条件来确定在处理邻域时要包含的像元。首先,根据指定的半径值计算出准确的圆面积。然后,再计算出另外两个圆面积值,一个是指定半径值向下舍入后的圆面积,另一个是指定半径值向上舍入后的圆面积。这两个面积分别与用指定半径计算出的准确面积值进行比较,二者中更为接近准确值的一个将被用于运算过程中。
- 默认圆形邻域的半径为三个像元。
- 以下为圆形邻域的示例图:
- 矩形
- 矩形邻域是通过提供以像元或地图单位定义的宽度和高度进行指定的。
- 仅将中心处于定义对象内的像元作为矩形邻域的一部分进行处理。
- 默认矩形邻域是高度和宽度均为三个像元的正方形。
- 邻域内待处理像元相对于邻域左上角的 x,y 位置可通过以下方程式确定:
x = (width of the neighborhood + 1)/2 y = (height of the neighborhood + 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 = (width + 1)/2 y = (height + 1)/2
如果输入像元数为偶数,则可通过截断操作来计算 x 坐标和 y 坐标。
- 对于不规则邻域的核文件:
- 不规则形状核文件属于 ASCII 文本文件,可定义不规则邻域的值和形状。可以使用任何文本编辑器来创建此文件。
- 第一行指定了邻域的宽度和高度(表示为由空格分开的 x 轴方向上的像元数和 y 轴方向上的像元数)。
- 随后几行则指定了邻域中各个位置的值。按照与各像元在所在邻域中相同的配置输入这些像元值。各个值之间需要由空格分隔。
- 核文件中的值非 0(零)即 1(一)。任何不等于 0 的值均将视为 1。
- 某像元位置的值为 0(非空)表示该像元不属于该邻域从而无法用于邻域处理。而值为 1 则表示该值对应的像元(和像元值)属于该邻域。
- 以下示例为 ASCII 不规则形状核文件及其所代表的邻域:
- 权重
- 与不规则邻域类型相似,权重邻域用于定义待处理像元的不规则邻域,并为输入值指定权重。
- 权重核文件可指定应包含在邻域范围内的各像元位置及其权重。
- 权重邻域仅适用于平均值、标准差 (STD) 和总和统计类型。
- 邻域内待处理像元相对于邻域左上角的 x,y 位置可通过以下方程式确定:
x = (width + 1)/2 y = (height + 1)/2
如果输入像元数为偶数,则可通过截断操作来计算 x 坐标和 y 坐标。
- 对于加权邻域的核文件:
- 权重核文件属于 ASCII 文本文件,可定义权重邻域的值和形状。可以使用任何文本编辑器来创建此文件。
- 第一行指定了邻域的宽度和高度(表示为由空格分开的 x 轴方向上的像元数和 y 轴方向上的像元数)。
- 随后几行则指定了邻域中各个位置的权重值。按照与各像元在所在邻域中相同的配置输入这些像元值。正值、负值和小数值均可用作权重。各个值之间需要由空格分隔。
- 对于邻域中不用于计算的位置,核文件中的相应位置将用值 0 表示。
- 以下示例为 ASCII 加权核文件及其所代表的邻域:
统计类型
可用的统计数据包括众数、最大值、平均值、中值、最小值、少数、范围、标准差和总和。默认统计类型为平均值。
- 众数
- 只有整型栅格数据可以作为输入。
- 当邻域范围内存在多个众数值时,待处理像元的输出值将为 NoData。
- 最大值
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 平均值
- 输出栅格将始终为浮点型。
- 平均值统计数据适用于权重邻域类型。
- 中值
- 只有整型栅格数据可以作为输入。
- 如果邻域中有效像元值数量为奇数,则将排列这些值然后选择位于中间的值得到中值。如果邻域中像元数量为偶数,则将对这些值进行排列,然后取中间两个数的平均值。
- 最小值
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 少数
- 只有整型栅格数据可以作为输入。
- 当邻域范围内存在多个少数值时,待处理像元的输出值将为 NoData。
- 范围
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 通过应用该公式可逐个确定各像元栅格的输出值:焦点范围 = 焦点最大值 – 焦点最小值。
- STD
- 输出栅格将始终为浮点型。
- STD 统计数据适用于权重邻域类型。
- 总和
- 如果输入栅格值为整型,则输出栅格中的值也将为整型;如果输入栅格值为浮点型,则输出栅格中的值也将为浮点型。
- 变异度
- 只有整型栅格数据可以作为输入。
待处理的 NoData 像元
在计算中忽略 NoData 选项可控制邻域窗口内 NoData 像元的处理方式。选中此选项时(DATA 选项),输出像元值的计算将会忽略邻域中的所有 NoData 像元。取消选中此选项时(NODATA 选项),如果邻域中存在任何 NoData 像元,则输出像元将为 NoData。
如果待处理的像元本身就是 NoData,则在选中“忽略 NoData”选项后,将根据邻域中有效的其他像元来计算像元的输出值。当然,如果邻域中的所有该像元均为 NoData,则无论如何设置此参数,输出都将为 NoData。