Ответы:
Как ответил @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 является первичным ключом таблицы
Но 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
Второй вариант должен быть быстрее, поскольку он упрощает операцию объединения, используя огибающие отдельных геометрий.
см. Источник .
Отказ от какого-либо пространственного агрегирования должен быть намного быстрее:
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
! Это не то, что просили, хотя.