Gibt es eine einfache Möglichkeit, den Begrenzungsrahmen für eine ganze Tabelle in PostGIS abzurufen?
19
Wie @underdark antwortete , erledigt ST_Extent die Aufgabe, aber denken Sie daran, dass es keine Geometrie zurückgibt , sondern eine box2d
. Wenn Sie einen Geometrietyp benötigen, sollten Sie so etwas verwenden
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Wenn Sie den Begrenzungsrahmen für jede der Zeilen benötigen, können Sie auch ST_Extent
eine Fälschung GROUP BY
wie die folgende verwenden:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Angenommen, gid ist der Primärschlüssel der Tabelle
Aber ST_Envelope wird einen besseren Job machen als @ bugmenot123 in den Kommentaren
SELECT ST_Envelope(geom) FROM your_table ;
ST_Envelope
! Das ist jedoch nicht das, wonach gefragt wurde.Eine andere Möglichkeit ist die Verwendung der
ST_Envelope
Funktion, die eine Geometrie mit SRID zurückgibt.zusammen mit der Aggregatfunktion
ST_Union
, um die Vereinigung aller Geometrien (oder die Vereinigung der jeweiligen Hüllkurven) wie folgt zu erhalten:oder
Die zweite Option sollte schneller sein, da sie die Vereinigungsoperation vereinfacht, indem die Umschläge der einzelnen Geometrien verwendet werden.
siehe Quelle .
quelle
Das Nichterzwingen einer räumlichen Aggregation sollte viel schneller erfolgen:
quelle