Ciao Thomas,
I was looking at the ColorMapNode class and It might be that I have
added a bug while trying to make it more leanient towards bad band
numbers.

I am trying to reproduce your problem, anyway, would it be possible to
have some sample data to try this out. You mention that you write this
geotiff out, can you send me one of this geotiff or part of it?

SImone.

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. Simone Giannecchini
President /CEO GeoSolutions S.A.S.
Via Carignoni 51
55041 Camaiore (LU)
Italy

phone: +39 0584983027
fax: +39 0584983027
mob: +39 333 8128928


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

Reply via email to