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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions