GeoWebCache tiling failing due to topology exception

المشرف العام

Administrator
طاقم الإدارة
I am running GeoServer 2.8 WAR on an Ubuntu machine in Tomcat 7. I have GeoWebCache integrated directly and it does cache and serve some tiles. However, in some areas I get errors when I attempt to view the location or seed the cache. The relevant part of the log is as follows (which suggests a topology error):

2015-08-01 17:40:47,976 ERROR [geoserver.ows] - org.geoserver.platform.ServiceException: Rendering process failed at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:569) at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:260) at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:132) at org.geoserver.wms.GetMap.executeInternal(GetMap.java:504) at org.geoserver.wms.GetMap.run(GetMap.java:248) at org.geoserver.wms.GetMap.run(GetMap.java:119) at org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:320) at sun.reflect.GeneratedMethodAccessor282.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.geoserver.kml.WebMapServiceKmlInterceptor.invoke(WebMapServiceKmlInterceptor.java:34) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:62) at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:36) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:80) at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:55) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:55) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at com.sun.proxy.$Proxy58.getMap(Unknown Source) at sun.reflect.GeneratedMethodAccessor235.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:841) at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:275) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.geoserver.gwc.GWC.dispatchOwsRequest(GWC.java:1209) at org.geoserver.gwc.layer.GeoServerTileLayer.dispatchGetMap(GeoServerTileLayer.java:625) at org.geoserver.gwc.layer.GeoServerTileLayer.getMetatilingReponse(GeoServerTileLayer.java:569) at org.geoserver.gwc.layer.GeoServerTileLayer.seedTile(GeoServerTileLayer.java:764) at org.geowebcache.seed.SeedTask.doActionInternal(SeedTask.java:136) at org.geowebcache.seed.GWCTask.doAction(GWCTask.java:76) at org.geowebcache.seed.MTSeeder.call(MTSeeder.java:36) at org.geowebcache.seed.MTSeeder.call(MTSeeder.java:25) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)Caused by: com.vividsolutions.jts.geom.TopologyException: found non-noded intersection between LINESTRING ( -446792.34 6930399.07, -440903.77 6936464.74 ) and LINESTRING ( -437011.5849751517 6937523.641382978, -447860.88 6934195.51 ) [ (-441090.5017453493, 6936272.392257541, NaN) ] at com.vividsolutions.jts.noding.FastNodingValidator.checkValid(FastNodingValidator.java:130) 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.SnapIfNeededOverlayOp.getResultGeometry(SnapIfNeededOverlayOp.java:96) at com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp.overlayOp(SnapIfNeededOverlayOp.java:58) at com.vividsolutions.jts.geom.Geometry.difference(Geometry.java:1423) at org.geotools.filter.function.StaticGeometry.difference(StaticGeometry.java:313) at org.geotools.filter.function.FilterFunction_difference.evaluate(FilterFunction_difference.java:66) at org.geotools.filter.expression.ExpressionAbstract.evaluate(ExpressionAbstract.java:65) at org.geotools.renderer.lite.StreamingRenderer.findGeometry(StreamingRenderer.java:2797) at org.geotools.renderer.lite.StreamingRenderer.access$100(StreamingRenderer.java:178) at org.geotools.renderer.lite.StreamingRenderer$RenderableFeature.getShape(StreamingRenderer.java:3100) at org.geotools.renderer.lite.StreamingRenderer.processSymbolizers(StreamingRenderer.java:2679) at org.geotools.renderer.lite.StreamingRenderer.process(StreamingRenderer.java:2585) at org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2409) at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2113) at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:832) at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:539)However, when I investigate my data in PostGIS, ST_isValid and ST_IsValidReason, return no errors on the entire database. So, as far as PostGIS is concerned, all my data is valid. Furthermore, the non-noded intersection always seems to be on the same line, suggesting a self-intersection or self touching. When I identify the individual line using detective work from the coordinates (I am using a layer-group and sadly the logs don't tell me which dataset or give an id of which feature GWC thinks has the error). I re-check the specific feature in PostGIS and again, no error.

Can anybody suggest why GWC is upset if PostGIS can't see the error. Is this a known bug or something else? Suggestions of solutions to fix it would be welcome as ST_MakeValid is pointless if PosGIS thinks all the data are already valid.



أكثر...
 
أعلى