Skip to content

TopologyExceptions during calculateResidentialAreaWeightedRangeCoverage() while computing spatial overlap #1

@cDanowski

Description

@cDanowski

Description:
For some (mostly small-scale) spatial unit geometries, the computation of calculateResidentialAreaWeightedRangeCoverage() runs into different TopologyExceptions.

Steps to Reproduce

  1. For instance log into https://kommonitor.fbg-hsbo.de/#!/ with an account that has rights to access any indicator for the spatial unit Wohnviertelebene .
  2. go to reachability scenario and create new scenario
  3. select POI dataset Jugendhäuser und Beratungsstellen and compute 10 minute foot-walking isochrones.
  4. go to indicator statictics and select any indicator that supports the spatial unit Wohnviertelebene (i.e. Bevölkerung 0 bis unter 18 Jahre)
  5. as computation method select überlappende Wohngebiete
  6. the process takes a while and aborts.

Expected Behaviour
The process should not run into an error, but return the indicator statistics computation results.

Additional Information
I already tested the spatial data processor with different settings for the parameter kommonitor.processor.simplify-spatial-unit-geometries
Depending on it's value, different Topology-Exceptions occur:

  • kommonitor.processor.simplify-spatial-unit-geometries=weak
    org.locationtech.jts.geom.TopologyException: no outgoing dirEdge found [ (6.931231379784173, 51.48619619810057, NaN) ] at org.locationtech.jts.geomgraph.DirectedEdgeStar.linkResultDirectedEdges(DirectedEdgeStar.java:225) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geomgraph.PlanarGraph.linkResultDirectedEdges(PlanarGraph.java:61) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.PolygonBuilder.add(PolygonBuilder.java:66) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.PolygonBuilder.add(PolygonBuilder.java:56) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:248) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:181) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:84) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.snap.SnapIfNeededOverlayOp.getResultGeometry(SnapIfNeededOverlayOp.java:75) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.snap.SnapIfNeededOverlayOp.overlayOp(SnapIfNeededOverlayOp.java:37) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geom.GeometryOverlay.overlay(GeometryOverlay.java:76) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geom.GeometryOverlay.intersection(GeometryOverlay.java:119) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geom.Geometry.intersection(Geometry.java:1330) ~[jts-core-1.19.0.jar!/:na] at org.n52.kommonitor.spatialdataprocessor.operations.SpatialOperationUtils.polygonalIntersection(SpatialOperationUtils.java:59) ~[classes!/:1.0.4] at org.n52.kommonitor.spatialdataprocessor.process.IsochronePruneProcess.calculateResidentialAreaWeightedRangeCoverage(IsochronePruneProcess.java:299) ~[classes!/:1.0.4]
  • kommonitor.processor.simplify-spatial-unit-geometries=medium or kommonitor.processor.simplify-spatial-unit-geometries=strong or kommonitor.processor.simplify-spatial-unit-geometries=original
    org.locationtech.jts.geom.TopologyException: found non-noded intersection between LINESTRING ( 6.995236134231634 51.438880742907706, 6.99528064051668 51.438834767094455 ) and LINESTRING ( 6.9954162 51.43887205, 6.995280640516679 51.438834767094455 ) [ (6.99528064051668, 51.438834767094455, NaN) ] at org.locationtech.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:139) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:80) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:45) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:229) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:181) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:84) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.snap.SnapIfNeededOverlayOp.getResultGeometry(SnapIfNeededOverlayOp.java:75) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.operation.overlay.snap.SnapIfNeededOverlayOp.overlayOp(SnapIfNeededOverlayOp.java:37) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geom.GeometryOverlay.overlay(GeometryOverlay.java:76) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geom.GeometryOverlay.intersection(GeometryOverlay.java:119) ~[jts-core-1.19.0.jar!/:na] at org.locationtech.jts.geom.Geometry.intersection(Geometry.java:1330) ~[jts-core-1.19.0.jar!/:na] at org.n52.kommonitor.spatialdataprocessor.operations.SpatialOperationUtils.polygonalIntersection(SpatialOperationUtils.java:59) ~[classes!/:1.0.4] at org.n52.kommonitor.spatialdataprocessor.process.IsochronePruneProcess.calculateResidentialAreaWeightedRangeCoverage(IsochronePruneProcess.java:299) ~[classes!/:1.0.4]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions