4 votos

Fusionar polígonos parcialmente superpuestos en una tabla en PostGIS

Tengo un par de tablas (tres) con polígonos (cobertura de uso del suelo en este caso). Dentro de cada tabla, no hay superposición, pero entre tablas puede haber mucha superposición.

Me gustaría combinar los polígonos de las tablas en una sola tabla con polígonos sin superposición. Para resolver situaciones en las que las tablas de origen se superponen, me gustaría asignarle una prioridad a cada capa, de manera que se utilicen los polígonos de la capa con mayor prioridad en caso de superposición.

Una forma de visualizar lo que quiero hacer es dibujar las tablas una sobre otra, descartando los polígonos que ya se han dibujado donde hay superposición. También se podría decir que quiero fusionar las tres tablas en una sola. (Por favor, infórmame si hay algún término más apropiado para describir lo que quiero hacer.)

Un gran problema en este caso es el rendimiento: cada una de las tablas contiene millones de polígonos.

1voto

Arthur Puntos 1172

Puedes usar ST_Intersects para detectar cuando hay superposición entre las geometrías de dos tablas. Por ejemplo, el conjunto de polígonos devuelto por esta consulta sería el conjunto que deseas insertar en una nueva tabla "combinada", asumiendo que polígonos1 es la tabla de "mayor prioridad":

SELECT p1.geom
  FROM polygons1 p1, polygons2 p2
 WHERE ST_Intersects(p1.geom, p2.geom);

Para insertar los polígonos restantes de la tabla de polígonos2 de baja prioridad, simplemente toma la diferencia. Utilizo DISTINCT aquí porque obtendrás cada geometría en polígonos2 para cada geometría en polígonos1 con las que no se intersectan:

SELECT DISTINCT p1.geom
  FROM polygons1 p1, polygons2 p2
 WHERE NOT ST_Intersects(p1.geom, p2.geom);

Por lo tanto, puedes usar la primera consulta para identificar superposiciones de polígonos de baja prioridad para eliminar o usarla para encontrar superposición de polígonos de alta prioridad para guardar e insertar la diferencia de la segunda consulta.

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