On Mon, Apr 23, 2012 at 11:49 PM, Shane StClair <[email protected]>wrote:

> Hello GT-Devs,
>
> We're working with some map tiles in EPSG:3572 and running into a problem.
> EPSG:3572 centers on the north pole and is only valid for latitudes 45 -
> 90. When zoomed in the tiles render fine, but when zoomed out far enough
> (past 45 lat) the request breaks with this stack trace:
>
> 2012-04-23 14:55:35,369 ERROR [geotools.rendering] - Points of LinearRing
> do not form a closed linestring
> java.lang.IllegalArgumentException: Points of LinearRing do not form a
> closed linestring
>     at
> com.vividsolutions.jts.geom.LinearRing.validateConstruction(LinearRing.java:111)
>     at com.vividsolutions.jts.geom.LinearRing.<init>(LinearRing.java:106)
>     at
> com.vividsolutions.jts.geom.GeometryFactory.createLinearRing(GeometryFactory.java:341)
>     at
> com.vividsolutions.jts.geom.GeometryFactory.createLinearRing(GeometryFactory.java:328)
>     at
> org.geotools.filter.BBoxExpressionImpl.setBounds(BBoxExpressionImpl.java:92)
>     at
> org.geotools.filter.BBoxExpressionImpl.<init>(BBoxExpressionImpl.java:67)
>     at
> org.geotools.filter.FilterFactoryImpl.createBBoxExpression(FilterFactoryImpl.java:853)
>     at
> org.geotools.filter.FilterFactoryImpl.bbox(FilterFactoryImpl.java:438)
>     at
> org.geotools.filter.FilterFactoryImpl.bbox(FilterFactoryImpl.java:424)
>     at
> org.geotools.filter.visitor.DuplicatingFilterVisitor.visit(DuplicatingFilterVisitor.java:241)
>     at org.geotools.renderer.lite.FastBBOX.accept(FastBBOX.java:122)
>     at
> org.geotools.renderer.lite.StreamingRenderer.getLayerQuery(StreamingRenderer.java:1118)
>     at
> org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1958)
>     at
> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:804)
>     at
> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:620)
>     at
> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:569)
>     at
> org.geoserver.web.crs.CRSAreaOfValidityMapBuilder.createMapFor(CRSAreaOfValidityMapBuilder.java:225)
>     at
> org.geoserver.web.crs.CRSAreaOfValidityMapBuilder.createMapFor(CRSAreaOfValidityMapBuilder.java:193)
>     at
> org.geoserver.web.crs.DynamicCrsMapResource.getResourceStream(DynamicCrsMapResource.java:58)
>     at org.apache.wicket.Resource.init(Resource.java:213)
>     at org.apache.wicket.Resource.onResourceRequested(Resource.java:117)
>     at
> org.apache.wicket.markup.html.image.resource.LocalizedImageResource.onResourceRequested(LocalizedImageResource.java:198)
>     at
> org.apache.wicket.markup.html.image.Image.onResourceRequested(Image.java:148)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.wicket.request.target.resource.ComponentResourceRequestTarget.respond(ComponentResourceRequestTarget.java:69)
>     at
> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
>     at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1258)
>     at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
>     at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436)
>     at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
>     at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:484)
>     at
> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     at
> org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:159)
>     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:790)
>     at
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
>     at
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
>     at
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:23)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)
>     at
> org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
>     at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
>     at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:112)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>     at
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
>     at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
>     at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:71)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:182)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:46)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>     at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>     at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>     at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
>     at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
>     at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>     at java.lang.Thread.run(Thread.java:662)
>
> See this GeoServer url for an example (zoom out):
>
>
> http://localhost:8080/geoserver/web/?wicket:bookmarkablePage=:org.geoserver.web.demo.SRSDescriptionPage&code=EPSG:3572
>
> Any ideas?


The "advanced projection handling" subsystem should take care of reducing
the queried bbox in a projectable
area, in order to do so it needs a
Today we have implementations dealing with Mercator, Transverse Mercator
and Polar Stereographic, you'll
need to code one for Lambert Azimutal.
See the org.geotools.renderer.crs package, ProjectionHandlerFactory and
ProjectionHandler, and how they
are registered in ProjectionHandlerFinder (yeah, been lazy and did not roll
out a SPI for this one, one day
we should do that).

Cheers
Andrea

-- 
-------------------------------------------------------
Ing. Andrea Aime
GeoSolutions S.A.S.
Tech lead

Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584 962313
fax:      +39 0584 962313
mob:    +39 339 8844549

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.youtube.com/user/GeoSolutionsIT
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-------------------------------------------------------
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
GeoTools-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to