Получить агрегированные данные из OPenDAP ncml, для которых требуется аутентификация с использованием R.

Я пытаюсь получить данные TRMM с сервера NASA OPenDAP, используя пакет raster в R. Сначала у меня были некоторые трудности с аутентификацией, но эта проблема была устранены.

Сервер NASA OPenDAP публикует данные TRMM 3B42_daily в виде отдельных файлов, по одному на каждый день и агрегированные годовые данные (с использованием ncml). Итак, теперь моя проблема заключается в том, что, используя пакет R raster и файлы аутентификации .dodsrc и .netrc, я могу загружать отдельные файлы NetCDF, но не могу загружать агрегированные данные.

Итак, это работает:

library(raster)
single_date_opendap <- 'https://disc2.gesdisc.eosdis.nasa.gov:443/opendap/TRMM_L3/TRMM_3B42_Daily.7/2002/04/3B42_Daily.20020405.7.nc4'
test <- stack(single_date_opendap, varname = 'precipitation')

Это не:

library(raster)
url_opendap_no_brkt <- 'https://disc2.gesdisc.eosdis.nasa.gov:443/opendap/ncml/aggregation/TRMM_3B42_Daily.7/TRMM_3B42_daily.7_Aggregation_2001.ncml'
test <- stack(url_opendap_no_brkt, varname = 'precipitation')

И выдает мне сообщение об ошибке:

Error in .local(.Object, ...) :
An error occurred while creating a virtual connection to the DAP server:
Error while reading the URL: https://disc2.gesdisc.eosdis.nasa.gov:443/openda
p/ncml/aggregation/TRMM_3B42_Daily.7/TRMM_3B42_daily.7_Aggregation_2001.ncml.
ver.
The OPeNDAP server returned the following message:
Unauthorized: Contact the server administrator.
Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",
Cannot create a RasterLayer object from this file. (file does not exist)

Можно ли получить данные с сервера OPenDAP, который публикует агрегированные данные?


person Daniel    schedule 01.02.2019    source источник
comment
Вы пробовали команду ncdump в оболочке?   -  person Antonio S. Cofiño    schedule 02.02.2019
comment
Ха! нкдамп работает!! ncdump -c disc2.gesdisc .eosdis.nasa.gov:443/opendap/ncml/aggregation/   -  person Daniel    schedule 04.02.2019


Ответы (1)


После некоторого обмена информацией с поддержкой НАСА и подсказкой Антонио выяснилось, что пакет R raster не будет работать с агрегированными наборами данных. Но ncdf4::nc_open может с этим справиться. Странно, потому что, насколько я понимаю, пакет raster вызывает nc_open в фоновом режиме.

Во всяком случае, это работает:

library(ncdf4)
url_opendap <- 'https://disc2.gesdisc.eosdis.nasa.gov:443/opendap/ncml/aggregation/TRMM_3B42_Daily.7/TRMM_3B42_daily.7_Aggregation_2001.ncml'
trmm <- nc_open(url_opendap)

и это не

library(raster)
url_opendap <- 'https://disc2.gesdisc.eosdis.nasa.gov:443/opendap/ncml/aggregation/TRMM_3B42_Daily.7/TRMM_3B42_daily.7_Aggregation_2001.ncml'
trmm <- stack(url_opendap, varname = "precipitation")
person Daniel    schedule 05.02.2019