Wie rufe ich die Ecken des Begrenzungsrahmens von ST_Extent ab?

16

Gibt es eine Möglichkeit, den Lat / Long der Ecken des Begrenzungsrahmens abzurufen, den wir von ST_Extent erhalten haben?

select ST_Extent(geom) from tableName;
Vicky
quelle

Antworten:

25

ST_Extent gibt eine Box aus xmin, ymin, xmax, ymax zurück (Koordinaten unten links, oben rechts):

osm=# select st_extent(way) from planet_osm_point;
                            st_extent                                
-------------------------------------------------------------------------
 BOX(2259828.73261444 5412478.55751597,3301031.7673783 6147766.43413396)

Um den Punkt abzurufen, der links unten entspricht, können Sie einen Punkt aus der linken unteren X-Koordinate (st_xmin) und der linken unteren Y-Koordinate (st_ymin) erstellen. Beispiel:

osm=# select st_astext(st_makepoint(st_xmin(st_extent(way)), st_ymin(st_extent(way)))) 
      from planet_osm_point;
            st_astext                 
------------------------------------------
 POINT(2259828.73261444 5412478.55751597)

Da st_extent einen Begrenzungsrahmen zurückgibt, wird die SRID von Ihrer Geometrie entfernt, sodass Sie sie möglicherweise zu Ihrem neu erstellten Punkt hinzufügen möchten (ich verwende 900913, um die SRID meiner OSM-Daten abzugleichen):

osm=# select st_asewkt(st_setsrid(st_makepoint(st_xmin(st_extent(way)), st_ymin(st_extent(way))), 900913)) 
      from planet_osm_point;
            st_astext                 
------------------------------------------
 SRID=900913;POINT(2259828.73261444 5412478.55751597)
diciu
quelle