焦点流工具使用每个像元周围的直接 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。