在使用 Unidata IDV 通过 OPeNDAP 访问加尔维斯顿湾的 NOAA CO-OPS 海洋模型时:
我收到一条错误消息“创建数据源时出错”。从他们的OPeNDAP 数据表中可以看出,许多NetCDF 气候和预报 (CF) 元数据约定都得到了满足,但显然不是全部。
有谁知道缺少什么或错误?
在使用 Unidata IDV 通过 OPeNDAP 访问加尔维斯顿湾的 NOAA CO-OPS 海洋模型时:
我收到一条错误消息“创建数据源时出错”。从他们的OPeNDAP 数据表中可以看出,许多NetCDF 气候和预报 (CF) 元数据约定都得到了满足,但显然不是全部。
有谁知道缺少什么或错误?
你是对的,这个数据集有一些问题需要修复才能在IDV中工作:
Conventions 属性显示“COARDS”,但COARDS适用于直线网格(1D 坐标变量),并且该数据是曲线网格(2D lon,lat 坐标变量)。CF 约定在这里是合适的,因此“约定”全局属性需要为 CF-1.0 或更高版本。
要符合 CF,需要为每个变量指定“坐标”属性。
这个模型有一个无量纲的垂直坐标,它要求“正”属性是“向上”,并且 sigma 值是负的,而不是正的。
幸运的是,您可以使用 NcML 解决这些问题。尝试使用以下内容创建文件“gbofs.ncml”并将其加载到 IDV 而不是 OPeNDAP URL。这种方法适用于任何使用 Unidata NetCDF-Java 库的软件,因此它不仅适用于 IDV,而且适用于Panoply和Matlab 的 NCTOOLBOX。
<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2"
location="http://opendap.co-ops.nos.noaa.gov/thredds/dodsC/NOAA/GBOFS/MODELS/201302/nos.gbofs.fields.nowcast.20130201.t03z.nc">
<!--Change conventions from COARDS to CF-1.6 -->
<attribute name="Conventions" value="CF-1.6"/>
<!--The "positive" attribute is only for the z coordinate variable, so remove it from depth and elevation-->
<variable name="zeta">
<remove type="attribute" name="positive"/>
</variable>
<variable name="depth">
<remove type="attribute" name="positive"/>
</variable>
<!-- Dimensionless vertical coordinates need "positive"=up, and negative sigma values -->
<variable name="sigma">
<attribute name="positive" value="up"/>
<values> -0.1667 -0.4167 -0.5833 -0.7643 -0.9167 </values>
</variable>
<!-- Curvilinear grids need a "coordinates" attribute that identifies the coordinate variables-->
<variable name="temp" shape="time sigma ny nx" type="float">
<attribute name="coordinates" value="lon lat sigma time"/>
</variable>
</netcdf>
我会向 NOAA CO-OPS 报告这个问题,希望他们将来能解决这个问题。这是来自 IDV 的屏幕截图,只是为了表明它有效: