2010-05-18 11 views
19

मेरे ऐप में, जीपीएस वाहन के स्थान को चुनता है। तब यह उन सभी बिंदुओं पर मार्कर लगाए जाने के लिए माना जाता है जहां वाहन किसी भी दिशा में 1 किलोमीटर के लिए ड्राइव कर सकता है (ध्यान दें कि सड़कों को 1 किमी तक पहुंचने में कई बार काटा जा सकता है)।Google मानचित्र: एक बिंदु देखते हुए, किसी दिए गए सड़क दूरी पर सभी बिंदुओं को कैसे ढूंढें?

क्या कोई मुझे सुझाव दे सकता है कि यह कैसे करें? अग्रिम में धन्यवाद।

+0

आप मेरे सबसे अच्छे शर्त :( – user315067

+0

आप एक समाधान है कि अनुमति नहीं है "वापस दोहरीकरण" के लिए देख रहे हैं, तो थे आप सड़कों पर नहीं जा सकते हैं वाइस, या वापस शुरू किया जहां आप शुरू किया? एक शहर के केंद्र की स्थिति में आप केवल 1 किमी के लिए ब्लॉक के चारों ओर ब्लॉक कर सकते हैं! – chillysapien

+0

हाँ कोई डबल बैकिंग नहीं। प्रभावी रूप से, यह कहने की तरह ... यदि आपके पास 1 किमी मूल्यवान रिजर्व ईंधन है, तो सभी पेट्रोल स्टेशन आपकी पहुंच के भीतर हैं। – user315067

उत्तर

20

यह Google मानचित्र API के साथ हल करने में एक बहुत ही मुश्किल समस्या है। निम्नलिखित एक विधि है कि आप विचार कर सकते हैं है:

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

    How to calculate the latlng of a point a certain distance away from another?

    20 पर मार्कर के साथ स्क्रीनशॉट एक 1km त्रिज्या के साथ बाउंडिंग सर्कल पर डिग्री अंतराल:

हटाया मृत ImageShack लिंक - कैसे एक बिंदु एक और से एक निश्चित दूरी दूर की LatLng गणना करने के लिए?

  1. इन बिंदुओं को निकटतम सड़क पर स्नैप करने के लिए एक चाल भी है। आप इसके अच्छे कार्यान्वयन के लिए Mike Williams' Snap point to street examples देख सकते हैं।

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

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


अद्यतन:

:

मैं एक बहुत ही साफ कार्यान्वयन जो एक मैं ऊपर वर्णित करने के लिए इसी तरह की एक विधि का उपयोग किया गया प्रतीत होता पाया

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

स्क्रीनशॉट:

हटाया मृत ImageShack लिंक - ड्राइविंग त्रिज्या

+0

ठीक है, lemme इस तकनीक को आजमाएं ... उत्तर – user315067

+0

के लिए धन्यवाद आपने पहली छवि कैसे बनाई है, इस बारे में कुछ प्रकार के स्पष्टीकरण के लिए?(परिधि के साथ बिंदुओं के निर्देशांक के साथ बाउंडिंग सर्कल) धन्यवाद! – bradleygriffith

+1

मैंने इसे समझ लिया। यहां बताया गया है कि मैंने यह कैसे किया: http://jsfiddle.net/bradleygriffith/eh4NJ/ जो ConroyP द्वारा प्रदान किए गए फ़ंक्शन से भारी रूप से आधारित है: http://stackoverflow.com/questions/3552334/finding- एक-सेट-ऑफ-निर्देशांक-भीतर-एक-निश्चित-श्रेणी-अक्षांश-लांगटाइड – bradleygriffith

2

प्राकृतिक जानवर बल एल्गोरिथ्म खाते में हर चौराहा पर प्रत्येक संभव निर्णय लेने के लिए सभी संभव नोड्स की एक सूची का निर्माण करना है।

मुझे संदेह है कि 1 किमी के भीतर आपको औसतन 10 चौराहे मिलेंगे और एक चौराहे पर 3 विकल्पों का औसत प्राप्त होगा, आप 3^10 - लगभग 59,049 अंत नोड्स के साथ समाप्त होंगे (ध्यान दें कि आपको 10 चौराहे पर होना चाहिए पूरी संख्या तक पहुंचने के लिए सड़क की हर शाखा)।

असल में यह संख्या नीचे जायेगी और मुझे लगता है कि अलग-अलग मार्ग से एक ही नोड में जाना आम बात नहीं है, खासकर शहरों में।

यह दृष्टिकोण आपको एक सटीक उत्तर देगा (आपको इनपुट के रूप में अच्छी सड़क मानचित्र प्रदान करना होगा)। यह संभावित समय है, लेकिन एन इतना ऊंचा प्रतीत नहीं होता है, इसलिए यह व्यावहारिक हो सकता है।

इसके लिए इन नोड्स के लिए आपको क्या चाहिए (या किस तरह के परिदृश्यों को आप उन्हें छीनने के लिए पर्याप्त मानेंगे) के आधार पर और सुधार और अनुकूलन संभव हो सकते हैं।

+0

लोग, प्रतिक्रियाओं के लिए बहुत धन्यवाद। स्पष्ट रूप से यह हल करने में एक आसान समस्या नहीं है। मैं फिलहाल इस पर काम करने के लिए निलंबित कर रहा हूं ... लेकिन जब भी मैं वापस आऊंगा तो निश्चित रूप से आपको सभी को सूचित कर दूंगा। सभी के लिए बहुत बढ़िया धन्यवाद मैं डैनियल को सही जवाब के रूप में चिह्नित करूंगा क्योंकि एसओ ने मुझे एक से अधिक सही उत्तरों को चिह्नित नहीं किया है। – user315067

2

उपरोक्त डैनियल के दृष्टिकोण पर थोड़ा सा विस्तार करते हुए, आप सबसे पहले अपने मूल से सीधे रेखा त्रिज्या के भीतर सभी बिंदु ढूंढना चाहते हैं। यह नोड्स का आपका प्रारंभिक सेट है। अब अपने शुरुआती सेट में उन नोड्स और अन्य नोड्स में सभी किनारों की घटना शामिल करें। अब जांचें कि नोड्स जुड़े हुए हैं और वहां पर कोई भी नोड्स नहीं हैं जो आप तक नहीं पहुंच सकते हैं। अब अपने वाहन नोड से शुरू "shortest path tree" बनाएं।

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

0
  1. सूची सभी संभव खाते में हर चौराहा (लेकिन यह कैसे स्वचालित रूप से यह करने के लिए?
  2. उपयोग Dijkstra`s एल्गोरिथ्म पर प्रत्येक संभव निर्णय लेने नोड्स सभी बिंदुओं को बंद मार्ग खोजने के लिए।
  3. कल्पना डेटा। (यह एक छोटा सा मुश्किल है क्योंकि वहाँ पहुँच में क्षेत्र के अंदर किसी न पहुंचने योग्य क्षेत्रों हो सकता है।
संबंधित मुद्दे