Removendo polígonos de tira (definidos) usando o PostGIS? [fechadas]

9

Como escrevo SQL (para PostGIS no PostgreSQL) para remover polígonos de faixas (incluindo faixas longas e estreitas e alguns pequenos polígonos irregulares que foram 'lacunas' erradas no conjunto de dados original) do meu conjunto de dados, mesclando um polígono adjacente com a borda mais longa?

Eu tenho um conjunto de dados (tablename: "Vegetation" contendo vários milhares de polígonos identificados como uma tira ou um polígono 'real' em uma coluna de descrição (nome da coluna: "desc") como "sliver" ou "main". para importar meu conjunto de dados para o PostGIS, limpei-o importando para o GRASS (que também converti todas as lacunas em pequenos polígonos, que posteriormente foram mescladas com o conjunto de dados principal. Descobri se aumentei a tolerância de snap e a área mínima anterior ' 1 'na importação GRASS, comecei a perder os recursos desejados.]

Meu entendimento é que posso precisar das seguintes etapas:

  1. Identifique o polígono (Vegetation.desc = "main") adjacente a cada faixa (Vegetation.desc = "sliver") que compartilha a borda mais longa.
  2. Identifique a aresta entre cada fita e seu polígono principal adjacente, compartilhando a aresta mais longa identificada na Etapa 1. (Possivelmente usando ST_Relate)
  3. Remova a aresta entre cada fita e seu polígono principal adjacente, compartilhando a aresta mais longa usando o identificador de aresta retornado na Etapa 2. (Possivelmente usando ST_RemEdgeModFace)

Eu tenho apenas um entendimento muito básico do SQL e o processo acima está além da minha capacidade.

DavidM
fonte
extensão "topologia postgis", se entendi direito, basta criar uma topologia com tolerância maior do que a sua faixa média limpará as geometrias. mas eu não fiz nada assim
simplexio 28/01
Acredito que perderia muita resolução criando uma topologia com uma tolerância grande o suficiente devido ao tamanho de algumas das 'lascas' (ver esclarecimentos no texto). Isso pode ser devido ao meu entendimento limitado e soluções mais simples são muito bem-vindas!
DavidM 28/01
bem-vindo ao gis e limpeza de dados. Você tem acesso ao FME? esse é bem fácil de usar e tem alguma opção para remover lascas dos polígonos. Alternativas a gis.stackexchange.com/questions/24365/… e o google parecem encontrar respostas pl / pgsql para sua pergunta (não tem idéia de como elas são boas). Dito isto, não há maneira super fácil de fazer isso que eu sei, limpá-lo com a mão é "mais fácil" maneira de fazer isso, mas eu posso levar muuuito tempo
simplexio
O material prateado deixa buracos se você criar uma união ou haverá artefatos cruzados ou ambos os tipos de "erros de arredondamento"?
precisa saber é o seguinte
1
Resolvi meu problema temporariamente (para o projeto atual) usando o teste ARCGIS e aplicando a função de eliminação. Isso funcionou bem. Eu ainda gostaria de trabalhar em uma solução SQL usando o postgis.
DavidM

Respostas:

3

Eu uso isso ao agregar as formas do conjunto de dados GADM2 no SQL Server:

SET @g2 = @g1.STBuffer(1).Reduce(1).STBuffer(-1).Reduce(1)

Os reduce()limpa fora os artefatos estendidos e acelera as coisas por um fator de 100 vezes - um pouco áspero, mas bom para aproximações.

Daniel
fonte