【问题标题】:Downloading and opening netcdf files from OPeNDAP in Windows R 64bit在 Windows R 64 位中从 OPeNDAP 下载和打开 netcdf 文件
【发布时间】:2017-04-05 00:14:09
【问题描述】:

我正在尝试从名为 OPenDAP 的开放在线数据库下载和打开 netcdf 文件。当我直接从 OPenDAP 的服务器数据集访问表单下载数据文件时,将文件命名为“MUR_JPL_L4_GLOB_opendap.nc.nc4”,我可以在 R Studio 中成功下载并查看数据。

library("ncdf4")
GHRSST<-nc_open("MUR_JPL_L4_GLOB_opendap.nc.nc4")
print(GHRSST)
nc_close(GHRSST)

此外,当我将数据访问表单的数据 URL 直接插入浏览器时(例如,“http://podaac-opendap.jpl.nasa.gov/opendap/allData/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/2009/009/20090109090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4?lat[0:1:17998],lon[0:1:35999],analysed_sst[0:1:0][0:1:17998][0:1:35999]”),将文件命名为“MUR_JPL_L4_GLOB_browser.nc.nc4”,我可以在R 工作室。

library("ncdf4")
GHRSST<-nc_open("MUR_JPL_L4_GLOB_browser.nc.nc4")
print(GHRSST)
nc_close(GHRSST)

当我尝试使用 download.file() 函数直接从 R Studio 中的上述 URL 下载数据时,我也可以成功下载文件。

download.file("http://podaac-opendap.jpl.nasa.gov/opendap/allData/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/2009/009/20090109090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4?lat[0:1:17998],lon[0:1:35999],analysed_sst[0:1:0][0:1:17998][0:1:35999]","MUR_JPL_L4_GLOB_rstudio.nc.nc4")

但是,在 RStudio 中下载的该数据文件(“MUR_JPL_L4_GLOB_rstudio.nc.nc4”)无法使用“ncdf4”包中的 nc_open() 函数在 R Studio 中打开。当我尝试使用以下代码打开文件时,R Studio 报告“断言失败”错误,然后 R Studio 立即崩溃。

library("ncdf4")
GHRSST<-nc_open("MUR_JPL_L4_GLOB_rstudio.nc.nc4")
ASSERTION FAILED!...

我的 R Studio 版本和 ncdf4 包是最新的。我在 Rgui 中尝试了相同的代码,但出现了类似的错误消息和崩溃。我也在另一台计算机上尝试过,结果相同,并使用不同的下载功能,例如“下载器”包中的“下载”,但它也以同样的方式失败。我还下载了文件的一小部分,以防文件过大出现问题,但这没有帮助。

我的问题是:

1) 为什么使用 download.file() 函数打开 RStudio 下载的文件会导致 R Studio 崩溃,而我的浏览器直接下载的文件正常运行? 2) 你知道任何可以让我解决这个问题的修复吗?

我的最终目标是下载和处理其中的许多文件,这就是为什么使用浏览器手动下载所有数据不是一个好的选择。

我的 sessionInfo() 如下:

R 版本 3.3.2 (2016-10-31) 平台:x86_64-w64-mingw32/x64(64位) 运行条件:Windows >= 8 x64(内部版本 9200)

语言环境: [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C LC_TIME=English_United States.1252

附加的基础包: [1] stats graphics grDevices utils datasets methods base

其他附加包: [1] ncdf4_1.15

通过命名空间加载(未附加): [1] 工具_3.3.2

提前感谢您的帮助。

【问题讨论】:

    标签: windows download rstudio netcdf opendap


    【解决方案1】:

    我刚刚看到这个并且一直在尝试解决同样的问题。我还通过 R 从 PODAAC ftp 服务器下载,并尝试使用 mapply(download.file()) 循环。我认为我的问题出在mapply() 并且不知何故它没有正确构建下载的文件(我也无法通过RStudio 或base R 下载它们打开它们,但如果我从ftp 手动完成它们就可以了) .

    似乎对我有用的解决方案是添加第二个循环,一旦你获得了单个目录的文件名(我下载了好几年,每个都有自己的文件夹),运行download.file() 用于每个实例。

    # ftp://podaac-ftp.jpl.nasa.gov/allData/modis/L3/aqua/4um/v2014.0/4km/monthly
    #monthly SST data, one folder per year
    require(ncdf4)
    require(RNetCDF)
    require(RCurl) 
    
    month <- c("01", "02", "03", "04", "05", "06", "07", 
           "08", "09", "10", "11", "12") #months to download
    url_year <- seq(2003, 2016, 1) #years to download
    
    for(i in 1:length(url_year)){
      url <- paste0("ftp://podaac-ftp.jpl.nasa.gov/allData/modis/L3/aqua/4um/v2014.0/4km/monthly/", url_year[i], "/")
      filenames = getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE, crlf = TRUE) 
      filenames = paste(url, strsplit(filenames, "\r*\n")[[1]], sep = "") 
      filenamesNC = filenames[c(seq(1, 23, 2))] #subset only the netcdf files
      for(j in 1:length(filenames)){
       download.file(url = filenamesNC[j], destfile = paste0(url_year[i], "_", month[j],"_sst4_4km.nc"), mode="wb")
      }
    }
    

    【讨论】:

    • 更新:循环的 url 部分似乎无法正常工作。 download.file 中的错误(url = filenamesNC[j], destfile = paste0(url_year[i], : 在 URL 'NA' 中不支持方案已尝试创建单独的 URL 向量并调用 url_list[i] 但还没有运气. 奇怪
    猜你喜欢
    • 2016-02-10
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 2021-10-29
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多