Yanıtlar:
Gibi @underdark cevap , ST_Extent işi, ama bir geometriye ama dönmez akılda tutacak box2d
. Bir geometri tipine ihtiyacınız varsa,
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Ayrıca, ihtiyacınız olan her satırın sınırlayıcı kutusunu da kullanabilirsiniz ST_Extent
ve bunun gibi bir sahte GROUP BY
:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Gid'in tablonun birincil anahtarı olduğunu varsayarsak
Ancak @ bugmenot123 yorumlarda belirtildiği gibi ST_Envelope daha iyi bir iş çıkaracak
SELECT ST_Envelope(geom) FROM your_table ;
Başka bir olasılık, ST_Envelope
SRID ile bir geometri döndüren işlevi kullanmaktır ,
ST_Envelope - Sağlanan geometrinin sınırlayıcı kutusunu temsil eden bir geometri döndürür
, ST_Union
tüm geometrilerin birleşimini (veya ilgili zarfların birleşimini) elde etmek için toplama işlevi ile birlikte :
SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table
veya
SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table
İkinci seçenek, münferit geometrilerin zarflarını kullanarak birleştirme işlemini basitleştirdiğinden daha hızlı olmalıdır.
bkz. Kaynak .
Herhangi bir uzamsal toplamanın uygulanmaması çok daha hızlı olmalıdır:
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
! Yine de istenen bu değildi.