ฉันจะรับค่ามิเตอร์วัดระยะทางระหว่างรูปทรงเรขาคณิตทั้งสองใน PostGIS ได้อย่างไร


14

ฉันมีคำถามง่ายๆเกี่ยวกับการคำนวณระยะทางใน PostGIS

ฉันอยากได้ระยะห่างระหว่างรูปทรงเรขาคณิตสองอัน ฉันกำลังใช้ sid นี้: 4269 หน่วยเป็นเมตรสิ่งที่ฉันกำลังทำอยู่ตอนนี้คือ: ST_Distance((a.geom,b.geom)) FROM ...แต่ฉันได้ผลลัพธ์เป็นองศา ฉันคิดว่าฉันควรทำงานกับภูมิศาสตร์ แต่ฉันจะขว้าง geom ไปยังภูมิศาสตร์ได้อย่างไร ฉันลองด้วย (a.geom :: ภูมิศาสตร์) แต่ฉันได้รับข้อผิดพลาด

ฉันจะทำอย่างไรเพื่อให้ได้ผลลัพธ์เป็นเมตร

ขอขอบคุณ

คำตอบ:


20

ด้วยST_Distance_Sphereคุณสามารถบรรลุ:

ST_Distance_Sphere(a.geom,b.geom)

ERREUR: la fonction st_distance_spheroid (รูปทรงเรขาคณิต, รูปทรงเรขาคณิต) n'existe pas ... ฉันเพิ่งเพิ่ม (a.geom, b.geom, 'SPHEROID ["WGS 84", 6378137,298.257223563]') และตอนนี้ก็ทำงานได้ดีขอบคุณ มาก !
YassineGeoma

1
ดีคุณใช้ฟังก์ชั่นที่แตกต่างกัน st_distance_spheroid ซึ่งช้ากว่า st_distance_sphere แต่แม่นยำกว่า
Francisco Valdez

สิ่งที่เกี่ยวกับระยะทางสูงสุดระหว่าง 2 รูปทรง?
vasilakisfil

ระยะทางสูงสุดคือ earth_radius - ขั้นต่ำสุดระยะทางซึ่งจะเดินทางในทางตรงกันข้าม (หัวเรื่อง + 180º)
Francisco Valdez

1
@ don-prog มันใช้งานได้กับจุด 3 มิติและ 2 มิติ:SELECT ST_Distance_Sphere(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 4)'), ST_GeomFromEWKT('SRID=4326;POINT(-72.1260 42.45 15)'))
Francisco Valdez

3

หน่วยของ SRID 4269 ( NAD 83 ) ไม่ได้เป็นเมตร - นี่คือเส้นโครงแผนที่ทางธรณีวิทยาซึ่งพิกัดคือองศา (พิกัดทางภูมิศาสตร์)

คำตอบของ pacofvf จะให้ระยะทางเป็นเมตร แต่ถ้าคุณมีพิกัดบอกระยะเริ่มต้นเป็นเมตรคุณควรใช้ระบบพิกัดที่คาดการณ์ไว้ อาจเป็นไปได้สำหรับอเมริกาเหนือที่คุณต้องการบางสิ่งเช่นระบบพิกัดเครื่องบินของรัฐซึ่งมีการคาดการณ์ที่แตกต่างกันจำนวนมากขึ้นอยู่กับภูมิภาคที่คุณต้องการทำแผนที่

ฉันสงสัยว่าคุณเพิ่งใช้ค่า lat / lon ดังนั้นย่อหน้าที่สองนี้อาจไม่เกี่ยวข้อง - เพียงแค่ใช้ST_Distance_Sphereฟังก์ชันดังกล่าวข้างต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.