从需要使用R进行身份验证的OPenDAP ncml获取聚合数据

时间:2019-02-01 18:33:36

标签: r r-raster netcdf4 ncdf4 opendap

我正在尝试使用R中的function fetchBatches($venue_id,$new_batch_start_date,$new_batch_end_date,$new_batch_start_time,$new_batch_end_time) { $where="batch_venue_id='$venue_id' and ((start_date between '$new_batch_start_date' and '$new_batch_end_date')OR (end_date between '$new_batch_start_date' and '$new_batch_end_date')) and ((start_time<=end_time) and (start_time < '$new_batch_start_time' and start_time < '$new_batch_end_time'))"; $result =$this->db->select('*') ->from('batch_list') ->where($where) ->get() ->result(); if ($result) { return $result; } else{ return 0; } } 包从NASA OPenDAP服务器获取TRMM数据。最初,我在身份验证方面遇到了一些困难,但问题是resolved

NASA OPenDAP服务器将TRMM 3B42_daily数据发布为单独的文件,每天发布一个,并汇总一个年度数据(使用ncml)。因此,我现在的问题是,使用R raster软件包以及身份验证文件raster.dodsrc,我可以下载单个NetCDF文件,但不能下载聚合数据。

所以,这可行:

.netrc

这不是:

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')

是否可以从发布汇总数据的OPenDAP服务器获取数据?

1 个答案:

答案 0 :(得分:0)

在与NASA支持人员和Antonio的技巧进行了一些交流之后,发现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")