10 from __future__
import print_function
14 from datetime
import datetime, timedelta
15 from pathlib
import Path
17 IODA_CONV_PATH = Path(__file__).parent/
"@SCRIPT_LIB_PATH@"
18 if not IODA_CONV_PATH.is_dir():
19 IODA_CONV_PATH = Path(__file__).parent/
'..'/
'lib-python'
20 sys.path.append(
str(IODA_CONV_PATH.resolve()))
22 import ioda_conv_ncio
as iconv
23 from orddicts
import DefaultOrderedDict
26 vName =
"obs_absolute_dynamic_topography",
29 (
"latitude",
"float"),
30 (
"longitude",
"float"),
31 (
"datetime",
"string")
49 ncd = nc.Dataset(self.
filenamefilename)
50 time = ncd.variables[
'time'][:]
51 lons = ncd.variables[
'lon'][:]
52 lats = ncd.variables[
'lat'][:]
53 hrs = ncd.variables[
'hr'][:]
54 vals = ncd.variables[
'val'][:]
55 errs = ncd.variables[
'err'][:]
56 qcs = ncd.variables[
'qc'][:]
59 base_date = datetime(1970, 1, 1) + timedelta(seconds=
int(time[0]))
61 valKey = vName, self.
writerwriter.OvalName()
62 errKey = vName, self.
writerwriter.OerrName()
63 qcKey = vName, self.
writerwriter.OqcName()
65 for i
in range(len(hrs)):
70 dt = base_date + timedelta(hours=float(hrs[i]))
71 locKey = lats[i], lons[i], dt.strftime(
"%Y-%m-%dT%H:%M:%SZ")
72 self.
datadata[0][locKey][valKey] = vals[i]
73 self.
datadata[0][locKey][errKey] = errs[i]
74 self.
datadata[0][locKey][qcKey] = qcs[i]
78 parser = argparse.ArgumentParser(
80 'Read absolute dynamic topography (ADT) observations'
81 ' file(s) that have already been QCd and thinned for use in'
82 ' Hybrid-GODAS system.')
85 required = parser.add_argument_group(title=
'required arguments')
86 required.add_argument(
88 help=
"name of HGODAS observation input file(s)",
89 type=str, required=
True)
90 required.add_argument(
92 help=
"path of ioda output file",
93 type=str, required=
True)
94 required.add_argument(
96 help=
"base date for the center of the window",
97 metavar=
"YYYYMMDDHH", type=str, required=
True)
98 args = parser.parse_args()
99 fdate = datetime.strptime(args.date,
'%Y%m%d%H')
101 writer = iconv.NcWriter(args.output, locationKeyList)
107 AttrData[
'date_time_string'] = fdate.strftime(
"%Y-%m-%dT%H:%M:%SZ")
109 (ObsVars, LocMdata, VarMdata) = writer.ExtractObsData(prof.data)
110 writer.BuildNetcdf(ObsVars, LocMdata, VarMdata, AttrData)
113 if __name__ ==
'__main__':
def __init__(self, filename, date, writer)