私はあなたのために何がうまくいくかもしれないという考えを持っています。これはいくつかの仮定に基づいていますが、同じ機能の可能性のあるリストを絞り込むのに役立ちます。これは自動化されたプロセスではありませんが、重複を手動で確認する必要があります。コメントに基づいて、自動化ツールは属性を比較しないようですので、これは誤って機能を削除しないようにするのに役立ちます。
ArcMapの使用
(1)問題が発生した場合に備えて、シェープファイルのコピーを作成します。
(2)列をシェープファイルにdoubleとして追加します。
(3)可能な限り最も記述的(最も正確)なフォーマットを使用して、各フィーチャの面積を計算します。丸めが問題にならない場合があります。
(4)その列で要約(要約)を実行します。サマリーで一意の識別子を選択し、最初と最後の両方にマークを付けてください。
(5)出力テーブルで、countフィールドが1より大きいレコードを探します。
(6a)機能を手動で確認し、重複がなくなるまでプロセスを繰り返します。
(6b)これらの一意のIDのリストを作成し、arcpyを使用して機能を削除することはできますが、同じ領域で2つの同一でない機能が存在する可能性があります。
ArcPyを使用する別のテクニック
上記の回答を作成しているときに、このデータの複数の作成者が重複した機能に同じ一意の識別子を実際に使用した可能性があると考えました。 IFそのような場合は、あなたがarcpyにループによる重複を見つけることができるかもしれません。
ArcPyを使用してこれを行うことについて私が考える方法は、システムに負担をかけ、少しかかる可能性があります。
(1)シェープファイルのコピーを作成します(もう一度)
(2)重複を示すために新しい列を追加します。「y」、「n」、0、1など、機能するものを使用します。
(3)Pythonでリストを作成して、一意の識別子を保存します。
(4)更新カーソル()を実行しますarcpy.UpdateCursor('LAYERNAME')
。各レコードについて、リストにその識別子が含まれているかどうかを確認し、重複がある場合は列に重複のマークを付けます。
myList = []
rows = arcpy.UpdateCursor("layername")
for row in rows:
if str(row.UniqueIdentifier) in myList:
#value duplicated
row.DuplicateColumnName = "y"
else:
#not there, add it
myList.append(row.UniqueIdentifier)
rows.updateRow(row)
(5)次に、これらのマークされた列を使用して、好きなように比較または実行できます。
おそらくこれらの比較を行うためのより良い方法があるでしょうが、それらは私がうまくいくか、少なくともあなたが始めるべきだと私が信じる二つです。
編集する
elrobisによるコメントに基づいて、最小外接長方形を利用して、誤ったフィーチャーを削除する可能性をさらに減らすことができます。
ArcMapを使用すると、データ管理で最小境界ジオメトリツールを実行できます。オプションをチェックした後、CONVEX_HULLオプションを使用するのがおそらく最善だと思います。
MBG_APodX / Y1、MBG_APod_X / Y2フィールドをMBG_Orientationと比較して重複を比較すると、重複した機能の良いアイデアが得られるはずです。上で説明したSummarizeメソッドを使用して比較することをお勧めします。境界長方形から頂点(座標)の1つを選択して、重複を見つけます。偶発的な「一致」がいくつか発生する可能性がありますが、他の頂点と方向を追加すると、結果の機能が重複することはかなり安全です。
まだ使用しておらず、このツールの結果もよくわかりませんが、ArcMapの[要約統計量]ツールを使用すると、結果のシェープファイルを簡単に調べることができます。私の単一列オプションの代わりに、複数の列をそのように要約できるようです。
重複しない機能を削除する可能性を心配せずに、これを完全に自動化する方法はないと思います。これらの方法は、手動で確認する必要がある機能の数を制限するのに役立ちます。