Thanks for the great feedback Evan. Raster support in the
GeoTools/GeoServer geopackage driver was done with much less certainty than
the vector stuff. I am not even 100% sure it is compliant with the latest
spec as it was implemented before the spec got to final 1.0. Going to wade
through this list and start filing bug reports in our JIRA.

On Wed, Dec 10, 2014 at 2:41 PM, Even Rouault <even.roua...@spatialys.com>
wrote:

> Hi,
>
> I've recently added read/write support in GDAL for GeoPackage rasters and
> did
> try it a bit with the GeoPackage plugin of GeoServer.
>
> I found several issues in the GeoServer plugin:
>
> - it refuses to add some geopackages as raster datasources. For example
> http://download.osgeo.org/gdal/data/geopackage/utm_jpeg_one_band.gpkg or
>
> http://download.osgeo.org/gdal/data/geopackage/small_world_googlemapscompatible.gpkg
> .
> An exception is generated when trying to publish the datasource ( see (1)
> at
> bottom of this email). After a bit of trying, it seems that the issue is
> encountered when the SRS of the GeoPackage is not EPSG:4326 as I could
> import
> all my GeoPackage datasets with SRS=EPSG:4326 and none in other SRS.
>
> - when previewing the
> http://download.osgeo.org/gdal/data/geopackage/small_world_png.gpkg in the
> OpenLayers previewer, I get strange artifacts on the tile of the eastern
> hemisphere that go beyon longitude +180 (the actual data stops at longitude
> +180 but the extent of the tile goes beyond with padding).
>
> - a bit similar issue with
>
> http://download.osgeo.org/gdal/data/geopackage/small_world_googlecrs84quad.gpkg
> ,
> still using OpenLayers previewer, only northern hemisphere can be
> displayed.
> This is likely due to the WMTS googlecrs84quad tiling scheme used where the
> extent of latitudes at zoom level 0 is [-180,180].
>
> - when downloading that layer with format=geopackage in WMS, with
>
> http://localhost:8080/geoserver/test/wms?service=WMS&version=1.1.0&request=GetMap&layers=test:small_world_png&styles=&bbox=-180.0,-90.0,180.0,90.0&width=660&height=330&srs=EPSG:4326&format=geopackage
> I found the following issues:
>    * typo in the gpkg_metadata table. The column "md_standard_uri"
> mandated by
> the specification (see http://www.geopackage.org/spec/#_metadata_table) is
> labelled "metadata_standard_URI" in the geopackage generated by GeoServer.
> In
> the changelog of the specification, one can see :
> "2013-11-21 R10 Paul Daisey Annex C, G Change metadata_standard_uri column
> name to md_standard_uri"
>    * more annoying: it seems that GeoServer uses the bottom left corner of
> the
> tiling scheme as the origin for tile_row numbering, instead of the top left
> corner.
>    * not really an issue, but generated that output file is extremely slow,
> like 30 seconds, and lot of noise done by harddisk ;-)
>
> * actually when trying to display
>
> http://download.osgeo.org/gdal/data/geopackage/small_world_googlecrs84quad_bigger.gpkg
> with OpenLayers previewer, I get also the issue with the inverted tile_row
> numbering. So the issue seems to exist on both reading and writing side.
>
> Best regards,
>
> Even
>
>
> (1) :
> java.lang.RuntimeException: Error occurred while building the resources for
> the configuration page at
>
> org.geoserver.web.data.layer.NewLayerPage.buildLayerInfo(NewLayerPage.java:330)
> at
> org.geoserver.web.data.layer.NewLayerPage$7.onClick(NewLayerPage.java:261)
> at
> org.geoserver.web.wicket.SimpleAjaxLink$1.onClick(SimpleAjaxLink.java:46)
> at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:68)
> at
>
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:177)
> at
>
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:300)
> at
>
> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:119)
> at
>
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
> at
>
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
> 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:707) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 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:923)
> at
>
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
> at
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
> at
>
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
> at
>
> org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at
>
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
> at
> org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
> at
>
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
> at
>
> org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at
>
> org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
> at
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
> at
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
> at
>
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
> at
>
> org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
> at
>
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
> at
>
> org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:116)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
> at
>
> org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
> at
>
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
> at
>
> org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
> at
>
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
> at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
> at
>
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
> at
>
> org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:135)
> at
>
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
> at
>
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:76) at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42) at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at
>
> org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at
>
> org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
> at
>
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at
>
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
> at
>
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at
> org.mortbay.jetty.Server.handle(Server.java:324) at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at
>
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) at
> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at
> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at
>
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
> at
>
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> Caused by: java.lang.IllegalArgumentException: L'enveloppe doit avoir au
> moins
> deux dimensions et ne pas ĂȘtre vide. at
> org.geotools.coverage.grid.GridCoverage2D.<init>(GridCoverage2D.java:280)
> at
>
> org.geotools.coverage.grid.GridCoverageFactory.create(GridCoverageFactory.java:592)
> at
>
> org.geotools.coverage.grid.GridCoverageFactory.create(GridCoverageFactory.java:516)
> at
>
> org.geotools.coverage.grid.GridCoverageFactory.create(GridCoverageFactory.java:457)
> at
> org.geotools.geopkg.mosaic.GeoPackageReader.read(GeoPackageReader.java:257)
> at
>
> org.geoserver.catalog.CoverageDimensionCustomizerReader.read(CoverageDimensionCustomizerReader.java:227)
> at
>
> org.geoserver.catalog.SingleGridCoverage2DReader.read(SingleGridCoverage2DReader.java:141)
> at
> org.geoserver.catalog.CatalogBuilder.buildCoverage(CatalogBuilder.java:968)
> at
> org.geoserver.catalog.CatalogBuilder.buildCoverage(CatalogBuilder.java:856)
> at
>
> org.geoserver.web.data.layer.NewLayerPage.buildLayerInfo(NewLayerPage.java:320)
> ... 97 more
>
>
>
> --
> Spatialys - Geospatial professional services
> http://www.spatialys.com
>
>
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
>
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
> _______________________________________________
> Geoserver-devel mailing list
> Geoserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
>



-- 
Justin Deoliveira
VP Engineering | Boundless <http://boundlessgeo.com/>
jdeol...@boundlessgeo.com
@boundlessgeo <http://twitter.com/boundlessgeo/>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to