代码之家  ›  专栏  ›  技术社区  ›  Derek Corcoran

在R中裁剪Netcdf光栅

  •  1
  • Derek Corcoran  · 技术社区  · 6 年前

    我仍然在我要求的同一个项目中工作 this question .

    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一次以加快这个过程吗?

    我已经看过了 here , here here ,没有找到答案。

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

    这个问题 ,地图的定义范围不是最常见的,但是我将裁剪基于具有更典型的形状文件的范围 c(-180,180,-90,90)

    0 回复  |  直到 5 年前