边界清理 (Spatial Analyst)

需要 Spatial Analyst 许可。

描述

平滑栅格中区域之间的边界。

了解有关边界清理工作原理的详细信息

插图

边界清理工具图示
OutRas = BoundaryClean(InRas1)

使用方法

  • 边界清理工具可通过对区域之间的边界进行平滑处理来概化或简化栅格。该工具将提供一些选项,用于控制输入中区域的像元如何影响平滑效果以及将应用的平滑量。

  • 该工具可在对边界进行平滑处理时应用扩展(扩张)和收缩(侵蚀)的数学形态学技术 (Serra, 1982)。可以使用每个输入像元的正交和对角线相邻像元对其进行评估。

  • 平滑过程首先按特定优先级对相邻像元进行排序。优先级可以确定相邻像元中可替换输出中处理像元值的区域。

  • 优先级可以基于区域的值或区域大小。排序类型参数(Python 中的 sort_type)可确定要使用的排序类型。

    默认方法不排序(Python 中的 NO_SORT)可根据区域的值来评估优先级。值较大的区域具有较高的优先级,可以扩展到值较小的区域中。不考虑区域的大小。

    区域的大小或总面积可用于对优先级进行排序。大小将由组成每个区域的像元计数确定。对于降序设置(Python 中的 DESCEND),区域将按大小降序排序。总面积较大的区域将优先扩展到总面积较小的区域中。对于升序设置(Python 中的 ASCEND),情况正好相反:总面积较小的区域将优先扩展到总面积较大的区域中。

  • 平滑量将由运行两次扩展与收缩参数(Python 中的 number_of_runs)控制,该参数可以确定执行扩展与收缩过程的次数。

    对于未选中的设置(Python 中的 ONE_WAY),扩展和收缩过程将执行一次。对于选中的设置(Python 中的 TWO_WAY),扩展和收缩过程将执行两次,从而使区域边界更加平滑。

    有关算法的其他详细信息,请参阅使用边界清理和众数滤波对区域边缘进行平滑处理

  • 如果所有 8 个相邻像元的值均与处理像元的值相同,则输出像元将保留输入像元的值。

  • 参考文献:

    • Serra, J. Image Analysis and Mathematical Morphology, Academic Press, London 1982.
  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

语法

BoundaryClean(in_raster, {sort_type}, {number_of_runs})
参数说明数据类型
in_raster

将平滑区域之间边界的输入栅格。

必须为整型。

Raster Layer
sort_type
(可选)

指定要在平滑处理中使用的排序类型。将由排序确定像元可扩展到相邻像元的优先级。

排序可以基于区域值或区域大小。

  • NO_SORT优先级将由区域值确定。不考虑区域的大小。值较大的区域优先级较高,可以扩展到平滑输出中值较小的区域中。这是默认设置。
  • DESCEND区域按大小降序排列。总面积较大的区域具有较高的优先级,可以扩展到总面积较小的若干区域。此选项倾向于消除或减少平滑输出中较小区域的像元分布。
  • ASCEND区域按大小升序排列。总面积较小的区域具有较高的优先级,可以扩展到总面积较大的若干区域。此选项倾向于保留或增加平滑输出中较小区域的像元分步。
String
number_of_runs
(可选)

指定平滑过程的执行次数:两次或一次。

  • TWO_WAY扩展和收缩操作执行两次。第一次,将根据指定的排序类型执行操作。第二次,按照相反的优先级额外执行一次收缩和扩展操作。这是默认设置。
  • ONE_WAY根据排序类型执行一次扩展和收缩操作。
Boolean

返回值

名称说明数据类型
out_raster

输出概化的栅格。

将对输入中的区域间边界进行平滑处理。

输出始终为整型。

Raster

代码示例

BoundaryClean 示例 1(Python 窗口)

本示例执行双向处理以降序顺序对区域间边界进行平滑处理。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
OutBndCln = BoundaryClean("land", "DESCEND", "TWO_WAY")
OutBndCln.save("c:/sapyexamples/output/bndcln_des2")
BoundaryClean 示例 2(独立脚本)

本示例执行双向处理以降序顺序对区域间边界进行平滑处理。

# Name: BoundaryClean_Ex_02.py
# Description: Smoothes the boundary between zones 
#              by expanding and shrinking it.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inRaster = "land"

# Execute BoundaryClean
OutBndCln = BoundaryClean(inRaster, "ASCEND", "TWO_WAY")

# Save the output 
OutBndCln.save("c:/sapyexamples/output/bndcln_asc2")

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题