From 6343b571a367ef63a10d6807e3d907c3283ebb20 Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 6 Mar 2024 16:06:01 +0100 Subject: [PATCH] Add test for diagonal coverage with cover_scale (#679) * Add test for diagonal coverage * Use round to have better control on decimals * Use finer cover_scale * lint --------- Co-authored-by: vincentsarago --- tests/test_models.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_models.py b/tests/test_models.py index 1a6afdfa..d64d8151 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -460,6 +460,7 @@ def test_imagedata_coverage(): coverage = im.get_coverage_array({"type": "Feature", "geometry": poly}) assert numpy.unique(coverage).tolist() == [0.25] + # non-default CRS poly = { "type": "Polygon", "coordinates": [ @@ -480,3 +481,17 @@ def test_imagedata_coverage(): {"type": "Feature", "geometry": poly}, shape_crs="epsg:3857" ) assert numpy.unique(coverage).tolist() == [0.25] + + # polygon with diagonal cut - requires higher cover_scale + im = ImageData( + numpy.ma.array((1, 2, 3, 4)).reshape((1, 2, 2)), + crs="epsg:4326", + bounds=(-180, -90, 180, 90), + ) + poly = { + "type": "Polygon", + "coordinates": [[[-90.0, -45.0], [90.0, -45.0], [-90.0, 45.0], [-90.0, -45.0]]], + } + + coverage = im.get_coverage_array(poly, cover_scale=1000) + assert numpy.round(numpy.unique(coverage), decimals=3).tolist() == [0, 0.125, 0.25]