[Geoserver-users] ImageMosaic JDBC plugin fails with GeoServer 2.5.1 and PostGIS 2.1.3

Hi all,

I have followed all steps in the tutorial form here:

http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

When I try to add the store I got this error

Could not list layers for this store, an error occurred retrieving them: Failed to create reader from file:coverages/osm.postgis.xml and hints null

The errors found in the log are included in the attached text file.

Environment is Tomcat 7, Oracle JRE 6, GeoServer 2.5.1, PostgreSQL 9.3.1, PostGIS 2.1.1

I have searched on the archives without finding any hints on how to solve this issue.

Thank you for your attention

Stefano


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

geoserver.log (52.4 KB)

Hi Stefano

In the log I see the following line

Image IO cannot read from ByteInputStream,use less efficient jai methods

I do not want to write a long explanation, but it seems that it is not possible to decode your image data. Can you send me your xml configuration files.

Christian

···

On Wed, Jul 23, 2014 at 5:55 PM, Stefano Iacovella <stefano.iacovella@anonymised.com> wrote:

Hi all,

I have followed all steps in the tutorial form here:

http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

When I try to add the store I got this error

Could not list layers for this store, an error occurred retrieving them: Failed to create reader from file:coverages/osm.postgis.xml and hints null

The errors found in the log are included in the attached text file.

Environment is Tomcat 7, Oracle JRE 6, GeoServer 2.5.1, PostgreSQL 9.3.1, PostGIS 2.1.1

I have searched on the archives without finding any hints on how to solve this issue.

Thank you for your attention

Stefano


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas


Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world’s largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds


Geoserver-users mailing list
Geoserver-users@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

DI Christian Mueller MSc (GIS), MSc (IT-Security)
OSS Open Source Solutions GmbH

2014-07-24 16:43 GMT+02:00 Christian Mueller <
christian.mueller@anonymised.com>:

mage IO cannot read from ByteInputStream,use less efficient jai methods

I do not want to write a long explanation, but it seems that it is not
possible to decode your image data. Can you send me your xml configuration
files.

Hi Christian,

Thank you for your answer.
I used the png image from the tutorial,
Here the gdalinfo output after the rcp conversion

Driver: PNG/Portable Network Graphics
Files: start.png
       start.wld
Size is 1060, 588
Coordinate System is `'
Origin = (8.996226000000000,49.002550999999997)
Pixel Size = (0.007547169800000,-0.005102040800000)
Corner Coordinates:
Upper Left ( 8.9962260, 49.0025510)
Lower Left ( 8.9962260, 46.0025510)
Upper Right ( 16.9962260, 49.0025510)
Lower Right ( 16.9962260, 46.0025510)
Center ( 12.9962260, 47.5025510)
Band 1 Block=1060x1 Type=Byte, ColorInterp=Palette
  Color Table (RGB with 256 entries)
    0: 156,188,144,255
...
  255: 248,248,248,255

Attached to the email you can find the three xml files I used to configure
the mosaic.

Cheers,

Stefano

---------------------------------------------------
41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

connect.postgis.xml.inc (275 Bytes)

mapping.postgis.xml.inc (866 Bytes)

osm.postgis.xml (487 Bytes)

Hi Stefano

The output of gdalinfo looks ok.

Please use this tutorial

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

I have seen that your mapping file has out commented the mix/max attributes. Why ?

Cheers
Christian

···

On Thu, Jul 24, 2014 at 5:06 PM, Stefano Iacovella <stefano.iacovella@anonymised.com> wrote:

DI Christian Mueller MSc (GIS), MSc (IT-Security)
OSS Open Source Solutions GmbH

2014-07-24 16:43 GMT+02:00 Christian Mueller <christian.mueller@anonymised.com>:

mage IO cannot read from ByteInputStream,use less efficient jai methods

I do not want to write a long explanation, but it seems that it is not possible to decode your image data. Can you send me your xml configuration files.

Hi Christian,

Thank you for your answer.

I used the png image from the tutorial,

Here the gdalinfo output after the rcp conversion

Driver: PNG/Portable Network Graphics
Files: start.png
start.wld
Size is 1060, 588
Coordinate System is `’
Origin = (8.996226000000000,49.002550999999997)
Pixel Size = (0.007547169800000,-0.005102040800000)
Corner Coordinates:
Upper Left ( 8.9962260, 49.0025510)
Lower Left ( 8.9962260, 46.0025510)
Upper Right ( 16.9962260, 49.0025510)
Lower Right ( 16.9962260, 46.0025510)
Center ( 12.9962260, 47.5025510)
Band 1 Block=1060x1 Type=Byte, ColorInterp=Palette
Color Table (RGB with 256 entries)
0: 156,188,144,255

