Câu trả lời:
Như @underdark đã trả lời , ST_Extent sẽ thực hiện công việc, nhưng hãy nhớ rằng nó không trả về hình học mà là a box2d
. Nếu bạn cần một loại hình học, bạn nên sử dụng một cái gì đó như
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Ngoài ra, nếu những gì bạn cần là lấy hộp giới hạn của mỗi hàng bạn cũng có thể sử dụng ST_Extent
và giả GROUP BY
như thế này:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Giả sử rằng gid là khóa chính của bảng
Nhưng ST_En phong bì sẽ làm việc tốt hơn như @ bugmenot123 đã nêu trong các bình luận
SELECT ST_Envelope(geom) FROM your_table ;
Một khả năng khác là sử dụng ST_Envelope
hàm trả về hình học với SRID,
ST_En phong bì - Trả về một hình học đại diện cho hộp giới hạn của hình học được cung cấp
, cùng với chức năng tổng hợp ST_Union
để có được sự kết hợp của tất cả các hình học (hoặc kết hợp các phong bì tương ứng của chúng) như sau:
SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table
hoặc là
SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table
Tùy chọn thứ hai nên nhanh hơn vì nó đơn giản hóa hoạt động hợp nhất bằng cách sử dụng các phong bì của hình học riêng lẻ.
xem Nguồn .
Không thực thi bất kỳ tập hợp không gian nào sẽ nhanh hơn:
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
! Đó không phải là những gì được yêu cầu mặc dù.