Réponses:
Comme @underdark a répondu , ST_Extent fera le travail, mais gardez à l'esprit qu'il ne renvoie pas une géométrie mais un box2d
. Si vous avez besoin d'un type de géométrie, vous devez utiliser quelque chose comme
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
De plus, si ce dont vous avez besoin est d'obtenir la boîte englobante de chacune des lignes que vous pouvez également utiliser ST_Extent
et un faux GROUP BY
comme celui-ci:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
En supposant que gid est la clé primaire de la table
Mais ST_Envelope fera un meilleur travail comme @ bugmenot123 l'a déclaré dans les commentaires
SELECT ST_Envelope(geom) FROM your_table ;
Une autre possibilité consiste à utiliser la ST_Envelope
fonction, qui renvoie une géométrie avec SRID,
ST_Envelope - Retourne une géométrie représentant la boîte englobante de la géométrie fournie
, ainsi que la fonction d'agrégation ST_Union
pour obtenir l'union de toutes les géométries (ou l'union de leurs enveloppes respectives) comme suit:
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
La deuxième option devrait être plus rapide car elle simplifie l'opération d'union en utilisant les enveloppes des géométries individuelles.
voir Source .
Ne pas appliquer d'agrégation spatiale devrait être beaucoup plus rapide:
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
! Ce n'est pas ce qui a été demandé.