From 3f2dff75acf9ecd45c41b27354f1068a314b618f Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Mon, 24 Jan 2022 14:45:23 -0600 Subject: [PATCH] snapshot... --- modules/util/util.py | 53 +++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/modules/util/util.py b/modules/util/util.py index 5820033e..94a2a8dd 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -11,6 +11,7 @@ import h5py import pickle from netCDF4 import Dataset from util.setup import ancillary_path +from util.geos_nav import get_cf_nav_parameters LatLonTuple = namedtuple('LatLonTuple', ['lat', 'lon']) @@ -744,7 +745,8 @@ def write_icing_file(clvrx_str_time, output_dir, preds_dct, probs_dct, x, y, lon h5f_out.close() -def write_icing_file_nc4(clvrx_str_time, output_dir, preds_dct, probs_dct, x, y, lons, lats, elems, lines): +def write_icing_file_nc4(clvrx_str_time, output_dir, preds_dct, probs_dct, + x, y, lons, lats, elems, lines, satellite='GOES16', domain='CONUS'): outfile_name = output_dir + 'icing_prediction_'+clvrx_str_time+'.nc' rootgrp = Dataset(outfile_name, 'w', format='NETCDF4') @@ -810,50 +812,41 @@ def write_icing_file_nc4(clvrx_str_time, output_dir, preds_dct, probs_dct, x, y, lat_ds.units = 'degrees_north' lat_ds[:,] = lats - # proj_ds = h5f_out.create_dataset('Projection', data=0, dtype='b') - # proj_ds.attrs.create('long_name', data='Himawari Imagery Projection') - # proj_ds.attrs.create('grid_mapping_name', data='geostationary') - # proj_ds.attrs.create('sweep_angle_axis', data='y') - # proj_ds.attrs.create('units', data='rad') - # 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) + cf_nav_dct = get_cf_nav_parameters(satellite, domain) + + if satellite == 'H08': + long_name = 'Himawari Imagery Projection' + elif satellite == 'GOES16': + long_name = 'GOES-16/17 Imagery Projection' proj_ds = rootgrp.createVariable('Projection', 'b') - proj_ds.setncattr('long_name', 'icing_prediction_2021-10-07_18:01.nc') + proj_ds.setncattr('long_name', long_name) proj_ds.setncattr('grid_mapping_name', 'geostationary') - proj_ds.setncattr('sweep_angle_axis', 'x') - proj_ds.setncattr('semi_major_axis', 6378137.0) - proj_ds.setncattr('semi_minor_axis', 6356752.3) - proj_ds.setncattr('inverse_flattening', 298.257) - proj_ds.setncattr('perspective_point_height', 35786023.0) - proj_ds.setncattr('latitude_of_projection_origin', 0.0) - proj_ds.setncattr('longitude_of_projection_origin', -75.0) + proj_ds.setncattr('sweep_angle_axis', cf_nav_dct['sweep_angle_axis']) + proj_ds.setncattr('semi_major_axis', cf_nav_dct['semi_major_axis']) + proj_ds.setncattr('semi_minor_axis', cf_nav_dct['semi_minor_axis']) + proj_ds.setncattr('inverse_flattening', cf_nav_dct['inverse_flattening']) + proj_ds.setncattr('perspective_point_height', cf_nav_dct['perspective_point_height']) + proj_ds.setncattr('latitude_of_projection_origin', cf_nav_dct['latitude_of_projection_origin']) + proj_ds.setncattr('longitude_of_projection_origin', cf_nav_dct['longitude_of_projection_origin']) if x is not None: x_ds = rootgrp.createVariable(dim_0_name, 'f8', [dim_0_name]) x_ds.units = 'rad' x_ds.setncattr('axis', 'X') x_ds.setncattr('standard_name', 'projection_x_coordinate') - x_ds.setncattr('long_name', 'GOES PUG W-E fixed grid viewing angle') - x_ds.setncattr('scale_factor', 5.58879902955962e-05) - x_ds.setncattr('add_offset', -0.153719917308037) + x_ds.setncattr('long_name', 'fixed grid viewing angle') + x_ds.setncattr('scale_factor', cf_nav_dct['x_scale_factor']) + x_ds.setncattr('add_offset', cf_nav_dct['x_add_offset']) x_ds[:] = x y_ds = rootgrp.createVariable(dim_1_name, 'f8', [dim_1_name]) y_ds.units = 'rad' y_ds.setncattr('axis', 'Y') y_ds.setncattr('standard_name', 'projection_y_coordinate') - y_ds.setncattr('long_name', 'GOES PUG W-E fixed grid viewing angle') - y_ds.setncattr('scale_factor', -5.58879902955962e-05) - y_ds.setncattr('add_offset', 0.153719917308037) + y_ds.setncattr('long_name', 'fixed grid viewing angle') + y_ds.setncattr('scale_factor', cf_nav_dct['y_scale_factor']) + y_ds.setncattr('add_offset', cf_nav_dct['y_add_offset']) y_ds[:] = y if elems is not None: -- GitLab