You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Example 9. Convert multiple files into single 64-bit netCDF4 file using CF metadata
#! /usr/bin/env convsh
# Convsh script conv2nc_cf.tcl
#
# Convert input files into single netCDF4 file with CF metadata.
# All input files must contain the same fields and have
# identical dimensions except for the time dimension.
# For example to convert UM output files into a netCDF file
# use the following command:
#
# conv2nc_cf.tcl -i xaavaa.pc* -o xaava.nc
# Use CF compatible netCDF attributes + useful others
setvaratt all att_nouse
setvaratt north_pole standard_name att_cond
setvaratt long_name units missing_value _Fillvalue valid_min valid_max att_use
setdimatt all att_nouse
setdimatt standard_name calendar att_cond
setdimatt long_name units axis time_origin positive att_use
# Set netCDF global attribute Conventions
setglobatt Conventions att_use
writeglobatt Conventions "CF-1.5"
# Use STASH code to get UM variable long names
set umlong 1
# Write out netCDF file
set outformat netcdf
# Set netCDF format to be netCDF4 classic model
set ncoformat 2
# Set netCDF precision to 64 bit
set ncprec 64
# Automatically work out input file type
set filetype 0
# Convert all fields in input files to netCDF
set fieldlist -1
# Get command line arguments:
# -i input files (can be more than one file)
# -o output file (single file only)
set i false
set o false
foreach arg $argv {
switch -glob -- $arg {
-i {set i true ; set o false}
-o {set i false ; set o true}
-* {puts "unknown option $arg" ; set i false; set o false}
default {
if {$i} {example9.rst
set infile [lappend infile $arg]
} elseif {$o} {
set outfile [lappend outfile $arg]
} else {
puts "unknown option $arg"
}
}
}
}
if {! [info exists infile]} {
puts "input file name must be given"
exit
}
if {[info exists outfile]} {
if {[llength $outfile] > 1} {
set outfile [lindex $outfile 0]
puts "Only one output file can be specified, using $outfile"
}
} else {
puts "output file name must be given"
exit
}
# Read in each of the input files
foreach file $infile {
readfile $filetype $file
}
# Write out all input fields to a single netCDF file
writefile $outformat $outfile $fieldlist