Попытка понять, почему, когда я читаю в растре NDVI, слот @ data @ values не содержит фактических значений, пока я не установлю их вручную. Например:
NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84")
NDVI@data@values
## returns: logical(0)
Этого не произошло с другими растрами, которые я загружал тем же способом, поэтому я запутался. Я хотел бы быть более конкретным, но я не помню, чтобы что-то делал иначе. Достаточно просто получить значения вручную, используя:
NDVI1@data@values <- getValues(NDVI19east)
Но все равно это сложно сделать для каждого файла. Итак, вопрос из двух частей:
Почему это произошло в первую очередь? Я понимаю, что это может быть связано с тем, как хранится растровый файл (т.е. находится ли он в памяти или нет), но я не могу понять, как это меняет методы, которые я должен использовать для доступа к данным ...
Есть ли способ автоматизировать этот процесс (возможно, используя метод, аналогичный lapply) для чтения файлов как RasterLayers и доступа к значениям для этих файлов? Мой текущий проект предполагает чтение 6-10 файлов одновременно для NDVI, Rainfall и других переменных среды, чтобы объединить их и выполнить некоторые взвешенные наложения. Было бы полезно автоматизировать процесс импорта данных.
logical(0)
в действительности значение для любого растрового * объект , созданный из файла. В любом случае, как говорит @mdsumner, не читайте эти значения напрямую и, конечно, не устанавливайте их! (хотя NDVI1@data@values <- getValues(NDVI19east)
это ни на что не повлияет , эти значения игнорируются). Вероятно, дальше по сценарию вы не понимаете, как эффективно использовать эти объекты. Вы можете использовать getValues, но даже это редко необходимо. Предоставьте простой, автономный пример того, чего вы пытаетесь достичь.