Hi all,
could maybe someone explain me the following error message, which I get from a script to calculate differences/intersections of given annotations:
ERROR: TopologyException at line 128: found non-noded intersection between LINESTRING ( 24357.0 13689.0, 24321.334462364495 13653.334462364497 ) and LINESTRING ( 24317.0 13649.0, 24321.334462364495 13653.334462364497 ) [ (24321.334462364495, 13653.334462364497, NaN) ]
ERROR: org.locationtech.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:140)
org.locationtech.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:81)
org.locationtech.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:46)
org.locationtech.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:231)
org.locationtech.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:183)
org.locationtech.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:86)
org.locationtech.jts.operation.overlay.snap.SnapIfNeededOverlayOp.getResultGeometry(SnapIfNeededOverlayOp.java:75)
org.locationtech.jts.operation.overlay.snap.SnapIfNeededOverlayOp.overlayOp(SnapIfNeededOverlayOp.java:37)
org.locationtech.jts.geom.Geometry.difference(Geometry.java:1416)
org.locationtech.jts.geom.Geometry$difference.call(Unknown Source)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
Script1.run(Script1.groovy:129)
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155)
qupath.lib.gui.scripting.DefaultScriptEditor.executeScript(DefaultScriptEditor.java:926)
qupath.lib.gui.scripting.DefaultScriptEditor.executeScript(DefaultScriptEditor.java:859)
qupath.lib.gui.scripting.DefaultScriptEditor.executeScript(DefaultScriptEditor.java:782)
qupath.lib.gui.scripting.DefaultScriptEditor$2.run(DefaultScriptEditor.java:1271)
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
java.base/java.util.concurrent.FutureTask.run(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base/java.lang.Thread.run(Unknown Source)
It seems to be caused by this line of code:
Geometry tumorMarginGeometry2= tumorMarginGeometry.difference(tissueGeometry)
Actually the script generally works for most of the files with ROIs I tested, but reproducibly fails on some ROIs, however I do not see an obvious reason why the operation should not work.
Cheers,
Peter