Answers:
正如@underdark回答的那样,ST_Extent将完成此工作,但请记住,它不会返回几何图形而是返回a 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是表的主键
但是,正如@ bugmenot123在评论中所述,ST_Envelope会做得更好
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
第二个选项应该更快,因为它通过使用各个几何形状的包络简化了联合操作。
参见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
!那不是要求的。