ค้นหาระยะทางระหว่างสองพิกัดในทรงรีหรือไม่


18

ฉันมีละติจูดและลองจิจูดสองชุด

ฉันจะหาระยะห่างระหว่างสองตำแหน่งได้อย่างไรถ้าฉันคิดว่าโลกนั้นเป็นรูปวงรีที่สมบูรณ์แบบ (ด้วยความเยื้องศูนย์ของ 0.0167)

คำตอบ:


16

ฉันอยากจะแนะนำการเช็คเอาท์:
ทรงกลม: http://www.movable-type.co.uk/scripts/latlong.html
Great-Circle: http://www.movable-type.co.uk/scripts/gis-faq -5.1.html


1
สูตรในหน้านั้นดูเหมือนจะไม่สนใจความผิดปกติ พวกเขาถือว่าโลกเป็นทรงกลมและไม่ใช่ทรงรี
Jon Bringhurst

ก่อนหน้านี้ฉันมักจะใช้ห้องสมุดที่รู้ระยะทางระหว่างจุดละติจูดและลองจิจูดที่กำหนดไว้บางส่วนจากนั้นทำการหาค่าเฉลี่ยเพื่อคำนวณระยะทางของคะแนนที่ไม่รู้จัก ฉันจะถามบางคนเกี่ยวกับเรื่องนี้
Wallbasher

อาลิงค์ที่สองดูเหมือนว่าจะมีสูตรที่ถูกต้อง ขอบคุณ!
Jon Bringhurst

1
ขอบคุณสำหรับคำตอบของคุณ @Wallbasher อย่างไรก็ตามจะเป็นการดีที่สุดถ้าคำตอบสามารถยืนได้ด้วยตัวเอง มันจะช่วยได้มากถ้าคุณจะโพสต์สูตรที่เกี่ยวข้องกับคำตอบของคุณเช่นกัน
RK

7

เพื่อให้คุณรู้ว่าละติจูดและลองจิจูดสองเส้นของคุณเป็นอย่างไร

คุณสามารถคำนวณพิกัดคาร์ทีเซียนสำหรับแต่ละ:

xa = (Cos(thisLat)) * (Cos(thisLong));
ya = (Cos(thisLat)) * (Sin(thisLong));
za = (Sin(thisLat));

xb = (Cos(otherLat)) * (Cos(otherLong));
yb = (Cos(otherLat)) * (Sin(otherLong));
zb = (Sin(otherLat));

จากนั้นคำนวณระยะทางวงกลมที่ยิ่งใหญ่ระหว่างสองวงโดยใช้:

MeanRadius * Acos(xa * xb + ya * yb + za * zb);

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

แน่นอนว่านี่ถือว่าเป็นทรงกลมที่สมบูรณ์แบบและโลกก็ไม่ได้เป็นดาวฤกษ์ที่สมบูรณ์แบบดังนั้นความแม่นยำจึงอยู่ที่เพียงไม่กี่เมตรเท่านั้น


1
ฉันจะชี้ให้เห็น "สิ่งทรงกลมที่สมบูรณ์แบบ" ด้วย คุณควรทราบว่าวิธีนี้จะให้ระดับความแม่นยำที่แตกต่างกันไปขึ้นอยู่กับว่าคุณอยู่ที่ไหนในโลก
TroutSlayer

@TrotuSlayer โดยทั่วไปจะดีพอสำหรับการใช้งานส่วนใหญ่และมีการแลกเปลี่ยนระหว่างความเร็วและความแม่นยำอยู่เสมอ หากคุณต้องการความแม่นยำมากขึ้นก็ถึงเวลาที่คุณจะต้องเลื่อนล้อเลื่อนออกไปหรือใช้วิธีสมมติว่าโลกแบนราบสำหรับพื้นที่ที่คุณกำหนดและระยะทาง 2 มิติก็เพียงพอแล้ว
Rowland Shaw

1

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

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