Ciao Jody, be aware that the code I sent back to Tim is not really an example per se but it is done in that way to reproduce (at least to try to reproduce) Tim's problem. If you have in mind a couple of snippets you would like to see for coverages you can send an email and next week I will put together some code for which you could put together some doc. How does that sound? :-)
This is for Tim, try the code I sent you and afterwards try to follow the advice I gave you about NOT drawing on the source image. If you still have problems I'll try to help you again next week (I will be back on tue). Ciao guys, Simone. On 8/24/07, Jody Garnett <[EMAIL PROTECTED]> wrote: > Yeah Simone, > > This will serve not only as a resample example but as the first example > for WorldImageReader (you guys really never use the FormatFinder do you?). > > I have updated the wiki page with this new example: > - http://docs.codehaus.org/display/GEOTDOC/05+Resample+Operation > > Tim perhaps you like me find Simone's example confusing ? When I get a > break I am going to place it into demos/examples and step through it > with a debugger and see if I can figure out how it works. If you get any > insights please let me know. > > Jody > > Ok, > > I played with the code you sent me: > > > > 1>You are doing a strange thing here. You are creating a BufferedImage > > to feed it to a Coverage, then you are reprojecting it, which by the > > way creates a new RenderedImage having as a source the original > > BufferedImage. Then you try to draw this reproject image onto the > > first one. I see that you might want to do some god memory reusing by > > reusing the first one but it might be a bit risky to overwrite the > > source image. You are basically creating reprojected image B from > > original image A (which btw is BufferedImage, hence it is all in > > memory untiled) where B is a tiled PlanarImage using a deferred model > > which causes computation only on demand. Then you are drawing image B > > back onto A. You like to risk huh? :-) > > > > In some cases this should cause a lot of pains, especially with > > operations that needs more than one source tile to compute an output > > tile (high order interpolation is involved or convolutions). Anyway > > let's try the code... > > > > 2>I adapted a bit the code as shown below (copy and paste in an editor > > if you see it jaggled): > > > > > > public void test() throws FactoryException, IOException { > > > > // // > > // > > // Here below you have how to correctly create an envelope > > for a > > // coverage. > > // > > // // > > // final GeneralEnvelope sourceEnvelope = new GeneralEnvelope( > > // new double[] { -180, -90 }, new double[] { 180, 90 }); > > // > > sourceEnvelope.setCoordinateReferenceSystem(CRS.decode("EPSG:4326", > > // true)); > > > > // get a reader for the image > > final WorldImageReader wiReader = new WorldImageReader(new > > File( > > "D:\\data\\ikonos_rgb\\ikonos_rgb.tif")); > > // get the coverage > > GridCoverage2D coverage = (GridCoverage2D) > > wiReader.read(null); > > > > // now that we have the input image let's try to mess it up > > writing onto > > // a new bufferedimage with a strange color model > > final BufferedImage bi = new > > BufferedImage(coverage.getGridGeometry() > > .getGridRange().getLength(0), > > coverage.getGridGeometry() > > .getGridRange().getLength(1), > > BufferedImage.TYPE_INT_BGR); > > ((Graphics2D) bi.getGraphics()) > > > > .drawRenderedImage(coverage.getRenderedImage(), AffineTransform > > .getTranslateInstance(0, 0)); > > coverage = FactoryFinder.getGridCoverageFactory(null).create( > > "I_need_a_long_vacation", bi, > > coverage.getEnvelope()); > > > > // resample the created coverage > > coverage = (GridCoverage2D) > > Operations.DEFAULT.resample(coverage, > > CRS.decode("EPSG:32633")); > > final RenderedImage resampled =coverage.getRenderedImage(); > > > > // Painting some other BufferedImages PNG or JPEGS on the > > Canvas of > > // by using > > // the bi.getGraphics().drawImage(Image,..) Method > > ((Graphics2D) bi.getGraphics()).drawRenderedImage(resampled, > > AffineTransform.getTranslateInstance(0, 0)); > > > > // write it down > > ImageIO.write(bi, "tiff", new File("d:\\data\\b.tif")); > > > > } > > > > Surprise, surpise it works perfectly for me! This is funny (at least > > for me :-) for you I bet is annoying!). > > Let's try to ddig a bit more. I need to know: platform, geotools > > version, JAI version (do you have native libs installed?). > > Could you try to avoid drawing on the source image? I rather create a > > sibling one. > > > > Talk to you soon. > > Simone. > > > > PS: > > Not to soon, the elba island is waiting for me, I won't be back until > > tuesday 28th of august! > > > > > > > > On 8/23/07, Jody Garnett <[EMAIL PROTECTED]> wrote: > > > >> Thanks Martin/Tim I have updated the wiki with this description of > >> resample: > >> - http://docs.codehaus.org/display/GEOTDOC/05+Resample+Operation > >> > >> I also added this question to the referencing FAQ: > >> - http://docs.codehaus.org/display/GEOTDOC/11+Referencing+FAQ > >> > >> Cheers, > >> Jody > >> > >> Martin Desruisseaux wrote: > >> > >>> Tim Englich a écrit : > >>> > >>> > >>>>> I am looking for a possibility to transform an georefrenced image to an > >>>>> other coordinatereferencesystem. > >>>>> E.g. from EPSG:4326 to EPSG:32632 > >>>>> Provide GeoTools such a functionality? Do anyone know a (Java)-library > >>>>> which can do that. > >>>>> > >>>>> > >>> CoordinateReference sourceCRS = CRS.decode("EPSG:4326"); > >>> CoordinateReference targetCRS = CRS.decode("EPSG:32632"); > >>> RenderedImage image = ... > >>> Envelope imageEnvelope = ... > >>> imageEnvelope.setCoordinateReferenceSystem(sourceCRS); > >>> GridCoverage2D coverage = coverageFactory.create("My coverage", image, > >>> envelope); > >>> coverage = Operations.DEFAULT.resample(coverage, targetCRS); > >>> > >>> > >>> Martin > >>> > >>> ------------------------------------------------------------------------- > >>> This SF.net email is sponsored by: Splunk Inc. > >>> Still grepping through log files to find problems? Stop. > >>> Now Search log events and configuration files using AJAX and a browser. > >>> Download your FREE copy of Splunk now >> http://get.splunk.com/ > >>> _______________________________________________ > >>> Geotools-gt2-users mailing list > >>> Geotools-gt2-users@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users > >>> > >>> > >> ------------------------------------------------------------------------- > >> This SF.net email is sponsored by: Splunk Inc. > >> Still grepping through log files to find problems? Stop. > >> Now Search log events and configuration files using AJAX and a browser. > >> Download your FREE copy of Splunk now >> http://get.splunk.com/ > >> _______________________________________________ > >> Geotools-gt2-users mailing list > >> Geotools-gt2-users@lists.sourceforge.net > >> 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: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Geotools-gt2-users mailing list Geotools-gt2-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users