Sınırlayıcı kutunun köşelerini ST_Extent'ten nasıl alabilirim?


16

ST_Extent'ten aldığımız sınırlayıcı kutunun köşelerini enlem / boylamını getirmenin bir yolu var mı?

select ST_Extent(geom) from tableName;

Yanıtlar:


25

ST_Extent, xmin, ymin, xmax, ymax (sol alt, sağ üst koordinatlardan) oluşan bir kutu döndürür:

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

Sol alta karşılık gelen noktayı almak için sol alt X koordinatı (st_xmin) ve sol alt Y koordinatından (st_ymin) oluşan bir nokta oluşturabilirsiniz, örneğin:

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)

St_extent bir sınırlayıcı kutu döndürdüğünden, yeni oluşturulan noktanıza eklemek isteyebilirsiniz (OSM verilerimin SRID'siyle eşleşmek için 900913 kullanıyorum): SRID'yi geometrinizden ayırır:

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.