จะแสดง LAT / LONG ของรูปหลายเหลี่ยมได้อย่างไร?

Aug 19 2020

ฉันมีตารางที่มีเขต Geom A (ประเภทgeometry)

ฉันต้องการแสดงค่าเป็นpolygonlat / long

ฉันจะทำมันได้อย่างไร?

ฉันเห็นโพสต์นี้:

https://gis.stackexchange.com/questions/95373/convert-geometry-to-latitude-longitude-using-postgis-st-transform/95376

แต่ฟังก์ชั่นST_X, ST_Yทำงานเฉพาะในและไม่ได้อยู่ในPOINTPOLYGON

ฉันจะแสดงฟิลด์ geom (ซึ่งมีรูปหลายเหลี่ยม) ในรูปแบบ lat / long ได้อย่างไร

คำตอบ

3 RubenHelsloot Aug 19 2020 at 17:15

ขึ้นอยู่กับผลลัพธ์ที่คุณต้องการST_ASGEOJSONทำทุกอย่างที่คุณต้องการอยู่แล้ว แต่อย่างอื่นคุณสามารถใช้ST_DUMPPOINTSเพื่อรับจุดแต่ละจุดทั้งหมดของรูปหลายเหลี่ยม

SELECT polygon.id,
       ( SELECT ARRAY_AGG(ST_Y(geom ORDER BY path))
         FROM ST_DUMPPOINTS(polygon) AS points ) as latitudes,
       ( SELECT ARRAY_AGG(ST_X(geom ORDER BY path))
         FROM ST_DUMPPOINTS(polygon) AS points ) as longitudes
FROM polygons

จะแสดงรายการละติจูดและลองจิจูดตามลำดับต่อรูปหลายเหลี่ยม หากคุณต้องการรวมเข้าด้วยกันให้ใช้JSON :

SELECT polygon.id,
       ( SELECT ARRAY_AGG(
             JSON_BUILD_OBJECT(
                 'latitude', ST_Y(geom),
                 'longitude', ST_X(geom)
             ) ORDER BY path)
         )
         FROM ST_DUMPPOINTS(polygon) AS points )
FROM polygons