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