2011-11-14 11 views
11

मुझे समुद्र से, एक समुद्री बंदरगाह से दूसरे समुद्री बंदरगाह तक, पथ से बाहर निकलने की कोशिश करने की मुश्किल चुनौती है। अंतिम उद्देश्य इसे Google (या बिंग) मानचित्र पर पॉलीलाइन के रूप में प्लॉट करना है।महंगी बिंदु से समुद्र द्वारा पथ खोजें ए से महंगा बिंदु बी

पथ की जरूरत है:

  • प्रशंसनीय रहो, के रूप में एक जहाज भूमि (जाहिर है) अधिक नहीं हो सकती
  • भी तटीय रेखा के करीब नहीं चला। जहाज किनारे के पास बहुत दूर नहीं जा सकते
  • बहुत जटिल नहीं है। यह Google मानचित्र पर प्लॉट किया जा रहा है, इसलिए 2000 पॉइंट पॉलीलाइन नहीं करेगी।
  • कम से कम हो सकता है, लेकिन इसके बाद के संस्करण तीन अंक

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

मैं भी जियोकोडिंग (पर्याप्त विश्वसनीय नहीं प्लस मैं एक मार्ग साजिश की कोशिश कर रहा अनुरोधों के हजारों के माध्यम से जल)

मेरे अगले विचार किसी भी तरह गूगल मैप्स का इस्तेमाल किया गया और परीक्षण करता है, तो एक बिंदु नीला है या के बारे में सोचा नहीं। GMaps.NET, एक महान .NET मैपिंग घटक, ने इसे एक पिक्सेल के रंग को प्रस्तुत करने और परीक्षण करने के बिटमैप बनाकर इसे प्राप्त करने की अनुमति दी।

पहली समस्या यह है कि इस हिट परीक्षण की सटीकता केवल छवि के संकल्प छवि के रूप में उतनी ही अच्छी है जितनी मैं परीक्षण करता हूं। एक दूसरे के करीब बंदरगाहों के लिए, बंदरगाहों के लिए यह ठीक है, सटीकता पीड़ित है।

दूसरी समस्या, मान लीजिए कि मैं किसी प्रकार की 'ब्लू पिक्सेल परीक्षण' विधि का उपयोग करता हूं, क्या एल्गोरिदम मार्ग खोजने के लिए सही है। A* algorithm आशाजनक लग रहा है, लेकिन मुझे यकीन नहीं है कि तट से निकट के रास्ते से 'आउट' पथ को कैसे धक्का देना है। न ही पॉलीलाइन की जटिलता को कम करने के लिए कैसे।

तो ... कोई इनपुट: विचार, विचार, लिंक, नमूना कोड इत्यादि का स्वागत किया जाएगा। धन्यवाद।

(मैं जोड़ने चाहिए कि यह एक यात्रा साइट की है। शुद्धता भी महत्वपूर्ण नहीं है मैं शिपिंग या कुछ भी निर्देशन नहीं कर रहा हूँ) मैं 'ब्लू पिक्सेल किसी तरह का उपयोग

+0

http://www.openseamap.org भी है, यदि आपको इसके बारे में पता नहीं था ... –

+3

यदि आप ए * या डिजस्ट्रा के सबसे छोटे पथ जैसे सबसे छोटे पथ एल्गोरिदम का उपयोग करते हैं, तो आप जहाजों को धक्का दे सकते हैं समुद्र तट के नजदीक नोड्स के बीच संबंधों के लिए वास्तविक जीवन में लंबे समय से नोड्स के बीच संबंध बनाकर किनारे से बाहर। यह कप्तान के अनुरूप होगा कि ईंधन उपभोग और समय लेने के साथ-साथ मार्ग के जोखिम को एक कारक के रूप में लिया जा सके। ध्यान दें कि यदि आप ग्राफ मार्ग-खोज समस्या के रूप में इसे मॉडल करते हैं तो मार्ग ग्राफ की संरचना से प्रभावित हो सकता है - मैनहट्टन दूरी देखें। – mcdowella

+0

openseamap.org लिंक के लिए धन्यवाद, लेकिन दुर्भाग्य से यह उसी अपूर्ण तटरेखा डेटा पर आधारित है जो OpenStreeMap का उपयोग करता है। – NickH

