मुझे WGS84 लेट / लॉन्ग में अंक मिले हैं और मैं उनके बीच "छोटी" (5 किमी से कम) दूरियों को मापना चाहूंगा।
मैं http://www.movable-type.co.uk/scripts/latlong.html से हैवरसाइन सूत्र का उपयोग कर सकता हूं और यह बहुत अच्छी तरह से काम करता है।
मैं हालांकि, पाइथन शेपली लाइब्रेरीज़ का उपयोग करना चाहूंगा, ताकि मैं बस दूरी से अधिक ऑपरेशन कर सकूं, और क्योंकि मैं जिस पैमाने पर काम कर रहा हूं, एक सपाट धरती एक अच्छा पर्याप्त सन्निकटन है। मज़बूती से भौगोलिक कोर्ड्स को एक कार्टेज़ियन कॉर्ड में प्रोजेक्ट करने के लिए, मैं पायथन का उपयोग कर रहा हूं proj4
, लेकिन मुझे जो पसंद है उससे बड़ी त्रुटियां मिलती हैं।
यदि मैं स्थानीय UTM ज़ोन का उपयोग करता हूं, तो मुझे एक-दो मीटर के हावरसीन के बीच अंतर मिलता है, जो ठीक है। लेकिन मैं UTM ज़ोन (दुनिया भर में अंक हो सकता है) के लिए काम नहीं करना चाहता, इसलिए मैंने "गोलाकार मर्केटर" के साथ कोशिश की, लेकिन अब हावरसाइन और अनुमानित दूरी के बीच अंतर 100% से अधिक है। क्या यह वास्तव में गोलाकार मर्केटर के लिए सही है? मैं वास्तव में चाहता हूं कि दुनिया में कहीं भी एक दूसरे के 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)
इस बिंदु पर, उनके बीच की haversine दूरी 394m है, और utm क्षेत्र 27, 395m का उपयोग करते हुए। लेकिन अगर मैं गोलाकार मर्केटर का उपयोग करता हूं, तो कार्टेशियन दूरी 904 मीटर है, जो कि बंद है।