焦点流的工作原理
虽然焦点流工具使用“移动窗口”的方法,使用与焦点统计工具相似的方式通过数据集进行处理,但其输出值的计算方法却与焦点统计工具不相同。焦点流工具使用直接的 3 x 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。