Работаете с большим количеством данных и растров в R?

Добрый день, я работаю с большим набором данных с ~125 000 мест долготы/широты с указанием даты присутствия/отсутствия видов. записи. Поскольку в каждом месте я хочу выяснить, какая погода была в каждом месте в день и в течение 3 месяцев до даты. Для этого я загрузил ежедневные данные о погоде для заданной погодной переменной (, например, максимальная температура )в течение 5-летнего периода, когда были получены данные. Всего у меня 1826 растровых файлов размером 2-3 МБ.

Я планировал объединить все растровые файлы, а затем извлечь значение из каждого растра (1826)для каждой точки. Это создаст массивный файл, который я мог бы использовать для поиска нужных мне дат. Однако это невозможно, потому что я не могу сложить столько растров. Я попытался разбить растры на стопки по 500, это работает, но файлы, которые он создает, имеют размер около 1 ГБ и очень медленные (строки, 125 000; столбцы, 500). Кроме того, когда я пытаюсь перенести все эти файлы в R, чтобы создать большой фрейм данных, это не работает.

Я хотел бы знать, есть ли способ работать с таким объемом данных в R или есть ли пакет, который я мог бы использовать, чтобы помочь. Могу ли я использовать такой пакет, как ff? Есть ли у кого-нибудь предложения по менее энергоемкому способу делать то, что я хочу? Я думал о чем-то вроде функции lapply, но никогда раньше ею не пользовался и не совсем уверен, с чего начать.

Любая помощь будет действительно полезна, заранее спасибо за ваше время. Код, который я сейчас безуспешно использую, приведен ниже.

С уважением, Адам

library(raster)
library(rgdal)
library (maptools)
library(shapefiles)

# To create weather data files, first set the working directory to the appropriate location (i.e., maxt)
# list of raster weather files
files<- list.files(getwd(), pattern='asc')
length(files)

memory.size(4000)  
memory.limit(4000)

# read in lon/lat data
X<-read.table(file.choose(), header=TRUE, sep=',')
SP<- SpatialPoints(cbind(X$lon, X$lat)) 

#separate stacks into mannageable sizes
s1<- stack(files[1:500])
i1 <- extract( s1,SP, cellnumbers = True, layer = 1, nl = 500)
write.table(i1, file="maxt_vals_all_points_all_dates_1.csv", sep=",", row.names= FALSE, col.names= TRUE)
rm(s1,i1)
s2<- stack(files[501:1000])
i2 <- extract( s2,SP, cellnumbers = True, layer = 1, nl = 500)
write.table(i2, file="maxt_vals_all_points_all_dates_2.csv", sep=",", row.names= FALSE, col.names= TRUE)
rm(s2,i2)
s3<- stack(files[1001:1500])
i3 <- extract( s3,SP, cellnumbers = True, layer = 1, nl = 500)
write.table(i3, file="maxt_vals_all_points_all_dates_3.csv", sep=",", row.names= FALSE, col.names= TRUE)
rm(s3,i3)
s4<- stack(files[1501:1826])
i4 <- extract( s4,SP, cellnumbers = True, layer = 1, nl =325)
write.table(i4, file="maxt_vals_all_points_all_dates_4.csv", sep=",", row.names= FALSE, col.names= TRUE)
rm(s4,i4)

# read files back in to bind into final file !!! NOT WORKING FILES ARE TOO BIG!!
i1<-read.table(file.choose(),header=TRUE,sep=',')
i2<-read.table(file.choose(),header=TRUE,sep=',')
i3<-read.table(file.choose(),header=TRUE,sep=',')
i4<-read.table(file.choose(),header=TRUE,sep=',')

vals<-data.frame(X, i1, i2, i3,i4)
write.table(vals, file="maxt_master_lookup.csv", sep=",", row.names= FALSE, col.names= TRUE)
5
задан Adam 7 April 2012 в 00:14
поделиться