255: 248,248,248,255

Attached to the email you can find the three xml files I used to configure the mosaic.

Cheers,

Stefano


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

Hi Christian

Please use this tutorial

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

I tried to follow steps from here:

http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

Comparing with the other tutorial I found some major differences:
1) importing raster into PostGIS is performed using raster2psql in the link
you sent, and this will produce a standard PostGIS raster while in the
tutorial in GeoServer documentation the imagemosaic jdbc jar is used and
this will create a different type of data. More specifically It seems to me
that using the jar tiles are loaded in a PostgreSQL bytea field, while
using raster2psql will create a raster field.
2) the suggested template for the mapping xml file is a bit different. It
seems that collowing code is not needed in the geotools tutorial:

<spatialTable>
      <keyAttributeName name="location" />
      <geomAttributeName name="geom" />
      <tileMaxXAttribute name="maxX"/>
      <tileMaxYAttribute name="maxY"/>
      <tileMinXAttribute name="minX"/>
      <tileMinYAttribute name="minY"/>
    </spatialTable>

I have seen that your mapping file has out commented the mix/max
attributes. Why ?

Uh I forgot to remove the comment, I first tried without it but got the
same error. Then I had a look at the tables and noted the spatial table not
having the fields and wondering if this may be an issue. I have attached
the DDL generated by image mosaic jdbc jar
I also tried to remove the comment in the XML mapping file but I got the
same error. I have included full geoserver log

Cheers

Stefano

---------------------------------------------------
41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

add_osm.sql (982 Bytes)

createmeta.sql (258 Bytes)

geoserver.log (40.9 KB)

Hi Stefano

This is the way you have to prepare your image data:

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

Import your raster data as described here

http://postgis.refractions.net/docs/using_raster.xml.html

GeoServer does not support importing postgis raster data, you have to use the utility provided by postgis. It is not necessary to create geometry columns, the postgis raster data type has all capabilities needed.

There is a test which may help you

https://github.com/geotools/geotools/blob/master/modules/plugin/imagemosaic-jdbc/src/test/java/org/geotools/gce/imagemosaic/jdbc/custom/PGRasterOnlineTest.java

Cheers
Christian

···

On Fri, Jul 25, 2014 at 10:13 AM, Stefano Iacovella <stefano.iacovella@anonymised.com84…> wrote:

DI Christian Mueller MSc (GIS), MSc (IT-Security)
OSS Open Source Solutions GmbH

Hi Christian

Please use this tutorial

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

I tried to follow steps from here:

http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

Comparing with the other tutorial I found some major differences:

  1. importing raster into PostGIS is performed using raster2psql in the link you sent, and this will produce a standard PostGIS raster while in the tutorial in GeoServer documentation the imagemosaic jdbc jar is used and this will create a different type of data. More specifically It seems to me that using the jar tiles are loaded in a PostgreSQL bytea field, while using raster2psql will create a raster field.

  2. the suggested template for the mapping xml file is a bit different. It seems that collowing code is not needed in the geotools tutorial:

<spatialTable>
      <keyAttributeName name="location" />
      <geomAttributeName name="geom" />
      <tileMaxXAttribute name="maxX"/>
      <tileMaxYAttribute name="maxY"/>
      <tileMinXAttribute name="minX"/>
      <tileMinYAttribute name="minY"/>
    </spatialTable>

