焦点流的工作原理

需要 Spatial Analyst 许可。

焦点流工具使用每个像元周围的直接 3 × 3 邻域来确定其八个相邻像元中哪一个将流入该像元。焦点流由邻域中的任意像元来定义,此像元的值比待处理像元的值要高。大多数情况,该值代表液体移动(比如水沿着高程或者倾斜的表面流动),但是焦点流也可以是您定义的任何移动(比如污染物向污染浓度较低的地方流入)。焦点流使用“移动窗口”方法来处理整个数据集,类似于焦点统计工具的工作原理。但是,计算输出值的方式却与此相同。

要检验一个特定的邻域像元是否将要流入待处理像元,则每个邻域像元的值都要从待处理像元中减去。如果所得值为正数,则邻域像元将无法流入待处理像元;如果所得值为负数,则邻域像元可流入待处理像元。如果没有像元流入待处理像元,则该位置将收到 0 值。如果已经输入阈值,则邻域像元值与待处理像元值之间的差值必须大于阈值才可以产生焦点流。如果差值小于阈值,则邻域像元将不能产生焦点流。

通过待处理像元的二进制表示,可以实现从多个邻域像元到单个待处理像元的焦点流组合管理。待处理像元二进制表示的每个位都与邻域像元位置相关。待处理像元右边的像元值为 1,其右下相邻像元的值为 2,正下方相邻像元的值为 4,然后依照此规律直到右上的最后一个邻域值为 128(二的乘方,因为是二进制表示)。

焦点流方向编码
焦点流方向编码

如果领域像元流入待处理像元,则表示邻域位置的位将被开启(请参见前面的示意图),即赋值 1。如果领域像元不流入待处理像元,则表示位置的位将被关闭,即赋值 0。所有邻域位置均完成流测试后,可以不开启任何位,也可以开启一个、多个或所有位(赋值 1)。所有位的二进制表示都被转换回底数10,与焦点流位模式相符。然后将底数10 分配给待处理像元。编码将为上游数值的每一个可能组合赋予唯一的数值。流到待处理像元中的焦点流组合的总数为 255。

示例

下面的示例说明了如何获取输出值:

  • 从左上相邻的像元中收到焦点流的像元

    左上相邻像元的焦点流的邻域位为 6(请参见前面的焦点流方向编码图)。与此位相对应的以10 为底的值为 32。

  • 从若干像元中收到焦点流的像元

    下图中,待处理像元周围有三个像元的值比待处理像元高。这三个像元中有待处理像元正右方的像元(第一位),其左下方的像元(第四位)以及正处于待处理像元正上方的像元(第七位)。因此,第一位、第四位与第七位将开启,即设置为 1。此位模式以底数 10 计算后为 73,并且会被写入输出栅格上的待处理像元位置。

    “焦点流”像元示例

  • 从所有八个相邻像元中收到焦点流的像元

    设想全部相邻像元全都流向一个像元。输出值将收到从 1 到 128 的所有位位置值的总和。由 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 计算所得的结果值等于 255。

    “焦点流”像元示例

相关主题


在本主题中
  1. 示例