Como recuperar os cantos da caixa delimitadora de ST_Extent?

16

Existe alguma maneira de buscar o lat / long dos cantos da caixa delimitadora que recebemos de ST_Extent?

select ST_Extent(geom) from tableName;
Vicky
fonte

Respostas:

25

ST_Extent retorna uma caixa composta por xmin, ymin, xmax, ymax (coordenadas inferior esquerda, superior direita):

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

Para recuperar o ponto correspondente à parte inferior esquerda, é possível construir um ponto composto pelas coordenadas X inferior esquerda (st_xmin) e coordenada Y inferior esquerda (st_ymin), por exemplo:

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)

Observe que, como st_extent retorna uma caixa delimitadora, retira o SRID da sua geometria, portanto, você pode adicioná-lo ao seu ponto recém-criado (estou usando 900913 para corresponder ao SRID dos meus dados 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
fonte