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

Reply via email to