Cố gắng tìm hiểu sâu về lý do tại sao, khi tôi đọc trong một raster của NDVI, khe giá trị @ data @ không chứa các giá trị thực cho đến khi tôi đặt chúng theo cách thủ công. Ví dụ:
NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84")
NDVI@data@values
## returns: logical(0)
Điều này đã không xảy ra với các trình quét khác mà tôi đã tải bằng cùng một phương thức, vì vậy tôi bối rối. Tôi ước tôi có thể cụ thể hơn nhưng tôi không nhớ đã làm gì khác trước đây. Thật dễ dàng để có được các giá trị bằng tay, bằng cách sử dụng:
NDVI1@data@values <- getValues(NDVI19east)
Nhưng nó vẫn là một nỗi đau để làm như vậy cho mọi tập tin. Vì vậy, câu hỏi hai phần:
Tại sao điều này xảy ra ở nơi đầu tiên? Tôi hiểu rằng nó có thể có liên quan đến cách lưu trữ tệp raster (nghĩa là nó có trong bộ nhớ hay không) nhưng tôi thực sự không thể hiểu làm thế nào thay đổi phương thức tôi nên sử dụng để truy cập dữ liệu ...
Có cách nào để tự động hóa quá trình này (có lẽ sử dụng một phương thức tương tự như lapply) để đọc các tệp dưới dạng RasterLayers và truy cập các giá trị cho các tệp đó? Dự án hiện tại của tôi liên quan đến việc đọc 6-10 tệp tại một thời điểm cho NDVI, Lượng mưa và các biến môi trường khác, để kết hợp chúng và thực hiện một số lớp phủ có trọng số. Nó sẽ hữu ích để tự động hóa quá trình nhập dữ liệu.
logical(0)
là trong thực tế giá trị cho bất kỳ Raster * đối tượng được tạo ra từ một tập tin. Dù bằng cách nào, như @mdsumner nói, không trực tiếp đọc các giá trị này và chắc chắn không đặt chúng! (mặc dù bạn NDVI1@data@values <- getValues(NDVI19east)
sẽ không ảnh hưởng đến bất cứ điều gì , những giá trị này bị bỏ qua). Nó có thể nằm sâu hơn trong kịch bản của bạn khi bạn không hiểu cách sử dụng hiệu quả các đối tượng này. Bạn có thể sử dụng getValues, nhưng thậm chí điều đó hiếm khi cần thiết. Cung cấp một ví dụ đơn giản, khép kín, về những gì bạn đang cố gắng đạt được.