描述
移动点或折点,使其与其他要素的折点、边或端点精确重合。 可指定捕捉规则来控制是将输入折点捕捉到指定距离范围内的最近折点、边还是端点。
插图
使用方法
捕捉环境参数用于将输入要素的折点捕捉到多个图层或要素类的折点、边和端点。 当提供多个捕捉规则时,它们的优先级为:在工具对话框中为从上到下,或在脚本中从左到右。
输入要素的折点将捕捉到指定距离范围内最近的折点、边或端点。
在捕捉环境参数中,可将同一个图层或要素类与不同的捕捉类型结合使用来指定多个捕捉规则。
如果将包含选择内容的图层或要素类用作输入,将仅捕捉所选要素的折点。
如果将某要素类中的要素捕捉到同一要素类中的要素,通常情况下,对象 ID 或要素 ID 较低的要素会被捕捉到对象 ID 较高的要素。(shapefile 的 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],...] | 输入包含要捕捉到的要素的要素类或要素图层。 捕捉环境的组件如下:
可用捕捉类型如下:
| Value Table |
派生输出
名称 | 说明 | 数据类型 |
out_feature_class | 更新后的输入要素。 | Feature Class |
代码示例
Snap 示例 1(Python 窗口)
以下 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"]])
Snap 示例 2(独立脚本)
将气候区域边界捕捉到植被图层边界以确保公共边界重合。
# 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: 是