【问题标题】:Can multiple collections of NetCDF files be aggregated using NcML?可以使用 NcML 聚合多个 NetCDF 文件集合吗?
【发布时间】:2013-11-15 04:55:16
【问题描述】:

我有 40 个 NetCDF 文件,它们都构成了海洋模型的一个模拟。每个变量的时间序列数据被拆分为多个文件,因此目录列表如下所示:

$ ls ./output/*.nc
1_hvel.nc           3_hvel.nc           5_hvel.nc           7_hvel.nc
1_MeanPeriod.nc     3_MeanPeriod.nc     5_MeanPeriod.nc     7_MeanPeriod.nc
1_PeakPeriod.nc     3_PeakPeriod.nc     5_PeakPeriod.nc     7_PeakPeriod.nc
1_pwd.nc            3_pwd.nc            5_pwd.nc            7_pwd.nc
1_SigWaveHeight.nc  3_SigWaveHeight.nc  5_SigWaveHeight.nc  7_SigWaveHeight.nc
1_WaterLevel.nc     3_WaterLevel.nc     5_WaterLevel.nc     7_WaterLevel.nc
2_hvel.nc           4_hvel.nc           6_hvel.nc           8_hvel.nc
2_MeanPeriod.nc     4_MeanPeriod.nc     6_MeanPeriod.nc     8_MeanPeriod.nc
2_PeakPeriod.nc     4_PeakPeriod.nc     6_PeakPeriod.nc     8_PeakPeriod.nc
2_pwd.nc            4_pwd.nc            6_pwd.nc            8_pwd.nc
2_SigWaveHeight.nc  4_SigWaveHeight.nc  6_SigWaveHeight.nc  8_SigWaveHeight.nc
2_WaterLevel.nc     4_WaterLevel.nc     6_WaterLevel.nc     8_WaterLevel.nc

是否可以沿时间维度聚合每个变量,然后将所有这些聚合连接在一起?

【问题讨论】:

    标签: netcdf ncml


    【解决方案1】:

    是的,您可以使用 NcML 嵌套聚合,因此您可以在 time 上的多个类型 join_existing 聚合周围使用类型 union 聚合。

    如果time 上的join_existing 聚合结果具有不同的时基,您只需将其中一个聚合上的time 变量和维度重命名为time2,然后更改这些变量的属性以使用新命名的坐标。

    一个例子应该更清楚:

    <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
     <attribute name="title" type="string" value="SELFE - Ike - Ultralite - Variable Drag - Waves - 3D"/>
     <attribute name="institution" type="string"
      value="Virginia Institute of Marine Science -- http://web.vims.edu/physical/"/>
     <attribute name="source" type="string"
      value="SELFE run  (version v.vvv  compiled yyyy-mm-dd) for Hurricane Ike on the Ultralight mesh using variable drag, wind waves from WWM and 3D depth-averaged physics"/>
     <attribute name="history" type="string" value="ncml aggregation of .../whole_domain/ datafiles"/>
     <attribute name="references" type="string"
      value="testbed.sura.org:/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Ike/3D_varied_roughness_windstress_with_wave/Inundation_Model_Metadata_Template_v3_for_3D_windstress_sv_with_wave_Rita.docx"/>
     <variable name="selfe_mesh" shape="" type="int">
      <attribute name="cf_role" value="mesh_topology"/>
      <attribute name="topology_dimension" type="int" value="2"/>
      <attribute name="node_coordinates" value="x y"/>
      <attribute name="face_node_connectivity" value="ele"/>
     </variable>
     <variable name="time">
      <attribute name="units" value="seconds since 2005-09-18 00:00:00"/>
      <attribute name="standard_name" value="time"/>
     </variable>
     <variable name="ele" shape="nface nele" type="int">
      <attribute name="cf_role" value="face_node_connnectivity"/>
      <attribute name="start_index" type="short" value="1"/>
     </variable>
     <variable name="x" shape="node" type="float">
      <attribute name="units" value="degrees_east"/>
     </variable>
     <variable name="y" shape="node" type="float">
      <attribute name="units" value="degrees_north"/>
     </variable>
     <variable name="depth" shape="node" type="float">
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="m"/>
      <attribute name="standard_name" value="depth_below_geoid"/>
      <remove type="attribute" name="positive"/>
     </variable>
     <variable name="sigma" shape="sigma" type="float">
      <attribute name="long_name" value="S coordinates at whole levels"/>
      <attribute name="units" value="non-dimensional"/>
      <attribute name="positive" value="up"/>
     </variable>
     <variable name="Cs" shape="sigma" type="float">
      <attribute name="long_name" value="Function C(s) at whole levels"/>
      <attribute name="units" value="non-dimensional"/>
      <attribute name="positive" value="up"/>
     </variable>
     <variable name="elev" shape="time node" type="float">
      <attribute name="long_name" value="free_surface_elevation"/>
      <attribute name="standard_name" value="sea_surface_height_above_geoid"/>
      <attribute name="missing_value" type="float" value="-999.00"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="m"/>
     </variable>
     <variable name="wwm_1" shape="time node" type="float">
      <attribute name="long_name" value="significant_wave_height"/>
      <attribute name="standard_name" value="sea_surface_wave_significant_height"/>
      <attribute name="missing_value" type="float" value="-999.00"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="m"/>
     </variable>
     <variable name="wwm_3" shape="time node" type="float">
      <attribute name="long_name" value="mean_period"/>
      <attribute name="standard_name" value="sea_surface_wave_period_at_variance_spectral_density_mean"/>
      <attribute name="missing_value" type="float" value="-999.00"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="s"/>
     </variable>
     <variable name="wwm_9" shape="time node" type="float">
      <attribute name="long_name" value="peak_period"/>
      <attribute name="standard_name"
       value="sea_surface_wave_period_at_variance_spectral_density_maximum"/>
      <attribute name="missing_value" type="float" value="-999.00"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="s"/>
     </variable>
     <variable name="wwm_15" shape="time node" type="float">
      <attribute name="long_name" value="peak_direction"/>
      <attribute name="standard_name"
       value="sea_surface_wave_from_direction_at_variance_spectral_density_maximum"/>
      <attribute name="missing_value" type="float" value="-999.00"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="degrees_east"/>
     </variable>
     <variable name="u" shape="time2 sigma node" type="float">
      <attribute name="standard_name" value="barotropic_eastward_sea_water_velocity"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="m/s"/>
     </variable>
     <variable name="v" shape="time2 sigma node" type="float">
      <attribute name="standard_name" value="barotropic_northward_sea_water_velocity"/>
      <attribute name="mesh" value="selfe_mesh"/>
      <attribute name="location" value="node"/>
      <attribute name="coordinates" value="y x"/>
      <attribute name="units" value="m/s"/>
     </variable>
     <aggregation type="union">
      <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
       <aggregation dimName="time" type="joinExisting">
        <scan
         location="/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Rita/3D_varied_roughness_windstress_with_wave/output/"
         regExp=".*[0-9]{1}_WaterLevel\.nc$"/>
       </aggregation>
      </netcdf>
      <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
       <aggregation dimName="time" type="joinExisting">
        <scan
         location="/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Rita/3D_varied_roughness_windstress_with_wave/output/"
         regExp=".*[0-9]{1}_SigWaveHeight\.nc$"/>
       </aggregation>
      </netcdf>
      <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
       <aggregation dimName="time" type="joinExisting">
        <scan
         location="/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Rita/3D_varied_roughness_windstress_with_wave/output/"
         regExp=".*[0-9]{1}_MeanPeriod\.nc$"/>
       </aggregation>
      </netcdf>
      <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
       <aggregation dimName="time" type="joinExisting">
        <scan
         location="/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Rita/3D_varied_roughness_windstress_with_wave/output/"
         regExp=".*[0-9]{1}_PeakPeriod\.nc$"/>
       </aggregation>
      </netcdf>
      <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
       <aggregation dimName="time" type="joinExisting">
        <scan
         location="/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Rita/3D_varied_roughness_windstress_with_wave/output/"
         regExp=".*[0-9]{1}_pwd\.nc$"/>
       </aggregation>
      </netcdf>
      <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
       <dimension name="time2" orgName="time"/>
       <variable name="time2" orgName="time"/>
       <aggregation dimName="time" type="joinExisting">
        <scan
         location="/data/ftp/upload/Inundation/vims/selfe_tropical/runs/Rita/3D_varied_roughness_windstress_with_wave/output/"
         regExp=".*[0-9]{1}_hvel\.nc$"/>
       </aggregation>
      </netcdf>
     </aggregation>
    </netcdf>
    

    【讨论】:

    • 这很有趣,因为我在很长一段时间内尝试了类似的东西,由部署和变量组织的浮标观察文件,但我有 joinExisting 聚合按时间包装我的变量聚合通过联合。我不认为你似乎已经做了相反的尝试。按时包装 joinExisting 的变量联合。我会尝试这种方法。
    • 不错。请注意,您不需要在嵌套的 netcdf 元素中重新声明默认命名空间。
    猜你喜欢
    • 2013-02-20
    • 2013-12-04
    • 2018-10-10
    • 2013-09-22
    • 2019-01-05
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多