From d0b02bc5af92e5f2158577bac410b263190a498a Mon Sep 17 00:00:00 2001
From: tomrink <rink@ssec.wisc.edu>
Date: Tue, 19 Oct 2021 10:04:32 -0500
Subject: [PATCH] add writer for the icing product

---
 modules/util/util.py | 54 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/modules/util/util.py b/modules/util/util.py
index 56d5abe9..769e11e3 100644
--- a/modules/util/util.py
+++ b/modules/util/util.py
@@ -557,4 +557,56 @@ def make_for_full_domain_predict(h5f, name_list=None, satellite='GOES16', domain
         grd_dct[ds_name] = np.stack(grd_dct_n[ds_name])
 
     return grd_dct, ll, cc
-# -------------------------------------------------------------------------------------------
\ No newline at end of file
+# -------------------------------------------------------------------------------------------
+
+
+def write_icing_file(outfile, preds, x, y, lons, lats):
+    h5f_out = h5py.File(outfile, 'w')
+
+    icing_pred_ds = h5f_out.create_dataset('icing_prediction', data=preds, dtype='i2')
+    icing_pred_ds.attrs.create('coordinates', data='y x')
+    icing_pred_ds.attrs.create('grid_mapping', data='Projection')
+
+    lon_ds = h5f_out.create_dataset('longitude', data=lons, dtype='f4')
+    lon_ds.attrs.create('units', data='degrees_east')
+    lon_ds.attrs.create('long_name', data='icing prediction longitude')
+
+    lat_ds = h5f_out.create_dataset('latitude', data=lats, dtype='f4')
+    lat_ds.attrs.create('units', data='degrees_north')
+    lat_ds.attrs.create('long_name', data='icing prediction latitude')
+
+    proj_ds = h5f_out.create_dataset('Projection', data=None, dtype='b')
+    proj_ds.attrs.create('long_name', data='Himawari Imagery Projection')
+    proj_ds.attrs.create('sweep_angle_axis', data='y')
+    proj_ds.attrs.create('units', data='radians')
+    proj_ds.attrs.create('semi_major_axis', data=6378.137)
+    proj_ds.attrs.create('semi_minor_axis', data=6356.7523)
+    proj_ds.attrs.create('inverse_flattening', data=298.257)
+    proj_ds.attrs.create('perspective_point_height', data=35785.863)
+    proj_ds.attrs.create('latitude_of_projection_origin', data=0.0)
+    proj_ds.attrs.create('longitude_of_projection_origin', data=140.7)
+    proj_ds.attrs.create('CFAC', data=20466275)
+    proj_ds.attrs.create('LFAC', data=20466275)
+    proj_ds.attrs.create('COFF', data=2750.5)
+    proj_ds.attrs.create('LOFF', data=2750.5)
+
+    if x is not None:
+        x_ds = h5f_out.create_dataset('x', data=x, dtype='f8')
+        x_ds.attrs.create('units', data='radians')
+        x_ds.attrs.create('standard_name', data='projection_x_coordinate')
+        x_ds.attrs.create('long_name', data='GOES PUG W-E fixed grid viewing angle')
+        x_ds.attrs.create('scale_factor', data=5.58879902955962e-05)
+        x_ds.attrs.create('add_offset', data=-0.153719917308037)
+        x_ds.attrs.create('CFAC', data=20466275)
+        x_ds.attrs.create('COFF', data=2750.5)
+
+        y_ds = h5f_out.create_dataset('y', data=x, dtype='f8')
+        y_ds.attrs.create('units', data='radians')
+        y_ds.attrs.create('standard_name', data='projection_y_coordinate')
+        y_ds.attrs.create('long_name', data='GOES PUG S-N fixed grid viewing angle')
+        y_ds.attrs.create('scale_factor', data=-5.58879902955962e-05)
+        y_ds.attrs.create('add_offset', data=0.153719917308037)
+        y_ds.attrs.create('LFAC', data=20466275)
+        y_ds.attrs.create('LOFF', data=2750.5)
+
+    h5f_out.close()
-- 
GitLab