如何格式化 netCDF 数据集以与 Thredds OGC 服务兼容

How to format netCDF datasets to be compatible with Thredds OGC services

我有一个从 NASA LIS 模型生成的 netcdf 数据集,我希望能够使用 Thredds 服务器通过 WMS 显示它。具体的数据集和thredds服务器可以在https://tethys.byu.edu/thredds/catalog/testAll/anomaly/catalog.html找到,也可以下载数据集。

数据集的变量都有时间、系综、纬度和经度维度,一些变量有额外的维度。这些维度有相应的变量。当我打开 wms 端点查看 xml 时,我看到图层下面有

<Layer>
<Title>LIS land surface model output</Title>
</Layer>

但没有它下面的变量列表。我找不到任何关于 Thredds 所需的 netcdf 结构的文档,我已经尝试将其与其他用于寻找差异的数据集进行比较,但我被卡住了。目录文件配置为您可以读取 .nc 文件、公开 wms 服务等。

我需要更改什么才能使 thredds 可读该文件?

THREDDS 数据服务器 (TDS) 附带一个名为 ncWMS 的 WMS 服务器作为插件。简短的回答是,我认为 ncWMS 不适用于具有整体维度的数据,因为似乎没有一种方法可以通过 getMap request.

请求整体成员

如果我的理解不正确,并且 ncWMS 将支持具有整体维度的数据,那么您将需要确保 netCDF-java 能够识别示例数据集中的整体 dimension/variable(其中目前没有)。第一个问题是 netCDF-java 没有将系综变量视为坐标变量。要解决此问题,您可以将 _CoordinateAxisType 属性添加到集合变量以告诉 netCDF-Java 它是一个坐标变量。您可以使用 NcML 执行此操作,这样您就不需要重写文件:

<?xml version="1.0" encoding="UTF-8"?>
<ncml:netcdf xmlns:ncml="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="/path_to_file/processed_LIS_HIST_201908010000.d01.nc">
  <ncml:variable name="ensemble">
    <ncml:attribute name="_CoordinateAxisType" value="Ensemble" />
  </ncml:variable>
</ncml:netcdf>

但是,您的示例数据集中的整体变量有两个维度,[ensemble, time],netCDF-Java 目前无法处理。令人惊讶的是(可能是因为时间维度的大小为 1),netCDF-Java 和 NcML 可以通过向 NcML 添加 logicalReduce 元素再次做到这一点:

<?xml version="1.0" encoding="UTF-8"?>
<ncml:netcdf xmlns:ncml="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="/path_to_file/processed_LIS_HIST_201908010000.d01.nc">
  <ncml:variable name="ensemble">
    <ncml:attribute name="_CoordinateAxisType" value="Ensemble" />
    <ncml:logicalReduce dimNames="time" />
  </ncml:variable>
</ncml:netcdf>

此时,netCDF-Java 将能够完全识别示例数据集中的网格。