답변:
으로 @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
두 번째 옵션은 개별 지오메트리의 엔벨로프를 사용하여 통합 조작을 단순화하므로 더 빠릅니다.
소스를 참조하십시오 .
공간 집계를 시행하지 않으면 더 빨라야합니다.
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
! 그것은 요구 된 것이 아닙니다.