From 68f4d48cb7e085f1c9931c08ce948a348eace8c4 Mon Sep 17 00:00:00 2001 From: dgketchum Date: Sun, 11 Aug 2019 15:30:18 -0600 Subject: [PATCH 1/3] add new format handling --- tools/gridmet/gridmet_daily_refet.py | 37 ++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/tools/gridmet/gridmet_daily_refet.py b/tools/gridmet/gridmet_daily_refet.py index 718d0aa..fea8dfd 100644 --- a/tools/gridmet/gridmet_daily_refet.py +++ b/tools/gridmet/gridmet_daily_refet.py @@ -14,11 +14,13 @@ import netCDF4 import numpy as np from osgeo import gdal -# import refet import _utils +# import refet + + def main(start_dt, end_dt, netcdf_ws, ancillary_ws, output_ws, etr_flag=False, eto_flag=False, extent_path=None, output_extent=None, stats_flag=True, overwrite_flag=False, scalar=None): @@ -248,17 +250,32 @@ def main(start_dt, end_dt, netcdf_ws, ancillary_ws, output_ws, if eto_flag: logging.debug(" {}".format(eto_path)) eto_nc_f = netCDF4.Dataset(eto_path, 'r') - eto_nc = eto_nc_f.variables[gridmet_band_dict['eto']][ - :, row_a: row_b, col_a: col_b].copy() - eto_nc = np.flip(eto_nc, 1) + if eto_nc_f.file_format == 'NETCDF3_CLASSIC': + eto_nc = eto_nc_f.variables[gridmet_band_dict['eto']][ + :, row_a: row_b, col_a: col_b].copy() + eto_nc = np.flip(eto_nc, 1) + elif eto_nc_f.file_format == 'NETCDF4': + eto_nc = np.flip(eto_nc_f.variables[gridmet_band_dict['etr']], 1) + eto_nc = eto_nc[:, row_a: row_b, col_a: col_b].copy() + eto_nc = np.flip(eto_nc, 1) + else: + raise TypeError('The netcdf file {} format is invalid'.format(eto_path)) eto_nc_f.close() del eto_nc_f + if etr_flag: logging.debug(" {}".format(etr_path)) etr_nc_f = netCDF4.Dataset(etr_path, 'r') - etr_nc = etr_nc_f.variables[gridmet_band_dict['etr']][ - :, row_a: row_b, col_a: col_b].copy() - etr_nc = np.flip(etr_nc, 1) + if etr_nc_f.file_format == 'NETCDF3_CLASSIC': + etr_nc = etr_nc_f.variables[gridmet_band_dict['etr']][ + :, row_a: row_b, col_a: col_b].copy() + etr_nc = np.flip(etr_nc, 1) + elif etr_nc_f.file_format == 'NETCDF4': + etr_nc = np.flip(etr_nc_f.variables[gridmet_band_dict['etr']], 1) + etr_nc = etr_nc[:, row_a: row_b, col_a: col_b].copy() + etr_nc = np.flip(etr_nc, 1) + else: + raise TypeError('The netcdf file {} format is invalid'.format(eto_path)) etr_nc_f.close() del etr_nc_f @@ -624,9 +641,9 @@ def main(start_dt, end_dt, netcdf_ws, ancillary_ws, output_ws, def arg_parse(): """Base all default folders from script location - scripts: ./pymetric/tools/gridmet - tools: ./pymetric/tools - output: ./pymetric/gridmet + scripts: ./pymetric_/tools/gridmet + tools: ./pymetric_/tools + output: ./pymetric_/gridmet """ script_folder = sys.path[0] code_folder = os.path.dirname(script_folder) From ebb8e8d9fed15aab6a86035dac1264d000553ed8 Mon Sep 17 00:00:00 2001 From: dgketchum Date: Sun, 11 Aug 2019 15:30:52 -0600 Subject: [PATCH 2/3] add new format handling --- tools/gridmet/gridmet_daily_ppt.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tools/gridmet/gridmet_daily_ppt.py b/tools/gridmet/gridmet_daily_ppt.py index b5da065..79665c6 100644 --- a/tools/gridmet/gridmet_daily_ppt.py +++ b/tools/gridmet/gridmet_daily_ppt.py @@ -4,6 +4,7 @@ #-------------------------------- import argparse +from argparse import Namespace import datetime as dt import logging import os @@ -191,9 +192,16 @@ def main(start_dt, end_dt, netcdf_ws, ancillary_ws, output_ws, # Read in the GRIDMET NetCDF file # Immediately clip input array to save memory input_nc_f = netCDF4.Dataset(input_raster, 'r') - input_nc = input_nc_f.variables[gridmet_band_dict[input_var]][ - :, row_a: row_b, col_a: col_b].copy() - input_nc = np.flip(input_nc, 1) + if input_nc_f.file_format == 'NETCDF3_CLASSIC': + input_nc = input_nc_f.variables[gridmet_band_dict[input_var]][ + :, row_a: row_b, col_a: col_b].copy() + input_nc = np.flip(input_nc, 1) + elif input_nc_f.file_format == 'NETCDF4': + input_nc = np.flip(input_nc_f.variables[gridmet_band_dict[input_var]], 1) + input_nc = input_nc[:, row_a: row_b, col_a: col_b].copy() + input_nc = np.flip(input_nc, 1) + else: + raise TypeError('The netcdf file {} format is invalid'.format(input_raster)) input_nc_f.close() del input_nc_f @@ -266,9 +274,9 @@ def main(start_dt, end_dt, netcdf_ws, ancillary_ws, output_ws, def arg_parse(): """Base all default folders from script location - scripts: ./pymetric/tools/gridmet - tools: ./pymetric/tools - output: ./pymetric/gridmet + scripts: ./pymetric_/tools/gridmet + tools: ./pymetric_/tools + output: ./pymetric_/gridmet """ script_folder = sys.path[0] code_folder = os.path.dirname(script_folder) From ea3b0ca1cb893eb5774ce8a5f5d384958df0cffc Mon Sep 17 00:00:00 2001 From: dgketchum Date: Sun, 11 Aug 2019 15:37:52 -0600 Subject: [PATCH 3/3] remove unnecessary import of argparse.Namespace --- tools/gridmet/gridmet_daily_ppt.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/gridmet/gridmet_daily_ppt.py b/tools/gridmet/gridmet_daily_ppt.py index 79665c6..f458991 100644 --- a/tools/gridmet/gridmet_daily_ppt.py +++ b/tools/gridmet/gridmet_daily_ppt.py @@ -4,7 +4,6 @@ #-------------------------------- import argparse -from argparse import Namespace import datetime as dt import logging import os