我有一个由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可读此文件,我需要更改什么?
答案 0 :(得分:0)
THREDDS数据服务器(TDS)带有一个称为ncWMS的WMS服务器作为插件。简短的答案是,我认为ncWMS不适用于具有整体维的数据,因为似乎没有一种通过getMap request请求整体成员的方法。
如果我的理解不正确,并且ncWMS将支持具有整体维的数据,那么您将需要确保netCDF-java将识别示例数据集中的整体维/变量(当前尚不支持)。第一个问题是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变量具有两个维度[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将能够完全识别示例数据集中的网格。