आप 2 शहरों के बीच की दूरी की गणना कैसे करते हैं?2 शहरों के बीच दूरी की गणना
उत्तर
यदि आपको पृथ्वी के वक्रता को ध्यान में रखना है, तो ग्रेट-सर्किल दूरी वह है जिसे आप ढूंढ रहे हैं। The Wikipedia article शायद यह बताए जाने का बेहतर काम करता है कि फ़ॉर्मूला मेरे से कैसे काम करता है, और this aviation formulary page भी है जो कवर करता है जो अधिक विस्तार से जाता है।
सूत्र केवल पहेली का पहला हिस्सा हैं, अगर आपको मनमाने ढंग से शहरों के लिए यह काम करने की आवश्यकता है, तो आपको लेट/लम्बाई प्राप्त करने के लिए एक स्थान डेटाबेस की आवश्यकता होगी। सौभाग्य से आप इसे Geonames.org से मुक्त कर सकते हैं, हालांकि वाणिज्यिक डीबी उपलब्ध है (Google से पूछें)। इसलिए, सामान्य रूप से, अपने इच्छित दो शहरों को देखें, लेट/लांग सह-ऑरनेट्स प्राप्त करें और the Wikipedia Worked Example में फॉर्मूला में प्लग करें।
अन्य सुझाव:
- एक पूर्ण वाणिज्यिक समाधान के लिए, वहाँ PC Miler जो calculate शिपिंग दरों के लिए कई ट्रकिंग कंपनियों द्वारा प्रयोग किया जाता है है।
- Google मानचित्र (या अन्य) एपीआई पर कॉल करें। यदि आपको प्रति दिन कई अनुरोध करने की आवश्यकता है, तो सर्वर पर परिणामों को कैशिंग करने पर विचार करें।
- भी बहुत महत्वपूर्ण शहरों, उपनगरों, कस्बों आदि के लिए समकक्ष डेटाबेस बनाने पर विचार करना है यदि आपको लगता है कि आपको कभी भी अपना डेटा समूहित करने की आवश्यकता होगी। हालांकि यह वास्तव में जटिल हो जाता है, और आपको अपनी समस्या के लिए एक-आकार-फिट-सभी समाधान नहीं मिल सकता है।
इतना ही नहीं बल्कि, जोएल एक समय पहले इस समस्या के बारे में एक लेख लिखा था, इसलिए यहाँ तुम जाओ: New Feature: Job Search
आपका जोएस लिंक पुराना है (लिंक पर क्लिक करने से आपको अब एक त्रुटि पृष्ठ पर ले जाता है)। मेरा मानना है कि यह अब सही लिंक है: http://www.joelonsoftware.com/items/2006/10/09.html – AgentConundrum
मैंने लिंक अपडेट किया है और कुछ और जानकारी जोड़ दी है। –
आपको शहर का लेट/लॉन मिलता है, फिर लेट/लॉन निर्देशांक के लिए दूरी अनुमान एल्गोरिदम का उपयोग करें।
आप Haversine formula का उपयोग करते हैं।
आप उन दो शहरों के बीच सबसे छोटा रास्ता खोजने के लिए A* एल्गोरिदम का उपयोग करते हैं और इस तरह आपके पास दूरी होगी।
यदि आप एक कोड उदाहरण की जरूरत है मुझे लगता है कि मैं एक है मैं घर पर की खुदाई सकता है, लेकिन पिछले जवाब से कई की तरह, आप एक देशांतर/अक्षांश db जरूरत गणना
यह उपयोग करने के लिए बेहतर है क्या करने के लिए दो शहरों के बीच दूरी प्राप्त करने के लिए एक लुकअप टेबल।
यह समझ में आता है क्योंकि * दूरी एआई की गणना करने के लिए फॉर्मूला काफी कम्प्यूटेशनल गहन है .. * शहरों के बीच की दूरी बदलने की संभावना नहीं है।
तो जब तक आपको आवश्यकता न हो, तब तक आपको बहुत विशिष्ट (जैसे उपग्रह या कुछ या स्थलाकृति एल्गोरिदम या किसी अन्य चीज़ से इलाके मैपिंग की तरह), आपको वास्तव में केवल शहरों की सूची और उनके बीच की दूरी को एक टेबल में सहेजना चाहिए और इसे देखना चाहिए जरूरत है।
आप हवाई जहाज में काम कर रहे हैं रहे हैं और आप Euclidean distance चाहते हैं "के रूप में कौवा मक्खियों":
// Cities are points x0,y0 and x1,y1 in kilometers or miles or Smoots[1]
dx = x1 - x0;
dy = y1 - y0;
dist = sqrt(dx*dx + dy*y);
नहीं त्रिकोणमिति की जरूरत! बस Pythagorean theorem और तथ्य यह है कि वर्ग हमेशा सकारात्मक होते हैं इसलिए आपको sqrt() को पास करने के लिए सकारात्मक संख्या प्राप्त करने के लिए dx = abs (x1 - x0) आदि की आवश्यकता नहीं होती है।
नोट आप शायद एक पंक्ति में ऐसा कर सकता है और एक संकलक शायद यह कोड ऊपर बराबर कम करेगा कि:
dist = sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
आप के बारे में बात कर रहे हैं पृथ्वी जैसे वास्तविक गोलाकार ग्रह पर दो वास्तविक शहरों के बीच सबसे छोटी दूरी, आप great circle distance चाहते हैं।
मैं हाल ही में इस के साथ बहुत काम कर रहा हूँ। मुझे लगता है कि SQL2008 की नई विशेषताएं वास्तव में यह आसान बनाती हैं। मैं उन सभी बिंदुओं को पा सकता हूं जो उप-दूसरे समय में 100k रिकॉर्ड तालिका के एक्सकेएम के साथ हैं ... बहुत शर्मीली नहीं।
मेरे परीक्षण में महान सर्कल (गोलाकार धारणा) विधि लगभग 2.5 मील दूर थी, जबकि विन्सेन्टी फॉर्मूला (एलिस्पोसाइड धारणा, जो पृथ्वी है) की तुलना में लगभग 2.5 मील दूर थी।
असली चाल लेट और लम्बी हो रही है .. इसके लिए मैं Google का उपयोग कर रहा हूं।
@ जेरेड - आपके कोड उदाहरण में मामूली सुधार। पहले कोड उदाहरण की अंतिम पंक्ति पढ़ना चाहिए:
dist = sqrt(dx*dx + dy*dy);
यह एसक्यूएल सर्वर में भूगोल प्रकार से कोई लेना देना 2008.
SELECT geography::Point(lat1, lon1, 4326).STDistance(geography::Point(lat2, lon2, 4326))
-- computes distance in meters using eliptical model, accurate to the mm
4326 WGS84 elipsoidal धरती मॉडल के लिए SRID है बहुत आसान है
यह पोस्टजीआईएस में समान रूप से सरल है। – jpmc26
मैं मानता हूं कि एक बार आपके पास जानकारी हो जाने पर, यदि यह बदलने वाला नहीं है, तो इसे किसी भी तरह से स्टोर करें। टी-एसक्यूएल नमूना के लिए @ मार्को टिंटो धन्यवाद। उन लोगों के लिए जिनके पास SQL सर्वर तक पहुंच नहीं है या कोई अन्य विधि पसंद नहीं है: यदि आपको उच्च सटीकता की आवश्यकता है, तो अधिक जानकारी के लिए Wikipedia's entry on the Vincenty algorithm देखें। मेरा मानना है कि एक जेएस कार्यान्वयन है, जो (यदि पहले से नहीं है) आसानी से अन्य भाषाओं में पोर्ट किया जाएगा। इसके अलावा, उस पृष्ठ के निचले हिस्से में geographicLib का एक लिंक है, जो विन्सेंटी एल्गोरिदम से 1000 गुना अधिक सटीक होने का अधिकार करता है (यदि आपके पास डेटा अच्छा है, तो इससे कोई फर्क नहीं पड़ता)।
आप विन्सेंट विधि की तरह कुछ क्यों उपयोग करेंगे? क्योंकि पृथ्वी एक आदर्श क्षेत्र नहीं है और इस तरह की विधियां पृथ्वी को मॉडलिंग के लिए एक अधिक सटीक प्रमुख और मामूली धुरी को इनपुट करने की अनुमति देती हैं।
मैं का उपयोग distancy इतना आसान और साफ
आप गूगल मानचित्र एपीआई से दोनों शहरों के बीच दूरी प्राप्त कर सकते हैं। यहाँ पायथन में यह के एक कार्यान्वयन है
#!/usr/bin/python
import requests
from sys import argv
def get_distance(origin,destination):
gmap='http://maps.googleapis.com/maps/api/distancematrix/json'
payload={"origins":origin,"destinations":destination,"sensor":'false' }
try:
a=requests.get(gmap,params=payload)
data = a.json()
origin = str(data['origin_addresses'][0])
destination= str(data['destination_addresses'][0])
distance = data['rows'][0]['elements'][0]['distance']['text']
return distance,origin,destination
except Exception,e:
print "The %s or %destination does not exists :(" %(origin,destination)
exit()
if __name__=="__main__":
if len(argv)<3:
print "sorry Check the format"
else:
origin=argv[1]
destination=argv[2]
distance,origin,destination=get_distance(origin,destination)
print "%s ---> %s : %s" %(origin,destination,distance)
उदाहरण लिंक: https://gist.github.com/sarathsp06/cf063e47bcc515b51c84
- 1. 2 geocodes के बीच दूरी
- 2. दो बिंदुओं के बीच की दूरी की गणना
- 3. ओपनलेयर: दो बिंदुओं के बीच दूरी की गणना कैसे करें?
- 4. गणना दूरी
- 5. दो भौगोलिक स्थानों के बीच की गणना करना दूरी
- 6. दो अक्षांश और देशांतर के बीच दूरी की गणना GeoCoordinates
- 7. पते के बीच दूरी
- 8. भूगर्भों के बीच दूरी
- 9. भवन के भीतर दूरी की गणना
- 10. आर में यूक्लिडियन दूरी की गणना
- 11. मैं जावा में दो जीपीएस अंकों के बीच की दूरी की गणना कैसे कर सकता हूं?
- 12. नियमित अभिव्यक्ति के बीच दूरी
- 13. एन अंकों के बीच कुशल दूरी गणना और numpy/scipy
- 14. दूरी गणना के लिए समानांतर सी कोड
- 15. यूक्लिडियन दूरी दो वैक्टरों (एकल पंक्ति मैट्रिक्स) के बीच दूरी
- 16. डीबी में शहरों और कस्बों के बीच दूरी को कैसे व्यवस्थित करें
- 17. मैकमैपव्यू में दो बिंदुओं के बीच की दूरी की गणना कैसे कर सकता हूं?
- 18. numpy arrays के बीच दूरी, कॉलमवार
- 19. दूरी गणना फ़ंक्शन का अनुकूलन
- 20. उसी विमान पर 2 ऑब्जेक्ट्स के रोटेशन और अनुवाद मैट्रिस की दूरी गणना
- 21. गणना दूरी को देखते हुए 2 अंक, अक्षांश और देशांतर
- 22. दो पते के बीच ड्राइविंग दूरी की गणना करने के लिए मैपकिट का उपयोग करें?
- 23. दो पते के बीच दूरी की गणना के लिए कौन सी पूर्व-मौजूदा सेवाएं मौजूद हैं?
- 24. दो बिंदुओं के बीच दूरी की गणना करने के लिए कौन सा सबसे अच्छा है?
- 25. एंड्रॉइड: दो स्थानों के बीच दूरी की गणना करने के लिए सबसे अच्छी विधि
- 26. शहरों
- 27. भूगर्भीय दूरी की गणना करते समय ऊंचाई में लेना
- 28. जीपीएस वीएस एक्सेलेरोमीटर दूरी की गणना करने के लिए
- 29. क्या Google मानचित्र गलत दूरी की गणना कर रहा है?
- 30. अजीब ग्रेट सर्कल दूरी गणना
इस [संबंधित StackOverflow सवाल] (देखें http://stackoverflow.com/questions/27928/how-do-i-calculate -डिस्टेंस-बीच-दो-अक्षांश-देशांतर-बिंदु) –