从需要使用 R 进行身份验证的 OpenDap 服务器获取数据
Get data from OpenDap server that requires authentication using R
我正在尝试使用 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')
错误信息:
Error in Rsx_nc4_get_vara_double: NetCDF: Authorization failure syntax
error, unexpected WORD_WORD, expecting SCAN_ATTR or SCAN_DATASET or
SCAN_ERROR context: HTTP^ Basic: Access denied. 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 returned error
我尝试了 url https://username:password@disc2.. 但那也不起作用。
丹尼尔,
您正在访问的服务正在使用第三方重定向来验证用户。因此,在 URL 中提供凭据的简单方法不起作用。
您需要创建2个文件。
具有以下内容的 .dodsrc 文件(netcdf-c 库的 RC 文件)
HTTP.COOKIEFILE=.cookies
HTTP.NETRC=.netrc
一个 .netrc 文件,位于 .dodsrc 中引用的位置,带有您的凭据:
机器urs.earthdata.nasa.gov
在这里登录你的用户名
密码 YOURPASWORDHERE
您可以在以下位置找到更多详细信息
https://www.unidata.ucar.edu/software/netcdf/docs/md__Users_wfisher_Desktop_v4_86_81-prep_netcdf-c_docs_auth.html
此致
安东尼奥
不幸的是,即使在定义凭据及其位置之后
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")
还是returns
Error in Rsx_nc4_get_vara_double: NetCDF: Authorization failure
从终端使用 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
returns
syntax error, unexpected WORD_WORD, expecting SCAN_ATTR or SCAN_DATASET or
SCAN_ERROR context: HTTP^ Basic: Access denied. NetCDF: Authorization
failure Location: file
/build/netcdf-KQb2aQ/netcdf-4.6.0/ncdump/vardata.c; line 473
我正在尝试使用 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')
错误信息:
Error in Rsx_nc4_get_vara_double: NetCDF: Authorization failure syntax error, unexpected WORD_WORD, expecting SCAN_ATTR or SCAN_DATASET or SCAN_ERROR context: HTTP^ Basic: Access denied. 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 returned error
我尝试了 url https://username:password@disc2.. 但那也不起作用。
丹尼尔,
您正在访问的服务正在使用第三方重定向来验证用户。因此,在 URL 中提供凭据的简单方法不起作用。
您需要创建2个文件。
具有以下内容的 .dodsrc 文件(netcdf-c 库的 RC 文件)
HTTP.COOKIEFILE=.cookies
HTTP.NETRC=.netrc一个 .netrc 文件,位于 .dodsrc 中引用的位置,带有您的凭据:
机器urs.earthdata.nasa.gov
在这里登录你的用户名
密码 YOURPASWORDHERE
您可以在以下位置找到更多详细信息 https://www.unidata.ucar.edu/software/netcdf/docs/md__Users_wfisher_Desktop_v4_86_81-prep_netcdf-c_docs_auth.html
此致
安东尼奥
不幸的是,即使在定义凭据及其位置之后
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")
还是returns
Error in Rsx_nc4_get_vara_double: NetCDF: Authorization failure
从终端使用 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
returns
syntax error, unexpected WORD_WORD, expecting SCAN_ATTR or SCAN_DATASET or SCAN_ERROR context: HTTP^ Basic: Access denied. NetCDF: Authorization failure Location: file /build/netcdf-KQb2aQ/netcdf-4.6.0/ncdump/vardata.c; line 473