1

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

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

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

有什么想法吗?

4

1 回答 1

2

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

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

2) 使用 THREDDS 数据服务器提供的 NetCDF-Subset Service(这里我使用的是最新的 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 查询,可以通过代码修改或轻松生成。因此,例如,此查询temp在表面附近的 6 小时间隔内提取变量的时间序列,并且最接近 -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. 垂直选择器适用于具有维度坐标的数据,但对于无量纲垂直坐标模型,即使它们符合 CF,该服务当前也不会转换为维度坐标。所以用户接收回无量纲坐标,如果他们想要一个特定的级别,还必须指定无量纲坐标。这显然不是很有用。
  3. 如果用户指定高于或低于数据集中级别的级别,则返回的数据值为 NaN。因此,对于海洋模型,如果您输入值 0,认为您将获得表面层,您可能会得到 NaN,因为表面层的水平可能是 -0.03 或其他值(如上例所示)。

我已向 Unidata 报告了所有这些问题。

于 2013-02-01T16:58:13.610 回答