Intentando llegar al fondo de por qué, cuando leo en un ráster de NDVI, el espacio @ data @ valores no contiene los valores reales hasta que los configure manualmente. Por ejemplo:
NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84")
NDVI@data@values
## returns: logical(0)
Esto no sucedió con otros rásteres que había cargado con el mismo método, por lo que estoy confundido. Desearía poder ser más específico, pero no recuerdo haber hecho nada diferente antes. Es bastante fácil obtener los valores manualmente, usando:
NDVI1@data@values <- getValues(NDVI19east)
Pero sigue siendo un dolor tener que hacerlo para cada archivo. Entonces, una pregunta de dos partes:
¿Por qué sucedió esto en primer lugar? Entiendo que podría tener algo que ver con la forma en que se almacena el archivo ráster (es decir, si está en la memoria o no), pero realmente no puedo entender cómo eso cambia los métodos que debo usar para acceder a los datos ...
¿Hay alguna manera de automatizar este proceso (quizás usando un método similar a lapply) para leer archivos como RasterLayers y acceder a valores para esos archivos? Mi proyecto actual consiste en leer 6-10 archivos a la vez para NDVI, Rainfall y otras variables ambientales, para combinarlos y realizar algunas superposiciones ponderadas. Sería útil automatizar el proceso de importación de datos.
logical(0)
hecho, es el valor para cualquier objeto Raster * creado a partir de un archivo. De cualquier manera, como dice @mdsumner, ¡no lea directamente estos valores, y ciertamente no los configure! (aunqueNDVI1@data@values <- getValues(NDVI19east)
no afectará nada , estos valores se ignoran). Probablemente esté más abajo en su secuencia de comandos, donde no comprende cómo utilizar estos objetos de manera efectiva. Puede usar getValues, pero incluso eso rara vez es necesario. Proporcione un ejemplo simple y autónomo de lo que está tratando de lograr.Respuestas:
Esta pregunta ha sido respondida en los comentarios (por mdsummer ). Esta es solo una forma de poner esas ideas en orden y sacar esta pregunta de la cola sin respuesta.
Aquí puede descargar la NVDI de jpg en todo el mundo desde la NASA .
Aquí tienes el código y un archivo ráster para probar .
Como se muestra en la pregunta, cargar el ráster en R con la función raster () no carga los valores reales en la memoria.
Como puede ver, los valores de NVDI @ data @ no tienen valores, mientras que el gráfico se puede representar mostrando esos valores "ocultos". Puede ver que, si carga el archivo en QGIS, los valores se leen realmente.
Por lo tanto, debe usar la función readAll () del paquete ráster (como dijo mdsummer en los comentarios). Aquí está el código:
Con esta función, ahora puede acceder a los valores ráster dentro del archivo.
fuente