Combinando conjuntos de dados de polígonos

8

Preciso combinar 2 conjuntos de dados grandes de polígonos. Um desses conjuntos de dados contém dados mais recentes; portanto, os polígonos desse conjunto de dados precisam ser copiados no conjunto de dados existente.

Existem três instâncias diferentes em que o conjunto de dados existente precisaria ser modificado. Veja abaixo as capturas de tela e explicações.

(Em todas as capturas de tela, o contorno vermelho tracejado representa os dados existentes. Os polígonos verdes são novos dados.)


Situação 1 - Polígono totalmente novo:

insira a descrição da imagem aqui

Ação - É necessário adicionar um novo polígono ao conjunto de dados existente. Polígonos que permanecem os mesmos podem ser ignorados.


Situação 2 - Um polígono existente mudou de forma:

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Ação - Os polígonos existentes precisam ser excluídos. É necessário adicionar um novo polígono ao conjunto de dados existente.


Situação 3 - Vários novos polígonos dentro de um polígono existente

insira a descrição da imagem aqui

Ação - O polígono que contém / grande existente precisa ser excluído. É necessário adicionar um novo polígono ao conjunto de dados existente.


Então, minha pergunta é; seria possível combinar esses conjuntos de dados de acordo com as regras acima, no QGIS ou no PostGIS?

Matt
fonte
Você pode usar um processo diferente para cada situação.
Kingfisher
@ Kingfisher Sim, eu estava pensando que poderia ser necessário ... Todas as sugestões são bem-vindas!
Matt
Como sabemos se o polígono é novo? Você está fornecendo gráficos, que tal uma definição de tabela? Cole a saída de\d table
Evan Carroll
@ Evan atualmente não há nada nas tabelas para indicar polígonos novos / antigos, mas seria simples adicionar algo.
Matt

Respostas:

6

Eu acredito que você pode fazer tudo isso em 2 etapas. Primeiro, exclua todos os polígonos existentes onde a nova tabela de polígonos os cruza. No caso 1, os polígonos existentes não serão tocados. Nos casos 2 e 3, todos os polígonos existentes que cresceram (e possivelmente se fundiram em um) ou encolheram (e possivelmente se dividiram em outros menores) serão excluídos. Em seguida, basta inserir os novos polígonos na tabela existente, que cobrirá os casos 2 e 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 Powell
fonte
Graças @ John, eu acho que você poderia muito bem estar bem com isso ... eu vou dar-lhe uma tentativa
Matt
É melhor fazer uma cópia da tabela polígonos existentes primeira :-)
John Powell
2
Isso está funcionando? Tenho certeza de que a lógica está correta, mas estaria interessado em saber se perdi alguma coisa.
John Powell
Funcionou bem, com exceção de alguns polígonos excluídos que precisavam ser mantidos (mas isso foi apenas devido a dados confusos) e relativamente fácil de corrigir. Obrigado John.
19416 Matt
Estou feliz. Espero que você tenha feito um backup dos dados. Eu senti que esses diagramas agradáveis ​​mereciam uma resposta mais complexa, mas às vezes coisas que parecem complicadas não são. Infelizmente, o oposto também é muito verdadeiro.
John Powell