サマリ
ポイントまたは頂点を、他のフィーチャの頂点、エッジ、または端点の位置と正確に一致するように移動します。スナップ ルールを指定すれば、入力頂点のスナップ先 (指定した距離範囲で最も近くにある頂点、エッジ、または端点) を制御できます。
図
使用法
[スナップ環境] パラメーターを使用して、入力フィーチャの頂点を、複数のレイヤーまたはフィーチャクラスの頂点、エッジ、または端点にスナップできます。スナップ規則が複数ある場合、ツール ダイアログ ボックス内では上から順、スクリプト内では左から順に優先されます。
入力フィーチャの頂点は、指定した距離範囲にある最も近い頂点、エッジ、または端点にスナップします。
[スナップ環境] パラメーターでは、タイプ (END | VERTEX | EDGE) が異なる同じレイヤーまたはフィーチャクラスを使用して複数のスナップ規則を指定できます。
フィーチャが選択されているレイヤーまたはフィーチャクラスを入力として使用した場合、選択されているフィーチャの頂点だけがスナップされます。
あるフィーチャクラス内のフィーチャを同じフィーチャクラス内のフィーチャにスナップさせた場合、通常はオブジェクト ID (フィーチャ ID) が小さいフィーチャが、オブジェクト ID (シェープファイルの OBJECTID フィールドまたは FID) が大きいフィーチャにスナップします。たとえば、OBJECTID=1 のポイントと OBJECTID=2 のポイントがスナップ距離範囲にある場合、OBJECTID=1 のポイントが OBJECTID=2 のポイントにスナップし、この逆にスナップすることはありません。
構文
Snap_edit (in_features, snap_environment)
パラメータ | 説明 | データ タイプ |
in_features | 入力フィーチャの頂点は、他のフィーチャの頂点、エッジ、または端点にスナップします。入力フィーチャとして、ポイント、マルチポイント、ライン、またはポリゴンを指定できます。 | Feature Layer |
snap_environment [[Features, Type, Distance],...] | スナップ先のフィーチャを含むフィーチャクラスまたはフィーチャ レイヤーを入力します。 スナップ環境の要素:
スナップ環境のタイプ オプション:
| Value Table |
コードのサンプル
Snap の例 (Python ウィンドウ)
次の 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"]])
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
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])