उत्तर

2

दूसरा समस्या, यह मानते हुए परीक्षण 'विधि, एक मार्ग खोजने के लिए क्या एल्गोरिदम सही है। ए * एल्गोरिदम आशाजनक दिखता है, लेकिन मुझे यकीन नहीं है कि तट से निकट के रास्ते से 'आउट' पथ को कैसे धक्का देना है। न ही पॉलीलाइन की जटिलता को कम करने के लिए कैसे।

पहले दुनिया की बाइनरी समुद्री छवि बनाएं (सफेद: समुद्र, काला: समुद्र नहीं है), फिर छवि को मिटा दें। क्षरण के बाद सभी सफेद बिंदु navigable हैं। बेशक अजीब sandbank या दो की उपेक्षा।

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

+0

धन्यवाद थिटन, मुझे तट से मार्ग को धक्का देने के लिए बंदरगाह से निकट 'समुद्र बिंदु' का विचार पसंद है। – NickH

2

आपको पॉलीलाइन को सरल बनाने के लिए उदा। ए * खोज, आप Douglas-Peucker जैसे एल्गोरिदम का उपयोग कर सकते हैं। संदर्भों की यह सूची भी देखें: http://maven.smith.edu/~orourke/TOPP/P24.html

वैकल्पिक विचार: एक * लागू करने के लिए एक संभव राज्य के रूप में प्रत्येक पिक्सेल (स्थिति) पर विचार किया जाएगा हमेशा की तरह है, लेकिन वहाँ कोई कारण नहीं क्यों आप संभावित स्थितियों के बजाय के रूप में पिक्सल के सिर्फ एक सबसेट का उपयोग नहीं कर सकता है है । यदि आप शुरुआत और अंतराल के नजदीक राज्यों की घनत्व बनाते हैं, और अंतहीन बिंदु से दूर राज्यों की घनत्व कम करते हैं, तो आप स्वचालित रूप से पथ प्राप्त करेंगे जो छोटे, सटीक आंदोलनों के साथ शुरू होते हैं और समाप्त होते हैं, लेकिन बीच में लंबे सीधी सेगमेंट होते हैं (उदाहरण के लिए प्रशांत पार करते समय)। यदि आप ऐसा करते हैं, तो आप भूमि के पास स्थितियों की घनत्व भी बढ़ा सकते हैं।

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

+0

लिंक और विचारों के लिए धन्यवाद। ए * tweaks दोनों समझ में आता है और – NickH

+0

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

0

Google "यूक्लिडियन सबसे छोटा रास्ता" के लिए Google। विकिपीडिया में कुछ जानकारी

"यूक्लिडियन सबसे छोटी पथ समस्या कम्प्यूटेशनल ज्यामिति में एक समस्या है: यूक्लिडियन अंतरिक्ष में पॉलीहेड्रल बाधाओं का एक सेट दिया गया है, और दो बिंदु, उन बिंदुओं के बीच सबसे छोटा रास्ता ढूंढें जो किसी भी को छेड़छाड़ नहीं करते हैं बाधाएं। "

http://en.wikipedia.org/wiki/Euclidean_shortest_path

0

अगर मैं तुम्हें थे मैं एक ग्राफ सिद्धांत दृष्टिकोण का चयन करेंगे। आपकी एकमात्र समस्या डेटाबेस के किनारों को इकट्ठा करना होगा। यदि आपके पास है तो आप सबसे कम मार्ग की योजना बनाने के लिए ए * या डिजस्ट्रा के अलगो का उपयोग कर सकते हैं। वैसे भी, अगर मुझे लगता है कि आपको सही लगता है तो आपको (Searoutefinder) के समान कुछ चाहिए? सौभाग्य!

0

NOAA से साइट पर एक उच्च रिज़ॉल्यूशन शोरलाइन पाया जा सकता है।

अपने आप को हल करने के लिए आप आसान तरीका भी ले सकते हैं और AtoBviaC द्वारा शिपिंग मार्ग webservice के लिए बजट मांग सकते हैं और सभी अपेक्षित मार्गों को पूर्ववत कर सकते हैं, लेकिन यह आपकी आवश्यकताओं के लिए बहुत महंगा हो सकता है।

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