描述
移动点或折点,使其与其他要素的折点、边或端点精确重合。可指定捕捉规则来控制是将输入折点捕捉到指定距离范围内的最近折点、边还是端点。
插图
使用方法
捕捉环境参数用于将输入要素的折点捕捉到多个图层或要素类的折点、边和端点。当给出多个捕捉规则时,它们的优先级如下:在工具对话框中为从上到下,或在脚本中从左到右。
输入要素的折点将捕捉到指定距离范围内最近的折点、边或端点。
在捕捉环境参数中,可将同一个图层或要素类与不同的捕捉类型 (END | VERTEX | EDGE) 结合使用来指定多个捕捉规则。
如果将包含选择内容的图层或要素类用作输入,将仅捕捉所选要素的折点。
如果将某要素类中的要素捕捉到同一要素类中的要素,通常情况下,对象 ID 或要素 ID 较低的要素会被捕捉到对象 ID 较高的要素。(shapefiles 的 OBJECTID 字段或 FID 字段)。例如,如果 OBJECTID 字段值为 1 和 2 的点位于捕捉距离范围内,则将 OBJECTID 字段值为 1 的点捕捉到 OBJECTID 字段值为 2 的点的位置(反之则不然)。
警告:
此工具会修改输入数据。有关详细信息以及避免数据被意外更改的策略,请参阅修改或更新输入数据的工具。
注:
此工具的一个使用案例是,通过将某个边界上的折点捕捉到另一边界的折点、边或端点来校正两个数据集间共享或公共边界的差异。如果输入要素中没有足够多的折点来匹配另一边界的准确曲率,可使用增密工具向输入要素添加折点,从而提高细节层次。
语法
arcpy.edit.Snap(in_features, snap_environment)
参数 | 说明 | 数据类型 |
in_features | 折点将被捕捉到其他要素的折点、边或端点的输入要素。输入要素可以是点、多点、线或面。 | Feature Layer |
snap_environment [[Features, Type, Distance],...] | 输入包含您希望捕捉到的要素的要素类或要素图层。 捕捉环境的组成部分:
捕捉环境类型选项:
注:在“捕捉环境”参数中,如果输入“距离”时未带单位(如,输入 10 而不是 10 米),则默认情况下将使用输入要素的坐标系的线性单位或角度单位。如果输入要素使用投影坐标系,则将使用线性单位。 | Value Table |
派生输出
名称 | 说明 | 数据类型 |
out_feature_class | 更新后的输入要素。 | 要素类 |
代码示例
下面的 Python 窗口脚本演示了如何使用 Snap 工具。
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
# import system modules
import arcpy
# Set environment settings
arcpy.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])
许可信息
- Basic: 否
- Standard: 是
- Advanced: 是