Jak odzyskać rogi obwiedni od ST_Extent?

16

Czy jest jakiś sposób, aby pobrać długość / szerokość narożników ramki granicznej, którą otrzymaliśmy od ST_Extent?

select ST_Extent(geom) from tableName;
Vicky
źródło

Odpowiedzi:

25

ST_Extent zwraca pole złożone z xmin, ymin, xmax, ymax (współrzędne dolne lewe, prawe górne):

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

Aby pobrać punkt odpowiadający lewej dolnej części, możesz zbudować punkt składający się z lewej dolnej współrzędnej X (st_xmin) i lewej dolnej współrzędnej Y (st_ymin), np .:

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)

Zauważ, że ponieważ st_extent zwraca ramkę ograniczającą, usuwa ona SRID z twojej geometrii, więc możesz chcieć dodać go do nowo utworzonego punktu (używam 900913, aby dopasować SRID moich danych OSM):

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
źródło