Respuestas:
ST_Extent debería hacer el truco.
ST_Extent: una función agregada que devuelve el cuadro delimitador que limita las filas de geometrías.
Aplicado así:
SELECT ST_Extent(the_geom) as table_extent FROM your_table;
Como respondió @underdark , ST_Extent hará el trabajo, pero tenga en cuenta que no devuelve una geometría sino a box2d
. Si necesita un tipo de geometría, debe usar algo como
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Además, si lo que necesita es obtener el cuadro delimitador de cada una de las filas que también puede usar ST_Extent
y un falso GROUP BY
como este:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Suponiendo que gid es la clave principal de la tabla
Pero ST_Envelope hará un mejor trabajo como @ bugmenot123 declaró en los comentarios
SELECT ST_Envelope(geom) FROM your_table ;
Otra posibilidad es usar la ST_Envelope
función, que devuelve una geometría con SRID,
ST_Envelope: devuelve una geometría que representa el cuadro delimitador de la geometría proporcionada
, junto con la función de agregado ST_Union
para obtener la unión de todas las geometrías (o la unión de sus respectivas envolventes) de la siguiente manera:
SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table
o
SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table
La segunda opción debería ser más rápida, ya que simplifica la operación de unión mediante el uso de envolventes de geometrías individuales.
ver Fuente .
No aplicar ninguna agregación espacial debería ser mucho más rápido:
select
min(ST_XMin(geom)) as l,
min(ST_YMin(geom)) as b,
max(ST_XMax(geom)) as r,
max(ST_YMax(geom)) as t
from x
ST_Envelope
! Sin embargo, eso no fue lo que se pidió.