スナップ(Snap) (編集)
サマリ
ポイントまたは頂点を、他のフィーチャの頂点、エッジ、または端点の位置と正確に一致するように移動します。スナップ ルールを指定すれば、入力頂点のスナップ先(指定した距離範囲で最も近くにある頂点、エッジ、または端点)を制御できます。
図
使用法
-
[スナップ環境] パラメータを使用して、入力フィーチャの頂点を、複数のレイヤまたはフィーチャクラスの頂点、エッジ、または端点にスナップできます。スナップ規則が複数ある場合、ツール ダイアログ ボックス内では上から順、スクリプト内では左から順に優先されます。
-
入力フィーチャの頂点は、指定した距離範囲にある最も近い頂点、エッジ、または端点にスナップします。
-
[スナップ環境] パラメータでは、タイプ(END | VERTEX | EDGE)が異なる同じレイヤまたはフィーチャクラスを使用して複数のスナップ規則を指定できます。
-
フィーチャが選択されているレイヤまたはフィーチャクラスを入力として使用した場合、選択されているフィーチャの頂点だけがスナップされます。
-
あるフィーチャクラス内のフィーチャを同じフィーチャクラス内のフィーチャにスナップさせた場合、通常はオブジェクト ID (フィーチャ ID)が小さいフィーチャが、オブジェクト ID が大きいフィーチャにスナップします。たとえば、OBJECTID 1 のポイントと OBJECTID 2 のポイントがスナップ距離範囲にある場合、OBJECTID 1 のポイントが OBJECTID 2 のポイントにスナップし、この逆にスナップすることはありません。並べ替えツールを使用してフィーチャを並べ替えることで、スナップによる移動を制御できます。
-
ArcMap でこのツールを使用した場合、ArcMap のスナップ環境が [スナップ環境] パラメータのデフォルト設定になりますが、必要に応じてこれを変更できます。
このツールを使用すると入力データが変更されます。詳しい説明および不適切なデータ変更を防ぐための方法については、「出力を伴わないツール」をご参照ください。
このツールの 1 つの使用例として、異なるデータセットから作成されているが、本来は同じ位置にあるべき境界線同士がずれている場合に、一方の境界線をもう一方の境界線の頂点、エッジ、または端点にスナップさせることで、境界線の位置を合わせることができます。入力フィーチャに十分な数の頂点がないために別の境界線の曲率と正確に一致しない場合、[頂点の挿入] ツールを使用して入力フィーチャに頂点を追加することで、ぴったり揃えることができます。
構文
パラメータ | 説明 | データ タイプ |
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"]])
気候区域の境界線を植生範囲の境界線にスナップさせて、2 本の境界線の位置を合わせています。
# 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])