มีวิธีใดในการดึงละติจูด / ลองจิจูดของมุมของกล่องขอบเขตที่เราได้รับจาก ST_Extent หรือไม่?
select ST_Extent(geom) from tableName;
มีวิธีใดในการดึงละติจูด / ลองจิจูดของมุมของกล่องขอบเขตที่เราได้รับจาก ST_Extent หรือไม่?
select ST_Extent(geom) from tableName;
คำตอบ:
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)