エッジマッチ リンクの生成 (Generate Edgematch Links) (編集)

概要

ソース データの領域と隣接データの領域のエッジに沿って、一致しているが切断されているライン フィーチャを検索し、ソース ラインと一致する隣接ラインとの間にエッジマッチ リンクを生成します。

エッジマッチの詳細

エッジマッチ リンクの生成 (Generate Edgematch Links)

使用法

  • 隣接する国の道路など、隣接する別々のデータセットのライン フィーチャには、データ コレクションの不一致などの理由により、それらが接続するエッジに沿ってギャップやずれが存在する場合があります。2 つのデータセット間のエッジマッチ問題を一度に解決するには、このツールを使用してエッジマッチ リンクを生成し、その後、[エッジマッチ フィーチャ (Edgematch Features)] ツールを使用して、各フィーチャが接続されるように調整します。ライン フィーチャの 2 つのセットは、ソース フィーチャおよび隣接フィーチャと呼ばれます。このツールは、分離しているが、指定された検索距離の範囲内で対応しているソース ラインと隣接ラインを検索し、それらのライン間にエッジマッチ リンク (移動リンクとも呼ぶ) を表すラインを生成します。

    エッジ領域に沿って切断された 2 つのフィーチャが検索距離の範囲内で対応している場合でも、それらの端点が検索距離よりも離れている場合は、エッジマッチとは見なされません。

  • メモ:

    すべての入力は、同じ座標系に存在する必要があります。

    出力フィーチャクラスは、入力と同じ座標系を使用します。

  • 出力フィーチャクラスには、エッジマッチ リンクを表す以下のフィールドを持つライン フィーチャが格納されます。

    • SRC_FID - リンクの始点になるソース フィーチャ ID。
    • ADJ_FID - リンクの終点になる隣接フィーチャ ID。
    • EM_CONF - エッジマッチの信頼度を表す値。これらの値は、検索距離の範囲内で検出された候補の数、属性の一致状況、およびソース フィーチャと隣接フィーチャ間の連続性から求められます。この値は、0 よりも大きい 100 以下の値になります。ここで 100 は、最高の信頼度を表します。EM_CONF 値が大きいほど、正しいリンクが得られる可能性が高くなります。例については、「エッジマッチについて」をご参照ください。
  • [検索距離] パラメーターは、一致候補の検索で使用されます。対応するフィーチャ間のずれの大部分を捉えることができるほど十分な大きさの距離を使用しますが、候補が多くなって不必要な処理が発生し、不正な一致が得られる場合があるため、この値を大きくし過ぎないでください。

  • 一致候補が検出されたら、それらの形状の特徴が分析されます。連続性が最も高くなるソース フィーチャと隣接フィーチャ間で、一致が決定されます。エッジマッチ リンクを表すラインが、ソース ラインの端点から一致する隣接ラインの端点まで生成されます。

    これらのリンクを、他のライン フィーチャと同様に、マップ上に表示できます。ラインの端に矢印を付けて描画し、上の図に示すようなマップを作成できます。

  • [マッチ フィールド] パラメーターで 1 つ以上のフィールドのペアを指定した場合、空間的に一致するフィーチャが、これらのフィールド値についてチェックされます。たとえば、道路名が格納された STREET_NAME フィールドが、ソース フィーチャとベース フィーチャの両方に存在するとします。1 つのソース フィーチャが 2 つの隣接フィーチャに空間的に一致していて、1 つの隣接フィーチャのみがソース フィーチャと同じ STREET_NAME 値を持っている場合、この隣接フィーチャの方が一致度が高くなります。テキスト文字列の比較では、大文字と小文字が区別されません。つまり、「First St」は、「first st」と同じであると見なされます。

    属性の一致条件は、上で説明したように、EM_CONF フィールドの値に影響を与えます。

  • エッジマッチの精度は、データの品質および 2 つの入力データのエッジに沿った複雑さに依存します。

    前処理でデータ エラーを最小化し、関連するフィーチャを入力として選択する必要があります。一般に、入力データセット内のフィーチャがトポロジ的に正しく、有効なジオメトリを有しており、シングルパートであって重複していないことは、常に役立ちます。そうでない場合、予期しない結果が発生するおそれがあります。

  • 結果を確認し、必要に応じて修正することをお勧めします。実行後に検査と編集を行うときに、既存の編集ツールを使用してリンクを編集できます。たとえば、必要に応じて不要なリンクを削除したり、リンクの始点または終点を移動して変更したり、新しいリンクを追加したりできます。それに応じて、必ず SRC_FIDTGT_FID を更新してください。

