Risposte:
Come ha risposto @underdark , ST_Extent farà il lavoro, ma tieni presente che non restituisce una geometria ma a box2d
. Se hai bisogno di un tipo di geometria, dovresti usare qualcosa di simile
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Inoltre, se ciò di cui hai bisogno è ottenere il riquadro di delimitazione di ciascuna delle righe che puoi anche usare ST_Extent
e un falso GROUP BY
come questo:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Supponendo che gid sia la chiave primaria della tabella
Ma ST_Envelope farà un lavoro migliore come indicato da @ bugmenot123 nei commenti
SELECT ST_Envelope(geom) FROM your_table ;
Un'altra possibilità è utilizzare la ST_Envelope
funzione, che restituisce una geometria con SRID,
ST_Envelope: restituisce una geometria che rappresenta il rettangolo di selezione della geometria fornita
, insieme alla funzione aggregata ST_Union
per ottenere l'unione di tutte le geometrie (o l'unione delle rispettive buste) come segue:
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 seconda opzione dovrebbe essere più veloce in quanto semplifica l'operazione di unione utilizzando le buste delle singole geometrie.
vedi fonte .
Non applicare alcuna aggregazione spaziale dovrebbe essere molto più veloce:
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
! Non è quello che è stato chiesto però.