サマリ
アップデート ライン フィーチャがベース ライン フィーチャと空間的にマッチするところを見つけ、空間的な変更または属性の変更 (あるいはその両方) および変更なしを検出して、それらの変更に関する情報を伴うマッチした更新フィーチャ、マッチしない更新フィーチャ、およびマッチしないベース フィーチャが含まれる出力フィーチャクラスを作成します。
図
使用法
このツールが一般的に使用されるのは、たとえば、ライン フィーチャ (道路) のセットを保持しながら、別の人から新しい道路フィーチャ セットとして更新を定期的に受け取る場合です。更新フィーチャのうちのどれが既存のベース フィーチャに対する変更であるか、どれが追加の新しいフィーチャであるか、またはどのベース フィーチャが古く、削除すべきであるかを知りたい場合があります。このツールは、アップデート ライン データセットとベース ライン データセット間のマッチするフィーチャを見つけ、空間的な変更または属性の変更 (あるいはその両方) および変更がないかを検出して、フィーチャ変更情報を含む出力フィーチャクラスを作成します。
出力フィーチャクラスには、関係するすべての更新フィーチャ (マッチするものとしないもの)、およびマッチしないすべてのベース フィーチャが含まれます。検出された変更に関する情報は、次のフィールドに書き込まれます。
- UPDATE_FID - 更新フィーチャのフィーチャ ID。マッチしないベース フィーチャでは、この値が -1 になります。
- BASE_FID - ベース フィーチャのフィーチャ ID。マッチしない更新フィーチャでは、この値が -1 になります。
- CHANGE_TYPE - 次のような、検出された変更のタイプ。
- 空間の場合は S で、空間的な変更を含む、マッチした更新フィーチャを示します。
- 属性の場合は A で、属性の変更を含む、マッチした更新フィーチャを示します。
- 空間と属性の場合は SA で、空間的な変更と属性の変更の両方を含む、マッチした更新フィーチャを示します。
- 変更なしの場合は NC で、変更を含まない、マッチした更新フィーチャを示します。
- 新規の場合は N で、ベース データに対して新規の、マッチしない更新フィーチャを示します。
- 削除の場合は D で、ベース データからの削除が必要となる可能性がある、マッチしないベース フィーチャを示します。
フィーチャを照合するプロセスは、まず [検索距離]、そしてオプションの [照合フィールド] に基づいて実行されます。出力照合テーブルを生成して、照合情報を格納できます。
[検索距離] パラメーターは、一致候補の検索で使用されます。対応するフィーチャ間のずれの大部分を捉えることができるほど十分な大きさの距離を使用しますが、候補が多くなって不必要な処理が発生し、不正な一致が得られる場合があるため、この値を大きくし過ぎないでください。
照合候補が見つかると、その候補が地理計測値のセットによってさらに評価され、空間的にマッチすると見なされるほど十分に似ているかどうか判断されます。
[照合フィールド] パラメーターに 1 つまたは複数のフィールド ペアを指定すると、空間的にマッチすると思われる候補がこれらのフィールド値に対してチェックされるため、正しい適合の特定に役立ちます。たとえば、更新フィーチャとベース フィーチャの両方に、道路名を含む STREET_NAME フィールドがあるとします。更新フィーチャが空間的に 2 つのベース フィーチャとマッチするが、1 つのベース候補だけが更新フィーチャと同じ STREET_NAME 値を持つ場合、そのベース候補がよりよい適合となります。テキスト文字列の比較では、大文字と小文字が区別されないため、First St は first st と同じであると見なされます。
-
[出力照合テーブル] の指定は任意です。この照合テーブルには、ソース FID とターゲット FID、一致グループ、一致関係、空間と属性の一致条件から得られた一致の信頼度など、フィーチャの完全な一致情報が含まれています。この情報によって、一致状況を理解し、照合後の検査、編集、および解析を容易に行うことができます。詳細は、「フィーチャの照合と照合テーブルについて」をご参照ください。
出力照合テーブルにおいて、SRC_FID フィールドおよび TGT_FID フィールドの値は、それぞれ更新フィーチャ ID およびベース フィーチャ ID を示します。
フィーチャの照合の後、変更を識別するプロセスが実行されます。マッチしたすべての更新フィーチャの空間的な条件および属性の条件が、対応するベース フィーチャと比較され、それらの CHANGE_TYPE 値が特定されます。
空間的な変更 (変更タイプ S) は、次のいずれかまたは両方があてはまる場合に検出されます。
- マッチした更新フィーチャが、トポロジにおいて、対応するベース フィーチャと異なる場合。たとえば、1 つの更新フィーチャが 2 つのベース フィーチャとマッチする場合。
- 更新フィーチャの一部またはベース フィーチャが変更許容範囲から外れている場合。
[変更許容値] は、更新フィーチャとベース フィーチャの周りのバッファー ゾーンの幅としての役割を果たします。マッチしたすべての更新フィーチャとベース フィーチャが、この許容範囲に対してチェックされます。アップデータ フィーチャの一部がマッチしたベース フィーチャの周囲のゾーン外にある場合、またはベース フィーチャの一部がマッチした更新フィーチャの周囲のゾーン外にある場合、それらは空間的な変更と見なされます。0 より大きい値を指定すると、出力には次の 2 つの追加フィールドが含まれます。
- LEN_PCT - このフィールドには、パーセント値が格納されます。各パーセント値の計算は、変更許容ゾーンから外れている更新フィーチャまたはベース フィーチャ部分の長さと、更新フィーチャまたはベース フィーチャ全体の長さを比較することによって行われます。値 0 は更新フィーチャまたはベース フィーチャが完全に変更許容ゾーン内にあることを意味し、値 100 は更新フィーチャまたはベース フィーチャ全体が変更許容ゾーン外にあることを意味します。
- LEN_ABS - このフィールドには、長さの値がフィーチャ単位で格納されます。各値は、変更許容範囲から外れている更新フィーチャまたはベース フィーチャ部分の絶対長を示します。
属性の変更 (変更タイプ A) は、[比較するフィールド] に基づいて検出されます (指定されている場合)。
[比較するフィールド] パラメーターに 1 つまたは複数のフィールド ペアを指定すると、マッチしたフィーチャがこれらのフィールドに対してチェックされ、属性の変更があるかどうかが判断されます。テキスト文字列の比較では、大文字と小文字が区別されないため、First St は first st と同じであると見なされます。
マッチした更新フィーチャに対して空間的な変更と属性の変更の両方が検出された場合、そのフィーチャは変更タイプ SA を取得します。マッチした更新フィーチャに対して空間的な変更も属性の変更も検出されない場合、そのフィーチャは変更なしと見なされ、変更タイプ NC を取得します。
-
入力データのすべての領域の範囲は、処理範囲として使用されます。使用されるソース フィーチャとターゲット フィーチャの数は、処理メッセージにレポートされます。
フィーチャの照合の精度は、2 つの入力のデータ品質、複雑さ、および類似性に大きく依存します。
前処理でデータ エラーを最小化し、関連するフィーチャを入力として選択する必要があります。一般に、入力データセット内のフィーチャがトポロジ的に正しく、有効なジオメトリを有しており、シングルパートであって重複していないことは、常に役立ちます。そうでない場合、予期しない結果が発生するおそれがあります。
出力フィーチャクラスで、検出された変更を確認できます。2 つのデータ ソース間の空間的な相違が大きいことがわかり、一方のデータ ソースをもう一方によりマッチするように調整すべきだと判断することもあります。また、更新フィーチャとベース フィーチャ間での属性の割り当てが必要な場合もあります。[結合] ツールセット内のラバーシート処理および属性割り当てのツールは、このような変更を行うために役立ちます。
構文
DetectFeatureChanges_management (update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields})
パラメータ | 説明 | データ タイプ |
update_features | ベース フィーチャと比較するライン フィーチャ。 | Feature Layer |
base_features | 変更を検出するために更新フィーチャと比較するライン フィーチャ。 | Feature Layer |
out_feature_class | 変更情報を含む出力ライン フィーチャクラス。出力には、関係するすべての更新フィーチャ (マッチするものとしないもの)、およびマッチしないすべてのベース フィーチャが含まれます。 | Feature Class |
search_distance | 一致候補の検索に使用される距離。ゼロより大きい距離を指定する必要があります。優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。 | Linear unit |
match_fields [[source_field, target_field],...] (オプション) | 更新フィーチャとベース フィーチャからのフィールドのリスト。これを指定すると、照合候補に対して各フィールド ペアがチェックされるため、正しい適合を特定するために役立ちます。 | Value Table |
out_match_table (オプション) | 完全なフィーチャ照合情報を含む出力テーブル。 | Table |
change_tolerance (オプション) | 空間的な変更があるかどうかを判断するために使用される距離。マッチしたすべての更新フィーチャとベース フィーチャが、この許容範囲に対してチェックされます。更新フィーチャまたはベース フィーチャの一部がマッチしたフィーチャの周囲のゾーン外にある場合、空間的な変更と見なされます。0 以上の距離を指定できます。デフォルトは 0 です。0 より大きい値を指定すると、出力に LEN_PCT フィールドと LEN_ABS フィールドが含まれます。優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。 | Linear unit |
compare_fields [[source_field, target_field],...] (オプション) | マッチした更新フィーチャとベース フィーチャの間で属性の変更があるかどうかを判断するためのフィールド。 | Value Table |
コードのサンプル
DetectFeatureChanges (フィーチャの変更を検出) の例 1 (Python ウィンドウ)
次の Python ウィンドウ スクリプトは、DetectFeatureChanges (フィーチャの変更を検出) をイミディエイト モードで使用する方法を示しています。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.DetectFeatureChanges_edit("update_Roads.shp",
"base_Roads.shp", "output_changes.shp"
"25 Feet", #, #, "7.6 Meterd",
["rdClass", "roadClass"])
DetectFeatureChanges (フィーチャの変更を検出) の例 2 (スタンドアロン Python スクリプト)
次のスタンドアロン スクリプトは、DetectFeatureChanges (フィーチャの変更を検出) 関数をスクリプティング環境で適用する方法の例を示しています。
# Name: DetectFeatureChanges_example_script2.py
# Description: Perform change detection between newly received road data and
# existing road data and find the number of new roads and the
# total length of them.
# 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
updateFeatures = "updateRoads"
baseFeatures = "baseRoads"
dfcOutput = "dfc_out"
search_distance = "300 Feet"
match_fields = "RD_NAME FULLNAME"
statsTable = "new_roads_stats"
# Perform spatial change detection
arcpy.DetectFeatureChanges_management(updateFeatures, baseFeatures, dfcOutput, search_distance, match_fields)
# ====================================================================================
# Note 1: The result of DetectFeatureChanges may contain errors; see tool reference.
# Inspection and editing may be necessary to ensure correct CHANGE_TYPE N, which
# represents un-matched update feautres, before further calculations.
#
# One of the quick ways of checking whether the CHANGE_TYPE N features have
# matching base features is to find their mid-points and use them to search for
# features in base data, as processed below.
# ====================================================================================
# ======== Check update roads with CHANGE_TYPE N for potential match
# Make Feature Layer with selection of CHANGE_TYPE = 'N' (un-matched update features)
arcpy.MakeFeatureLayer_management(dfcOutput, "sel_N_layer", "CHANGE_TYPE = 'N'")
# Get mid-points of the selected features; the mid-points carry all the attributes.
arcpy.FeatureVerticesToPoints_management("sel_N_layer", "in_memory\midPts", "MID")
# Find nearest base features from the mid-points
arcpy.Near_analysis("in_memory\midPts", baseFeatures, "300 Feet")
# ====================================================================================
# Note 2: At this point you can manually inspect the midPts by the NEAR_DIST values;
# the lower the values, the higher chance (not always) a match was missed in the
# dfc process. Delete features from midPts that have found matching base features
# before further process.
# ====================================================================================
# Transfer CHANGE_TYPE values from features of midPts to update features
arcpy.JoinField_management(updateFeatures, "OBJECTID", "in_memory\midPts", "UPDATE_FID", "CHANGE_TYPE")
# Get the count of new roads and the total length; the remaining roads have
# Null values for CHANGE_TYPE.
arcpy.Frequency_analysis(updateFeatures, statsTable, "CHANGE_TYPE", "Shape_Length")
環境
ライセンス情報
- ArcGIS for Desktop Basic: ×
- ArcGIS for Desktop Standard: ×
- ArcGIS for Desktop Advanced: ○