I have seen that your mapping file has out commented the mix/max attributes. Why ?

Uh I forgot to remove the comment, I first tried without it but got the same error. Then I had a look at the tables and noted the spatial table not having the fields and wondering if this may be an issue. I have attached the DDL generated by image mosaic jdbc jar

I also tried to remove the comment in the XML mapping file but I got the same error. I have included full geoserver log

Cheers

Stefano


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

2014-07-25 18:24 GMT+02:00 Christian Mueller <
christian.mueller@anonymised.com>:

Hi Stefano

This is the way you have to prepare your image data:

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

Import your raster data as described here

http://postgis.refractions.net/docs/using_raster.xml.html

GeoServer does not support importing postgis raster data, you have to use
the utility provided by postgis. It is not necessary to create geometry
columns, the postgis raster data type has all capabilities needed.

Hi Christian,

thank you very much for your help.
Reading the GeoServer online docs I misunderstood it not being able to read
PostGIS raster data. I am going to use the png sample image using the
geootols raster.
I will report my steps on the list.

Cheers,

Stefano

---------------------------------------------------
41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

Hi Christian,

while reading the tutorial you suggested me:

This is the way you have to prepare your image data:

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

A warning captured my attention:
" For Postgis JDBC drivers < version 9 it is necessary to set a property
in the database:

ALTER DATABASE dbname SET bytea_output TO ‘escape’ "

Indeed I am using JDBC driver contained in the GeoServer war and they are
an 8.x release, more exactly this one:

postgresql-8.4-701.jdbc3.jar

So I tried the fix suggested:

ALTER DATABASE dbname SET bytea_output TO ‘escape’

This solved my issue.

I successfully added the coverages created according to the detailed
instruction from here:

http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