構文

arcpy.edit.GenerateEdgematchLinks(source_features, adjacent_features, out_feature_class, search_distance, {match_fields})
パラメーター説明データ タイプ
source_features

エッジマッチのソース フィーチャになるライン フィーチャ。すべてのエッジマッチ リンクは、ソース フィーチャから始まります。

Feature Layer
adjacent_features

ソース フィーチャに隣接するライン フィーチャ。すべてのエッジ リンクは、一致する隣接フィーチャで終わります。

Feature Layer
out_feature_class

エッジマッチ リンクを表すラインが格納される出力フィーチャクラス。

Feature Class
search_distance

一致候補の検索に使用される距離。ゼロより大きい距離を指定する必要があります。 優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。

Linear Unit
match_fields
[[source_field, target_field],...]
(オプション)

ソース フィーチャとターゲット フィーチャのフィールド。ここで、ターゲット フィールドは、隣接フィーチャのフィールドです。これを指定すると、照合候補に対して各フィールド ペアがチェックされるため、正しい適合を特定するために役立ちます。

Value Table

コードのサンプル

GenerateEdgematchLinks (エッジマッチ リンクの生成) の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで GenerateEdgematchLinks 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.GenerateEdgematchLinks_edit("countyA_Roads.shp",
                                  "countyB_Roads.shp", "em_Links.shp"
                                  "25 Feet")
GenerateEdgematchLinks (エッジマッチ リンクの生成) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、スクリプト環境で GenerateEdgematchLinks 関数を適用する方法を示した単純な例です。

# Name:        GenerateRubbersheetLinks_example_script2.py
# Description: Generates links for rubbersheeting spatial adjustment. The links go
#              from base road data to newly updated road data. The links are then
#              analyzed for potential errors; they are finally used to adjust the
#              base roads (a copy is made) to better align with the updated roads.
# Author:      Esri
# -----------------------------------------------------------------------

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.overwriteOutput = True
env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "baseRoads"
targetFeatures = "updateRoads"
grlOutput = "grlinks_out"
grlOutputPts = "grlinks_out_pnt"

search_distance = "300 Feet"
match_fields = "FULLNAME RD_NAME"

qaLocations = "qa_locations"

# Generate rubbersheet links
arcpy.GenerateRubbersheetLinks_edit(sourceFeatures, targetFeatures, grlOutput, search_distance, match_fields)

# ====================================================================================
# Note 1:  The result of GenerateRubbersheetLinks may contain errors; see tool reference.
#          Inspection and editing may be necessary to ensure correct links before using
#          them for rubbersheeting.
#
#          One of the common errors are intersecting or touching links. Their locations 
#          can be found by the process below.
# ====================================================================================

# Find locations where links intersect or touch; the result contains coincident points
arcpy.Intersect_analysis(grlOutput, qaLocations, "", "", "POINT")

# Delete coincident points
arcpy.DeleteIdentical_management(qaLocations, "Shape")

# ====================================================================================
# Note 2:  At this point you can manually inspect locations in qaLocations; delete or
#          modify links as needed.
# ====================================================================================

# Make a copy of the sourceFeatures for rubbersheeting
arcpy.CopyFeatures_management(sourceFeatures, "sourceFeatures_Copy")


# Use the links for rubbersheeting
arcpy.RubbersheetFeatures_edit("sourceFeatures_Copy", grlOutput, grlOutputPts, "LINEAR")

ライセンス情報

  • Basic: いいえ
  • Standard: いいえ
  • Advanced: はい

関連トピック