在R中裁剪Netcdf栅格

时间:2018-08-27 14:10:09

标签: r netcdf netcdf4

我仍在询问this question的同一项目中工作。

没问题,但是我的处理时间太长了,对于每个NetCDF文件,我正在读取它,从多个时间片中获取堆栈,然后使用r裁剪每个时间片。像下面这样的代码:

library(raster)
library(ncdf4)
library(ncdf4.helpers)
library(rworldxtra)
data("countriesHigh")

我拥有的NETCdf文件适用于世界各地,但是我仅使用南美,因为我使用了 rworldxtra 包中的 countiresHigh 来对其进行子集化:

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,以使此过程更快吗?

我看过hereherehere,但没有找到答案。

问题2:如果可以裁剪,如何定义NETCDF文件仅包含正纬度和正经度的范围

this question中所述,地图的定义范围不是最常用的,但我将裁剪的范围基于一个具有更典型c(-180,180,-90,90)范围的shapefile范围。 >

0 个答案:

没有答案