Tengo una base de datos en PostgreSQL / PostGIS con polígonos así que ¿cómo puedo fusionar algunos polígonos en multipolygons de la base de datos utilizándolo como QGIS Layer?
Respuestas
¿Demasiados anuncios?
Braiam
Puntos
120
Puede utilizar st_collect
para agregar polígonos en multipolígonos:
with src as (
select 1 as gp, st_geomFromText('Polygon((0 0, 0 1, 1 1, 1 0, 0 0))') geom
union
select 1, st_geomFromText('Polygon((10 10, 10 11, 11 11, 11 10, 10 10))')
union
select 2, st_geomFromText('Polygon((20 20, 20 21, 21 21, 21 20, 20 20))')
)
select gp,
st_asText(st_collect(geom))
from src
group by gp;
gp | st_astext
----+-------------------------------------------------------------------------
1 | MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((10 10,10 11,11 11,11 10,10 10)))
2 | MULTIPOLYGON(((20 20,20 21,21 21,21 20,20 20)))
Cyril
Puntos
141
También puede utilizar la función ST_Multi http://postgis.net/docs/ST_Multi.html
WITH src as (
SELECT ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0),
(10 10, 10 11, 11 11, 11 10, 10 10))') geom)
SELECT ST_AsText(ST_Multi(geom)) from src group by geom;
resultado:
MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0),(10 10,10 11,11 11,11 10,10 10)))