Ich habe Probleme gefunden, Rasterwerte aus mehreren Datenrahmen mit Koordinaten von Längen- und Breitengrad zu extrahieren, wobei eine bestimmte geografische Region aus Shapefiles verwendet wird. Alle geographischen Regionen sind in unterschiedlichem Ausmaß und haben einen entsprechenden Vorkommensdatenrahmen von Koordinatendaten. Ich versuchte Maskenfunktion von Raster-Paket mit:Koordinaten aus mehreren Datensätzen extrahieren R
Erste - Last Shape-Dateien, Rasterlayer und Datenrahmen als Liste
shp<-list.files(pattern = "shp")
shape<-lapply(shp,readShapeSpatial,proj4string=CRS("+proj=longlat +ellps=WGS84"))
rastFiles<-list.files(pattern="bil") #List of bioclimatic variables
layers<-stack(rastFiles)
oco<-list.files(pattern = ".csv")
oco<-lapply(oco,read.table,header=T,sep = ",")
oco<-lapply(oco,"[", c(6,5))
y<-lapply(oco, na.omit)
Second - manipuliert Shape-Dateien, Ernte Rasterebene und eine Maske mit geografischer Erweiterung erstellen, die ich brauchen.
p<- lapply(shape, function(i) {
i[[email protected]$ORIGIN==1,] #specifying the region of shapefile
p1<-SpatialPolygons([email protected],[email protected]) #transform specific region in shapefile
nr<-crop(layers,extent(p1)) #crop raster stack with polygons extent
m<-mask(nr,p1) #raster mask using poligon as model
})
Als Ergebnis ist das Objekt "p" eine Liste mit RasterBrick-Objekten. Für Extrakt koordiniert die Zellenwerte von jedem Datenrahmen, habe ich versucht,
value<-lapply(p,extract,y)
die Konsole mir zurück, dass:
Error in round(y) : non-numeric argument to mathematical function
Nach der Struktur der „p“ Überprüfung fand ich, dass die Rasterwerte sind nicht verfügbar :
:.. [email protected] data :Formal class '.MultipleRasterData' [package "raster"] with 14 slots
.. .. .. [email protected] values : int [1:99660, 1:20] NA NA NA NA NA NA NA NA NA NA ...
Allerdings kann ich eins nach dem anderen Datenrahmen Werte in einer rasterstack mit Liste Operatoren extrahieren
extract(nat[[1]],y[[1]])
Auf diese Weise habe ich gesucht, um zu verstehen, warum meine Lapply-Funktion für Werte nicht funktioniert.
Vielen Dank für Ihre Hilfe!