From 3e1f3279a79d5f40b5f409f8d3eb55c37f4775dc Mon Sep 17 00:00:00 2001 From: VincentMiras Date: Tue, 9 Dec 2025 17:21:16 +0100 Subject: [PATCH 1/5] =?UTF-8?q?Ajout=20des=20diff=C3=A9rents=20cas=20de=20?= =?UTF-8?q?styles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generation/inputs/mergeNtiff/aspect.json | 18 ++++++++ .../mergeNtiff/aspect_with_palette.json | 44 +++++++++++++++++++ generation/inputs/mergeNtiff/estompage.json | 20 +++++++++ .../mergeNtiff/estompage_with_palette.json | 29 ++++++++++++ generation/inputs/mergeNtiff/pente.json | 18 -------- .../inputs/mergeNtiff/pente_with_palette.json | 40 +++++++++++++++++ generation/inputs/mergeNtiff/terrainrgb.json | 18 ++++++++ 7 files changed, 169 insertions(+), 18 deletions(-) create mode 100644 generation/inputs/mergeNtiff/aspect.json create mode 100644 generation/inputs/mergeNtiff/aspect_with_palette.json create mode 100644 generation/inputs/mergeNtiff/estompage.json create mode 100644 generation/inputs/mergeNtiff/estompage_with_palette.json create mode 100644 generation/inputs/mergeNtiff/pente_with_palette.json create mode 100644 generation/inputs/mergeNtiff/terrainrgb.json diff --git a/generation/inputs/mergeNtiff/aspect.json b/generation/inputs/mergeNtiff/aspect.json new file mode 100644 index 0000000..4dc0010 --- /dev/null +++ b/generation/inputs/mergeNtiff/aspect.json @@ -0,0 +1,18 @@ +{ + "identifier": "aspect", + "title": "Aspect", + "abstract": "Calcul de l'exposition par la méthode de Horn", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "exposition": { + "algo": "H", + "min_slope": 1 + } +} \ No newline at end of file diff --git a/generation/inputs/mergeNtiff/aspect_with_palette.json b/generation/inputs/mergeNtiff/aspect_with_palette.json new file mode 100644 index 0000000..eab016d --- /dev/null +++ b/generation/inputs/mergeNtiff/aspect_with_palette.json @@ -0,0 +1,44 @@ +{ + "identifier": "aspect", + "title": "Aspect", + "abstract": "Calcul de l'exposition par la méthode de Horn", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "exposition": { + "algo": "H", + "min_slope": 1 + }, + "palette": { + "max_value": 360, + "rgb_continuous": true, + "alpha_continuous": true, + "colours": [ + { "value": -1.0, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, + { "value": 0, "red": 224, "green": 32, "blue": 29, "alpha": 200 }, + { "value": 22.5, "red": 224, "green": 32, "blue": 29, "alpha": 200 }, + { "value": 22.6, "red": 230, "green": 142, "blue": 28, "alpha": 200 }, + { "value": 67.5, "red": 230, "green": 142, "blue": 28, "alpha": 200 }, + { "value": 67.6, "red": 255, "green": 112, "blue": 18, "alpha": 200 }, + { "value": 112.5, "red": 255, "green": 112, "blue": 18, "alpha": 200 }, + { "value": 112.6, "red": 219, "green": 199, "blue": 14, "alpha": 200 }, + { "value": 157.5, "red": 219, "green": 199, "blue": 14, "alpha": 200 }, + { "value": 157.6, "red": 11, "green": 215, "blue": 230, "alpha": 200 }, + { "value": 202.5, "red": 11, "green": 215, "blue": 230, "alpha": 200 }, + { "value": 202.6, "red": 14, "green": 113, "blue": 199, "alpha": 200 }, + { "value": 247.5, "red": 14, "green": 113, "blue": 199, "alpha": 200 }, + { "value": 247.6, "red": 50, "green": 50, "blue": 235, "alpha": 200 }, + { "value": 292.5, "red": 50, "green": 50, "blue": 235, "alpha": 200 }, + { "value": 292.6, "red": 222, "green": 27, "blue": 141, "alpha": 200 }, + { "value": 337.5, "red": 222, "green": 27, "blue": 141, "alpha": 200 }, + { "value": 337.6, "red": 224, "green": 32, "blue": 29, "alpha": 200 }, + { "value": 360.0, "red": 224, "green": 32, "blue": 29, "alpha": 200 } + ] + } +} \ No newline at end of file diff --git a/generation/inputs/mergeNtiff/estompage.json b/generation/inputs/mergeNtiff/estompage.json new file mode 100644 index 0000000..802ed34 --- /dev/null +++ b/generation/inputs/mergeNtiff/estompage.json @@ -0,0 +1,20 @@ +{ + "identifier": "estompage", + "title": "Estompage", + "abstract": "Estompage Azimuth 315°", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "estompage": { + "zenith": 45, + "azimuth": 315, + "z_factor": 1, + "interpolation": "linear" + } +} diff --git a/generation/inputs/mergeNtiff/estompage_with_palette.json b/generation/inputs/mergeNtiff/estompage_with_palette.json new file mode 100644 index 0000000..4819242 --- /dev/null +++ b/generation/inputs/mergeNtiff/estompage_with_palette.json @@ -0,0 +1,29 @@ +{ + "identifier": "estompage", + "title": "Estompage", + "abstract": "Estompage Azimuth 315°", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "estompage": { + "zenith": 45, + "azimuth": 315, + "z_factor": 1, + "interpolation": "linear" + }, + "palette": { + "max_value": 255, + "rgb_continuous": true, + "alpha_continuous": true, + "colours": [ + { "value": 0, "red": 0, "green": 0, "blue": 0, "alpha": 64 }, + { "value": 255, "red": 255, "green": 255, "blue": 255, "alpha": 64 } + ] + } +} diff --git a/generation/inputs/mergeNtiff/pente.json b/generation/inputs/mergeNtiff/pente.json index f37bb64..cd6f12d 100644 --- a/generation/inputs/mergeNtiff/pente.json +++ b/generation/inputs/mergeNtiff/pente.json @@ -18,23 +18,5 @@ "image_nodata": -99999, "slope_nodata": 91, "slope_max": 90 - }, - "palette": { - "no_alpha": false, - "rgb_continuous": true, - "alpha_continuous": true, - "colours": [ - { "value": 0, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, - { "value": 29, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, - { "value": 30, "red": 242, "green": 229, "blue": 0, "alpha": 255 }, - { "value": 34, "red": 242, "green": 229, "blue": 0, "alpha": 255 }, - { "value": 35, "red": 243, "green": 148, "blue": 25, "alpha": 255 }, - { "value": 39, "red": 243, "green": 148, "blue": 25, "alpha": 255 }, - { "value": 40, "red": 225, "green": 0, "blue": 0, "alpha": 255 }, - { "value": 44, "red": 225, "green": 0, "blue": 0, "alpha": 255 }, - { "value": 45, "red": 200, "green": 137, "blue": 187, "alpha": 255 }, - { "value": 90, "red": 200, "green": 137, "blue": 187, "alpha": 255 }, - { "value": 91, "red": 255, "green": 255, "blue": 255, "alpha": 0 } - ] } } diff --git a/generation/inputs/mergeNtiff/pente_with_palette.json b/generation/inputs/mergeNtiff/pente_with_palette.json new file mode 100644 index 0000000..f37bb64 --- /dev/null +++ b/generation/inputs/mergeNtiff/pente_with_palette.json @@ -0,0 +1,40 @@ +{ + "identifier": "montagne", + "title": "Pente par paliers standards", + "abstract": "Pente calculee avec la methode de Horn mais affichee par parlier standard de 30 a 90 degres", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "pente": { + "algo": "H", + "unit": "degree", + "interpolation": "linear", + "image_nodata": -99999, + "slope_nodata": 91, + "slope_max": 90 + }, + "palette": { + "no_alpha": false, + "rgb_continuous": true, + "alpha_continuous": true, + "colours": [ + { "value": 0, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, + { "value": 29, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, + { "value": 30, "red": 242, "green": 229, "blue": 0, "alpha": 255 }, + { "value": 34, "red": 242, "green": 229, "blue": 0, "alpha": 255 }, + { "value": 35, "red": 243, "green": 148, "blue": 25, "alpha": 255 }, + { "value": 39, "red": 243, "green": 148, "blue": 25, "alpha": 255 }, + { "value": 40, "red": 225, "green": 0, "blue": 0, "alpha": 255 }, + { "value": 44, "red": 225, "green": 0, "blue": 0, "alpha": 255 }, + { "value": 45, "red": 200, "green": 137, "blue": 187, "alpha": 255 }, + { "value": 90, "red": 200, "green": 137, "blue": 187, "alpha": 255 }, + { "value": 91, "red": 255, "green": 255, "blue": 255, "alpha": 0 } + ] + } +} diff --git a/generation/inputs/mergeNtiff/terrainrgb.json b/generation/inputs/mergeNtiff/terrainrgb.json new file mode 100644 index 0000000..530ec54 --- /dev/null +++ b/generation/inputs/mergeNtiff/terrainrgb.json @@ -0,0 +1,18 @@ +{ + "identifier": "terrainrgb", + "title": "Aspect", + "abstract": "Calcul de l'altitude en Terrain RGB", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "terrainrgb": { + "min_elevation": -10000, + "step": 0.1 + } +} From edf2bfeef26ddb323591ed632e31ae63869ef54b Mon Sep 17 00:00:00 2001 From: VincentMiras Date: Tue, 9 Dec 2025 17:21:31 +0100 Subject: [PATCH 2/5] Ajout tests generation --- generation/suite/mergeNtiff.bats | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/generation/suite/mergeNtiff.bats b/generation/suite/mergeNtiff.bats index e184149..dac3ceb 100644 --- a/generation/suite/mergeNtiff.bats +++ b/generation/suite/mergeNtiff.bats @@ -29,11 +29,41 @@ setup_file() { run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_mask.txt -r ../inputs/mergeNtiff/ -c zip -i lanczos -n 0,0,255 } -@test "Succeed to reproject images and apply a style" { +@test "Succeed to reproject images and apply a slope style with a palette" { + bats_require_minimum_version 1.5.0 + run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/pente_with_palette.json -c zip -i lanczos -n -255,0,0,100 +} + +@test "Succeed to reproject images and apply a slope style without a palette" { bats_require_minimum_version 1.5.0 run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/pente.json -c zip -i lanczos -n -255,0,0,100 } +@test "Succeed to reproject images and apply a estompage style with a palette" { + bats_require_minimum_version 1.5.0 + run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/estompage_with_palette.json -c zip -i lanczos -n -255,0,0,100 +} + +@test "Succeed to reproject images and apply a estompage style without a palette" { + bats_require_minimum_version 1.5.0 + run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/estompage.json -c zip -i lanczos -n -255,0,0,100 +} + +@test "Succeed to reproject images and apply a aspect style with a palette" { + bats_require_minimum_version 1.5.0 + run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/aspect_with_palette.json -c zip -i lanczos -n -255,0,0,100 +} + +@test "Succeed to reproject images and apply a aspect style without a palette" { + bats_require_minimum_version 1.5.0 + run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/aspect.json -c zip -i lanczos -n -255,0,0,100 +} + +@test "Succeed to reproject images and apply a terrainrgb style " { + bats_require_minimum_version 1.5.0 + run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/terrainrgb.json -c zip -i lanczos -n -255,0,0,100 +} + teardown_file() { rm -f /tmp/test_ok_style.tif rm -f /tmp/test_ok_mask_i.tif From b8b296d362680d75bc39bcf783899d22e0c9e88d Mon Sep 17 00:00:00 2001 From: VincentMiras Date: Tue, 9 Dec 2025 17:22:05 +0100 Subject: [PATCH 3/5] Ajout test server sur terrainrgb --- .../02_getmap/alti/ok-png-terrainrgb-4559.bru | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 server/bruno/05_wms/02_getmap/alti/ok-png-terrainrgb-4559.bru diff --git a/server/bruno/05_wms/02_getmap/alti/ok-png-terrainrgb-4559.bru b/server/bruno/05_wms/02_getmap/alti/ok-png-terrainrgb-4559.bru new file mode 100644 index 0000000..73c882b --- /dev/null +++ b/server/bruno/05_wms/02_getmap/alti/ok-png-terrainrgb-4559.bru @@ -0,0 +1,16 @@ +meta { + name: OK (4559 + PNG + TERRAINRGB) + type: http + seq: 1 +} + +get { + url: {{endpoint}}/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=668251.7252410495421,1572821.529549255269,754186.4437197528314,1653562.564128074329&CRS=EPSG:4559&WIDTH=883&HEIGHT=831&LAYERS=alti&STYLES=terrainrgb&FORMAT=image/png + body: none + auth: none +} + +assert { + res.status: eq 200 + res.headers["content-type"]: eq image/png +} From 6a841b0bb6740fac2ca2da2b2a35cbb952160c90 Mon Sep 17 00:00:00 2001 From: VincentMiras Date: Mon, 5 Jan 2026 10:36:57 +0100 Subject: [PATCH 4/5] Ajout des styles terrainrgb valides et terrainrgb avec une palette invalide --- generation/inputs/mergeNtiff/terrainrgb.json | 2 +- .../mergeNtiff/terrainrgb_with_palette.json | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 generation/inputs/mergeNtiff/terrainrgb_with_palette.json diff --git a/generation/inputs/mergeNtiff/terrainrgb.json b/generation/inputs/mergeNtiff/terrainrgb.json index 530ec54..791ea74 100644 --- a/generation/inputs/mergeNtiff/terrainrgb.json +++ b/generation/inputs/mergeNtiff/terrainrgb.json @@ -1,6 +1,6 @@ { "identifier": "terrainrgb", - "title": "Aspect", + "title": "Terrain RGB", "abstract": "Calcul de l'altitude en Terrain RGB", "keywords": ["MNT"], "legend": { diff --git a/generation/inputs/mergeNtiff/terrainrgb_with_palette.json b/generation/inputs/mergeNtiff/terrainrgb_with_palette.json new file mode 100644 index 0000000..e711e58 --- /dev/null +++ b/generation/inputs/mergeNtiff/terrainrgb_with_palette.json @@ -0,0 +1,36 @@ +{ + "identifier": "terrainrgb", + "title": "Terrain RGB", + "abstract": "Calcul de l'altitude en Terrain RGB", + "keywords": ["MNT"], + "legend": { + "format": "image/png", + "url": "http://ign.fr", + "height": 100, + "width": 100, + "min_scale_denominator": 0, + "max_scale_denominator": 30 + }, + "terrainrgb": { + "min_elevation": -10000, + "step": 0.1 + }, + "palette": { + "no_alpha": false, + "rgb_continuous": true, + "alpha_continuous": true, + "colours": [ + { "value": 0, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, + { "value": 29, "red": 255, "green": 255, "blue": 255, "alpha": 0 }, + { "value": 30, "red": 242, "green": 229, "blue": 0, "alpha": 255 }, + { "value": 34, "red": 242, "green": 229, "blue": 0, "alpha": 255 }, + { "value": 35, "red": 243, "green": 148, "blue": 25, "alpha": 255 }, + { "value": 39, "red": 243, "green": 148, "blue": 25, "alpha": 255 }, + { "value": 40, "red": 225, "green": 0, "blue": 0, "alpha": 255 }, + { "value": 44, "red": 225, "green": 0, "blue": 0, "alpha": 255 }, + { "value": 45, "red": 200, "green": 137, "blue": 187, "alpha": 255 }, + { "value": 90, "red": 200, "green": 137, "blue": 187, "alpha": 255 }, + { "value": 91, "red": 255, "green": 255, "blue": 255, "alpha": 0 } + ] + } +} From 4776d52ff45a3c5d27f1ff9907470f4a4d5780ef Mon Sep 17 00:00:00 2001 From: VincentMiras Date: Mon, 5 Jan 2026 10:44:21 +0100 Subject: [PATCH 5/5] Ajout de tests bats --- generation/suite/mergeNtiff.bats | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/generation/suite/mergeNtiff.bats b/generation/suite/mergeNtiff.bats index dac3ceb..699fcfb 100644 --- a/generation/suite/mergeNtiff.bats +++ b/generation/suite/mergeNtiff.bats @@ -64,6 +64,11 @@ setup_file() { run -0 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/terrainrgb.json -c zip -i lanczos -n -255,0,0,100 } +@test "Fail because of terrainrgb and palette not compatibles " { + bats_require_minimum_version 1.5.0 + run -255 mergeNtiff -f ../inputs/mergeNtiff/conf_style.txt -p ../inputs/mergeNtiff/terrainrgb_with_palette.json -c zip -i lanczos -n -255,0,0,100 +} + teardown_file() { rm -f /tmp/test_ok_style.tif rm -f /tmp/test_ok_mask_i.tif