[Geoserver-users] found non-noded intersection exception

Hi list,

on some maps drawn by Geoserver I get the exception below. Does this mean
there is something wrong with the dataset, or is it something else?

It seems be an intermittent issue, and it seems correlated with using an
SLD TextSymbolizer.

Issues painting 0.0
com.vividsolutions.jts.geom.TopologyException: found non-noded
intersection between LINESTRING ( 604.3733087459017 245.52854388786477,
605.2104559976848 246.24821747335238 ) and LINESTRING ( 605.6657491743495
245.94710324403866, 604.6964393657327 245.84431668456637 ) [
(604.7468430317355, 245.84966153857192, NaN) ]
        at
com.vividsolutions.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:109)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:94)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:59)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:170)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:127)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:66)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp.getResultGeometry(SnapOverlayOp.java:67)

Best regards,
Bart

Bart van den Eijnden (OSGIS) ha scritto:

Hi list,

on some maps drawn by Geoserver I get the exception below. Does this mean
there is something wrong with the dataset, or is it something else?

It seems be an intermittent issue, and it seems correlated with using an
SLD TextSymbolizer.

Issues painting 0.0
com.vividsolutions.jts.geom.TopologyException: found non-noded
intersection between LINESTRING ( 604.3733087459017 245.52854388786477,
605.2104559976848 246.24821747335238 ) and LINESTRING ( 605.6657491743495
245.94710324403866, 604.6964393657327 245.84431668456637 ) [
(604.7468430317355, 245.84966153857192, NaN) ]
        at
com.vividsolutions.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:109)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:94)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:59)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:170)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:127)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:66)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp.getResultGeometry(SnapOverlayOp.java:67)

It might be something else, like an over generalized line segment,
but I cannot tell as you cut away the interesting part of the stack
trace :slight_smile:

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Hi Andrea,

does this help?

Issues painting 4922.0
com.vividsolutions.jts.geom.TopologyException: found non-noded
intersection between LINESTRING ( 509.8879222841123 204.8982410224844,
510.0864720264334 206.19876435408617 ) and LINESTRING ( 510.0785014973054
206.47050169418088, 509.89154590052124 204.91398765583835 ) [
(509.8960452579986, 204.95144742274272, NaN) ]
        at
com.vividsolutions.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:109)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:94)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:59)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:170)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:127)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:66)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp.getResultGeometry(SnapOverlayOp.java:67)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp.overlayOp(SnapOverlayOp.java:24)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp.getResultGeometry(SnapIfNeededOverlayOp.java:76)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp.overlayOp(SnapIfNeededOverlayOp.java:25)
        at
com.vividsolutions.jts.geom.Geometry.intersection(Geometry.java:1150)
        at
org.geotools.renderer.label.LabelCacheImpl.paintPolygonLabel(LabelCacheImpl.java:1119)
        at
org.geotools.renderer.label.LabelCacheImpl.paintLabels(LabelCacheImpl.java:586)
        at
org.geotools.renderer.label.LabelCacheImpl.end(LabelCacheImpl.java:520)
        at
org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1451)
        at
org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:376)
        at
org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:426)
        at
org.geoserver.ows.adapters.ResponseAdapter.getMimeType(ResponseAdapter.java:48)
        at org.geoserver.ows.Dispatcher.response(Dispatcher.java:712)
        at
org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:234)
        at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
        at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
        at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
        at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
        at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
        at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
        at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
        at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
        at
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at
org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at
org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:183)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
        at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
        at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

Best regards,
Bart

Bart van den Eijnden (OSGIS) ha scritto:

Hi list,

on some maps drawn by Geoserver I get the exception below. Does this
mean
there is something wrong with the dataset, or is it something else?

It seems be an intermittent issue, and it seems correlated with using an
SLD TextSymbolizer.

Issues painting 0.0
com.vividsolutions.jts.geom.TopologyException: found non-noded
intersection between LINESTRING ( 604.3733087459017 245.52854388786477,
605.2104559976848 246.24821747335238 ) and LINESTRING (
605.6657491743495
245.94710324403866, 604.6964393657327 245.84431668456637 ) [
(604.7468430317355, 245.84966153857192, NaN) ]
        at
com.vividsolutions.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:109)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:94)
        at
com.vividsolutions.jts.geomgraph.EdgeNodingValidator.checkValid(EdgeNodingValidator.java:59)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.computeOverlay(OverlayOp.java:170)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.getResultGeometry(OverlayOp.java:127)
        at
com.vividsolutions.jts.operation.overlay.OverlayOp.overlayOp(OverlayOp.java:66)
        at
com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp.getResultGeometry(SnapOverlayOp.java:67)

It might be something else, like an over generalized line segment,
but I cannot tell as you cut away the interesting part of the stack
trace :slight_smile:

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Bart van den Eijnden (OSGIS) ha scritto:

Hi Andrea,

does this help?

Yep, as predicted it's happening in the labeling code.
You'll loose one label there, no big deal, it should appear back
as you zoom in and generalization stops being a problem.

On trunk we have a faster and much more lenient polygon clipper
that should not be affected by this problem anymore (if you want
to give it a try)... hum... the code was still not using it...
ok, just committed it. It will be in for tomorrow's nightly
build

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Hi Andrea,

but the strange thing is that it also interferes with the polygon drawing
itself, is this to be expected? The label SLD_BODY layer is a separate WMS
request, so how does it interfere with the source polygon layer?

So it's not just one label which I miss, I miss a lot of polygons as well :slight_smile:

I'll check out trunk in a few days.

Best regards,
Bart

Bart van den Eijnden (OSGIS) ha scritto:

Hi Andrea,

does this help?

Yep, as predicted it's happening in the labeling code.
You'll loose one label there, no big deal, it should appear back
as you zoom in and generalization stops being a problem.

On trunk we have a faster and much more lenient polygon clipper
that should not be affected by this problem anymore (if you want
to give it a try)... hum... the code was still not using it...
ok, just committed it. It will be in for tomorrow's nightly
build

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Bart van den Eijnden (OSGIS) ha scritto:

Hi Andrea,

but the strange thing is that it also interferes with the polygon drawing
itself, is this to be expected? The label SLD_BODY layer is a separate WMS
request, so how does it interfere with the source polygon layer?

So it's not just one label which I miss, I miss a lot of polygons as well :slight_smile:

That's another problem, polygon drawing is performed before label
drawing and should not be affected by topology issues unless the
problem is really in your data.
But the rendering should stop right away in that case

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Hi Andrea,

I've just run Oracle VALIDATE_LAYER and I get no errors (the datastore is
SDE with Oracle underlying, geometries in SDO_GEOMETRY).

Also, the polygons draw correctly when I don't use the label layer as well.

Best regards,
Bart

Bart van den Eijnden (OSGIS) ha scritto:

Hi Andrea,

but the strange thing is that it also interferes with the polygon
drawing
itself, is this to be expected? The label SLD_BODY layer is a separate
WMS
request, so how does it interfere with the source polygon layer?

So it's not just one label which I miss, I miss a lot of polygons as
well :slight_smile:

That's another problem, polygon drawing is performed before label
drawing and should not be affected by topology issues unless the
problem is really in your data.
But the rendering should stop right away in that case

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.