ฉันได้รับคะแนนเป็น WGS84 lat / long และฉันต้องการวัดระยะทาง "เล็ก" (น้อยกว่า 5km) ระหว่างพวกเขา
ฉันสามารถใช้สูตร haversine ได้จากhttp://www.movable-type.co.uk/scripts/latlong.htmlและใช้งานได้ดีมาก
ฉันต้องการใช้ห้องสมุด Python Shapely เพื่อให้ฉันสามารถดำเนินการได้มากกว่าระยะทางและเนื่องจากในระดับที่ฉันทำงานด้วยพื้นราบจึงเป็นการประมาณที่ดีพอ ในการคาดคะเนพิกัดทางภูมิศาสตร์ให้กับ coord แบบคาร์ทีเซียนอย่างน่าเชื่อถือฉันใช้ Python proj4
แต่ดูเหมือนจะได้รับข้อผิดพลาดที่ใหญ่กว่าที่ฉันต้องการ
ถ้าฉันใช้โซน UTM ในพื้นที่ฉันจะได้รับความแตกต่างระหว่างแฮเวอรีนสักสองสามเมตรซึ่งใช้ได้ แต่ฉันไม่ต้องการที่จะทำงานในโซน UTM (คะแนนอาจเป็นทั่วโลก) ดังนั้นฉันจึงลองกับ "spherical Mercator" แต่ตอนนี้ความแตกต่างระหว่าง haversine และระยะทางที่คาดการณ์นั้นดีกว่า 100% มันเหมาะกับ Mercator ทรงกลมจริงๆเหรอ? ทั้งหมดที่ฉันต้องการคือการฉายคาร์ทีเซียนที่สามารถใช้งานได้สำหรับสองจุดภายในระยะ 5 กม. จากกันทุกที่ในโลก
from shapely.geometry import Point
from pyproj import Proj
proj = Proj(proj='utm',zone=27,ellps='WGS84')
#proj = Proj(init="epsg:3785") # spherical mercator, should work anywhere...
point1_geo = (-21.9309694, 64.1455718)
point2_geo = (-21.9372481, 64.1478206)
point1 = proj(point1_geo[0], point1_geo[1])
point2 = proj(point2_geo[0], point2_geo[1])
point1_cart = Point(point1)
point2_cart = Point(point2)
print "p1-p2 (haversine)", hdistance(point1_geo, point2_geo)
print "p1-p2 (cartesian)", point1_cart.distance(point2_cart)
ณ จุดนี้ระยะทางของแฮเวอรีนคือ 394m และใช้ utm zone 27, 395m แต่ถ้าฉันใช้ทรงกลม Mercator ระยะทาง Cartesian คือ 904m ซึ่งเป็นวิธีปิด