我有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
是否可以沿时间维度聚合每个变量,然后将所有这些聚合连接在一起?
答案 0 :(得分:5)
是的,您可以使用NcML嵌套聚合,因此您可以在union
上围绕多个类型join_existing
聚合使用类型time
聚合。
如果join_existing
上的time
聚合结果具有不同的时基,您可以在其中一个聚合上将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>