Postgis - Convertir el tipo de datos 'geometry_dump' a un tipo 'geometry'

13

Estoy trabajando con un conjunto de datos de límites de propiedades que han ejecutado ST_Union (), por lo que todos los polígonos aparecen como un polígono múltiple en una fila de una tabla. Me gustaría separarlos para obtener una fila / polígono separado para cada forma. He intentado ejecutar ST_Dump () en esto y parece separar los polígonos en el conjunto de datos, pero ya no puedo ver esto en un SIG (actualmente estoy usando QGIS). El tipo de datos para esta columna dice que es un 'geometry_dump' y asumo que es por eso que no puedo visualizarlo. Cuando accedo a mi base de datos Postgres desde QGIS, esta nueva tabla aparece debajo del encabezado de conjuntos de datos sin una geometría.

¿Alguien sabe si hay algo que pueda hacer para convertir un 'geometry_dump' en un 'geometry'?

    
pregunta Roman Trubka 04.05.2012 - 02:33

1 respuesta

22

El tipo de datos geometry_dump es un simple tipo compuesto con dos campos: path[] (una matriz 1-d que contiene la posición de la geometría dentro del objeto volcado) y geom , que es lo que desea. Para acceder a geom , solo use (ST_Dump(the_geom)).geom (se requieren los paréntesis adicionales, y es un poco difícil de entender cuando se accede a miembros de tipos compuestos). Por ejemplo:

WITH data AS (SELECT 'MULTIPOLYGON (((170 190, 110 150, 200 120, 170 190)), 
  ((220 160, 230 110, 280 120, 220 160)), 
  ((220 200, 260 240, 270 190, 220 200)))'::geometry AS the_geom)

SELECT ST_AsText( (ST_Dump(the_geom)).geom )
FROM data;
                 st_astext
--------------------------------------------
 POLYGON((170 190,110 150,200 120,170 190))
 POLYGON((220 160,230 110,280 120,220 160))
 POLYGON((220 200,260 240,270 190,220 200))
(3 rows)

El manual de PostGIS tiene otros buenos ejemplos para ST_Dump.

    
respondido por el Mike T 04.05.2012 - 03:03

Lea otras preguntas en las etiquetas