अलास्का के लिए NLCD2001 लैंड कवर डेटासेट ( लिंक डाउनलोड करें ) पर विचार करें। मुझे इस डेटासेट को दोबारा बनाने की आवश्यकता है ताकि केवल 41, 42 और 43 मूल्य के पिक्सेल संरक्षित हों; अन्य सभी पिक्सेल मान NoData (या यदि आवश्यक हो तो 0) बनने चाहिए।
यह एक साधारण कार्य की तरह लगता है, केवल एक टूल को Reclassify टूल की आवश्यकता होती है। दुर्भाग्यवश, प्रत्येक कॉल अस्पष्ट और अस्वाभाविक त्रुटि संदेश देता है:
Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA
Start Time: Thu Jan 03 09:23:13 2013
ERROR 999998: Unexpected Error.
Failed to execute (Reclassify).
Failed at Thu Jan 03 09:23:13 2013 (Elapsed Time: 0.00 seconds)
मैं इस रैस्टर डेटासेट को पुनः प्राप्त करने के बारे में कैसे जा सकता हूं? मैं ArcCatalog 10.0, बिल्ड 4000 का उपयोग कर रहा हूं, जिसमें स्थानिक विश्लेषक विस्तार सक्षम है।
reclassify
एक अंतिम उपाय होना चाहिए, क्योंकि यह गुंजाइश में इतना सामान्य है कि यह संभावना है कि उन तरीकों का उपयोग करता है जो कम कुशल हैं, जब प्राप्त किया जा सकता है, तो पुनर्वर्गीकरण अंकगणितीय या तार्किक रूप से व्यक्त करना आसान है। वर्तमान मामले में, पुनर्वर्गीकरण की कसौटी इतनी सरल है कि आपको पहले Con
या सीधे अंकगणितीय संचालन के साथ इसे आज़माना चाहिए (क्योंकि वे तेज़ हैं)। उदाहरण के लिए, "grid" * ("grid" >= 41) * ("grid" <= 43)
इसे करना चाहिए। रैम एक मुद्दा नहीं होना चाहिए - स्थानिक विश्लेषक स्वचालित रूप से अपने रेखापुंज I / O को विंडो करता है और ये स्थानीय ऑपरेशन हैं।
Inlist
एक अच्छा समाधान (+1) है। मैं con
ऑपरेशन के दौरान रैम उपयोग का उपयोग करने और उसकी निगरानी करने में सक्षम था । यह कभी भी 180 एमबी से अधिक नहीं हुआ, जो कि आर्कपैक को लॉन्च करने के लिए उपयोग की जाने वाली रैम से बमुश्किल अधिक है। ArcGIS में टाइलिंग स्वचालित है - आप इसे नियंत्रित करने के लिए भी नहीं मिलेंगे (जब तक कि आप C / Fortran इंटरफ़ेस पर प्रोग्रामिंग नहीं कर रहे हैं)। ऐसा प्रतीत होता है कि रैम की सीमाएँ थोड़ी चिंता का विषय हैं।
con
ने मेरे लिए भी शर्त के साथ काम किया "Value" >= 41 AND "Value" <= 43
। मैं इस समाधान के साथ गया होगा, लेकिन मुझे यकीन नहीं है कि अगर भविष्य में अतिरिक्त रास्टर मूल्यों में रुचि होने जा रही है। जाहिर है मैं एक OR
खंड में जोड़ सकता हूं , लेकिन तब यह और अधिक जटिल होने लगता है। InList
पठनीयता और स्थिरता के संबंध में सबसे सीधा-सीधा समाधान लगता है।