回答:
以下のよう@underdarkは答えた、ST_Extentは仕事をするが、それは、ジオメトリが、返さないことに注意してくださいますbox2d
。ジオメトリタイプが必要な場合は、次のようなものを使用する必要があります
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
また、必要なのが各行の境界ボックスを取得することでST_Extent
あり、これも使用でき、次の GROUP BY
ような偽物です:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
gidがテーブルの主キーであると仮定します
しかし、ST_Envelopeは @ bugmenot123はコメントで述べたように、より良い仕事をします
SELECT ST_Envelope(geom) FROM your_table ;
別の可能性はST_Envelope
、SRIDを持つジオメトリを返す関数を使用することです。
ST_Envelope —指定されたジオメトリの境界ボックスを表すジオメトリを返します
、ST_Union
次のようにすべてのジオメトリの結合(またはそれぞれのエンベロープの結合)を取得する集約関数とともに:
SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table
または
SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table
2番目のオプションは、個々のジオメトリのエンベロープを使用して結合操作を簡素化するため、より高速になります。
Sourceを参照してください。
空間集約を強制しないほうがはるかに高速です。
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
!しかし、それは求められたものではありません。