Apakah ada cara mudah untuk mendapatkan kotak pembatas untuk seluruh tabel di PostGIS?
19
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 ;
ST_Envelope
! Tapi bukan itu yang diminta.Kemungkinan lain adalah menggunakan
ST_Envelope
fungsi, yang mengembalikan geometri dengan SRID,, bersama dengan fungsi agregat
ST_Union
untuk memperoleh penyatuan semua geometri (atau penyatuan amplop masing-masing) sebagai berikut:atau
Opsi kedua harus lebih cepat karena menyederhanakan operasi penyatuan dengan menggunakan amplop geometri individu.
lihat Sumber .
sumber
Tidak menerapkan agregasi spasial apa pun harus lebih cepat:
sumber