【问题标题】:R Subset area NetCDFR 子集区域 NetCDF
【发布时间】:2022-10-06 10:27:45
【问题描述】:

我在尝试从 R 中的 links 读取加 2Gb NetCDF 文件时遇到问题

如果我尝试读取整个文件 R 返回我没有足够内存的消息,

\'Error: cannot allocate vector of size 31.3 Gb\'

正如帖子link所报道的那样

根据这篇文章的建议,我决定根据给定区域的地理坐标仅读取文件的一部分。这是我的代码:

#load any packages

library(ncdf4)

设置路径和文件名

ncpath <- \"C:\\Users\\Me\\Documents\\Science\\GIS\\Global Land Cover\\\"

ncname <- \"C3S-LC-L4-LCCS-Map-300m-P1Y-2018-v2.1.1\"

ncfname <- paste(ncpath, ncname, \".nc\", sep=\"\") 

dname <-\"lccs_class\"

打开一个 netCDF 文件

ncin <- nc_open(ncfname) 

print(ncin)

获取经度和纬度

lon <- ncvar_get(ncin,\"lon\")

nlon <- dim(lon)

head(lon)

lat <- ncvar_get(ncin,\"lat\")

nlat <- dim(lat) head(lat)

print(c(nlon,nlat))

#\' create a bounding box to work with a subset 
LonIdx <- c(841, 842, 844,845,846,847,848)

LatIdx <- c(93,94,95,96)

但是,当我尝试执行子集的代码时:

Susbset <- ncvar_get(ncin, dname,
                start = c(LatIdx[1], LonIdx[1]),
                count = c(length(LatIdx),length(LonIdx)))

我得到错误:

> Error in ncvar_get_inner(ncid2use, varid2use, nc$var[[li]]$missval,
> addOffset, : Error: variable has 3 dims, but start has 2 entries. They
> must match!

谁能帮我?非常感激。

    标签: r subset netcdf


    【解决方案1】:

    在您继续之前,似乎仍然需要指定第三个维度。 假设它是一个时间变量:

    start = c(LatIdx[1], LonIdx[1], DesiredTimeIdx), 
    count = c(length(LatIdx),length(LonIdx), 1))
    

    这应该在特定时间读取所有 lats 和 all lons。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-16
      • 2019-04-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多