Excel用户访问THREDDS数据服务器上的NetCDF文件的最佳方法?

时间:2013-02-01 16:19:36

标签: excel netcdf thredds

我已经看到以下示例使用excel访问netcdf文件。

我想知道是否可以根据特定索引访问数据的某个部分(例如,地图上某个特定点的参数的时间序列来自4D变量)

在我看来,没有任何编码就不可能?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我知道有两种方法可以使用Excel从Unidata的THREDDS数据服务器访问数据:

1)使用OpenDAP的ASCII响应提取时间序列,如下所述: https://publicwiki.deltares.nl/display/OET/OPeNDAP+access+with+Excel。此方法适用于任何OPeNDAP服务器。

2)使用THREDDS数据服务器提供的NetCDF-Subset服务(这里我使用的是最新的TDS,版本4.3)。

因此,如果您访问由THREDDS提供的特定数据集,例如:

http://geoport-dev.whoi.edu/thredds/catalog/coawst_2_2/fmrc/catalog.html?dataset=coawst_2_2/fmrc/coawst_2_2_best.ncd

单击NetcdfSubset服务,然后单击“Grid as Point Dataset”,即可获得以下表单:

http://geoport-dev.whoi.edu/thredds/ncss/grid/coawst_2_2/fmrc/coawst_2_2_best.ncd/dataset.html

您可以在其中提取最接近特定位置的时间序列,并选择CSV作为输出类型,当然可以轻松加载到Excel中。好的方面是这个表单只生成一个RESTful URL查询,可以通过代码修改或轻松生成。例如,此查询在表面附近的6小时间隔内提取变量temp的时间序列,最接近-70.6W,42.3N:

http://geoport-dev.whoi.edu/thredds/ncss/grid/coawst_2_2/fmrc/coawst_2_2_best.ncd?var=temp&latitude=42.3&longitude=-70.6&time_start=2011-08-01T00%3A00%3A00Z&time_end=2011-08-01T06%3A00%3A00Z&vertCoord=-.03&accept=csv

产生

    date,lat[unit="degrees_north"],lon[unit="degrees_east"],vertCoord[unit=""],temp[unit="Celsius"]
2011-08-01T00:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.44405174255371
2011-08-01T01:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.361846923828125
2011-08-01T02:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.31492805480957
2011-08-01T03:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.254281997680664
2011-08-01T04:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.24005889892578
2011-08-01T05:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.186853408813477
2011-08-01T06:00:00Z,42.31439418116631,-70.58628311827651,-0.03125,18.114046096801758

NetCDF子集服务的文档在这里: http://www.unidata.ucar.edu/projects/THREDDS/tech/interfaceSpec/NetcdfSubsetService_4_3.html#Vertical

我向Unidata报告的NetCDF子集服务中的垂直坐标存在一些问题:

  1. 在以前版本的TDS中,网上有一个选择 指定垂直级别。这似乎已经失踪了 最新版本的TDS(4.3.15)。所以如果看不到垂直 级别说明符,您仍然可以通过添加它来指定某个级别 手动到URL。
  2. 垂直选择器适用于具有维度的数据 coordinaets,但对于无量纲垂直坐标模型,甚至 如果它们是CF兼容的,则该服务当前没有转换 到尺寸坐标。因此用户接收无量纲 坐标返回,还必须指定无量纲坐标 如果他们想要一个特定的水平。这显然不是很好 是有用的。
  3. 如果用户指定的级别高于或低于该级别 数据集,返回的数据值是NaN。所以对于海洋 模型,如果输入值0,认为你会得到 表面层,你可能得到一个NaN,因为表面的水平 layer可能是-0.03或其他东西(如上例所示)。
  4. 我已向Unidata报告了所有这些问题。