Respostas:
Como o @underdark respondeu , o ST_Extent fará o trabalho, mas lembre-se de que ele não retorna uma geometria, mas a box2d
. Se você precisar de um tipo de geometria, use algo como
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Além disso, se o que você precisa é obter a caixa delimitadora de cada uma das linhas, você também pode usar ST_Extent
uma farsa GROUP BY
como esta:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Supondo que gid é a chave primária da tabela
Mas ST_Envelope fará um trabalho melhor como @ bugmenot123 afirmou nos comentários
SELECT ST_Envelope(geom) FROM your_table ;
Outra possibilidade é usar a ST_Envelope
função, que retorna uma geometria com SRID,
ST_Envelope - Retorna uma geometria representando a caixa delimitadora da geometria fornecida
, juntamente com a função agregada ST_Union
para obter a união de todas as geometrias (ou a união de seus respectivos envelopes) da seguinte maneira:
SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table
ou
SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table
A segunda opção deve ser mais rápida, pois simplifica a operação de união usando os envelopes de geometrias individuais.
veja Fonte .
Não aplicar nenhuma agregação espacial deve ser muito mais 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
! Não foi o que foi pedido.