diff --git a/oshdb-util/src/main/java/org/heigit/ohsome/oshdb/util/geometry/fip/FastPolygonOperations.java b/oshdb-util/src/main/java/org/heigit/ohsome/oshdb/util/geometry/fip/FastPolygonOperations.java index 0d2a1bfb4..6e85a9929 100644 --- a/oshdb-util/src/main/java/org/heigit/ohsome/oshdb/util/geometry/fip/FastPolygonOperations.java +++ b/oshdb-util/src/main/java/org/heigit/ohsome/oshdb/util/geometry/fip/FastPolygonOperations.java @@ -34,6 +34,8 @@ public class FastPolygonOperations implements Serializable { private final double envWidth; private final double envHeight; + private final GeometryFactory gf = new GeometryFactory(); + /** * Constructor using a given geometry {@code geom} and geometry type {@code P}. * @@ -50,8 +52,6 @@ public

FastPolygonOperations(P geom) { envWidth = env.getMaxX() - env.getMinX(); envHeight = env.getMaxY() - env.getMinY(); - GeometryFactory gf = new GeometryFactory(); - Geometry[] result = new Geometry[numBands * numBands]; traverseQuads(bandIterations, 0, 0, env, geom, gf, result); @@ -184,10 +184,15 @@ public Geometry intersection(Geometry other) { } assert intersector != null; + Geometry result; if (other instanceof GeometryCollection) { - return other.intersection(intersector); + result = other.intersection(intersector); } else { - return intersector.intersection(other); + result = intersector.intersection(other); + } + if (result.getDimension() != other.getDimension()) { + return gf.createEmpty(other.getDimension()); } + return result; } }