From 60fb22a098e173c77b50fbb043045e56ad06f877 Mon Sep 17 00:00:00 2001 From: sudhamurthy Date: Thu, 3 Oct 2024 13:38:41 -0400 Subject: [PATCH] DAS-2232 - added method to check for variables with no dimensions --- hoss/dimension_utilities.py | 14 ++++++++++++++ hoss/spatial.py | 38 +++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/hoss/dimension_utilities.py b/hoss/dimension_utilities.py index 0563536..ec1512a 100644 --- a/hoss/dimension_utilities.py +++ b/hoss/dimension_utilities.py @@ -161,6 +161,20 @@ def get_override_projected_dimensions( return override_dimensions +def get_variables_with_anonymous_dims( + varinfo: VarInfoFromDmr, required_variables: set[str] +) -> bool: + """ + returns the list of required variables without any + dimensions + """ + return set( + required_variable + for required_variable in required_variables + if len(varinfo.get_variable(required_variable).dimensions) == 0 + ) + + def get_coordinate_variables( varinfo: VarInfoFromDmr, requested_variables: Set[str], diff --git a/hoss/spatial.py b/hoss/spatial.py index 99434f0..3c2ee2b 100644 --- a/hoss/spatial.py +++ b/hoss/spatial.py @@ -42,6 +42,7 @@ get_dimension_bounds, get_dimension_extents, get_dimension_index_range, + get_variables_with_anonymous_dims, update_dimension_variables, ) from hoss.projection_utilities import ( @@ -121,25 +122,26 @@ def get_spatial_index_ranges( shape_file_path=shape_file_path, ) ) - - if (not geographic_dimensions) and (not projected_dimensions): - for non_spatial_variable in non_spatial_variables: - latitude_coordinates, longitude_coordinates = get_coordinate_variables( - varinfo, [non_spatial_variable] - ) - if latitude_coordinates and longitude_coordinates: - index_ranges.update( - get_x_y_index_ranges_from_coordinates( - non_spatial_variable, - varinfo, - dimensions_file, - varinfo.get_variable(latitude_coordinates[0]), - varinfo.get_variable(longitude_coordinates[0]), - index_ranges, - bounding_box=bounding_box, - shape_file_path=shape_file_path, - ) + variables_with_anonymous_dims = get_variables_with_anonymous_dims( + varinfo, required_variables + ) + for variable_with_anonymous_dims in variables_with_anonymous_dims: + latitude_coordinates, longitude_coordinates = get_coordinate_variables( + varinfo, [variable_with_anonymous_dims] + ) + if latitude_coordinates and longitude_coordinates: + index_ranges.update( + get_x_y_index_ranges_from_coordinates( + variable_with_anonymous_dims, + varinfo, + dimensions_file, + varinfo.get_variable(latitude_coordinates[0]), + varinfo.get_variable(longitude_coordinates[0]), + index_ranges, + bounding_box=bounding_box, + shape_file_path=shape_file_path, ) + ) return index_ranges