मैं दो (अक्षांश, देशांतर) बिंदुओं के बीच की दूरी का अनुमान प्राप्त करने में सक्षम होना चाहता हूं। मैं अंडरशूट करना चाहता हूं, क्योंकि यह ए * ग्राफ खोज के लिए होगा और मैं इसे तेज़ होना चाहता हूं। अंक 800 किमी दूर होंगे।मैं दो (अक्षांश, देशांतर) बिंदुओं के बीच की दूरी का त्वरित अनुमान कैसे लगा सकता हूं?
उत्तर
Haversine Formula in Python (Bearing and Distance between two GPS points) के उत्तरों पाइथन कार्यान्वयन प्रदान करते हैं जो आपके प्रश्न का उत्तर देते हैं।
नीचे दिए गए कार्यान्वयन का उपयोग करके ने पुराने लैपटॉप पर 1 सेकंड से कम में 100,000 पुनरावृत्तियों का प्रदर्शन किया। मुझे लगता है कि आपके उद्देश्यों के लिए यह पर्याप्त होना चाहिए। हालांकि, प्रदर्शन के लिए अनुकूलित करने से पहले आपको कुछ भी प्रोफ़ाइल देना चाहिए।
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
# Radius of earth in kilometers is 6371
km = 6371* c
return km
haversine(lat1, long1, lat2, long2) * 0.90
या जो भी कारक आप चाहते हैं उसे कम से कम अनुमानित करने के लिए। मैं नहीं देखता कि आपकी कम आकलन में त्रुटि कैसे पेश की जा रही है।
1000s, लेकिन यह पाइथन है और मुझे उदारता से कम अनुमान लगाने की आवश्यकता है। – fread2281
गति के लिए एक विचार लंबे/अक्षांश को 3 डी (एक्स, वाई, जेड) निर्देशांक में समन्वयित करना है। अंक को प्रीप्रोसेसिंग करने के बाद, वास्तविक दूरी के त्वरित गणना वाले अंडरशूट के रूप में बिंदुओं के बीच यूक्लिडियन दूरी का उपयोग करें।
अधिकतम गति के लिए, आप समन्वय दूरी के लिए rainbow table जैसे कुछ बना सकते हैं। ऐसा लगता है जैसे आप पहले से ही उस क्षेत्र को जानते हैं जिसके साथ आप काम कर रहे हैं, इसलिए ऐसा लगता है कि उन्हें पूर्व-कंप्यूटिंग करना संभव हो सकता है। फिर, आप निकटतम संयोजन लोड कर सकते हैं और बस इसका उपयोग कर सकते हैं।
उदाहरण के लिए, महाद्वीपीय संयुक्त राज्य अमेरिका में, देशांतर 55 डिग्री अवधि है और अक्षांश 20 है, जो 1100 पूर्ण संख्या अंक होगा। सभी संभावित संयोजनों के बीच की दूरी handshake problem है जिसका उत्तर (एन -1) (एन)/2 या लगभग 600 के संयोजनों का उत्तर दिया जाता है। यह स्टोर और पुनर्प्राप्त करने के लिए काफी व्यवहार्य लगता है। यदि आप अपनी आवश्यकताओं के बारे में अधिक जानकारी प्रदान करते हैं, तो मैं और अधिक विशिष्ट हो सकता हूं।
चूंकि दूरी अपेक्षाकृत छोटी है, इसलिए आप समकक्ष दूरी अनुमान का उपयोग कर सकते हैं। यह अनुमान Haversine सूत्र का उपयोग करने से तेज़ है। इसलिए, अपने संदर्भ बिंदु (lat1/lon1) से उस बिंदु तक दूरी प्राप्त करने के लिए जिस पर आप परीक्षण कर रहे हैं (lat2/lon2), नीचे दिए गए सूत्र का उपयोग करें। महत्वपूर्ण नोट: आप रेडियंस में सभी अक्षांश/देशांतर अंक बदलने की आवश्यकता:
R = 6371 // radius of the earth in km
x = (lon2 - lon1) * cos(0.5*(lat2+lat1))
y = lat2 - lat1
d = R * sqrt(x*x + y*y)
के बाद से 'आर' किमी में है, दूरी 'प' किमी में होगा।
निम्नलिखित कोड का उपयोग करें।
def distance(lat1, lng1, lat2, lng2):
#return distance as meter if you want km distance, remove "* 1000"
radius = 6371 * 1000
dLat = (lat2-lat1) * math.pi/180
dLng = (lng2-lng1) * math.pi/180
lat1 = lat1 * math.pi/180
lat2 = lat2 * math.pi/180
val = sin(dLat/2) * sin(dLat/2) + sin(dLng/2) * sin(dLng/2) * cos(lat1) * cos(lat2)
ang = 2 * atan2(sqrt(val), sqrt(1-val))
return radius * ang
मेरे मामले में, अन्य कोड मेरे लिए अच्छा काम नहीं कर रहे हैं। तो, मैं बस इस जवाब में मज़ेदारता को ट्रैनस्ट्लेट करता हूं http://stackoverflow.com/questions/6981916/how-to-calculate-distance-between-two-locations-using-their-longitude-and-latitu – uher
- 1. दो अक्षांश और देशांतर के बीच दूरी की गणना GeoCoordinates
- 2. मैं जावा में दो अक्षांश + देशांतर बिंदुओं के आधार पर दूरी को मापने और बाध्यकारी बॉक्स कैसे बना सकता हूं?
- 3. ओपनलेयर: दो बिंदुओं के बीच दूरी की गणना कैसे करें?
- 4. दो बिंदुओं के बीच की दूरी की गणना
- 5. दो बिंदुओं के बीच मोंगोडीबी प्रिंट दूरी
- 6. मैकमैपव्यू में दो बिंदुओं के बीच की दूरी की गणना कैसे कर सकता हूं?
- 7. 3 अक्षांश और देशांतर बिंदुओं का उपयोग करके त्रयीकरण, और 3 दूरी
- 8. मध्य अक्षांश दो अक्षांश और देशांतर
- 9. दशमलव अक्षांश/देशांतर डिग्री की अधिकतम लंबाई?
- 10. देशांतर/अक्षांश
- 11. अक्षांश और देशांतर
- 12. मैं चेकसम एल्गोरिदम का अनुमान कैसे लगा सकता हूं?
- 13. मैं चेकसम एल्गोरिदम का अनुमान कैसे लगा सकता हूं?
- 14. अक्षांश देशांतर से जीएमटी से समय ऑफसेट का अनुमानित अनुमान
- 15. दो बिंदुओं के बीच दूरी के आधार पर परिणामों को वापस करने के लिए मैं जियोफायर के बिना फायरबेस जीओ स्थानों को कैसे पूछ सकता हूं?
- 16. मैं अक्षांश और देशांतर में निर्देशांक कैसे परिवर्तित करूं?
- 17. दो स्थानों के बीच शारीरिक दूरी
- 18. दो भौगोलिक बिंदुओं
- 19. दो भौगोलिक स्थानों के बीच की गणना करना दूरी
- 20. गणना दूरी को देखते हुए 2 अंक, अक्षांश और देशांतर
- 21. मैं विकर्ण दूरी बिंदुओं को कैसे माप सकता हूं?
- 22. मैं जावा में दो जीपीएस अंकों के बीच की दूरी की गणना कैसे कर सकता हूं?
- 23. थ्री.जेएस - मैं दो 3 डी पदों के बीच की दूरी की गणना कैसे कर सकता हूं?
- 24. अक्षांश और देशांतर
- 25. अक्षांश देशांतर
- 26. अक्षांश और देशांतर के लिए कौन सा डेटा प्रकार?
- 27. अक्षांश और देशांतर
- 28. सरल अक्षांश/देशांतर + पूर्णांक डेटाबेस?
- 29. मैं स्विफ्ट में पते कैसे लगा सकता हूं, पते को देशांतर और अक्षांश निर्देशांक में परिवर्तित कर सकता हूं?
- 30. फ़ंक्शन पॉइंट्स का उपयोग करके मैं कार्यों का अनुमान कैसे लगा सकता हूं?
क्या हमें इन बिंदुओं को * क्षेत्र * पर झूठ बोलना चाहिए? – phs
देखें http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude- पॉइंट्स या http://stackoverflow.com/questions/4913349/haversine-formula- इन-पायथन-असर-और-बीच-दो-जीपीएस-पॉइंट्स (पायथन) –
हां, पृथ्वी पर, लेकिन गति। AFAIK जटिल गणित पर्याप्त तेज़ नहीं है। – fread2281