将数据源从FTP服务器更改为本地目录

时间:2017-11-09 08:46:05

标签: r ftp

我正在使用由APEC气候中心开发的AIMS模型。该模型从ftp服务器下载数据,然后从datasource.R调用LoadCmip5DataFromAdss函数将数据加载到模型中。

#do.call("LoadCmip5DataFromAdss", parameters)

在github上我找到了LoadCmip5DataFromAdss的源代码,它给出了ftp服务器下载数据的路径

  LoadCmip5DataFromAdss <- function(dbdir, NtlCode) {

  fname <- paste("cmip5_daily_", NtlCode, ".zip", sep="")

  if(nchar(NtlCode)==4 && substr(NtlCode,1,2)=="US"){
    adss <- "ftp://cis.apcc21.org/CMIP5DB/US/"
  }else{
    adss <- "ftp://cis.apcc21.org/CMIP5DB/"
  }

我想从本地目录获取数据而不是下载,因为这需要花费很多时间。我怎么做? 我在哪里可以在PC上找到包含LoadCmip5DataFromAdss的文件,因为在设置中只提供了datasource.R。

1 个答案:

答案 0 :(得分:0)

所有该功能都是将zip文件(cmip5_daily_ +您为NtlCode + .zip指定的任何内容)复制到您为dbdir指定的目录后下载然后解压缩并删除ZIP文件。这是rSQM整个函数:

LoadCmip5DataFromAdss <- function(dbdir, NtlCode) {

  fname <- paste("cmip5_daily_", NtlCode, ".zip", sep="")

  if(nchar(NtlCode)==4 && substr(NtlCode,1,2)=="US"){
    adss <- "ftp://cis.apcc21.org/CMIP5DB/US/"
  }else{
    adss <- "ftp://cis.apcc21.org/CMIP5DB/"
  }

  srcfname <- paste(adss, fname, sep="")
  dstfname <- paste(dbdir, "/", fname, sep = "")
  download.file(srcfname, dstfname, mode = "wb")
  unzip(dstfname, exdir = dbdir)
  unlink(dstfname, force = T)
  cat("CMIP5 scenario data at",NtlCode,"is successfully loaded.\n")
}

您可以执行以下操作:

unzip(YOUR_LOCAL_NtlCode_ZIP_FILE, exdir = WHERE_YOUR_dbdir_IS)

vs使用该功能。