From 116e2e83d79c292735f65a74a7bc65c518c842aa Mon Sep 17 00:00:00 2001 From: Chahan Kropf Date: Mon, 6 May 2024 14:57:42 +0200 Subject: [PATCH] Fix pixel center shift --- climada_petals/hazard/test/test_wildfire.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/climada_petals/hazard/test/test_wildfire.py b/climada_petals/hazard/test/test_wildfire.py index 974e51a03..1ad875d3e 100644 --- a/climada_petals/hazard/test/test_wildfire.py +++ b/climada_petals/hazard/test/test_wildfire.py @@ -273,7 +273,9 @@ def test_centroids_pass(self): """ Test _firms_centroids_creation """ wf = WildFire() firms = wf._clean_firms_df(TEST_FIRMS) - centroids = wf._firms_centroids_creation(firms, 0.375/ONE_LAT_KM, 1/2) + res_data = 0.375/ONE_LAT_KM + centr_res_factor = 1/2 + centroids = wf._firms_centroids_creation(firms, res_data, centr_res_factor) centroids_meta = centroids.get_meta() self.assertEqual(centroids_meta['width'], 144) self.assertEqual(centroids_meta['height'], 138) @@ -283,12 +285,12 @@ def test_centroids_pass(self): self.assertAlmostEqual(centroids_meta['transform'][3], 0.0) self.assertAlmostEqual(centroids_meta['transform'][4], -centroids_meta['transform'][0]) self.assertGreaterEqual(centroids_meta['transform'][5], firms.latitude.max()) - self.assertLessEqual(firms.latitude.max(), centroids.total_bounds[3]) - # TODO: check whether allowing for a tolerance is valid here - TOLERANCE = 0.005 - self.assertGreaterEqual(firms.latitude.min(), centroids.total_bounds[1] - TOLERANCE) - self.assertLessEqual(firms.longitude.max(), centroids.total_bounds[2]) - self.assertGreaterEqual(firms.longitude.min(), centroids.total_bounds[0]) + # Meta pixel coordinates are shifted by half resolution to the pixel center lat/lon + pixel_center_shift = (res_data / centr_res_factor) / 2 + self.assertLessEqual(firms.latitude.max(), centroids.total_bounds[3] + pixel_center_shift) + self.assertGreaterEqual(firms.latitude.min(), centroids.total_bounds[1] - pixel_center_shift) + self.assertLessEqual(firms.longitude.max(), centroids.total_bounds[2] + pixel_center_shift) + self.assertGreaterEqual(firms.longitude.min(), centroids.total_bounds[0] - pixel_center_shift) self.assertTrue(centroids.lat.size) self.assertTrue(centroids.get_area_pixel().size) self.assertTrue(centroids.on_land.size)