Ich versuche herauszufinden, warum der Slot @ data @ values beim Einlesen eines NDVI-Rasters erst dann die tatsächlichen Werte enthält, wenn ich sie manuell einstelle. Beispielsweise:
NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84")
NDVI@data@values
## returns: logical(0)
Dies ist bei anderen Rastern, die ich mit der gleichen Methode geladen habe, nicht geschehen, daher bin ich verwirrt. Ich wünschte, ich könnte spezifischer sein, aber ich erinnere mich nicht, dass ich vorher etwas anderes gemacht hätte. Es ist einfach genug, die Werte manuell abzurufen, indem Sie Folgendes verwenden:
NDVI1@data@values <- getValues(NDVI19east)
Aber es ist immer noch eine Qual, dies für jede Datei tun zu müssen. Also, zweiteilige Frage:
Warum geschah das überhaupt? Ich verstehe, dass es etwas damit zu tun haben könnte, wie die Rasterdatei gespeichert wird (dh ob sie sich im Speicher befindet oder nicht), aber ich kann nicht wirklich verstehen, wie dies die Methoden ändert, die ich für den Zugriff auf die Daten verwenden sollte ...
Gibt es eine Möglichkeit, diesen Prozess zu automatisieren (möglicherweise mithilfe einer ähnlichen Methode wie lapply), um Dateien als RasterLayers zu lesen und auf Werte für diese Dateien zuzugreifen? In meinem aktuellen Projekt werden jeweils 6-10 Dateien für NDVI, Rainfall und andere Umgebungsvariablen gelesen, um sie zu kombinieren und einige gewichtete Überlagerungen durchzuführen. Es wäre hilfreich, den Import der Daten zu automatisieren.
logical(0)
ist der Wert für in der Tat jeder Raster * Objekt aus einer Datei erstellt. Wie @mdsumner sagt, lesen Sie diese Werte in beiden Fällen nicht direkt und setzen Sie sie auf keinen Fall! (obwohl Ihr NDVI1@data@values <- getValues(NDVI19east)
keinen Einfluss auf irgendetwas , werden diese Werte ignoriert). Es ist wahrscheinlich weiter unten in Ihrem Skript, wo Sie nicht verstehen, wie Sie diese Objekte effektiv verwenden können. Sie können getValues verwenden, aber auch das ist selten notwendig. Geben Sie ein einfaches, in sich geschlossenes Beispiel für das, was Sie erreichen möchten.