13

दो अक्षांश/देशांतर बिंदुओं, द हावरसिन फॉर्मूला या विन्सेंटी फॉर्मूला के बीच की दूरी की गणना करने के लिए कौन सा बेहतर है? क्यूं कर?हैवरिन फॉर्मूला या विन्सेंटी फॉर्मूला दूरी की गणना के लिए बेहतर है?

दूरी पर स्पष्ट रूप से पृथ्वी पर गणना की जा रही है। क्या डब्लूजीएस 84 बनाम जीसीजे 022 निर्देशांक गणना या दूरी को प्रभावित करते हैं (विन्सेंटी का फॉर्मूला डब्लूजीएस 84 अक्ष को ध्यान में रखता है)?

उदाहरण के लिए, एंड्रॉयड में, Haversine फॉर्मूला Google Map Utils में प्रयोग किया जाता है, लेकिन Vincenty फॉर्मूला android.Location वस्तु (Location.distanceBetween()) द्वारा किया जाता है।

उत्तर

7

Haversine एक सरल गणना है लेकिन यह उच्च सटीकता विन्सेंट ऑफ़र प्रदान नहीं करता है।

Vincenty अधिक सटीक है लेकिन यह भी अधिक संगणकीय रूप से गहन है और इसलिए धीमा प्रदर्शन करेगा और बैटरी उपयोग में वृद्धि करेगा।

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

+1

मेरी समझ यह है कि अधिकांश अनुप्रयोगों में, हावरसिन फॉर्मूला (जो एक गोलाकार पृथ्वी ग्रहण करता है) कई सौ मील दूर तक के बिंदुओं के लिए पर्याप्त सटीकता प्रदान करता है, जबकि विन्सेंटी का सूत्र (एलीपसॉइड पृथ्वी पर आधारित) किसी भी जोड़ी के लिए पर्याप्त सटीकता प्रदान करता है अंक, और विशेष रूप से निकट एंटीपोडल बिंदुओं के लिए। – njuffa

14

हावरसिन और विन्सेंटी समस्याओं को हल करने के लिए दो एल्गोरिदम हैं। हावर्सिन पर महान सर्कल दूरी की गणना करता है जबकि विन्सेन्सी क्रांति के इलिप्सिड की सतह पर सबसे छोटी (geodesic) दूरी की गणना करता है। तो अपने प्रश्न का उत्तर 2 भागों में तोड़ा जा सकता है:

  1. आप एक दीर्घवृत्ताभ पर एक क्षेत्र पर दूरी की गणना करना चाहते हैं?
  2. दिए गए समस्या की गणना करने में हावरसिन या विन्सेंटी कितना सटीक है?

स्थलीय अनुप्रयोगों के लिए, क्रांति का एक अंडाकार एक उचित "औसत समुद्र स्तर" का अनुमान है; त्रुटि है और प्लसएमएन; 100 मीटर इस इलिप्सिड का फ़्लैटनिंग छोटा है, लगभग 1/300 है, और इसलिए हो सकता है जो एक क्षेत्र (उदाहरण के लिए बराबर मात्रा का) द्वारा अनुमानित हो।

ग्रेट सर्कल दूरी भूगर्भीय दूरी से 0.5% तक भिन्न होती है। में कुछ एप्लिकेशन, उदाहरण के लिए, केप से काहिरा तक दूरी क्या है ?, इस त्रुटि को उपेक्षित किया जा सकता है। अन्य अनुप्रयोगों में, उदाहरण के लिए, समुद्री सीमाएं निर्धारित करना, यह बहुत बड़ा है (यह 1 किमी की दूरी से 5 मीटर है)। सामान्य रूप से, आप भूगर्भीय दूरी का उपयोग कर सुरक्षित हैं।

आप रुचि रखते हैं, तय की गई दूरी, वहाँ ले जाया रास्ते पर बाधाओं के बहुत सारे हैं और (कार, नाव, या हवाई जहाज से) है न महान सर्कल या Geodesic दूरी है, जो कम से कम पथ की लंबाई को मापने एक आदर्श सतह पर, उचित होगा।

एल्गोरिदम सही हैं या नहीं के सवाल पर: जब तक अंक लगभग प्रतिमुख हैं

