Я все еще работаю в том же проекте, где спросил этот вопрос.
И я все в порядке, но время моей обработки слишком велико, для каждого файла NetCDF, который я его читаю, получаю стек из нескольких временных срезов, а затем обрезаю каждый из этих временных срезов внутри r, используя такой код, как один ниже:
library(raster)
library(ncdf4)
library(ncdf4.helpers)
library(rworldxtra)
data("countriesHigh")
У меня есть файлы NETCdf для всего мира, но я использую только Южную Америку, для этого я использую countiresHigh из пакета rworldxtra для его подмножества:
NONA <- countriesHigh[!is.na(countriesHigh@data$GEO3),]
## get shapefile of South America
SA <- NONA[NONA@data$GEO3 == "South America",]
Затем, используя следующий код, я обрезаю каждый слой, который мне нужен.
##Open conection to the layer
nc <- nc_open("C:/Users/mean_temperature-15000BP-10000BP.nc")
Теперь я начинаю цикл
for(i in 1:10){
message(paste("reading layer", i))
# Read the stack for year i
r <- stack("C:/Users/mean_temperaturemean_temperature-15000BP-10000BP.nc", varname = age[i])
#Change the extent to the correct one
extent(r) <- c(-180,180,-90,90)
#Crop it to South America
r <- crop(r, SA)
gc()
}
Проблема 1. Могу ли я обрезать netcdf один раз перед чтением стеков, чтобы ускорить этот процесс?
Я посмотрел здесь, здесь и здесь, и не нашел ответа.
Проблема 2: если я могу обрезать его, как мне определить степень, учитывая, что файл NETCDF содержит только положительную широту и положительную долготу
как указано в этом вопросе, определенный экстент карты не самый обычный, но я основываю свою обрезку на экстенте шейп-файла, который имеет более типичный c(-180,180,-90,90)
экстент