7 votos

¿Cuál es la mejor manera de combinar un montón de los adjacents pequeños polígonos? (POSTGIS)

Estoy buscando una manera de combinar un montón de pequeños polígonos adyacentes.

Tengo este tipo de características:

polygon_to_merge

Así que si mi polígonos adyacentes Y tienen el mismo atributo de color, a continuación, quiero combinar los polígonos. Normalmente, quiero combinar las características seleccionadas de la imagen. Yo intente agregar un "ST_TOUCHES" condición, pero todos los polígonos no están necesariamente conectados el uno al otro.

Otra pregunta en este sitio web es similar a este, pero no toman en cuenta que los polígonos necesidad de estar conectados.

Así que el primer paso debería ser algo como:

 SELECT ST_Union(ST_SnapToGrid(the_geom,0.0001)) 
 FROM my_poly
 GROUP BY color;

Pero cómo agregar la "necesidad de estar conectado" condición ?

Alguna idea ?

EDITAR

He encontrado una solución:

Paso 1) Combinación de todos los polígonos que tienen el mismo color.

Paso 2) Dividir multipartites polígonos a singleparts polígonos.

SELECT (ST_DUMP(ST_UNION(ST_SNAPTOGRID(the_geom,0.0001)))).geom, color
FROM my_poly
GROUP BY color

Pero quizás hay una solución mejor, porque estoy perdiendo algunas informaciones durante el paso 1).

3voto

obchardon Puntos 126

Finalmente encontré una solución:

Paso 1) Combinar todos los polígonos que tienen el mismo atributo 'color'.

Paso 2) Dividir multipartites polígonos a polígonos de singleparts con ST_DUMP.

SELECT (ST_DUMP(ST_UNION(ST_SNAPTOGRID(the_geom,0.0001)))).geom, color
FROM my_poly
GROUP BY color

Pero tal vez hay una solución mejor, porque estoy perdiendo algunas informaciones durante el paso 1).

ST_Dump devuelve una geometría (geom) y una matriz de enteros (path). Para seleccionar sólo la geometría que tienes que escribir(ST_Dump(my_geometry)).geom

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