จะแสดง LAT / LONG ของรูปหลายเหลี่ยมได้อย่างไร?
Aug 19 2020
ฉันมีตารางที่มีเขต Geom A (ประเภทgeometry
)
ฉันต้องการแสดงค่าเป็นpolygon
lat / long
ฉันจะทำมันได้อย่างไร?
ฉันเห็นโพสต์นี้:
https://gis.stackexchange.com/questions/95373/convert-geometry-to-latitude-longitude-using-postgis-st-transform/95376
แต่ฟังก์ชั่นST_X
, ST_Y
ทำงานเฉพาะในและไม่ได้อยู่ในPOINT
POLYGON
ฉันจะแสดงฟิลด์ 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