Próbuję zrozumieć, dlaczego, kiedy czytam w rastrze NDVI, gniazdo @ data @ wartości nie zawiera rzeczywistych wartości, dopóki nie ustawię ich ręcznie. Na przykład:
NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84")
NDVI@data@values
## returns: logical(0)
Nie stało się tak z innymi rastrami, które załadowałem tą samą metodą, więc jestem zdezorientowany. Chciałbym być bardziej konkretny, ale nie pamiętam, żeby robić wcześniej inaczej. Łatwo jest uzyskać wartości ręcznie, używając:
NDVI1@data@values <- getValues(NDVI19east)
Ale wciąż jest to trudne, gdy trzeba to zrobić dla każdego pliku. Pytanie dwuczęściowe:
Dlaczego tak się stało? Rozumiem, że to może mieć coś wspólnego ze sposobem przechowywania pliku rastrowego (tj. Czy jest w pamięci, czy nie), ale tak naprawdę nie rozumiem, jak to zmienia metody dostępu do danych ...
Czy istnieje sposób na zautomatyzowanie tego procesu (być może przy użyciu metody podobnej do lapply) do odczytu plików jako RasterLayers i uzyskiwania dostępu do wartości dla tych plików? Mój obecny projekt polega na czytaniu 6–10 plików jednocześnie dla NDVI, opadów deszczu i innych zmiennych środowiskowych, w celu ich połączenia i wykonania ważonych nakładek. Pomocne byłoby zautomatyzowanie procesu importowania danych.
logical(0)
jest w rzeczywistości wartość dla każdej Raster * obiektu utworzonego z pliku. Tak czy inaczej, jak mówi @mdsumner, nie czytaj bezpośrednio tych wartości, a na pewno ich nie ustawiaj! (chociaż NDVI1@data@values <- getValues(NDVI19east)
nie wpłyniesz na nic , te wartości są ignorowane). Prawdopodobnie w dalszej części skryptu nie rozumiesz, jak skutecznie korzystać z tych obiektów. Możesz użyć getValues, ale nawet to rzadko jest konieczne. Podaj prosty, samodzielny przykład tego, co próbujesz osiągnąć.