Получите агрегированные данные из OPenDAP ncml, который требует аутентификации с использованием R - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь получить данные 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?сервер, который публикует агрегированные данные?

1 Ответ

0 голосов
/ 05 февраля 2019

После некоторого обмена с поддержкой NASA и с подсказкой Антонио выяснилось, что пакет 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")
...