10 votos

Eliminación de polígonos (definidos) en astilla mediante PostGIS?

¿Cómo escribo SQL (para PostGIS en PostgreSQL) para eliminar polígonos de astillas (incluyendo astillas largas y estrechas y algunos pequeños polígonos irregulares que eran "huecos" erróneos en el conjunto de datos original) de mi conjunto de datos fusionándolos con un polígono adyacente con el borde más largo?

Tengo un conjunto de datos (tablename: "Vegetation") que contiene varios miles de polígonos identificados como "sliver" o "real" en una columna de descripción (nombre de columna: "desc") como "sliver" o "main". Los polígonos no se superponen a otros polígonos y son mayores que la tolerancia que puedo aceptar en las coordenadas.

[Editar: Antes de importar mi conjunto de datos a PostGIS, lo limpié importándolo a GRASS (así es como convertí todos los huecos en pequeños polígonos, que posteriormente fusioné con el conjunto de datos principal). Descubrí que si aumentaba la tolerancia de ajuste y el área mínima más allá de '1' en la importación a GRASS, empezaba a perder las características deseadas].

Entiendo que puedo necesitar los siguientes pasos:

  1. Identifique el polígono (Vegetation.desc="main") adyacente a cada astilla (Vegetation.desc="sliver") que comparta el borde más largo.
  2. Identifique la arista entre cada astilla y su polígono principal adyacente que comparta la arista más larga identificada en el Paso 1. (Posiblemente utilizando ST_Relate)
  3. Elimine la arista entre cada astilla y su polígono principal adyacente que comparta la arista más larga utilizando el identificador de arista devuelto en el paso 2. (Posiblemente utilizando ST_RemEdgeModFace)

Sólo tengo un conocimiento muy básico de SQL y el proceso anterior está más allá de mi capacidad.

Rem : Sé que esto es posible en ArcGIS o GRASS con una sola función ("eliminar" o "v.clean rmarea"), pero quiero una solución para PostGIS.

0 votos

Extensión "postgis topology", si he entendido bien sólo la creación de la topología con mayor tolerancia que su sliver avarage limpiará geometrías. pero yo havenät hecho nada de eso

0 votos

Creo que perdería demasiada resolución al crear una topología con una tolerancia suficientemente grande debido al tamaño de algunas de las "astillas" (véase la aclaración en el texto). ¡Esto puede deberse a mi limitada comprensión, y soluciones más simples son muy bienvenidos!

0 votos

Bienvenido a gis y limpieza de datos ¿ Tienes acceso a FME ? ese es bastante fácil de usar y tiene alguna opción para eliminar astillas de los polígonos. Alternativas a gis.stackexchange.com/questions/24365/ y google parece encontrar respuestas pl/pgsql a tu pregunta (ni idea de lo buenas que son). Dicho esto, no hay manera super fácil de hacerlo que yo sepa, la limpieza a mano es la forma más "fácil" de hacerlo, pero puede tomar mucho tiempo.

3voto

Daniel Puntos 11

Lo utilizo cuando agrego las formas del conjunto de datos GADM2 en SQL Server:

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

En reduce() elimina los artefactos extendidos y acelera las cosas por un factor de 100x - un poco duro, pero bueno para aproximaciones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X