Skip to content

Commit a5ddce6

Browse files
authored
Merge pull request OSGeo#13427 from dbaston/fix_13425
gdal vector make-valid: avoid skipping 3d geometries
2 parents 48b8146 + 80b806e commit a5ddce6

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

apps/gdalalg_vector_make_valid.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ std::unique_ptr<OGRFeature> GDALVectorMakeValidAlgorithmLayer::TranslateFeature(
9494
{
9595
auto poGeom =
9696
std::unique_ptr<OGRGeometry>(poSrcFeature->StealGeometry(i));
97-
if (poGeom && poGeom->getCoordinateDimension() == 2 &&
98-
!poGeom->IsValid())
97+
if (poGeom && !poGeom->IsValid())
9998
{
10099
const bool bIsGeomCollection =
101100
wkbFlatten(poGeom->getGeometryType()) ==

autotest/utilities/test_gdalalg_vector_make_valid.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,3 +250,27 @@ def test_gdalalg_vector_make_valid_test_ogrsf(tmp_path):
250250
assert "INFO" in ret
251251
assert "ERROR" not in ret
252252
assert "FAILURE" not in ret
253+
254+
255+
def test_gdalalg_vector_make_valid_3d():
256+
257+
src_ds = gdal.GetDriverByName("MEM").CreateVector("")
258+
src_lyr = src_ds.CreateLayer("layer")
259+
260+
f = ogr.Feature(src_lyr.GetLayerDefn())
261+
f.SetGeometry(
262+
ogr.CreateGeometryFromWkt("POLYGON Z ((0 0 0,1 1 0,1 0 0,0 1 0,0 0 0))")
263+
)
264+
src_lyr.CreateFeature(f)
265+
266+
alg = get_alg()
267+
alg["input"] = src_ds
268+
alg["output"] = ""
269+
alg["output-format"] = "stream"
270+
271+
assert alg.Run()
272+
273+
out_ds = alg["output"].GetDataset()
274+
out_lyr = out_ds.GetLayer(0)
275+
out_f = out_lyr.GetNextFeature()
276+
assert out_f.GetGeometryRef().GetGeometryType() == ogr.wkbMultiPolygon25D

0 commit comments

Comments
 (0)