THREDDS 数据服务器 (TDS) 附带一个名为 ncWMS 的 WMS 服务器作为插件。简短的回答是,我认为 ncWMS 不适用于具有集合维度的数据,因为似乎没有一种方法可以通过getMap 请求请求集合成员。
如果我的理解不正确,并且 ncWMS 将支持具有集合维度的数据,那么您将需要确保 netCDF-java 能够识别示例数据集中的集合维度/变量(它目前不能识别)。第一个问题是 netCDF-java 没有将 ensemble 变量视为坐标变量。要解决这个问题,您可以_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 变量有两个维度,[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 将能够完全识别示例数据集中的网格。