スナップ (Snap) (編集)

概要

ポイントまたは頂点を、他のフィーチャの頂点、エッジ、または端点の位置と正確に一致するように移動します。スナップ ルールを指定すれば、入力頂点のスナップ先 (指定した距離範囲で最も近くにある頂点、エッジ、または端点) を制御できます。

[スナップ (Snap)] の図
[スナップ (Snap)] のケース

使用法

    注意:

    このツールを実行すると、入力データが変更されます。詳細と不要なデータの変更を回避するための方法については、「入力データを変更または更新するツール」をご参照ください。

  • [スナップ環境] パラメーターを使用して、入力フィーチャの頂点を、複数のレイヤーまたはフィーチャクラスの頂点、エッジ、または端点にスナップできます。スナップ規則が複数ある場合、ツール ダイアログ ボックス内では上から順、スクリプト内では左から順に優先されます。

  • 入力フィーチャの頂点は、指定した距離範囲にある最も近い頂点、エッジ、または端点にスナップします。

  • [スナップ環境] パラメーターでは、タイプ (端点 | 頂点 | エッジ) が異なる同じレイヤーまたはフィーチャクラスを使用して複数のスナップ規則を指定できます。

  • フィーチャが選択されているレイヤーまたはフィーチャクラスを入力として使用した場合、選択されているフィーチャの頂点だけがスナップされます。

  • あるフィーチャクラス内のフィーチャを同じフィーチャクラス内のフィーチャにスナップさせた場合、通常はオブジェクト ID (フィーチャ ID) が小さいフィーチャが、オブジェクト ID (シェープファイルの OBJECTID フィールドまたは FID) が大きいフィーチャにスナップします。たとえば、OBJECTID フィールド値が 1 および 2 のポイントがスナップ距離範囲にある場合、OBJECTID フィールド値が 1 のポイントが OBJECTID フィールド値が 2 のポイントにスナップし、この逆にスナップすることはありません。

  • メモ:

    このツールの 1 つの使用例として、異なるデータセットから作成されているが、本来は同じ位置にあるべき境界線同士がずれている場合に、一方の境界線をもう一方の境界線の頂点、エッジ、または端点にスナップさせることで、境界線の位置を合わせることができます。入力フィーチャに十分な数の頂点がないために別の境界線の曲率と正確に一致しない場合、[頂点の挿入] ツールを使用して入力フィーチャに頂点を追加することで、ぴったり揃えることができます。

構文

arcpy.edit.Snap(in_features, snap_environment)
パラメーター説明データ タイプ
in_features

入力フィーチャの頂点は、他のフィーチャの頂点、エッジ、または端点にスナップします。入力フィーチャとして、ポイント、マルチポイント、ライン、またはポリゴンを指定できます。

Feature Layer
snap_environment
[[Features, Type, Distance],...]

スナップ先のフィーチャを含むフィーチャクラスまたはフィーチャ レイヤーを入力します。

スナップ環境の要素:

  • フィーチャ - 入力フィーチャの頂点のスナップ先となるフィーチャ。ポイント、マルチポイント、ライン、またはポリゴンを指定できます。
  • タイプ - 入力フィーチャの頂点のスナップ先となるフィーチャ部分のタイプ (端点│頂点│エッジ)。
  • 距離 - ここに指定した距離範囲にある頂点、エッジ、または端点に入力フィーチャの頂点をスナップできます。

スナップ環境のタイプ オプション:

  • 端点 - 入力フィーチャの頂点はフィーチャの端点にスナップします。
  • 頂点 - 入力フィーチャの頂点はフィーチャの頂点にスナップします。
  • エッジ - 入力フィーチャの頂点はフィーチャのエッジにスナップします。
メモ:

[スナップ環境] パラメーターで距離の単位が指定されていない場合 (例: 10 メートルの代わりに 10 など)、入力フィーチャの座標系の長さまたは角度の単位がデフォルトとして使用されます。入力フィーチャで投影座標系が使用されている場合、長さの単位が使用されます。

Value Table

派生した出力

名前説明データ タイプ
out_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 (スタンドアロン スクリプト)

気候区域の境界線を植生範囲の境界線にスナップさせて、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: はい

関連トピック