From 8cf060306b6f5a7195bfee8e48af5726ca04d1ec Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Fri, 22 Jan 2021 16:39:58 +0100 Subject: [PATCH 1/4] add failing test --- .../heigit/ohsome/oshdb/filter/ApplyOSMGeometryTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMGeometryTest.java b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMGeometryTest.java index 0a40f6e3c..9bab4cb1f 100644 --- a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMGeometryTest.java +++ b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMGeometryTest.java @@ -53,6 +53,14 @@ public void testGeometryTypeFilterOther() { assertFalse(expression.applyOSMGeometry(validRelation, gf.createMultiPoint())); assertFalse(expression.applyOSMGeometry(validRelation, gf.createMultiLineString())); assertFalse(expression.applyOSMGeometry(validRelation, gf.createMultiPolygon())); + + // also ways can result in GeometryCollections after a clipping operation! + OSMEntity validWay = createTestOSMEntityWay(new long[]{1, 2, 3, 4, 1}); + assertTrue(expression.applyOSMGeometry(validWay, gf.createGeometryCollection())); + assertFalse(expression.applyOSMGeometry(validWay, gf.createPolygon())); + assertFalse(expression.applyOSMGeometry(validWay, gf.createMultiPoint())); + assertFalse(expression.applyOSMGeometry(validWay, gf.createMultiLineString())); + assertFalse(expression.applyOSMGeometry(validWay, gf.createMultiPolygon())); } @Test From 8e73e779b68b95ae1f012d89e2c1f718a54add29 Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Fri, 22 Jan 2021 19:47:27 +0100 Subject: [PATCH 2/4] also consider WAYs when checking geometry:other filter --- .../org/heigit/ohsome/oshdb/filter/GeometryTypeFilter.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/oshdb-filter/src/main/java/org/heigit/ohsome/oshdb/filter/GeometryTypeFilter.java b/oshdb-filter/src/main/java/org/heigit/ohsome/oshdb/filter/GeometryTypeFilter.java index cd19e605d..a62719246 100644 --- a/oshdb-filter/src/main/java/org/heigit/ohsome/oshdb/filter/GeometryTypeFilter.java +++ b/oshdb-filter/src/main/java/org/heigit/ohsome/oshdb/filter/GeometryTypeFilter.java @@ -87,10 +87,9 @@ public Set getOSMTypes() { case LINE: return EnumSet.of(OSMType.WAY); case POLYGON: - return POLYGON_TYPES; case OTHER: default: - return EnumSet.of(OSMType.RELATION); + return POLYGON_TYPES; } } @@ -102,10 +101,9 @@ private boolean checkOSMType(OSMType osmType) { case LINE: return osmType == OSMType.WAY; case POLYGON: - return POLYGON_TYPES.contains(osmType); case OTHER: default: - return osmType == OSMType.RELATION; + return POLYGON_TYPES.contains(osmType); } } From de722dfe78fd3066f64da1c9586ccc550b683807 Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Mon, 25 Jan 2021 14:18:01 +0100 Subject: [PATCH 3/4] adjust other tests as well --- .../java/org/heigit/ohsome/oshdb/filter/ApplyOSHTest.java | 6 +++--- .../java/org/heigit/ohsome/oshdb/filter/ApplyOSMTest.java | 2 +- .../test/java/org/heigit/ohsome/oshdb/filter/ParseTest.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSHTest.java b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSHTest.java index 805af4160..537e3ece8 100644 --- a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSHTest.java +++ b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSHTest.java @@ -301,12 +301,12 @@ public void testGeometryTypeFilterPolygon() throws IOException { @Test public void testGeometryTypeFilterOther() throws IOException { FilterExpression expression = parser.parse("geometry:other"); - assertFalse(expression.applyOSH(createTestOSHEntityWay( - createTestOSMEntityWay(new long[] {}) - ))); assertFalse(expression.applyOSH(createTestOSHEntityNode( createTestOSMEntityNode() ))); + assertTrue(expression.applyOSH(createTestOSHEntityWay( + createTestOSMEntityWay(new long[] {}) + ))); assertTrue(expression.applyOSH(createTestOSHEntityRelation( createTestOSMEntityRelation() ))); diff --git a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMTest.java b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMTest.java index 65e945723..871f7f887 100644 --- a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMTest.java +++ b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ApplyOSMTest.java @@ -178,8 +178,8 @@ public void testGeometryTypeFilterPolygon() { @Test public void testGeometryTypeFilterOther() { FilterExpression expression = parser.parse("geometry:other"); - assertFalse(expression.applyOSM(createTestOSMEntityWay(new long[] {}))); assertFalse(expression.applyOSM(createTestOSMEntityNode())); + assertTrue(expression.applyOSM(createTestOSMEntityWay(new long[] {}))); assertTrue(expression.applyOSM(createTestOSMEntityRelation())); } diff --git a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ParseTest.java b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ParseTest.java index ff46bbaf7..08a703786 100644 --- a/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ParseTest.java +++ b/oshdb-filter/src/test/java/org/heigit/ohsome/oshdb/filter/ParseTest.java @@ -252,7 +252,7 @@ public void testGeometryTypeFilterOther() { assertTrue(expression instanceof GeometryTypeFilter); assertEquals(GeometryType.OTHER, ((GeometryTypeFilter) expression).getGeometryType()); assertEquals( - Collections.singleton(OSMType.RELATION), + EnumSet.of(OSMType.WAY, OSMType.RELATION), ((GeometryTypeFilter) expression).getOSMTypes() ); assertEquals("geometry:other", expression.toString()); From fb1807986605a9ad8a12c7f4c549731a81e74ddf Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Fri, 29 Jan 2021 18:31:09 +0100 Subject: [PATCH 4/4] add to changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d3a99db3..b4f41cf4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,11 +19,14 @@ import org.heigit.ohsome.oshdb.api.db.OSHDBH2; ### bugfixes +* when filtering for `geometry:other`: also consider GeometryCollections occuring as a side effect of clipping ([#338]) + ### upgrading from 0.6 * If you already used the “ohsome filter” functionality from OSHDB version 0.6 and imported one or more classes from the ohsome filter module, you would need to adjust the package names from `org.heigit.ohsome.filter` to `org.heigit.ohsome.oshdb.filter`. [#306]: https://github.com/GIScience/oshdb/pull/306 +[#338]: https://github.com/GIScience/oshdb/issues/338 ## 0.6.3