जब मैं NDVI के एक रेखापुंज में पढ़ता हूं, तो इसकी तह तक जाने की कोशिश करने पर, @ डेटा @ मान स्लॉट में वास्तविक मान नहीं होते हैं जब तक कि मैं उन्हें मैन्युअल रूप से सेट नहीं करता हूं। उदाहरण के लिए:
NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84")
NDVI@data@values
## returns: logical(0)
यह अन्य चूहों के साथ नहीं हुआ था जिन्हें मैंने उसी विधि से लोड किया था, इसलिए मैं भ्रमित हूं। मैं चाहता हूं कि मैं और अधिक विशिष्ट हो सकूं लेकिन मुझे इससे पहले कुछ अलग करने की याद नहीं है। मान का उपयोग करके मैन्युअल रूप से प्राप्त करना काफी आसान है:
NDVI1@data@values <- getValues(NDVI19east)
लेकिन यह अभी भी हर फ़ाइल के लिए ऐसा करने के लिए एक दर्द है। तो, दो-भाग प्रश्न:
पहली बार में ऐसा क्यों हुआ? मैं समझता हूं कि इससे कुछ हो सकता है कि रैस्टर फाइल को कैसे स्टोर किया जा रहा है (यानी यह मेमोरी में है या नहीं) लेकिन मैं वास्तव में समझ नहीं पा रहा हूं कि डेटा को एक्सेस करने के लिए मुझे उन तरीकों को कैसे बदलना चाहिए ...
क्या इस प्रक्रिया को स्वचालित करने का एक तरीका है (शायद lapply के समान विधि का उपयोग करके) RasterLayers के रूप में फ़ाइलों को पढ़ने और उन फ़ाइलों के लिए मानों तक पहुँचने के लिए? मेरी वर्तमान परियोजना में एनडीवीआई, वर्षा और अन्य पर्यावरणीय चर के लिए एक समय में 6-10 फाइलें पढ़ना शामिल है, ताकि उन्हें संयोजित किया जा सके और कुछ भारित ओवरले का प्रदर्शन किया जा सके। यह डेटा आयात करने की प्रक्रिया को स्वचालित करने में मददगार होगा।
logical(0)
वास्तव में के लिए मूल्य है किसी भी रेखापुंज * एक फ़ाइल से बनाया वस्तु। किसी भी तरह से, @ ममस्डरर कहते हैं, सीधे इन मूल्यों को न पढ़ें, और निश्चित रूप से उन्हें सेट न करें! (हालांकि आपका कुछ भीNDVI1@data@values <- getValues(NDVI19east)
प्रभावित नहीं करेगा , इन मूल्यों की अनदेखी की जाती है)। यह संभवतः आपकी स्क्रिप्ट को और नीचे ले जाता है जहाँ आपको समझ नहीं आता कि इन वस्तुओं का प्रभावी ढंग से उपयोग कैसे किया जाए। आप getValues का उपयोग कर सकते हैं, लेकिन यहां तक कि शायद ही कभी आवश्यक है। एक सरल, आत्म-निहित, जो आप हासिल करने की कोशिश कर रहे हैं, उसका उदाहरण प्रदान करें।