วิธีการดึงมุมของกล่องขอบจาก ST_Extent?


16

มีวิธีใดในการดึงละติจูด / ลองจิจูดของมุมของกล่องขอบเขตที่เราได้รับจาก ST_Extent หรือไม่?

select ST_Extent(geom) from tableName;

คำตอบ:


25

ST_Extent ส่งคืนกล่องที่ประกอบด้วย xmin, ymin, xmax, ymax (ล่างซ้าย, พิกัดบนขวา):

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

ในการดึงข้อมูลจุดที่สอดคล้องกับด้านล่างซ้ายคุณสามารถสร้างจุดที่ประกอบด้วยพิกัด X ด้านล่างซ้าย (st_xmin) และพิกัด Y ล่างซ้าย (st_ymin) เช่น:

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 ส่งคืนกล่องขอบเขตมันจะตัด SRID ออกจากรูปทรงเรขาคณิตของคุณดังนั้นคุณอาจต้องการเพิ่มลงในจุดที่สร้างขึ้นใหม่ของคุณ (ฉันใช้ 900913 เพื่อจับคู่ SRID ของข้อมูล 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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.