首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何格式化netCDF数据集以与Thredds OGC服务兼容

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

Stack Overflow用户
提问于 2019-04-30 08:09:52
回答 1查看 128关注 0票数 0

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

数据集的所有变量都具有时间、集合、经度和经度维度,少数变量具有附加维度。这些维度都有相应的变量。当我打开wms端点以查看xml时,我会在图层下看到

代码语言:javascript
复制
<Layer>
<Title>LIS land surface model output</Title>
</Layer>

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

我需要修改什么才能使这个文件可被thredds读取?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-30 09:12:10

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

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

代码语言:javascript
复制
<?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元素再次完成这项工作:

代码语言:javascript
复制
<?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将能够完全识别示例数据集中的网格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55912299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档