Haversine दौर बंद करने के लिए सटीक है। Wikipedia article on great-circle distances में बेहतर सूत्र दिए गए हैं।

विन्सेंट आमतौर पर लगभग 0.1 मिमी के लिए सटीक है। हालांकि यदि अंक लगभग एंटीपॉडल हैं, तो एल्गोरिदम अभिसरण करने में विफल रहता है और त्रुटि बहुत बड़ी है। मैं Algorithms for geodesics में भूगर्भीय समस्या को हल करने के लिए एक बेहतर एल्गोरिदम प्रदान करता हूं। Wikipedia article on geodesics on an ellipsoid भी देखें।

भूगर्भीय समस्या को हल करना महान-सर्कल के लिए हल करने से धीमा है। लेकिन यह अभी भी बहुत तेज़ है (लगभग 1 μ प्रति गणना), इसलिए यह महान सर्कल दूरी को प्राथमिकता देने का कारण नहीं होना चाहिए।

ADENDUM

Here जावा पैकेज है जो Geodesic दूरी खोजने के लिए अपने एल्गोरिथ्म लागू करता है। विन्सेंटी की विधि के विपरीत, यह सटीक है और हर जगह अभिसरण करता है।

+0

क्या यह कहना अधिक सटीक नहीं है कि विन्सेंटी का सूत्र * कभी-कभी * निकट एंटीपोडल बिंदुओं के लिए अभिसरण करने में विफल रहता है, अन्यथा इस तरह के बिंदु जोड़े के लिए बहुत बड़ी संख्या में पुनरावृत्ति होती है? हावर्सिन फॉर्मूला में * कम्प्यूटेशनल * गलतता का प्रदर्शन करने के लिए, मैंने एकल परिशुद्धता में विकिपीडिया पेज (विन्सेंटी के एल्गोरिदम के सरलीकरण के आधार पर) दोनों में सुधार किया है और बेहतर सर्कल गणना की है। 100 एम परीक्षण मामलों के साथ, सबसे खराब केस त्रुटि '4.44148 किमी @ (-64.492126, -157.413849) (64.452232, 22.589592)' [एचएवी] और '0.00392 किमी @ (-5.779476, 166.661758) (0.646194, -44.29811 9)' [Impr] – njuffa

+1

निकट एंटीपोडल बिंदुओं के लिए विन्सेंटी की विधि के साथ समस्या यह नहीं है कि अभिसरण धीमा है; बल्कि यह है कि इस मामले में पुनरावृत्ति समाधान विधि * अस्थिर * है (यदि आप समाधान के नतीजे के साथ शुरू करते हैं, तो प्रत्येक पुनरावृत्ति आपको समाधान से आगे ले जाती है)। ध्यान दें कि आपकी "बेहतर" विधि, 0.00393 किमी के लिए दी गई अधिकतम त्रुटि एकल परिशुद्धता अंकगणितीय के लिए राउंड-ऑफ सीमा के करीब है; अभ्यास में डबल परिशुद्धता की आवश्यकता है। – cffk

+0

मुझे पूरी तरह से पता है कि बेहतर विधि पूर्ण एकल परिशुद्धता के लिए सटीक महान सर्कल दूरी प्रदान करती है लेकिन टिप्पणियों की लंबाई सीमा ने स्पष्ट रूप से इंगित करने के लिए कोई जगह नहीं छोड़ी। मैं ज्यादातर जोर देना चाहता था * विकिपीडिया से बेहतर सूत्र (पॉइंटर के लिए धन्यवाद) कितना बेहतर है, जबकि शास्त्रीय हावर्सिन फॉर्मूला की तुलना में मुश्किल से अधिक कम्प्यूटेशनल रूप से महंगा है: ऐसा लगता है कि हमेशा किसी को हावरसिन के बजाय बेहतर सूत्र का उपयोग करना चाहिए। चाहे किसी भी प्रकार की दूरी गणना में डबल परिशुद्धता की आवश्यकता हो, प्रत्येक उपयोग मामले की सटीकता आवश्यकताओं पर निर्भर करता है। – njuffa

संबंधित मुद्दे