Я нашел проблемы для извлечения растровых значений из нескольких данных с координатой долготы и широты с использованием определенной географической области, полученной из шейп-файлов. Вся географическая область находится в разной степени и имеет соответствующий регистр данных координат. Я попытался с помощью функции маски из растрового пакета:Извлечь координаты из нескольких наборов данных R
Первый - нагрузки шейпфайлы, растровые слои и dataframes как список
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)
Во-вторых - манипулировать шейпфайлы, растровые слои культур и создать маску с географическим расширением, которое я необходимость.
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
})
В результате объект «p» представляет собой список объектов RasterBrick. Для извлечения значений координаты ячейки из каждых кадров данных, я пытался
value<-lapply(p,extract,y)
консоль мне возвращает, что:
Error in round(y) : non-numeric argument to mathematical function
После проверки структуры «р» Я обнаружил, что значения растры не доступны :
.. [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 ...
Однако, я могу извлечь один за одним значениями dataframe в rasterstack с помощью списка операторов:
extract(nat[[1]],y[[1]])
Таким образом, я попытался понять, почему функция lapply для значений не работает.
Спасибо за помощь!