2011-04-04 9 views
6

के बीच की दूरी क्या क्लासिक तरीके से दूरी की तुलना करना ठीक है (2 अंक: d = sqrt(pow(lat2-lat1, 2) + pow(lon2-lon1, 2)) के बीच की दूरी) अक्षांश और देशांतर से मीटर एपिस से लौट आया अक्षांश और मीटर के बिना किसी परिवर्तन के? मुझे बस बिंदुओं की श्रृंखला से संदर्भ बिंदु तक निकटतम बिंदु खोजने की तुलना करने की आवश्यकता है। उदाहरण के लिए:दो lat, lon points

कहते हैं कि हम दो (अक्षां, देशांतर) अंक की सुविधा देता है: (40.2535425,22.88245345) और (40.2565795,22.8884539) और हम डायन लगाना चाहते हैं सबसे करीब है (40.2335425,22.83245345) करने के लिए। क्या दूरी खोजने के लिए उपरोक्त कोड को लागू करना ठीक है? या हमें दूरी खोजने की जरूरत है, मीटर में कहें (हावर्सिन फॉर्मूला या जो भी हो), पहले संदर्भ बिंदु से प्रत्येक बिंदु के लिए और फिर मानों की तुलना करें?

मैं इस सवाल से पूछता हूं क्योंकि मुझे नहीं पता कि गूगल एपिस द्वारा लाए गए मान वास्तव में क्या हैं, लोन! मेरा मतलब है कि वे deg-min-sec नहीं हैं?

धन्यवाद ...

+0

गूगल 'महान दूरी' - आप के साथ दूरी पाने के लिए मानकीकृत कार्यों के लिए इन अक्षांश देशांतर मान प्रदान करने के लिए सक्षम होना चाहिए पृथ्वी की सतह। – Randy

+0

ध्रुवों के पास, रेखांश मजाकिया काम करता है। +/- 90 डिग्री अक्षांश पर, अक्षांश की एक डिग्री == 0 दूरी। तो मुझे लगता है कि पाइथागोरियन तरीका हर जगह काम नहीं करेगा। – cHao

+0

यदि आप निकटतम के बाद ही गणना में वर्ग रूट नहीं करते हैं। यदि एक <बी तो ए * ए <बी * बी (मानते हुए कि आप सबकुछ सकारात्मक रखते हैं)। Teh रूट को तब तक सहेजें जब तक आपको वास्तव में दूरी मान की आवश्यकता न हो। –

उत्तर

1

नहीं, देशांतर की तर्ज डंडे के प्रति कवरेज़ क्योंकि। अपने अंक एक साथ अपेक्षाकृत करीब हैं, तो आप दूरी इस प्रकार का अनुमान लगा सकता:

d = sqrt(pow(lat2-lat1, 2) + cos(lat1)*pow(lon2-lon1, 2)) 

आप बड़ी दूरी तक अधिक सटीकता की जरूरत है, वहाँ कंप्यूटिंग great-circle distances के लिए कई फैंसी सूत्रों कर रहे हैं, लेकिन मैं इसे सरल 3 डी निर्देशांक कन्वर्ट करने के लिए लगता है एक यूनिट सर्कल पर, फिर एक सरल पायथागोरियन दूरी करें, उसके बाद 2 पाप -1 (डी/2) एक कोण में कनवर्ट करने के लिए (हालांकि मैं समझ सकता हूं कि कुछ को यह आसान नहीं मिल सकता है: -)।

+0

महान सर्कल दूरी की गणना के लिए एक जावास्क्रिप्ट सूत्र है, http://stackoverflow.com/a/27943/368691। – Gajus

+0

मीटर/मील में किसी भी तरह से "डी" परिवर्तित किया जा सकता है? मैं पूछ रहा हूं क्योंकि मैं इस तथ्य से उलझन में हूं कि, क्योंकि 180 डिग्री अक्षांश है लेकिन 360 अक्षांश है, मुझे लगता है कि "डी" केवल दूरी की तुलना करने के लिए उपयोगी हो सकता है लेकिन पूर्ण दूरी की गणना के लिए नहीं ... लेकिन मैं चाहता था अगर "डी" किसी भी तरह से परिवर्तित किया जा सकता है तो बहुत खुश रहें :) – ZioBit

1

तुम भी नई ज्यामिति पुस्तकालय जो मैं रिटर्न लगता मीटर में दूरी से computeDistanceBetween() उपयोग कर सकते हैं