Simple PostGIS ST_ แบบสอบถามระยะทางสองจุดจากตารางเรขาคณิตเดียวกันหรือไม่


11

หมายเหตุ: คำถามนี้ถูกตีพิมพ์ใน Stackoverflow ที่แรก

ฉันมีตารางเรขาคณิตpoints_tableด้วยSRID 4326และมีจุดอยู่สองสามจุด

ฉันต้องการค้นหาระยะทางระหว่างคู่ของจุด (คุณสมบัติ) จากตารางนี้

ฉันต้องการเลือกจุดหนึ่งด้วยid = Xและอีกจุดด้วยid = Yแล้วหาระยะห่างระหว่างพวกเขาด้วยST_Distanceฟังก์ชั่น

ฉันรู้วิธีค้นหาทั้งสองจุดจากฐานข้อมูล:

select * from points_table where id = X or id = Y;

แต่เคียวรีนี้ส่งคืนผลลัพธ์ซึ่งฉันไม่รู้ว่าจะผ่านไปได้ST_Distanceอย่างไรเนื่องจากST_Distanceรับพารามิเตอร์ 2 ตัว

ฉันเหนื่อย Select ST_Distance(select the_geom from points_table where id = X or id = Y);

แต่เห็นได้ชัดว่ามันผิด

ฉันจะหาระยะห่างระหว่างจุดเรขาคณิตสองจุด (คุณสมบัติ) จากตารางได้อย่างไร

ป.ล. ตัวอย่างทั้งหมดที่ฉันได้ค้นพบแสดงให้เห็นถึงการใช้งาน ST_Distance ที่มีคะแนนที่เข้ารหัสลงในอาร์กิวเมนต์ของฟังก์ชัน ST_Distance ฉันไม่พบตัวอย่างที่ ST_Distance ใช้ในการคำนวณระยะทางระหว่างจุดสองจุดจากตารางเดียวกัน

คำตอบ:


28

คุณต้องอ้างอิงตารางของคุณสองครั้งโดยให้นามแฝงต่างกัน:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.