フィーチャ比較(Feature Compare) (データ管理)
サマリ
2 つのフィーチャクラスまたはレイヤを比較して、比較結果を返します。[フィーチャ比較(Feature Compare)] は、ジオメトリ、テーブル値、空間参照、およびフィールド定義の相違点をレポートできます。
使用法
-
このツールは、比較結果を示すメッセージを返します。デフォルトで、最初の不一致が検出されるとこのツールは実行を停止します。相違点をすべてレポートする場合は、[継続を比較] パラメータをオンにします。
-
複数のソート フィールドを指定できます。最初のフィールドが並べ替えられたら、2 番目のフィールドが並べ替えられ、以降、昇順で並べ替えが行われます。[入力ベース フィーチャ] と [入力テスト フィーチャ] の両方に共通するフィールドでソートすることで、各入力データセットの同じ行を確実に比較できるようになります。
-
デフォルトで、比較タイプは ALL に設定されます。これは、空間参照、フィールド プロパティ、属性、ジオメトリなどを含め、比較対象のフィーチャのすべてのプロパティがチェックされるということを意味します。ただし、比較対象のフィーチャの特定のプロパティのみがチェックされるように別の比較タイプを選択することもできます。
-
[比較対象外のプロパティ] を使用すると、メジャー属性、Z 属性、ポイント ID 属性、エクステンション プロパティなどのプロパティを比較から除外できます。2 つのフィーチャクラスが一致している可能性があるが、一方にはメジャーと Z 座標が含まれ、もう一方には含まれていない場合は、これらのプロパティを比較対象外にすることができます。IGNORE_EXTENSION_PROPERTIES オプションは、フィーチャクラスまたはテーブルに追加される追加情報を参照します。たとえば、2 つのアノテーション フィーチャクラスのフィーチャが一致している可能性があるが、これらのフィーチャクラスが、シンボル コレクション内の異なるシンボルや異なる編集時の振舞いなど、異なるエクステンション プロパティを持っている場合があります。
-
デフォルト XY 許容値は [入力ベース フィーチャ] のデフォルト XY 許容値によって指定されます。エラーを最小限に抑えるため、この比較許容値には、できるだけ小さい値を選択してください。XY 許容値に 0 を入力すると、完全一致検索が実行されます。
-
デフォルト M 許容値とデフォルト Z 許容値は、[入力ベース フィーチャ] のデフォルト M 許容値および Z 許容値によって指定されます。この単位は、[入力ベース フィーチャ] の単位と同じです。M 許容値と Z 許容値に 0 を入力すると、完全一致検索が実行されます。
-
GEOMETRY_ONLY の比較では、空間参照が一致する必要があります。空間参照が異なる場合は、不一致が報告されます。いずれかの入力の座標系が異なる場合は、フィーチャが不一致となります。このツールではリアルタイムの投影変換は行われません。
-
[除外フィールド] パラメータは、フィールド数の比較に含まれない、つまり、フィールド定義とテーブル値が無視されるフィールドの一覧になります。
-
属性許容値は、数値フィールド タイプにのみ指定できます。
-
[出力比較ファイル] には、[入力ベース フィーチャ] と [入力テスト フィーチャ] 間の類似点と相違点がすべて含まれます。このファイルは、ArcGIS でテーブルとして表示および使用できる、カンマ区切りテキスト ファイルです。たとえば、このテーブルを検索して、差異のあるすべての行のすべての ObjectID 値を取得できます。「has_error」フィールドはそのレコードにエラーがあることを示しています。True は相違点があることを示しています。
-
最初に比較されるものとして、フィーチャの数があります。フィーチャの数の相違が報告されたときに、[比較を継続] パラメータが True である場合は、[入力ベース フィーチャ] と [入力テスト フィーチャ] 間のその他の相違が、以降の比較メッセージに正確に反映されない場合があります。これは、[フィーチャ比較(Feature Compare)] が [入力テスト フィーチャ] で追加または削除されたフィーチャの場所を判定せず、単に各属性テーブルの次の行に移動することが原因です。ツールは属性テーブルのフィーチャが追加または削除された場所で次の行に移動しますが、[入力テスト データ] で比較対象のフィーチャが削除されているか、対象のフィーチャの前に別のフィーチャが追加されているため、ベース フィーチャと誤ったテスト フィーチャとの比較を開始します。
-
Python でこのツールを使用する場合は、result.getOutput(1) を使用してこのツールのステータスを取得できます。相違点が検出されない場合は値が 'true'、相違点が検出された場合は 'false' になります。
構文
パラメータ | 説明 | データ タイプ |
in_base_features |
入力ベース フィーチャが入力テスト フィーチャと比較されます。入力ベース フィーチャは、正しいデータを参照します。このベース データは正しいジオメトリ定義、フィールド定義、および空間参照を保持しています。 | Feature Layer |
in_test_features |
入力テスト フィーチャが入力ベース フィーチャに対して比較されます。入力テスト フィーチャは、新規フィーチャの編集またはコンパイルによって変更を行ったデータを参照します。 | Feature Layer |
sort_field [sort_field,...] |
入力ベース テーブルと入力テスト テーブル内のレコードをソートするために使用するフィールド(複数も可)。レコードは昇順で並べ替えられます。入力ベース フィーチャと入力テスト フィーチャの両方に共通するフィールドでソートすることで、各入力データセットの同じ行を確実に比較できるようになります。 | Value Table |
compare_type (オプション) |
比較タイプ。「ALL」がデフォルトです。デフォルトでは、比較対象のフィーチャのすべてのプロパティが比較されます。
| String |
ignore_options [ignore_option,...] (オプション) |
これらのプロパティは、比較時に比較されません。
| String |
xy_tolerance (オプション) |
フィーチャが同一と見なされる範囲を指定する距離。エラーを最小限に抑えるため、この比較許容値には、できるだけ小さい値を選択してください。デフォルトで、この比較許容値は入力ベース フィーチャの XY 許容値になります。 | Linear unit |
m_tolerance (オプション) |
メジャー許容値は、メジャーが同一と見なされるためのメジャー値間の最小距離範囲です。 | Double |
z_tolerance (オプション) |
Z 許容値は、Z 座標が同一と見なされるための Z 座標値間の最小距離範囲です。 | Double |
attribute_tolerances [[Field, {Tolerance}],...] (オプション) |
属性値が等しいと考えられる範囲を決める数値。これは数値フィールド タイプにのみ適用されます。 | Value Table |
omit_field [omit_field,...] (オプション) |
比較時に除外されるフィールド。これらのフィールドのフィールド定義とテーブル値は無視されます。 | String |
continue_compare (オプション) |
最初の不一致を検出した後にすべてのプロパティを比較するかどうかを示します。
| Boolean |
out_compare_file (オプション) |
このファイルには、[入力ベース フィーチャ] と [入力テスト フィーチャ] 間の類似点と相違点がすべて含まれます。このファイルは、ArcGIS でテーブルとして表示および使用できる、カンマ区切りテキスト ファイルです。 | File |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで FeatureCompare(フィーチャ比較)関数を使用する方法を示しています。
import arcpy
arcpy.FeatureCompare_management(r'C:/Workspace/baseroads.shp', r'C:/Workspace/newroads.shp', 'ROAD_ID', 'ALL', 'IGNORE_M;IGNORE_Z', '0.001 METERS', 0, 0, 'Shape_Length 0.001', '#', 'CONTINUE_COMPARE', e = r'C:/Workspace/roadcompare.txt')
スタンドアロン スクリプトで FeatureCompare(フィーチャ比較)ツールを使用する方法の例。
# Name: FeatureCompare.py
# Description: Compare two feature classes and return comparison result.
# import system modules
import arcpy
try:
# Set local variables
base_features = "C:/Workspace/baseroads.shp"
test_features = "C:/Workspace/newroads.shp"
sort_field = "ROAD_ID"
compare_type = "ALL"
ignore_option = "IGNORE_M;IGNORE_Z"
xy_tolerance = "0.001 METERS"
m_tolerance = 0
z_tolerance = 0
attribute_tolerance = "Shape_Length 0.001"
omit_field = "#"
continue_compare = "CONTINUE_COMPARE"
compare_file = "C:/Workspace/roadcompare.txt"
# Process: FeatureCompare
compare_result = arcpy.FeatureCompare_management(base_features, test_features, sort_field, compare_type, ignore_option, xy_tolerance, m_tolerance, z_tolerance, attribute_tolerance, omit_field, continue_compare, compare_file)
print compare_result.getOutpuput(1)
print arcpy.GetMessages()
except:
# Print error message if an error occurs
print arcpy.GetMessages()