从OpenDap服务器获取需要使用R

时间:2018-08-30 13:52:27

标签: r ncdf4 opendap

我正在尝试使用R和ncdf4软件包从OPeNDAP服务器获取数据。但是,nasa eosdis服务器需要用户名/密码。如何使用R传递此信息?

这就是我想要做的:

require(ncdf4)
f1 <- nc_open('https://disc2.gesdisc.eosdis.nasa.gov/opendap/TRMM_L3/TRMM_3B42.7/2018/020/3B42.20180120.15.7.HDF')

错误消息:

  

Rsx_nc4_get_vara_double中的错误:NetCDF:授权失败语法   错误,意外的WORD_WORD,预期为SCAN_ATTR或SCAN_DATASET或   SCAN_ERROR上下文:HTTP ^基本:访问被拒绝。变数:nlat Ndims:1
  开始:0计数:ncvar_get_inner(d $ dimvarid $ group_id,   d $ dimvarid $ id,default_missval_ncdf4(),:C函数   R_nc4_get_vara_double返回错误

我尝试了网址https://username:password@disc2 ....,但是也没有用。

2 个答案:

答案 0 :(得分:0)

丹尼尔,

您正在访问的服务正在使用第三方重定向对用户进行身份验证。因此,在URL中提供凭据的简单方法不起作用。

您需要创建2个文件。

  1. .dodsrc文件(netcdf-c库的RC文件),具有以下内容

    HTTP.COOKIEFILE = .cookies
    HTTP.NETRC = .netrc

  2. .netrc文件,在.dodsrc中引用的位置,并带有您的凭据:

    机器urs.earthdata.nasa.gov
    登录YOURUSERNAMEHERE
    密码YOURPASWORDHERE

您可以在以下位置找到更多详细信息 https://www.unidata.ucar.edu/software/netcdf/docs/md__Users_wfisher_Desktop_v4_86_81-prep_netcdf-c_docs_auth.html

致谢

安东尼奥

答案 1 :(得分:0)

不幸的是,即使在定义了凭据及其位置之后

ncdf4::nc_open("https://gpm1.gesdisc.eosdis.nasa.gov/opendap/GPM_L3/GPM_3IMERGDE.06/2020/08/3B-DAY-E.MS.MRG.3IMERG.20200814-S000000-E235959.V06.nc4")

仍然返回

Rsx_nc4_get_vara_double错误:NetCDF:授权失败

从终端使用ncdump时也会发生同样的情况:

$ ncdump https://gpm1.gesdisc.eosdis.nasa.gov/opendap/GPM_L3/GPM_3IMERGDE.06/2020/08/3B-DAY-E.MS.MRG.3IMERG.20200814-S000000-E235959.V06.nc4

返回

语法错误,意外的WORD_WORD,预期为SCAN_ATTR或SCAN_DATASET或 SCAN_ERROR上下文:HTTP ^基本:访问被拒绝。 NetCDF:授权 故障位置:文件 /build/netcdf-KQb2aQ/netcdf-4.6.0/ncdump/vardata.c; 473行