Hi guys

I am working on a POC using Geoserver.

I have several COGs (cloud optimized Geotiff) stored on azure blob storage
and accessible via HTTP.

I want to render them in a mosaic store in Geoserver with time granule
configured.

I already did some steps, but I failed to achieve what I wanted.
So I will describe what I did so far, but if there is a different way to
achieve my goal that I missed, I will be more than happy to do so.

I am using geoserver 2.15  and GDAL 2.4

1. I installed the imageI/O-ext
2. I created a VRT file refering for each Geotiff in azure using /vsicurl/
2. I configured the mosaic plugin using these VRT files
3. Each of the vrt files has also mask band

The outcome of this was, that I could render the mosaic, but the mask is
not being respected.

Just for tests, I replaced the VRT file with the GeoTiff it is referring to
(downloaded to geoserver storage), and I could see the mask is being
respected. So maybe imageI/O-ext doesn't respect the mask band of a VRT?

Since it didn't work I tried to use the footprint configuration, I followed
the instructions of footprint and added a file name with the suffix wkt to
each of the vrt files.

The outcome of this was NullPointerException when rendering the tiles (WMS)

Can somone help me understand on which scenario footprint might return
NullPointerExceptions?

Thank, Guy

following is the stacktrace:
geoserver_1  | 11-Jun-2019 05:57:35.206 INFO [http-nio-8080-exec-4]
org.geoserver.GeoserverInitStartupListener$1.errorOccurred Problem occurs
when computing a tile by the owner.
geoserver_1  |  java.lang.NullPointerException
geoserver_1  | at javax.media.jai.PlanarImage.getData(PlanarImage.java:2110)
geoserver_1  | at
it.geosolutions.jaiext.scale.ScaleOpImage.computeTile(ScaleOpImage.java:1499)
geoserver_1  | at
com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
geoserver_1  | at javax.media.jai.OpImage.getTile(OpImage.java:1129)
geoserver_1  | at
javax.media.jai.PointOpImage.computeTile(PointOpImage.java:962)
geoserver_1  | at
com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
geoserver_1  | at javax.media.jai.OpImage.getTile(OpImage.java:1129)
geoserver_1  | at
it.geosolutions.jaiext.stats.SimpleStatsOpImage.computeTile(SimpleStatsOpImage.java:95)
geoserver_1  | at
com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
geoserver_1  | at javax.media.jai.OpImage.getTile(OpImage.java:1129)
geoserver_1  | at
javax.media.jai.PointOpImage.computeTile(PointOpImage.java:962)
geoserver_1  | at
com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
geoserver_1  | at javax.media.jai.OpImage.getTile(OpImage.java:1129)
geoserver_1  | at
javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343)
geoserver_1  | at
javax.media.jai.PlanarImage.copyExtendedData(PlanarImage.java:2398)
geoserver_1  | at
javax.media.jai.PlanarImage.getExtendedData(PlanarImage.java:2459)
geoserver_1  | at
it.geosolutions.jaiext.mosaic.MosaicOpImage.computeTile(MosaicOpImage.java:834)
geoserver_1  | at
com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
geoserver_1  | at javax.media.jai.OpImage.getTile(OpImage.java:1129)
geoserver_1  | at
it.geosolutions.jaiext.bandselect.BandSelectOpImage.computeTile(BandSelectOpImage.java:127)
geoserver_1  | at
it.geosolutions.jaiext.bandselect.BandSelectOpImage.getTile(BandSelectOpImage.java:156)
geoserver_1  | at javax.media.jai.RenderedOp.getTile(RenderedOp.java:2257)
geoserver_1  | at
com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:401)
geoserver_1  | at
com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:363)
geoserver_1  | at
org.geotools.image.ImageWorker.writeJPEG(ImageWorker.java:4002)
geoserver_1  | at
org.geoserver.wms.map.JPEGMapResponse.formatImageOutputStream(JPEGMapResponse.java:69)
geoserver_1  | at
org.geoserver.map.turbojpeg.TurboJPEGMapResponse.formatImageOutputStream(TurboJPEGMapResponse.java:88)
geoserver_1  | at
org.geoserver.wms.map.RenderedImageMapResponse.write(RenderedImageMapResponse.java:112)
geoserver_1  | at
org.geoserver.ows.Dispatcher.response(Dispatcher.java:1029)
geoserver_1  | at
org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:268)
geoserver_1  | at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177)
geoserver_1  | at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52)
geoserver_1  | at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
geoserver_1  | at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
geoserver_1  | at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)
geoserver_1  | at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:890)
geoserver_1  | at
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
geoserver_1  | at
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)
geoserver_1  | at
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:26)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:69)
geoserver_1  | at
org.geoserver.flow.controller.IpBlacklistFilter.doFilter(IpBlacklistFilter.java:89)
geoserver_1  | at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:66)
geoserver_1  | at
org.geoserver.flow.ControlFlowCallback.doFilter(ControlFlowCallback.java:260)
geoserver_1  | at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:66)
geoserver_1  | at
org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:73)
geoserver_1  | at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:66)
geoserver_1  | at
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:41)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:37)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70)
geoserver_1  | at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
geoserver_1  | at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70)
geoserver_1  | at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
geoserver_1  | at
org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:51)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70)
geoserver_1  | at
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:215)
geoserver_1  | at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
geoserver_1  | at
org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:81)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70)
geoserver_1  | at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
geoserver_1  | at
org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74)
geoserver_1  | at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
geoserver_1  | at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
geoserver_1  | at
org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:142)
geoserver_1  | at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
geoserver_1  | at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:90)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:79)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:46)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:42)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
geoserver_1  | at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
geoserver_1  | at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
geoserver_1  | at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
geoserver_1  | at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
geoserver_1  | at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
geoserver_1  | at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
geoserver_1  | at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
geoserver_1  | at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
geoserver_1  | at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
geoserver_1  | at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
geoserver_1  | at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)
geoserver_1  | at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
geoserver_1  | at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
geoserver_1  | at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
geoserver_1  | at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
geoserver_1  | at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
geoserver_1  | at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
geoserver_1  | at java.lang.Thread.run(Thread.java:748)
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to