フィーチャレイヤーの各ジオメトリを一意に識別することは可能ですか?
基本的に、同じジオメトリで表される多数のデータ行を持つポリゴンフィーチャレイヤーがあります。一意のジオメトリごとに1行が必要です。そのため、ジオメトリの形状に基づいて属性を組み合わせるための、すぐに使用できる方法を探しています。
私はPostgresの世界から来て、そこでこの問題を解決できますが、ESRIツールで非プログラム的にそれを行う方法(または可能かどうか)を知りません。
フィーチャレイヤーの各ジオメトリを一意に識別することは可能ですか?
基本的に、同じジオメトリで表される多数のデータ行を持つポリゴンフィーチャレイヤーがあります。一意のジオメトリごとに1行が必要です。そのため、ジオメトリの形状に基づいて属性を組み合わせるための、すぐに使用できる方法を探しています。
私はPostgresの世界から来て、そこでこの問題を解決できますが、ESRIツールで非プログラム的にそれを行う方法(または可能かどうか)を知りません。
回答:
高度なライセンスをお持ちの場合は、同一検索または同一削除を使用できます。
両方を使用して、同じ属性を持つフィーチャを検索または削除できます。または、Shapeフィールドが指定されている場合は、同じジオメトリを検索または削除できます。
高度なライセンスを持っていない場合は、この投稿が役立ちます。
つまり、属性テーブルにX、Yの2つのフィールドを追加し、これらのフィールドでDissolveを実行します。
同じ重心を共有するが幾何学的に同一ではないポリゴンがある場合、他の2つのフィールド(境界と面積)を追加できます。これは、ほとんどすべての通常のケースで同一のジオメトリを識別するのに十分なはずです。以下の@whuberのコメントを参照してください。
調査データに基づくデータセットがあります。私の問題は、新しいサーベイショットがインポートされる前に古い機能が常に削除されないことです。したがって、異なるジオメトリの「重複」があります。つまり、調査ショットは互いに1/4フィート離れている可能性があります。12000のフィーチャデータセットでは、これをそれぞれにズームインして識別するのは困難です。ArcMap Basic 10.2の使用:私が思いついたハックモデルです。
私は車輪を再発明しました。また、モデルビルダーに不満を抱き、基本的にすべてをブルドッグにしています。よりエレガントなソリューションが必要です。批判や提案を喜んで受け入れます。
また、これはモデルビルダー内からのみ正しく実行されるようです。ツールボックスから実行しますが、バッファーレイヤーは保存されません。
私は、バッファポリゴンの重複問題の平坦化を克服し、それに対する堅牢なソリューションを見つけたと思うために、しばらくの間同じ質問に対する答えを探していました。実際、@ Whuberのコメント、
原則として、重心、境界線、および面積は依然としてポリゴンを一意に識別しない可能性がありますが、反例は少し工夫されています。
@Paulの答えは、私が挑戦し続ける主な動機でした。これは、他の同一の検出器の中で最も効率的であるため、空間結合ツールのARE_IDENTICAL_TO演算子を使用します。手順は次のとおりです。
次の手順は、WITH PythonまたはWITHOUTの2つの方法で実行できます。
パイソン付き
print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))
。
ダミーのOIDフィールドの2番目のコピー(私の場合はEX_OID_1)を使用していることに注意してください。
OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)
。その結果、重複するパーツの統一された機能が表示されます。ただし、30,000文字のサイズ制限があります。この問題を解決するには、「Pythonなし」の手順に従う必要があります。パイソンなし
頻度ツールを使用して、ダミーOIDフィールドの2番目のコピーに一意の値をリストします(私の場合はEX_OID_1です)。
最後に、[ 一致するレコードのみを保持]オプションを選択して、元のフィーチャクラスのOBJECTIDフィールドを頻度ツールのEX_OID_1の出力に結合します。