(by the way I think you are the author of it, aren't you?)

Thank you very much for pointing me to that tutorial!

Now I am curious about using the plugin with PostGIS Raster. I will try
and, if I can abuse of your expertise and kindness, will report here.

Import your raster data as described here

http://postgis.refractions.net/docs/using_raster.xml.html

Just a quick question about this reference. I have already used raster2psql
to import raster in PostGIS, but it seems to me that preparing tiles
previously with gdal_retile may be needless as among raster2psql option you
can specify tiles size and pyramids levels, am I misunderstanding it?

Cheers,

Stefano

---------------------------------------------------
41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

If you are using Postgresql 9 then as a heads up, I had to upgrade the “postgresql jdbc jar” from 8.x to the 9.3 version in the GeoServer WEB-INF/lib directory in order to get PG Raster working with ImageMosaic JDBC plugin.

I replaced “postgresql-8.4-701.jdbc3.jar” with “postgresql-9.3-1101-jdbc4.jar”.

I’m using same GeoServer and PostGIS version as you are.

–Steve

···

Hi Christian,

while reading the tutorial you suggested me:

This is the way you have to prepare your image data:

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html

A warning captured my attention:
" For Postgis JDBC drivers < version 9 it is necessary to set a property in the database:

ALTER DATABASE dbname SET bytea_output TO ‘escape’ "

Indeed I am using JDBC driver contained in the GeoServer war and they are an 8.x release, more exactly this one:

postgresql-8.4-701.jdbc3.jar

So I tried the fix suggested:

ALTER DATABASE dbname SET bytea_output TO ‘escape’

This solved my issue.

I successfully added the coverages created according to the detailed instruction from here:

http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

(by the way I think you are the author of it, aren’t you?)

Thank you very much for pointing me to that tutorial!

Now I am curious about using the plugin with PostGIS Raster. I will try and, if I can abuse of your expertise and kindness, will report here.

Import your raster data as described here

http://postgis.refractions.net/docs/using_raster.xml.html

Just a quick question about this reference. I have already used raster2psql to import raster in PostGIS, but it seems to me that preparing tiles previously with gdal_retile may be needless as among raster2psql option you can specify tiles size and pyramids levels, am I misunderstanding it?

Cheers,

Stefano


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

2014-07-25 23:21 GMT+02:00 Stephen Brooke <sbrooke@anonymised.com>:

If you are using Postgresql 9 then as a heads up, I had to upgrade the
“postgresql jdbc jar” from 8.x to the 9.3 version in the GeoServer
WEB-INF/lib directory in order to get PG Raster working with ImageMosaic
JDBC plugin.

I replaced “postgresql-8.4-701.jdbc3.jar” with
“postgresql-9.3-1101-jdbc4.jar”.

I’m using same GeoServer and PostGIS version as you are.

Hi Steve,

thank you for the information.
I am a bit afraid of replacing the bundled JDBC driver with a new one.
I have to check better in the archives but it seems to me that Andrea Aime
was warning about some issues with the 9.x JDBC driver release.
Did you try using the PostGIS raster also with 8.x? And what kind of issue
had you experienced?

Cheers,

Stefano

---------------------------------------------------
41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

I believe this is the stacktrace I was getting in GeoServer during the layer publishing part of the ImageMosaic JDBC coverage creation:

The key error string was “Unknown WKB type 48”.

I found this solution by stumbling upon this post:

http://stackoverflow.com/questions/22353716/reading-postgres-geometry-into-byte-with-hibernate

17 Jul 14:39:39 ERROR [jdbc.custom] - Unknown WKB type 48

com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

at com.vividsolutions.jts.io.WKBReader.readGeometry(WKBReader.java:206)

at com.vividsolutions.jts.io.WKBReader.read(WKBReader.java:152)

at com.vividsolutions.jts.io.WKBReader.read(WKBReader.java:133)

at org.geotools.gce.imagemosaic.jdbc.custom.JDBCAccessPGRaster.calculateExtentsFromDB(JDBCAccessPGRaster.java:446)

at org.geotools.gce.imagemosaic.jdbc.custom.JDBCAccessPGRaster.initialize(JDBCAccessPGRaster.java:111)

at org.geotools.gce.imagemosaic.jdbc.JDBCAccessFactory.getJDBCAcess(JDBCAccessFactory.java:91)

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCReader.(ImageMosaicJDBCReader.java:161)

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:210)

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:67)

at org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1294)

at org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:58)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:145)

at com.sun.proxy.$Proxy8.getGridCoverageReader(Unknown Source)

at org.geoserver.web.data.layer.NewLayerPageProvider.getItemsInternal(NewLayerPageProvider.java:89)

at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:58)

at org.geoserver.web.wicket.GeoServerDataProvider.fullSize(GeoServerDataProvider.java:236)

at org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.updateMatched(GeoServerTablePanel.java:562)

at org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.(GeoServerTablePanel.java:555)

at org.geoserver.web.wicket.GeoServerTablePanel.(GeoServerTablePanel.java:219)

at org.geoserver.web.wicket.GeoServerTablePanel.(GeoServerTablePanel.java:98)

at org.geoserver.web.data.layer.NewLayerPage$1.(NewLayerPage.java:101)

at org.geoserver.web.data.layer.NewLayerPage.(NewLayerPage.java:101)

at org.geoserver.web.data.store.CoverageStoreNewPage.onSuccessfulSave(CoverageStoreNewPage.java:76)

at org.geoserver.web.data.store.CoverageStoreNewPage.onSave(CoverageStoreNewPage.java:67)

at org.geoserver.web.data.store.AbstractCoverageStorePage$1.onSubmit(AbstractCoverageStorePage.java:115)

at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:68)

at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:143)

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.doPost(WicketServlet.java:160)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

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.doPost(FrameworkServlet.java:789)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

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:27)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)

at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:70)

at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)

at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)

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:68)

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:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:115)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

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:134)

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:75)

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:47)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:43)

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.content(HttpConnection.java:842)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)

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)

17 Jul 14:39:39 ERROR [imagemosaic.jdbc] - com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

17 Jul 14:39:39 WARN [imagemosaic.jdbc] - java.io.IOException: com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

