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

问题描述 投票:0回答:1

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

数据集的变量都有时间,集合,纬度和长度,一些变量有额外的维度。这些维度有相应的变量。当我打开wms端点来查看xml时,我会在层下看到它

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

但是没有下面的变量列表。我找不到关于Thredds所需的netcdf结构的任何文档,我已经尝试将其与其他数据集进行比较,这些数据集可以解决差异,但我遇到了困难。配置目录文件,以便您可以读取.nc文件,公开wms服务等。

我需要更改什么才能让thredds读取此文件?

netcdf thredds
1个回答
0
投票

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

如果我的理解不正确,并且ncWMS将支持具有整体维度的数据,那么您将需要确保netCDF-java将识别示例数据集中的整体维度/变量(它当前没有)。第一个问题是netCDF-java没有将整体变量看作坐标变量。要解决此问题,您可以将_CoordinateAxisType属性添加到ensemble变量,以告知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可以再次使用logicalReduce元素添加到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:logicalReduce dimNames="time" />
  </ncml:variable>
</ncml:netcdf>

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

© www.soinside.com 2019 - 2024. All rights reserved.