Получить данные с сервера OpenDap, который требует аутентификации с использованием R - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь получить данные с сервера OPeNDAP, используя R и пакет ncdf4. Однако для сервера 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 ^ Basic: доступ запрещен. Var: nlat Ndims: 1
Начало: 0 Количество: 400 Ошибка в ncvar_get_inner (d $ dimvarid $ group_id, d $ dimvarid $ id, default_missval_ncdf4 (),: функция C R_nc4_get_vara_double вернул ошибку

Я попробовал URL https://username:password@disc2...., но это тоже не сработало.

1 Ответ

0 голосов
/ 31 августа 2018

Даниил,

Служба, к которой вы обращаетесь, использует стороннее перенаправление для аутентификации пользователей. Поэтому простой способ предоставления учетных данных в URL не работает.

Вам нужно создать 2 файла.

  1. Файл .dodsrc (RC-файл для библиотеки netcdf-c) со следующим содержимым

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

  2. Файл .netrc в расположении, указанном в .dodsrc, с вашими учетными данными:

    machine 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

Привет

Антонио

...