java.io.IOException: java.io.IOException: com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCReader.(ImageMosaicJDBCReader.java:164)

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:210)

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:67)

at org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1294)

at org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:58)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:145)

at com.sun.proxy.$Proxy8.getGridCoverageReader(Unknown Source)

at org.geoserver.web.data.layer.NewLayerPageProvider.getItemsInternal(NewLayerPageProvider.java:89)

at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:58)

at org.geoserver.web.wicket.GeoServerDataProvider.fullSize(GeoServerDataProvider.java:236)

at org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.updateMatched(GeoServerTablePanel.java:562)

at org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.(GeoServerTablePanel.java:555)

at org.geoserver.web.wicket.GeoServerTablePanel.(GeoServerTablePanel.java:219)

at org.geoserver.web.wicket.GeoServerTablePanel.(GeoServerTablePanel.java:98)

at org.geoserver.web.data.layer.NewLayerPage$1.(NewLayerPage.java:101)

at org.geoserver.web.data.layer.NewLayerPage.(NewLayerPage.java:101)

at org.geoserver.web.data.store.CoverageStoreNewPage.onSuccessfulSave(CoverageStoreNewPage.java:76)

at org.geoserver.web.data.store.CoverageStoreNewPage.onSave(CoverageStoreNewPage.java:67)

at org.geoserver.web.data.store.AbstractCoverageStorePage$1.onSubmit(AbstractCoverageStorePage.java:115)

at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:68)

at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:143)

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.doPost(WicketServlet.java:160)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

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.doPost(FrameworkServlet.java:789)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

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:27)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)

at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:70)

at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)

at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)

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:68)

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:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:115)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

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:134)

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:75)

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:47)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:43)

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.content(HttpConnection.java:842)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)

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.io.IOException: com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

at org.geotools.gce.imagemosaic.jdbc.custom.JDBCAccessPGRaster.calculateExtentsFromDB(JDBCAccessPGRaster.java:449)

at org.geotools.gce.imagemosaic.jdbc.custom.JDBCAccessPGRaster.initialize(JDBCAccessPGRaster.java:111)

at org.geotools.gce.imagemosaic.jdbc.JDBCAccessFactory.getJDBCAcess(JDBCAccessFactory.java:91)

at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCReader.(ImageMosaicJDBCReader.java:161)

… 118 more

Caused by: com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

at com.vividsolutions.jts.io.WKBReader.readGeometry(WKBReader.java:206)

at com.vividsolutions.jts.io.WKBReader.read(WKBReader.java:152)

at com.vividsolutions.jts.io.WKBReader.read(WKBReader.java:133)

at org.geotools.gce.imagemosaic.jdbc.custom.JDBCAccessPGRaster.calculateExtentsFromDB(JDBCAccessPGRaster.java:446)

… 121 more

17 Jul 14:39:39 INFO [geoserver.web] - Getting list of coverages for saved store file:coverages/browse.pgraster.xml

java.lang.RuntimeException: Could not list layers for this store, an error occurred retrieving them: Failed to create reader from file:coverages/browse.pgraster.xml and hints null

–Steve

···

2014-07-25 23:21 GMT+02:00 Stephen Brooke <sbrooke@…3836…>:

If you are using Postgresql 9 then as a heads up, I had to upgrade the “postgresql jdbc jar” from 8.x to the 9.3 version in the GeoServer WEB-INF/lib directory in order to get PG Raster working with ImageMosaic JDBC plugin.

I replaced “postgresql-8.4-701.jdbc3.jar” with “postgresql-9.3-1101-jdbc4.jar”.

I’m using same GeoServer and PostGIS version as you are.

Hi Steve,

thank you for the information.

I am a bit afraid of replacing the bundled JDBC driver with a new one.

I have to check better in the archives but it seems to me that Andrea Aime was warning about some issues with the 9.x JDBC driver release.

Did you try using the PostGIS raster also with 8.x? And what kind of issue had you experienced?

Cheers,

Stefano


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas