I'm trying to serve a single band raster from postgis though GeoServer using
the Image Mosaic JDBC plugin. In short I'm seeing an issue such that the
values in my single band are truncated to byte values between 0 and 255.
Additionally, what was a single band raster appears as 3 band when viewed
through GeoServer. My intention is to serve the raster such that I can
colorize it using an SLD in GeoServer for display through WMS and get data
points from the band through WCS. Further details follow.
I have setup my mosaic table in postgis as described here
http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html
I insert the single band geotiff with Float32 data type as a single row in
to the table test using
raster2pgsql -s 4326 -I -C -M test.tif public.test | psql -d postgis -h
localhost -U postgres
and insert a value in the mosaic table with
insert into mosaic (name, tiletable) values ('test', 'test')
I can verify that the geotiff appears to be loaded into postgis properly by
running.
select st_numbands(rast) from test
to return the number of bands, this returns 1 as expected.
and running
select st_value(rast, 1, 50, 50) from test
to return the value at a specific point. This case returns
-7305.72021484375 which is an expected value
I have also verified that it appears to be a single band raster with data by
pulling the raster out of postgis using Quantum GIS and viewing the details
associated with it. I can apply color styles to the raster in Quantum GIS
and that works as expected.
I can also verify that GeoServer will serve the GeoTiff properly when
configured as a GeoTiff raster data store directly off the filesystem (not
going through postgis). It appears as a single band raster which I can
colorize with an SLD, everything works as expected.
When I try to load the raster into GeoServer from postgis as an
ImageMosaicJDBC raster data source, things go awry.
My config files are as such.
1. connect.pgraster.xml.inc
<connect>
<dstype value="DBCP"/>
<username value="postgres" />
<password value="password1" />
<jdbcUrl value="jdbc:postgresql://localhost:5432/postgis" />
<driverClassName value="org.postgresql.Driver"/>
<maxActive value="10"/>
<maxIdle value="0"/>
</connect>
2. mapping.pgraster.xml.inc
<spatialExtension name="pgraster"/>
<mapping>
<masterTable name="MOSAIC" >
<coverageNameAttribute name="NAME"/>
<maxXAttribute name="maxX"/>
<maxYAttribute name="maxY"/>
<minXAttribute name="minX"/>
<minYAttribute name="minY"/>
<resXAttribute name="resX"/>
<resYAttribute name="resY"/>
<tileTableNameAtribute name="TileTable" />
</masterTable>
<tileTable>
<blobAttributeName name="rast" />
</tileTable>
</mapping>
3. test.pgraster.xml.inc
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
<!ENTITY mapping PUBLIC "mapping"
"mapping.pgraster.xml.inc">
<!ENTITY connect PUBLIC "connect"
"connect.pgraster.xml.inc">
]>
<config version="1.0">
<coverageName name="test"/>
<coordsys name="EPSG:4326"/>
<scaleop interpolation="1"/>
&mapping;
&connect;
</config>
I can create the datasource and publish the layer all without error.
However, when I try to view the layer in GeoServer with the OpenLayers layer
preview I see a completely black and white image, not greyscale as expected.
Also, clicking a point in the image shows there are now 3 bands (test,
test_Band1, test_Band2) with values that appear to be either (0.0, 0.0, 0.0)
or (255.0, 255.0, 255.0). All of my data values appear to be lost.
If I issue a DescribeCoverage request against the WCS the range section
appears as such
<wcs:Range>
<wcs:Field>
<wcs:Identifier>contents</wcs:Identifier>
<wcs:Definition>
<ows:AllowedValues>
<ows:Range>
<ows:MinimumValue>0.0</ows:MinimumValue>
<ows:MaximumValue>255.0</ows:MaximumValue>
</ows:Range>
</ows:AllowedValues>
</wcs:Definition>
<wcs:InterpolationMethods>
<wcs:InterpolationMethod>linear</wcs:InterpolationMethod>
<wcs:InterpolationMethod>cubic</wcs:InterpolationMethod>
</wcs:InterpolationMethods>
<wcs:Axis identifier="Bands">
<wcs:AvailableKeys>
<wcs:Key>test</wcs:Key>
<wcs:Key>test</wcs:Key>
<wcs:Key>test</wcs:Key>
</wcs:AvailableKeys>
</wcs:Axis>
</wcs:Field>
</wcs:Range>
Does anyone know a reason why this would happen? Does the Image Mosaic JDBC
plugin only support 3 band images of Byte type? I'm running GeoServer
2.3.2, postgresql 9.2.4 and postgis 2.0.3. Let me know if I can provide any
additional details that might be helpful.
Thanks,
Mike
--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Image-Mosaic-JDBC-single-band-raster-losing-data-values-tp5058549.html
Sent from the GeoServer - User mailing list archive at Nabble.com.