Hi,
you should explicitly select the gray channel in the Raster Symbolizer.
On Fri, May 30, 2008 at 4:26 PM, Anaxa Gore <[EMAIL PROTECTED]>
wrote:
> Hi,
>
> I just created a Geotiff with two values and one single band (always the
> same !).
> Now I am able to display it and would like to stylize it through a sld
> file.
>
> I generate my coverage like this :
>
> this.rasterEnvelope = new Envelope2D(new DirectPosition2D(prj.getCRS(),
> minLon, minLat),
> new
> DirectPosition2D(prj.getCRS(), maxLon, maxLat));
> int rasterExtensionX = (int)((maxLon - minLon) / resolution);
> int rasterExtensionY = (int)((maxLat - minLat) / resolution);
>
> WritableRaster rasterCoverage =
> RasterFactory.createBandedRaster(DataBuffer.TYPE_BYTE, rasterExtensionX,
> rasterExtensionY, 1, null);
>
>
> GridCoverageFactory gcf = new GridCoverageFactory(new
> Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE));
> GridCoverage2D gc = gcf.create(this.site.getName()+"_AH="+hs+"m"+"_TH="+ht,
> rasterCoverage, this.rasterEnvelope,null,null,null,null,null);
>
> final GeoTiffFormat format = new GeoTiffFormat();
> // The parameters used to write a geotiff file.
> final GeoTiffWriteParams wp = new GeoTiffWriteParams();
>
> // No compression -> never mind the size of pictures, we must go fast
> wp.setCompressionMode(GeoTiffWriteParams.MODE_DISABLED);
> // We keep the tile size
> wp.setTilingMode(GeoToolsWriteParams.MODE_DEFAULT);
>
> final ParameterValueGroup paramWrite = format.getWriteParameters();
>
> paramWrite.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp);
>
> File outFile = new
> File(getCoveragesFolder(true).getPath()+File.separator+gc.getName()+".TIF");
> GeoTiffWriter gtw = (GeoTiffWriter)format.getWriter(outFile);
> gtw.write(gc,(GeneralParameterValue[])paramWrite.values().toArray(new
> GeneralParameterValue[1]));
>
> Then, I want to display my grid with the style like this :
>
> MapLayer coveragelayer = new DefaultMapLayer(reader,
> getCoverageLayerStyle()); // reader is the geotiffreader to the
> geotiff
>
> public static Style getCoverageLayerStyle(){
> URL sld =
> MSSProject.class.getResource("/org/mss/project/resources/HorizonCoverageStyle.xml");
> SLDParser parser = new SLDParser(new StyleFactoryImpl());
> try{
> parser.setInput(sld);
> }catch(IOException ioe){
> ioe.printStackTrace();
> }
>
> return parser.readXML()[0];
> }
>
> finally, the style is described like this :
>
> <StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="
> http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
> http://www.opengis.net/sld
> http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
> version="1.0.0">
> <UserLayer>
> <Name>horizon coverage</Name>
> <UserStyle>
> <Name>COV_HORIZON</Name>
> <Title>Couverture Horizon</Title>
> <Abstract>Style des couvertures à l'horizon</Abstract>
> <FeatureTypeStyle>
> <FeatureTypeName>Feature</FeatureTypeName>
> <Rule>
> <RasterSymbolizer>
> <Opacity>1.0</Opacity>
> <ColorMap>
> <ColorMapEntry color="#000000"
> quantity="0" label="nodata" opacity="0.0"/>
> <ColorMapEntry color="#111111"
> quantity="200" label="visible" opacity="0.5"/>
> </ColorMap>
> </RasterSymbolizer>
> </Rule>
> </FeatureTypeStyle>
> </UserStyle>
> </UserLayer>
> </StyledLayerDescriptor>
>
> And I always get this exception when trying to display the layer :
>
> java.lang.IllegalArgumentException: Le numéro de bande 1 n'est pas valide.
> at
> org.geotools.coverage.TypeMap.getColorInterpretation(TypeMap.java:513)
> at
> org.geotools.renderer.lite.gridcoverage2d.ColorMapNode.execute(ColorMapNode.java:296)
> at
> org.geotools.renderer.lite.gridcoverage2d.ColorMapNode.execute(ColorMapNode.java:52)
> at
> org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter$1.execute(StyleVisitorCoverageProcessingNodeAdapter.java:139)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.checkExecuted(BaseCoverageProcessingNode.java:234)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:336)
> Caused: org.geotools.coverage.processing.CoverageProcessingException
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:338)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:41)
> at
> org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter.getOutput(StyleVisitorCoverageProcessingNodeAdapter.java:179)
> at
> org.geotools.renderer.lite.gridcoverage2d.ContrastEnhancementNode.execute(ContrastEnhancementNode.java:233)
> at
> org.geotools.renderer.lite.gridcoverage2d.ContrastEnhancementNode.execute(ContrastEnhancementNode.java:75)
> at
> org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter$1.execute(StyleVisitorCoverageProcessingNodeAdapter.java:139)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.checkExecuted(BaseCoverageProcessingNode.java:234)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:336)
> Caused: org.geotools.coverage.processing.CoverageProcessingException
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:338)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:41)
> at
> org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter.getOutput(StyleVisitorCoverageProcessingNodeAdapter.java:179)
> at
> org.geotools.renderer.lite.gridcoverage2d.SubchainStyleVisitorCoverageProcessingAdapter.execute(SubchainStyleVisitorCoverageProcessingAdapter.java:111)
> at
> org.geotools.renderer.lite.gridcoverage2d.RasterSymbolizerHelper.execute(RasterSymbolizerHelper.java:67)
> at
> org.geotools.renderer.lite.gridcoverage2d.RasterSymbolizerHelper.execute(RasterSymbolizerHelper.java:47)
> at
> org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter$1.execute(StyleVisitorCoverageProcessingNodeAdapter.java:139)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.checkExecuted(BaseCoverageProcessingNode.java:234)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:336)
> Caused: org.geotools.coverage.processing.CoverageProcessingException
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:338)
> at
> org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:41)
> at
> org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter.getOutput(StyleVisitorCoverageProcessingNodeAdapter.java:179)
> at
> org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.paint(GridCoverageRenderer.java:555)
> at
> org.geotools.renderer.lite.StreamingRenderer.renderRaster(StreamingRenderer.java:1848)
> at
> org.geotools.renderer.lite.StreamingRenderer.processSymbolizers(StreamingRenderer.java:1708)
> at
> org.geotools.renderer.lite.StreamingRenderer.process(StreamingRenderer.java:1654)
> at
> org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1598)
> at
> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:642)
> at
> org.geotools.renderer.shape.ShapefileRenderer.renderWithStreamingRenderer(ShapefileRenderer.java:1475)
> at
> org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1344)
> at
> org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:266)
> at
> org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1500)
> at
> org.geotools.gui.swing.map.map2d.stream.strategy.SingleBufferedImageStrategy.createBufferImage(SingleBufferedImageStrategy.java:132)
> [catch] at
> org.geotools.gui.swing.map.map2d.stream.strategy.SingleBufferedImageStrategy$DrawingThread.run(SingleBufferedImageStrategy.java:252)
>
> So my question is : why does it try to read "band 1", when my raster is a
> single band !? Did I make a mistake while creating the raster or while
> creating the style ?
>
> Thomas
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Geotools-gt2-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>
>
--
-------------------------------------------------------
Eng. Alessio Fabiani
Vice-President /CTO GeoSolutions S.A.S.
Via Carignoni 51
55041 Camaiore (LU)
Italy
phone: +39 0584983027
fax: +39 0584983027
mob: +39 349 8227000
http://www.geo-solutions.it
-------------------------------------------------------
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users