From 254b1164ff938553e5e7bba453cf556fc00869b9 Mon Sep 17 00:00:00 2001 From: mathleur Date: Mon, 27 Jan 2025 15:45:17 +0100 Subject: [PATCH 1/7] add handling of reduced_ll pl array with 0 values ie local reduced_ll grid --- .../datacube_mappers/mapper_types/reduced_ll.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index 53d7d677..61f7c14c 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -5084,8 +5084,11 @@ def lon_spacing(self): def second_axis_vals(self, first_val): first_idx = self._first_axis_vals.index(first_val[0]) Ny = self.lon_spacing()[first_idx] - second_spacing = 360 / Ny - return [i * second_spacing for i in range(Ny)] + if Ny != 0: + second_spacing = 360 / Ny + return [i * second_spacing for i in range(Ny)] + else: + raise ValueError("Requested longitude vvalue is not within reduced latitude-longitude grid bounds") def map_second_axis(self, first_val, lower, upper): axis_lines = self.second_axis_vals(first_val) From ce488a84619ebee2c8c88c12cd25a9b522e2feb4 Mon Sep 17 00:00:00 2001 From: mathleur Date: Mon, 27 Jan 2025 16:09:52 +0100 Subject: [PATCH 2/7] remove the south pole from reduced ll grid --- .../datacube_mappers/mapper_types/reduced_ll.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index 61f7c14c..3d1aa37f 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -23,7 +23,7 @@ def __init__(self, base_axis, mapped_axes, resolution, md5_hash=None, local_area def first_axis_vals(self): resolution = 180 / (self._resolution - 1) - vals = [-90 + i * resolution for i in range(self._resolution)] + vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] return vals def map_first_axis(self, lower, upper): @@ -5088,7 +5088,7 @@ def second_axis_vals(self, first_val): second_spacing = 360 / Ny return [i * second_spacing for i in range(Ny)] else: - raise ValueError("Requested longitude vvalue is not within reduced latitude-longitude grid bounds") + raise ValueError("Requested latitude value is not within reduced latitude-longitude grid bounds") def map_second_axis(self, first_val, lower, upper): axis_lines = self.second_axis_vals(first_val) From 78095efd977a2823a9ada2666ec46b9bae45e1a2 Mon Sep 17 00:00:00 2001 From: mathleur Date: Tue, 28 Jan 2025 13:43:50 +0100 Subject: [PATCH 3/7] try to fix reduced_ll grid for res 3601 --- .../datacube_mappers/mapper_types/reduced_ll.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index 3d1aa37f..4bd404f8 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -22,8 +22,15 @@ def __init__(self, base_axis, mapped_axes, resolution, md5_hash=None, local_area raise NotImplementedError("Reduced lat-lon grid with first axis in decreasing order is not supported") def first_axis_vals(self): - resolution = 180 / (self._resolution - 1) - vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] + start_lat = 90 + end_lat = -90 + if self._resolution == 3601: + start_lat = 89.9731 + end_lat = -89.9731 + # resolution = 180 / (self._resolution - 1) + # vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] + resolution = (start_lat - end_lat) / (self._resolution - 1) + vals = [round(start_lat - i * resolution, 12) for i in range(self._resolution)] return vals def map_first_axis(self, lower, upper): From 0860f11b346dadb135929159a774eb098bdc8085 Mon Sep 17 00:00:00 2001 From: mathleur Date: Tue, 28 Jan 2025 14:01:01 +0100 Subject: [PATCH 4/7] try to fix reduced_ll grid for res 3601 --- .../datacube_mappers/mapper_types/reduced_ll.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index 4bd404f8..131c7c7f 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -26,10 +26,9 @@ def first_axis_vals(self): end_lat = -90 if self._resolution == 3601: start_lat = 89.9731 - end_lat = -89.9731 # resolution = 180 / (self._resolution - 1) # vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] - resolution = (start_lat - end_lat) / (self._resolution - 1) + resolution = 180 / (self._resolution - 1) vals = [round(start_lat - i * resolution, 12) for i in range(self._resolution)] return vals From e4075b16fc2b7338f1903fc36b80af8b271c3311 Mon Sep 17 00:00:00 2001 From: mathleur Date: Tue, 28 Jan 2025 14:31:20 +0100 Subject: [PATCH 5/7] try to fix reduced_ll grid for res 3601 --- .../datacube_mappers/mapper_types/reduced_ll.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index 131c7c7f..02a462d5 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -26,9 +26,11 @@ def first_axis_vals(self): end_lat = -90 if self._resolution == 3601: start_lat = 89.9731 + end_lat = -89.9731 # resolution = 180 / (self._resolution - 1) # vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] - resolution = 180 / (self._resolution - 1) + # resolution = 180 / (self._resolution - 1) + resolution = (start_lat - end_lat) / (self._resolution - 1) vals = [round(start_lat - i * resolution, 12) for i in range(self._resolution)] return vals From f1a808ae1e39fdc16af933de8d3371ed2d9b8b1a Mon Sep 17 00:00:00 2001 From: mathleur Date: Tue, 28 Jan 2025 15:28:52 +0100 Subject: [PATCH 6/7] try to fix reduced_ll grid for res 3601 --- .../datacube_mappers/mapper_types/reduced_ll.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index 02a462d5..b73def27 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -25,12 +25,12 @@ def first_axis_vals(self): start_lat = 90 end_lat = -90 if self._resolution == 3601: - start_lat = 89.9731 - end_lat = -89.9731 + start_lat = 89.973092 + # end_lat = -89.9731 # resolution = 180 / (self._resolution - 1) # vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] - # resolution = 180 / (self._resolution - 1) - resolution = (start_lat - end_lat) / (self._resolution - 1) + resolution = 180 / (self._resolution - 1) + # resolution = (start_lat - end_lat) / (self._resolution - 1) vals = [round(start_lat - i * resolution, 12) for i in range(self._resolution)] return vals From 8885c30ac78b186348a6c17379f8601b5511e90e Mon Sep 17 00:00:00 2001 From: mathleur Date: Tue, 28 Jan 2025 15:42:24 +0100 Subject: [PATCH 7/7] clean up --- .../datacube_mappers/mapper_types/reduced_ll.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py index b73def27..ee3aa769 100644 --- a/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +++ b/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py @@ -23,14 +23,9 @@ def __init__(self, base_axis, mapped_axes, resolution, md5_hash=None, local_area def first_axis_vals(self): start_lat = 90 - end_lat = -90 if self._resolution == 3601: start_lat = 89.973092 - # end_lat = -89.9731 - # resolution = 180 / (self._resolution - 1) - # vals = [round(90 - i * resolution, 12) for i in range(self._resolution)] resolution = 180 / (self._resolution - 1) - # resolution = (start_lat - end_lat) / (self._resolution - 1) vals = [round(start_lat - i * resolution, 12) for i in range(self._resolution)] return vals