Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] raster's data recovery

ragga doll wrote:
Hi,
I have experienced some problem with raster’s data recovery. I have imported cloud.jpg from udig’s data sample (data-v1_1). And with this code, I always get one value (not three for each R G B) and this value is always 0.
I am trying to understand what is going on; so you imported this cloud.jpg as a GridCoverage?
An other problem : I can’t import a geotiff raster with raster’ pixel value more than 255 (I am not sure of that). Can uDig import raster geotiff or can uDig import simple picture only ?
For any serious raster work I recommend working on uDig trunk; the raster support has been rewritten from the ground up and is much better. uDig can work with a GeoTiff (and also with a Tiff+world file). For a GeoTiff the only magic is in extracting the bounds and crs out of the Tiff header.
Please some one can told me what’s wrong ? Is there a kind of tutorial or code snippet on this subject ?
For working on rasters the GeoTools user guide will have a really small amount of information. The GeoTools test cases and user email list are the best source of information.
GridCoverageFactory fact = new GridCoverageFactory(); Map map = (Map) ApplicationGIS.getActiveMap() ; Layer l = (Layer) map.getMapLayers().get(0) ; //my picture int tabValue[] = null ; //sure values are integer one RenderedImage image = map.getRenderManagerInternal().getRendererCreator().getRenderContext(l).getImage() ; Envelope envelope = l.getBounds(null, l.getCRS()) ; GridCoverage2D grid = fact.create("name", image, envelope) ; Point2D.Double pixel = new Point2D.Double(-65.157, -7.736) ; //I am sure there is no cloud there ;) tabValue = grid.evaluate(pixel, tabValue) ; for(int i = 0 ; i < tabValue.length ; i++)
    msg = "\n*" + tabValue[i] ;
System.out.println(msg);
For this example it looks like you are trying to look at the image dran on screen by the rendering system. You don't need to do this; you should be accessing the data directly. By the time something shows up on screen it will be processed by RasterSymbolizers and scaled and colored, and generally no longer a GeoTiff.

So I think what you want is to create an IOp asking for a GridCoverage... the uDig framework will sort out the rest. You can right click on your layer or catalog entry and start hacking on the GridCoverage. For a low level take on how to do this by hand using GeoTools review this page:
- http://docs.codehaus.org/display/GEOTDOC/02+GridCoverageReader

Jody


Back to the top