गाइड

जियोकोड किए गए दो बिंदुओं के बीच की दूरी निकालें

दो पतों के बीच की दूरी ऐसी चीज़ नहीं है जिसे जियोकोडिंग API सीधे लौटाता है, क्योंकि दूरी की गणना के लिए केवल निर्देशांक चाहिए, जो फ़ॉरवर्ड एंडपॉइंट आपके भेजे गए किसी भी पते के लिए पहले से देता है।

दोनों पतों के निर्देशांक पाना

हर पते के लिए अक्षांश और देशांतर की जोड़ी पाने के लिए हर पते को अलग से, या एक ही बल्क अनुरोध में एक साथ जियोकोड करें।

POST /v1/forward
Content-Type: application/json

["221B Baker Street, London", "10 Downing Street, London"]
{
  "status": "ok",
  "results": [
    {"formatted": "221B Baker Street, London, UK", "lat": 51.5237, "lon": -0.1585, "type": "address", "precision": "house", "confidence": 0.95, "place_id": "abc123", "components": {}},
    {"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {}}
  ]
}

दूरी की गणना करना

दो निर्देशांक जोड़ियाँ हाथ में होने पर मानक हैवरसाइन सूत्र लागू करें, जो अक्षांश और देशांतर के अंतर को पृथ्वी की सतह पर सीधी रेखा की दूरी में बदल देता है। ज़्यादातर प्रोग्रामिंग भाषाओं में एक छोटा, अच्छी तरह परखा हुआ हैवरसाइन इम्प्लीमेंटेशन एक छोटे फ़ंक्शन या आम लाइब्रेरी के रूप में उपलब्ध है, इसलिए त्रिकोणमिति शुरू से लिखने की ज़रूरत नहीं है।

distance_km = haversine(51.5237, -0.1585, 51.5033, -0.1276)

एक आम गलती जिससे बचना चाहिए

हैवरसाइन सूत्र अक्षांश और देशांतर को रेडियन में लेता है, लेकिन API रिस्पॉन्स में निर्देशांक हमेशा डिग्री में होते हैं। रेडियन के लिए लिखे गए सूत्र में सीधे डिग्री के मान डालने से ऐसी दूरी मिलेगी जो पहली नज़र में सही लगती है, लेकिन चुपचाप बहुत बड़े गुणक से गलत होती है। पहले डिग्री को रेडियन में बदलें, या ऐसे लाइब्रेरी फ़ंक्शन का उपयोग करें जो बताता हो कि वह कौन-सी इकाई लेता है, और प्रोडक्शन में उस पर भरोसा करने से पहले परिणाम को किसी ऐसी दूरी से जाँचें जो आपको पहले से पता हो।

दूसरा उदाहरण: कई पड़ावों वाले रूट की कुल लंबाई

यही गणना स्वाभाविक रूप से दो से ज़्यादा बिंदुओं पर लागू होती है। किसी रूट के हर पड़ाव को एक ही बल्क अनुरोध में जियोकोड करें, फिर निर्देशांकों की हर लगातार जोड़ी के बीच की हैवरसाइन दूरी जोड़कर रूट की अनुमानित कुल लंबाई पाएँ, जो असली टर्न-बाय-टर्न रूटिंग लागू होने से पहले भी डिलीवरी रूट के त्वरित अनुमान के लिए उपयोगी है।

total_km = haversine(a, b) + haversine(b, c) + haversine(c, d)

सीधी रेखा की दूरी बनाम यात्रा की दूरी

हैवरसाइन गणना सीधी रेखा की दूरी देती है, असली सड़कों पर गाड़ी चलाने या पैदल चलने की दूरी नहीं। ज़्यादातर उपयोगों के लिए, जैसे आसपास की जगहों को क्रम में लगाना या मोटे तौर पर निकटता का अनुमान लगाना, सीधी रेखा की दूरी काफ़ी है और इसके लिए आपके पास पहले से मौजूद निर्देशांकों के अलावा कुछ नहीं चाहिए। अगर आपको खास तौर पर रूट के हिसाब से यात्रा की दूरी चाहिए, तो वह एक अलग तरह की गणना है जो जियोकोडिंग लुकअप के दायरे से बाहर है।

एक विशेष मामला जो जानने लायक है

एंटीमेरिडियन के दोनों ओर के दो बिंदु, या किसी ध्रुव के बहुत करीब के बिंदु, ऐसे सीधे-सादे दूरी सूत्र को गड़बड़ा सकते हैं जो देशांतर के 180 से ऋणात्मक 180 पर घूम जाने का ध्यान नहीं रखता। सामान्य पते से पते की दूरी जाँच में ऐसा कम ही होता है, लेकिन अगर आपका एप्लिकेशन वास्तव में दुनिया के उस हिस्से तक फैला है, तो इसकी जाँच करना ज़रूरी है।

अनुरोध की लागत

दो पतों को जियोकोड करने में दो अनुरोध लगते हैं, चाहे उन्हें अलग-अलग कॉल के रूप में भेजा जाए या एक बल्क कॉल में। दोनों निर्देशांक जोड़ियाँ मिलने के बाद दूरी की गणना पूरी तरह आपके अपने कोड में होती है और आपके कोटा से इसकी कोई अतिरिक्त लागत नहीं कटती।

पहले से मौजूद निर्देशांकों का दोबारा उपयोग

अगर दोनों में से कोई पता ऐसा है जिसे आपने पहले जियोकोड करके कैश कर रखा है, तो केवल नए पते के लिए ताज़ा अनुरोध चाहिए, जिससे उस गणना की लागत दो के बजाय एक अनुरोध रह जाती है।

जिस भी पते को आपने अभी तक निर्देशांकों में नहीं बदला है, उसकी दूरी की गणना बस एक जियोकोडिंग अनुरोध दूर है। पूरे रिस्पॉन्स की संरचना के लिए फ़ॉरवर्ड जियोकोडिंग दस्तावेज़ देखें।