देखें इस लिंक अधिक जानकारी के लिए।
समस्या:
मैं एक निरंतर रेखापुंज के माध्यम से लूप करना चाहता हूं (जिसमें कोई विशेषता तालिका नहीं है), सेल द्वारा सेल, और सेल का मूल्य प्राप्त करें। मैं उन मूल्यों को लेना चाहता हूं और उन पर सशर्त रन बनाना चाहता हूं, वास्तव में रेखापुंज कैलकुलेटर का उपयोग किए बिना नक्शे बीजगणित चरणों का अनुकरण करते हुए।
नीचे दिए गए टिप्पणियों के अनुरोध के अनुसार, मैंने समस्या की पृष्ठभूमि प्रदान करने वाले विवरणों को जोड़ा है और नीचे दिए गए अनुभाग में एक विधि को लागू करने की आवश्यकता को उचित ठहराया है जिसे "विश्लेषण आवश्यक:" कहा जाता है।
नीचे प्रस्तावित विश्लेषण, पृष्ठभूमि प्रदान करके मेरी समस्या के लिए प्रासंगिक होने के बावजूद, एक उत्तर में लागू करने की आवश्यकता नहीं है। प्रश्न का दायरा केवल सेल मूल्यों को प्राप्त करने / निर्धारित करने के लिए एक निरंतर रेखापुंज के माध्यम से पुनरावृत्ति से संबंधित है।
विश्लेषण की जरूरत:
यदि निम्न में से कोई भी शर्त पूरी होती है, तो आउटपुट सेल को 1. का मान दें। यदि कोई भी शर्त पूरी नहीं होती है, तो केवल आउटपुट सेल को 0 का मान दें।
शर्त 1: यदि सेल वैल्यू ऊपर और नीचे की कोशिकाओं से अधिक है, तो 1 का मान दें:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
जहाँ कर्नेल फ़ाइल इस तरह दिखती है:
3 3
0 1 0
0 0 0
0 1 0
शर्त 2: यदि सेल वैल्यू लेफ्ट और राइट सेल से अधिक है, तो 1 का मान दें:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
जहाँ कर्नेल फ़ाइल इस तरह दिखती है:
3 3
0 0 0
1 0 1
0 0 0
स्थिति 3: यदि सेल वैल्यू टॉपफ़्ट और निचले सेल से अधिक है, तो 1 का मान दें:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
जहाँ कर्नेल फ़ाइल इस तरह दिखती है:
3 3
1 0 0
0 0 0
0 0 1
स्थिति 4: यदि सेल वैल्यू नीचे की ओर से अधिक है और शीर्षस्थ सेल हैं, तो 1 का मान दें:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
जहाँ कर्नेल फ़ाइल इस तरह दिखती है:
3 3
0 0 1
0 0 0
1 0 0
स्थिति 5: यदि आसन्न कोशिकाओं में से किसी एक का केंद्र सेल के लिए एक मान है, तो आउटपुट रेखापुंज को 1 मान दें ( दो निकटतम पड़ोस गणनाओं के साथ फोकल किस्म का उपयोग करके )
मानचित्र बीजगणित का उपयोग क्यों नहीं करते?
यह नीचे उल्लेख किया गया है कि मेरी समस्या को मानचित्र बीजगणित का उपयोग करके हल किया जा सकता है लेकिन जैसा कि ऊपर देखा गया है कि यह कुल मिलाकर छह रेखापुंज की गणना है, साथ ही साथ बनाई गई सभी आपदाओं के संयोजन के लिए एक है। मुझे ऐसा लगता है कि यह है बहुत सेल-दर-सेल जाने के लिए और के बजाय प्रत्येक व्यक्तिगत रूप से सात बार के माध्यम से पाशन और सात rasters बनाने के लिए काफी स्मृति का एक सा उपयोग की प्रत्येक कोशिका में एक ही बार में तुलना की सब करने के लिए और अधिक कुशल।
समस्या पर हमला कैसे किया जाना चाहिए?
उपरोक्त लिंक IPixelBlock इंटरफ़ेस का उपयोग करने की सलाह देता है, हालांकि यह ESRI प्रलेखन से स्पष्ट नहीं है कि क्या आप वास्तव में IPixelBlock के माध्यम से स्वयं एकल सेल मान प्राप्त कर रहे हैं, या यदि आप निर्धारित किए गए IPLelBlock के आकार से कई सेल मानों का उपयोग कर रहे हैं। एक अच्छा जवाब एक निरंतर रेखापुंज के सेल मूल्यों तक पहुँचने के लिए एक विधि का सुझाव देना चाहिए और कोड के पीछे कार्यप्रणाली का स्पष्टीकरण प्रदान करना चाहिए, यदि यह स्पष्ट रूप से स्पष्ट नहीं है।
संक्षेप में:
अपने सेल मूल्यों तक पहुँचने के लिए एक CONTINUOUS रेखापुंज (जिसमें कोई विशेषता तालिका नहीं है ) में प्रत्येक सेल के माध्यम से लूप करने की सबसे अच्छी विधि क्या है ?
एक अच्छे उत्तर को ऊपर वर्णित विश्लेषण चरणों को लागू करने की आवश्यकता नहीं है, इसे केवल एक रेखापुंज के सेल मूल्यों तक पहुंचने के लिए एक कार्यप्रणाली प्रदान करने की आवश्यकता है।