使用边界清理对区域边缘进行平滑处理

边界清理功能用于沿栅格中的区域边缘进行概化。 通过扩展和收缩区域之间的边界对边缘进行平滑处理。

概化边缘

边界清理功能可通过对区域之间的边界进行平滑处理来概化或简化栅格。 该工具使用每个像元的直接邻域来应用扩展和收缩方法以评估每个像元。 系统提供多个选项用于控制区域的像元对平滑效果的影响。 您还可以对平滑程度进行控制。

按优先级排序

该过程首先按特定优先级对输入栅格中的区域进行排序。 对于输入中的每个像元,优先级可用于确定周围邻域中可替换处理像元值的区域值。

排序优先级可以基于区域的值或区域大小。 排序类型参数可指定要使用的排序优先级。 对于默认不排序设置,具有较大值的区域像元将具有较高的优先级,以扩展到具有较小值的区域中。 对于降序设置,面积较大的区域将优先扩展到面积较小的区域中。 对于升序设置,面积较小的区域将优先扩展到面积较大的区域中。

平滑量

平滑量由执行扩展和收缩过程的次数控制:一次或两次。 默认值为两次,由此将导致平滑量更大。

扩展和收缩过程

扩展和收缩过程将根据在排序类型参数中设置的排序优先级类型来评估每个处理像元的直接邻域。

在此过程中,将先扩展再收缩。 如果取消选中运行两次扩展与收缩参数,则此过程将发生一次。 如果选中此参数,则扩展和收缩过程将执行两次。

在该过程中使用的算法的其他详细信息如下所示。

单向扩展和收缩

在使用单向设置时,扩展和收缩过程将执行一次。

在扩展过程中,将会发生以下情况:

  • 对于输入栅格中的每个处理像元,将评估每个相邻像元。
  • 对于每个相邻像元,将评估该相邻像元的优先级值是否小于处理像元的优先级值。 如果是这样,则将指定内部相邻像元优先级值作为输入处理像元的优先级值。 将使用新的优先级值来更新内部已扩展栅格,然后继续下一个相邻像元。

在收缩过程中,将会发生以下情况:

  • 对于输入栅格中的每个处理像元,将使用在第一个过程中创建的内部扩展栅格的值来评估每个相邻像元。
  • 如果相邻像元的优先级等于处理像元的优先级,则会将原始输入栅格中的像元值复制到输出。 如果不满足任何相邻像元的条件,则会将扩展栅格中的像元值复制到输出。

双向扩展和收缩

如果选中运行两次扩展与收缩参数(在 Python 中,将 number_of_runs 参数设置为 TWO_WAY),则会执行第二次扩展和收缩过程,但是,此次的优先级顺序将与第一次的优先级顺序相反。 此操作第一个过程中的输出将用作第二个过程的输入。

在第一个扩展过程中,所使用的逻辑与在单向扩展过程中所使用的逻辑相同。

在第一个收缩过程中,所使用的逻辑与在单向收缩过程中所使用的逻辑相同。

在第二个扩展过程中,将会发生以下情况:

  • 对于第一个扩展和收缩过程生成的内部栅格中的每个处理像元,将评估每个相邻像元。
  • 对于每个相邻像元,将评估该相邻像元的优先级值是否大于处理像元的优先级值。 如果是这样,则将指定内部相邻像元优先级值作为输入处理像元的优先级值。 将使用新的优先级值来更新内部已扩展栅格,然后继续下一个相邻像元。

在第二个收缩过程中,将会发生以下情况:

  • 对于上一步中内部已扩展栅格中的每个处理像元,将评估每个相邻像元。
  • 对于每个相邻像元,如果相邻像元的优先级值小于或大于已扩展栅格中的处理像元值,则会将原始栅格中处理像元的值复制到输出。
  • 如果相邻像元的优先级值等于已扩展栅格中的处理像元值,则会将已扩展栅格中处理像元的值复制到输出。

NoData 处理

如果运行一次扩展和收缩过程,则 NoData 输入像元将具有最低优先级;如果运行两次扩展和收缩过程,则 NoData 输入像元将在第二个过程中具有最低优先级。 在双向排序的第二个过程中,NoData 像元将具有最高优先级。

示例

要显示各种参数对输出的影响,请考虑以下输入栅格。

“边界清理”的示例输入栅格

将显示用于“边界清理”的示例输入栅格。 NoData 像元将为灰色。

对于运行两次扩展与收缩参数(未选中或选中),将显示排序类型参数的所有设置的输出。

排序类型参数为不排序时,输出栅格如下所示:

“不排序”和“单向(未选中)”设置的示例输出
“单向(未选中)”
“不排序”和“双向(选中)”设置的示例输出
“双向(选中)”

排序类型参数为降序时,输出栅格如下所示:

“降序”和“单向(未选中)”设置的示例输出
“单向(未选中)”
“降序”和“双向(选中)”设置的示例输出
“双向(选中)”

排序类型参数为升序时,输出栅格如下所示:

“升序”和“单向(未选中)”设置的示例输出
“单向(未选中)”
“升序”和“双向(选中)”设置的示例输出
“双向(选中)”

在本主题中
  1. 概化边缘