捕捉 (Editing)
摘要
移动点或折点,使其与其他要素的折点、边或端点精确重合。可指定捕捉规则来控制是将输入折点捕捉到指定距离范围内的最近折点、边还是端点。
插图
用法
-
捕捉环境参数用于将输入要素的折点捕捉到多个图层或要素类的折点、边和端点。如果给定了多个捕捉规则,它们将按以下方式设置优先级:在工具对话框中,从上到下设置;在脚本中,从左到右设置。
-
输入要素的折点将捕捉到指定距离范围内最近的折点、边或端点。
-
在捕捉环境参数中,可将同一个图层或要素类与不同的捕捉类型 (END | VERTEX | EDGE) 结合使用来指定多个捕捉规则。
-
如果将包含选择内容的图层或要素类用作输入,将仅捕捉所选要素的折点。
-
如果将某要素类中的要素捕捉到同一要素类中的要素,通常情况下,对象 ID 或要素 ID 较低的要素会被捕捉到对象 ID 较高的要素。例如,如果 OBJECTID 为 1 的点和 OBJECTID 为 2 的点位于捕捉距离范围内,则将 OBJECTID 为 1 的点捕捉到 OBJECTID 为 2 的点,而不会将 OBJECTID 为 2 的点捕捉到 OBJECTID 为 1 的点。使用“排序”工具可对要素进行重新排列,从而控制这种捕捉行为。
-
在 ArcMap 使用此工具时,应用程序的“捕捉环境”默认为捕捉环境参数,您可根据需要对其进行修改。
此工具用于修改输入数据。有关详细信息以及避免数据被意外更改的策略,请参阅无输出的工具。
此工具的一个使用案例是,通过将某个边界上的折点捕捉到另一边界的折点、边或端点来校正两个数据集间共享或公共边界的差异。如果输入要素中没有足够多的折点来匹配另一边界的准确曲率,可使用增密工具向输入要素添加折点,从而提高细节层次。
语法
参数 | 说明 | 数据类型 |
in_features |
折点将被捕捉到其他要素的折点、边或端点的输入要素。输入要素可以是点、多点、线或面。 | Feature Layer |
snap_environment [[Features, Type, Distance],...] |
捕捉环境的组成部分:
捕捉环境的类型选项:
注: 在“捕捉环境”参数中,如果输入“距离”时未带单位(如,输入“10”而不是“10 米”),则默认情况下将使用输入要素的坐标系的线性单位或角度单位。如果输入要素使用投影坐标系,则将使用线性单位。 | Value Table |
代码实例
以下 Python 窗口脚本演示了如何使用“捕捉”工具。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Snap_edit("climate.shp", [["Habitat_Analysis.gdb/vegtype", "VERTEX", "30 Feet"], ["Habitat_Analysis.gdb/vegtype", "EDGE", "20 Feet"]])
将气候区域边界捕捉到植被图层边界以确保公共边界重合。
# Name: Snap.py
# Description: Snap climate regions boundary to vegetation layer boundary
# to ensure common boundary is coincident
# Author: ESRI
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Make backup copy of climate regions feature class, since modification with
# the Editing tools below is permanent
climate = "climate.shp"
climateBackup = "C:/output/Output.gdb/climateBackup"
arcpy.CopyFeatures_management(climate, climateBackup)
# Densify climate regions feature class to make sure there are enough vertices
# to match detail of vegetation layer when layers are snapped
arcpy.Densify_edit(climate, "DISTANCE", "10 Feet")
# Snap climate regions feature class to vegetation layer vertices and edge
veg = "Habitat_Analysis.gdb/vegtype"
# first, snap climate region vertices to the nearest vegetation layer vertex within 30 Feet
snapEnv1 = [veg, "VERTEX", "30 Feet"]
# second, snap climate region vertices to the nearest vegetation layer edge within 20 Feet
snapEnv2 = [veg, "EDGE", "20 Feet"]
arcpy.Snap_edit(climate, [snapEnv1, snapEnv2])