1

我正在尝试使用 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 ^ 基本:访问被拒绝。Var: nlat Ndims: 1
Start: 0 Count: 400 Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(), : C function R_nc4_get_vara_double 返回错误

我尝试了网址https://username:password@disc2 .... 但这也不起作用。

4

2 回答 2

1

丹尼尔,

您正在访问的服务正在使用第三方重定向对用户进行身份验证。因此,在 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找到更多详细信息

问候

安东尼奥

于 2018-08-31T19:43:02.573 回答
1

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

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 行

于 2020-08-17T11:52:16.750 回答