WMS Render bug for lat-lon short line segments
----------------------------------------------
Key: GEOS-3845
URL: http://jira.codehaus.org/browse/GEOS-3845
Project: GeoServer
Issue Type: Bug
Components: WMS
Affects Versions: 2.0.1
Environment: Windows 32
Reporter: Bryan Hall
Assignee: Andrea Aime
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.
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)
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
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel