From 71edacf3f28eccd1f927d4ab44d1a20fa75c9510 Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Sat, 19 Feb 2022 16:45:36 -0600 Subject: [PATCH] snapshot... --- modules/icing/pireps.py | 66 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/modules/icing/pireps.py b/modules/icing/pireps.py index c87c1969..8bc04099 100644 --- a/modules/icing/pireps.py +++ b/modules/icing/pireps.py @@ -196,7 +196,71 @@ def pirep_icing(filename, lon_range=[-180, 180], lat_range=[-63, 63]): return ice_dict, no_ice_dict, neg_ice_dict -def pirep_icing_from_boeing(dirname='/ships19/cloud/scratch/ICING/BOEING/icing/2020/', lon_range=[-180, 180], lat_range=[-63, 63]): +# Returns icing, no_icing (no icing observed) +def pirep_icing_boeing_txt(filename, lon_range=[-180, 180], lat_range=[-63, 63]): + # year, month, day, hour, minute, sec, lat, lon, alt, degC, airspeed, icing + + ice_dict = {} + no_ice_dict = {} + + cnt_ice = 0 + cnt_no_ice = 0 + + with open(filename) as file: + for idx, line in enumerate(file): + toks = line.split(' ') + if len(toks) != 12: # Check for line format error + continue + year = 2000 + toks[0] + month = toks[1] + day = toks[2] + hour = toks[3] + minute = toks[4] + second = toks[5] + + try: + lat = float(toks[6]) + lon = float(toks[7]) + except Exception: + continue + + if lon < lon_range[0] or lon > lon_range[1]: + continue + if lat < lat_range[0] or lat > lat_range[1]: + continue + + flt_alt = float(toks[8]) * 0.3048 # convert feet to meters + degK = float(toks[9]) + 273.0 + spd = float(toks[10]) + ice_bool = int(toks[11]) + + dto = datetime.datetime(year=year, month=month, day=day, hour=hour, minute=minute, second=second) + dto = dto.replace(tzinfo=timezone.utc) + ts = dto.timestamp() + + if ice_bool[k] == 1: + tup = (lat, lon, flt_alt, 1, 0, 'None', degK, spd) + rpts = ice_dict.get(ts) + if rpts is None: + rpts = [] + rpts.append(tup) + ice_dict[ts] = rpts + else: + rpts.append(tup) + cnt_ice += 1 + else: + tup = (lat, lon, flt_alt, -1, 0, 'None', degK, spd) + rpts = no_ice_dict.get(ts) + if rpts is None: + rpts = [] + rpts.append(tup) + no_ice_dict[ts] = rpts + else: + rpts.append(tup) + cnt_no_ice += 1 + + +def pirep_icing_from_boeing_nc(dirname='/ships19/cloud/scratch/ICING/BOEING/icing/2020/', lon_range=[-180, 180], lat_range=[-63, 63]): flist = [] for path in Path(dirname).rglob('*.nc'): flist.append(path) -- GitLab