ポリゴンデータセットの結合


8

2つの大きなポリゴンデータセットを組み合わせる必要があります。これらのデータセットの1つに最新のデータが含まれているため、このデータセットのポリゴンを既存のデータセットにコピーする必要があります。

既存のデータセットを変更する必要がある3つの異なるインスタンスがあります。スクリーンショットと説明については、以下を参照してください。

(すべてのスクリーンショットで、赤い破線の輪郭は既存のデータを表しています。緑のポリゴンは新しいデータです。)


状況1-まったく新しいポリゴン:

ここに画像の説明を入力してください

アクション -新しいポリゴンを既存のデータセットに追加する必要があります。同じままのポリゴンは無視できます。


状況2-既存のポリゴンの形状が変わった:

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

アクション -既存のポリゴンを削除する必要があります。次に、新しいポリゴンを既存のデータセットに追加する必要があります。


状況3-既存のポリゴン内の複数の新しいポリゴン

ここに画像の説明を入力してください

アクション -既存の包含/大きなポリゴンを削除する必要があります。次に、新しいポリゴンを既存のデータセットに追加する必要があります。


だから、私の質問です。QGISまたはPostGISのいずれかで、上記のルールに従ってこれらのデータセットを組み合わせることができますか?


状況ごとに異なるプロセスを使用することに慣れていますか?
キングフィッシャー

@Kingfisherはい私はそれが必要かもしれないと思っていました...どんな提案でも歓迎します!
Matt

ポリゴンが新しいかどうかはどうすればわかりますか?グラフィックを提供していますが、テーブル定義はどうですか?出力を貼り付けます\d table
Evan Carroll

@Evan現在、テーブルには新しい/古いポリゴンを示すものはありませんが、何かを追加するのは簡単です。
Matt

回答:


6

このすべてを2つのステップで実行できると思います。最初に、新しいポリゴンテーブルが交差する既存のポリゴンをすべて削除します。ケース1では、既存のポリゴンは変更されません。ケース2と3では、大きくなった(場合によっては1つにマージされる)または縮小された(そして場合によってはより小さなポリゴンに分割された)既存のポリゴンがすべて削除されます。次に、ケース2と3をカバーする既存のテーブルに新しいポリゴンを挿入するだけです。

DELETE FROM existing_polygons a USING new_polygons b
WHERE ST_Intersects(a.geom, b.geom);

INSERT INTO existing_polygons 
SELECT * FROM new_polygons;

@Johnに感謝します。これで十分だと思います...試してみます
Matt

最初に既存のポリゴンテーブルのコピーを作成することをお勧めします:-)
John Powell

2
これは稼働していますか?ロジックは正しいと私は合理的に確信していますが、何かを見落としたかどうか知りたいです。
ジョンパウエル

保持する必要がある削除されたいくつかのポリゴンは別ですが(ただし、これは乱雑なデータが原因でした)、比較的簡単に修正できます。ジョンに感謝します。
Matt

私は嬉しい。データのバックアップがあったことを願っています。そのような素晴らしい図はもっと複雑な答えに値すると感じましたが、時々複雑に見えるものはそうではありません。悲しいことに、その逆もまた真実です。
ジョンパウエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.