Jawaban:
Ketika @underdark menjawab , ST_Extent akan melakukan pekerjaan, tetapi perlu diingat bahwa itu tidak mengembalikan geometri tetapi a box2d
. Jika Anda membutuhkan tipe geometri, Anda harus menggunakan sesuatu seperti
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Juga, jika yang Anda butuhkan adalah mendapatkan kotak pembatas dari setiap baris yang dapat Anda gunakan ST_Extent
dan yang palsu GROUP BY
seperti ini:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Dengan asumsi bahwa gid adalah kunci utama dari tabel
Tetapi ST_Envelope akan melakukan pekerjaan yang lebih baik seperti yang dinyatakan oleh @ bugmenot123 dalam komentar
SELECT ST_Envelope(geom) FROM your_table ;
Kemungkinan lain adalah menggunakan ST_Envelope
fungsi, yang mengembalikan geometri dengan SRID,
ST_Envelope - Mengembalikan geometri yang mewakili kotak pembatas dari geometri yang disediakan
, bersama dengan fungsi agregat ST_Union
untuk memperoleh penyatuan semua geometri (atau penyatuan amplop masing-masing) sebagai berikut:
SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table
atau
SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table
Opsi kedua harus lebih cepat karena menyederhanakan operasi penyatuan dengan menggunakan amplop geometri individu.
lihat Sumber .
Tidak menerapkan agregasi spasial apa pun harus lebih cepat:
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
! Tapi bukan itu yang diminta.