कोड में उपयोग करने के लिए एक तेज़, ओपन-सोर्स रास्टर कॉस्ट-डिस्टेंस फंक्शन की तलाश में


9

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

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

एसी # कार्यान्वयन आदर्श होगा, लेकिन मैं वहाँ से बाहर होने वाली किसी भी चीज़ को देखूंगा।

क्या किसी को एक ओपन-सोर्स लाइब्रेरी का पता है जो इसका समर्थन करता है? आपकी सहायताके लिए धन्यवाद!

जवाबों:


5

GRASS GIS में एक C कार्यान्वयन है r.cost( स्रोत , प्रलेखन ) जो एक मिन-हीप का उपयोग करता है । वैकल्पिक रूप से, आप की तरह एक ग्राफ पैकेज इस्तेमाल कर सकते हैं QuickGraph और फ्लोयड-Warshall लागत की गणना करने के।

GRASS 6.4 में हाल के बदलावों ने r.cost को काफी तेज बना दिया है , इसलिए शायद प्रदर्शन काफी अच्छा हो सकता है: मेरे लैपटॉप पर, 1M सेल क्षेत्र के लिए लगभग 3s लगते हैं, या शूरवीर की चाल के साथ 5s सक्षम होते हैं। GRASS एक C अनुप्रयोग है, C # कोडबेस के लिए ड्रॉप-इन समाधान नहीं है। यदि आप अपने स्टैक में ठीक कर रहे हैं, तो आप GRW पर कॉल करने के लिए PyWPS का उपयोग कर सकते हैं , और फिर अपने आवेदन में कहीं और परिणाम का उपयोग कर सकते हैं।


मैं एक वेब एप्लिकेशन में इसका उपयोग करने जा रहा हूं, इसलिए मेरा लक्ष्य केवल कुछ सेकंड में ऑपरेशन को पूरा करना है। मेरे पास कभी भी एक एकल लक्ष्य सेल और एक अपेक्षाकृत तंग अधिकतम लागत-दूरी (केंद्र लक्ष्य सेल से लागत रेखापुंज के किनारे तक की दूरी, न्यूनतम लागत पर एक सीधी रेखा मानते हुए) होगी। इन स्थितियों के तहत आर्कपैक का उपयोग करने वाले मेरे परीक्षण मुझे लगता है कि यह संभव है। किसी भी सुझाव या अनुभव का उपयोग करते हुए GR में C #?
20

मैंने आपके प्रश्नों का उत्तर देने के लिए अपना प्रश्न अपडेट किया है, यह एक टिप्पणी के रूप में शुरू हुआ, लेकिन बहुत लंबा हो गया। उम्मीद है की वो मदद करदे!
scw

धन्यवाद scw! यह सब बहुत अच्छी जानकारी है, लेकिन वास्तव में मुझे वहां नहीं मिलता है जहां मुझे होने की आवश्यकता है जब तक कि मैं GRASS कोड (जो मैं करने के लिए उत्सुक नहीं हूं) को पोर्ट करना शुरू कर दूं। शायद वहाँ कुछ सुझाव के साथ कुछ अन्य रेखापुंज वहाँ रहे हैं। मैं इसमें खुदाई जारी रखने जा रहा हूं और मैं उस समाधान को पोस्ट करूंगा जो मैं तय करता हूं।
atog

शायद आप अपने सहकर्मी की ओर रुख कर सकते हैं: azavea.com/research/staff-research-projects/mapalgebra ;-) मैंने GRASS कोड का सुझाव दिया क्योंकि इसका एक मजबूत और तेज़ कार्यान्वयन, C # grorocessing space के लिए अपेक्षाकृत नया है, इसलिए यह बहुत अच्छा है। कार्यान्वयन के लिए आने में मुश्किल हो सकती है।
scw

scw - यहीं से मेरी यात्रा शुरू हुई, वास्तव में। मेरी समस्या यह है कि उनका कार्यान्वयन उच्च गुणवत्ता वाली गणनाओं के लिए प्रसंस्करण समय का बलिदान करता है। अब हम इसके विपरीत करने के लिए एक एल्गोरिथम पर काम कर रहे हैं। GRASS एक शानदार सुझाव है, मेरे पास वास्तव में इसका उपयोग करने का एक तरीका नहीं है। =)
atogle

3

मैंने r.costGRASS में फ़ंक्शन का उपयोग किया है । एक सामान्य लैपटॉप पर 1000 * 1000 ग्रिड कोई समस्या नहीं थे। विकास के तहत एक आर पैकेज (gdistance, http://r-forge.r-project.org/projects/gdistance/ ) भी है। मुझे GRASS बहुत तेज लगा।


0

यह एक अंतर सरणी में सबसे छोटा रास्ता खोजने में सक्षम है .... C # में लिखा गया है। 4000,4000 सरणियों के साथ मेरे लैपटॉप पर ठीक काम करने लगता है, एक नज़र के लायक हो सकता है।

http://www.codeproject.com/Articles/9040/Maze-Solver-shortest-path-finder

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.