1

NcML 可以用于聚合 3D 和 4D 网格吗?我不确定,因为它们的维度数量不同。例如海面高度 (ssh) 和水温,其中 ssh 有三个维度 [time, lat, lon] 而 temp 有四个维度 [time, depth, lat, lon]?我的测试没有成功,所以我的直觉是我必须将 3D 和 4D 变量分成单独的目录。但我希望其他人可能有其他建议?

虽然我尝试在下面的代码段中使用“联合”聚合,但由于 3D 变量从 2008 年 12 月 28 日开始,而 4D 变量从 2008 年 5 月 8 日开始,因此没有正确映射时间维度:

<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
  <attribute name="title" value="HYCOM test aggregation #1"/>
  <aggregation type="union">
    <!-- These are the 3D variables: -->
    <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycom2d"/>
    <!-- These are the 4D variables: -->
    <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomT"/>
    <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomS"/>
    <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomU"/>
    <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomV"/> 
  </aggregation>
</netcdf>

然后我在“时间”维度上尝试了“joinExisting”聚合,但这仅在数据集每个包含相同变量(它们不包含)时才有效。根据我在聚合中首先列出的数据集,以下示例中会排除 3D 或 4D 变量:

<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
  <attribute name="title" value="HYCOM test aggregation #2"/>
  <aggregation dimName="time" type="joinExisting">
    <!-- These are the 3D variables: -->
    <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycom2d"/>
    <!-- These are the 4D variables: -->
    <aggregation type="union">
      <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomT"/>
      <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomS"/>
      <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomU"/>
      <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomV"/> 
    </aggregation>
  </aggregation>
</netcdf>

那么,有没有办法聚合这些数据集呢?我必须将 3D 和 4D 变量分开吗?

谢谢!John Maurer 太平洋岛屿海洋观测系统 (PacIOOS) 夏威夷大学马诺阿分校

4

1 回答 1

1

约翰,

由于您要加入的文件具有不同的时间坐标但名称相同,因此您需要重命名其中一个。我原以为这个简单的 NcML 会起作用,只需在 3D 数据中重命名时间维度和时间变量的维度和名称

<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
    <attribute name="title" value="HYCOM test aggregation #1"/>
    <aggregation type="union">
        <!-- These are the 3D variables: -->
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycom2d">
            <dimension name="time2d" orgName="time"/>
            <variable name="time2d" orgName="time"/>
        </netcdf>
        <!-- These are the 4D variables: -->
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomT"/>
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomS"/>
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomU"/>
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomV"/> 
    </aggregation>
</netcdf>

但事实并非如此,因为_CoordinateAxes在我们更改变量和维度名称之前,NetCDF-Java 似乎以某种方式添加了一个值为“time lon lat”的属性。因此,如果我们从 3D 数据中删除该属性,它会起作用:

<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
    <attribute name="title" value="HYCOM test aggregation #1"/>
    <aggregation type="union">
        <!-- These are the 3D variables: -->
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycom2d">
            <dimension name="time2d" orgName="time"/>
            <variable name="time2d" orgName="time"/>
            <variable name="qtot">
                <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
            <variable name="emp">
                <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
            <variable name="t_trend">
                <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
            <variable name="s_trend">
                <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
            <variable name="ssh">
                <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
            <variable name="mld">
                 <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
            <variable name="mlp">
                 <remove type="attribute" name="_CoordinateAxes"/>
            </variable>
        </netcdf>
        <!-- These are the 4D variables: -->
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomT"/>
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomS"/>
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomU"/>
        <netcdf location="dods://apdrc.soest.hawaii.edu:80/dods/public_data/Model_output/HYCOM/global/hycomV"/> 
    </aggregation>
</netcdf>

这是生成数据集的 ToolsUI 的屏幕截图,您可以在其中看到 3D 和 4D 变量:

于 2013-04-23T20:52:37.347 回答