It appears that the WMS render engine has a problem with "short" lines (or
"sort" lines in multi-line objects) that cause it to crash on the 2.0.1
general release version for lat-lon coordinate sets.
My assumption is that somewhere a Java float instead of double to track
co-ordinate values, and in lat/lon space co-ordinate values round down to
the same value and cause the crash. This assumption is based on my filtering
line items based on length from Oracle Spatial which are used to feed a WMS
session.
Where this first raised it's head was with a Google tile cache (GWC) pulling
WMS from Geoserver. I noticed that if the same data was rendered for via WMS
for a 256x256 tile it would work at certain lengths (around 3M). Then when
GWC pulled the same area, I needed to bump that up. Then I asked WMS to
render a 1024x1024 (4x4) map and found that I needed to change the minimum
length to about 13M. So size of the map image also influences the minimum
length of the line required before a crash occurs.
So for now I have to have only allow simple lines (singles not multi) and
only lines longer than 13 Meters for WMS rendering. Of course this means I
am missing a fair number of these shorter objects altogether.
Is this currently a known bug?
Thanks in advance,
Bryan
--
View this message in context: http://old.nabble.com/WMS-Render-bug-for-lat-lon-short-lines-tp27773110p27773110.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.
Here is the stack trace from the logs:
2010-03-03 16:22:07,825 ERROR [geotools.rendering] -
java.lang.ArrayIndexOutOfBoundsException
2010-03-03 16:22:07,825 ERROR [geoserver.ows] -
org.vfny.geoserver.wms.WmsException: org.vfny.geoserver.wms.WmsException:
Rendering process failed
at
org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:442)
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:233)
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:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at
com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at
com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)
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
com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:17)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73)
at
com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:17)
at
org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:183)
at
com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:17)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41)
at
com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:619)
at
com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:368)
at
com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866)
at
com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448)
at
com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:216)
at
com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)
at
com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)
at
oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
at
com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Unknown Source)
Caused by: org.vfny.geoserver.wms.WmsException: Rendering process failed
at
org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:412)
at
org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:421)
... 44 more
Caused by: java.lang.Exception: Error rendering feature
at
org.geotools.renderer.lite.StreamingRenderer.drawOptimized(StreamingRenderer.java:1862)
at
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1770)
at
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:690)
at
org.geotools.renderer.shape.ShapefileRenderer.renderWithStreamingRenderer(ShapefileRenderer.java:1518)
at
org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1366)
at
org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:269)
at
org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:388)
... 45 more
Caused by: java.lang.ArrayIndexOutOfBoundsException
--
View this message in context: http://old.nabble.com/WMS-Render-bug-for-lat-lon-short-lines-tp27773110p27773112.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.
I found this with Google, looks like roughly the same issue (although here it
had to do with labels):
http://jira.codehaus.org/browse/GEOT-2633
An example coordinate set that causes problems would be:
-157.940306633969, 21.3415366074692, -157.940311501296, 21.3415269987382
(about 1.17M)
Any chance a nightly build of GS uses a newer GeoTools that might fix this?
Thanks in advance,
Bryan
--
View this message in context: http://old.nabble.com/WMS-Render-bug-for-lat-lon-short-lines-tp27773110p27773114.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.