¿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:
- Identifique el polígono (Vegetation.desc="main") adyacente a cada astilla (Vegetation.desc="sliver") que comparta el borde más largo.
- 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)
- 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.
0 votos
Las cosas de plata dejarlo agujeros si se crea una unión o habrá artefactos intersecten o ambos tipo de "errores de redondeo"?
0 votos
Gracias por sus comentarios. No tengo acceso a FME.
1 votos
He resuelto temporalmente mi problema (para el proyecto actual) utilizando la versión de prueba de ARCGIS y aplicando la función eliminar. Ha funcionado bien. Todavía estaría dispuesto a trabajar en una solución SQL utilizando postgis.