Bagaimana cara mengambil sudut kotak pembatas dari ST_Extent?

16

Apakah ada cara untuk mengambil lat / panjang dari sudut kotak pembatas yang kami dapatkan dari ST_Extent?

select ST_Extent(geom) from tableName;
Vicky
sumber

Jawaban:

25

ST_Extent mengembalikan kotak yang terdiri dari xmin, ymin, xmax, ymax (kiri bawah, koordinat kanan atas):

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

Untuk mengambil titik yang sesuai dengan kiri bawah, Anda dapat membangun titik yang terdiri dari koordinat X kiri bawah (st_xmin) dan koordinat kiri bawah Y (st_ymin), misalnya:

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)

Perhatikan bahwa karena st_extent mengembalikan kotak pembatas, ini menghilangkan SRID dari geometri Anda sehingga Anda mungkin ingin menambahkannya ke titik yang baru Anda buat (saya menggunakan 900913 untuk mencocokkan SRID data OSM saya):

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
sumber