我有一个从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读取?
发布于 2019-04-30 09:12:10
THREDDS Data Server (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, 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将能够完全识别示例数据集中的网格。
https://stackoverflow.com/questions/55912299
复制相似问题