diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_geos.gml b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_geos.gml
new file mode 100644
index 00000000000..70d0ea51626
--- /dev/null
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_geos.gml
@@ -0,0 +1,16 @@
+
+
+ -5 03 8
+
+
+
+ -5 03 8
+ -5 0 -1 0 1 1 2 2 3 3 2 5 -1 8 -1 7 1 4 -5 0
+
+
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_03.xsd b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_geos.xsd
similarity index 91%
rename from python/plugins/processing/tests/testdata/expected/concave_hull_points_03.xsd
rename to python/plugins/processing/tests/testdata/expected/concave_hull_points_03_geos.xsd
index 754d43b6a49..d1c4e19f5cc 100644
--- a/python/plugins/processing/tests/testdata/expected/concave_hull_points_03.xsd
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_geos.xsd
@@ -34,8 +34,8 @@
-
-
+
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_03.gml b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_qgis.gml
similarity index 74%
rename from python/plugins/processing/tests/testdata/expected/concave_hull_points_03.gml
rename to python/plugins/processing/tests/testdata/expected/concave_hull_points_03_qgis.gml
index 4aca65ec5a6..483f2353a34 100644
--- a/python/plugins/processing/tests/testdata/expected/concave_hull_points_03.gml
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_qgis.gml
@@ -2,15 +2,15 @@
1 23 5
-
+
1 23 5
- 2 2 3 3 2 5 1 4 2 2
-
+ 2 2 3 3 2 5 1 4 2 2
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07.xsd b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_qgis.xsd
similarity index 91%
rename from python/plugins/processing/tests/testdata/expected/concave_hull_points_07.xsd
rename to python/plugins/processing/tests/testdata/expected/concave_hull_points_03_qgis.xsd
index 63cfb6bba92..037808e0bb9 100644
--- a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07.xsd
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_03_qgis.xsd
@@ -34,8 +34,8 @@
-
-
+
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_geos.gml b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_geos.gml
new file mode 100644
index 00000000000..868cb02e392
--- /dev/null
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_geos.gml
@@ -0,0 +1,16 @@
+
+
+ -5 03 8
+
+
+
+ -5 03 8
+ -5 0 -1 0 1 1 2 2 3 3 2 5 -1 8 -1 7 1 4 -5 0
+
+
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_geos.xsd b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_geos.xsd
new file mode 100644
index 00000000000..b94b03f2d93
--- /dev/null
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_geos.xsd
@@ -0,0 +1,47 @@
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07.gml b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_qgis.gml
similarity index 73%
rename from python/plugins/processing/tests/testdata/expected/concave_hull_points_07.gml
rename to python/plugins/processing/tests/testdata/expected/concave_hull_points_07_qgis.gml
index c660eb66978..6990a79a11b 100644
--- a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07.gml
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_qgis.gml
@@ -2,15 +2,15 @@
-1 03 8
-
+
-1 03 8
- 1 1 2 2 3 3 2 5 -1 8 -1 7 1 4 -1 0 1 1
-
+ 1 1 2 2 3 3 2 5 -1 8 -1 7 1 4 -1 0 1 1
+
diff --git a/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_qgis.xsd b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_qgis.xsd
new file mode 100644
index 00000000000..8e295bd3007
--- /dev/null
+++ b/python/plugins/processing/tests/testdata/expected/concave_hull_points_07_qgis.xsd
@@ -0,0 +1,47 @@
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python/plugins/processing/tests/testdata/qgis_algorithm_tests4.yaml b/python/plugins/processing/tests/testdata/qgis_algorithm_tests4.yaml
index 80551f05aa5..e7e3c0b48e7 100644
--- a/python/plugins/processing/tests/testdata/qgis_algorithm_tests4.yaml
+++ b/python/plugins/processing/tests/testdata/qgis_algorithm_tests4.yaml
@@ -268,37 +268,73 @@ tests:
cast: str
fid: skip
- # concave hull tests should be upddated when CI will be using GEOS>=3.11
- # current tests data were generated by Python implementation which produces
- # incorrect result by not including all input points in the concave hull
- # see https://github.com/qgis/QGIS/issues/54561
- #- algorithm: native:concavehull
- # name: Concave Hull - Points (0.3)
- # params:
- # ALPHA: 0.3
- # HOLES: true
- # INPUT:
- # name: points.gml
- # type: vector
- # NO_MULTIGEOMETRY: false
- # results:
- # OUTPUT:
- # name: expected/concave_hull_points_03.gml
- # type: vector
+ - algorithm: native:concavehull
+ name: Concave Hull - Points (0.3) (GEOS <= 3.10)
+ condition:
+ geos:
+ less_than: 31100
+ params:
+ ALPHA: 0.3
+ HOLES: true
+ INPUT:
+ name: points.gml
+ type: vector
+ NO_MULTIGEOMETRY: false
+ results:
+ OUTPUT:
+ name: expected/concave_hull_points_03_qgis.gml
+ type: vector
- #- algorithm: native:concavehull
- # name: Concave Hull - Points (0.7)
- # params:
- # ALPHA: 0.7
- # HOLES: true
- # INPUT:
- # name: points.gml
- # type: vector
- # NO_MULTIGEOMETRY: false
- # results:
- # OUTPUT:
- # name: expected/concave_hull_points_07.gml
- # type: vector
+ - algorithm: native:concavehull
+ name: Concave Hull - Points (0.7) (GEOS <= 3.10)
+ condition:
+ geos:
+ less_than: 31100
+ params:
+ ALPHA: 0.7
+ HOLES: true
+ INPUT:
+ name: points.gml
+ type: vector
+ NO_MULTIGEOMETRY: false
+ results:
+ OUTPUT:
+ name: expected/concave_hull_points_07_qgis.gml
+ type: vector
+
+ - algorithm: native:concavehull
+ name: Concave Hull - Points (0.3) (GEOS > 3.11)
+ condition:
+ geos:
+ at_least: 31100
+ params:
+ ALPHA: 0.3
+ HOLES: true
+ INPUT:
+ name: points.gml
+ type: vector
+ NO_MULTIGEOMETRY: false
+ results:
+ OUTPUT:
+ name: expected/concave_hull_points_03_geos.gml
+ type: vector
+
+ - algorithm: native:concavehull
+ name: Concave Hull - Points (0.7) (GEOS > 3.11)
+ condition:
+ geos:
+ at_least: 31100
+ params:
+ ALPHA: 0.7
+ HOLES: true
+ INPUT:
+ name: points.gml
+ type: vector
+ NO_MULTIGEOMETRY: false
+ results:
+ OUTPUT:
+ name: expected/concave_hull_points_07_geos.gml
+ type: vector
- algorithm: qgis:knearestconcavehull
name: K-nearest Neighbor Concave Hull - Points (k=7)