Dear Simone, I will try to provide a case for JIRA, somewhere around Monday, no time to do it before. In the mean time - it is quite urgent for me to find a solution to pass the GridCoverrage2D around - could you please elaborate how you would serialize the coverage and consequently apply the styling? I only applied the styling (I have no need for it), because I was getting the error resulting from the lack of color model, or rather the inabiity to serialize it.
The approach mentioned by Christian and later Martin: new SerializableRenderedImage(outcov.getRenderedImage()) does seem to only serialize the rendered image. How would one serialize the GridCoverage directly? When I tried it, I got the errors resulting from the color model, as noted earlier. Is there any way to serialize a GeoTiff - that would be a suitable alternative. HOw are these things done in a WMS/WCS request - there must be some serialization happening, and it would probably provide a suitable alternative for me. Thanks for any help, Martin Simone Giannecchini wrote: > Martin, > you should serialize the coverage prior to the raster symbolizer in > case you want to retain the original information of the data. > > Anyway, if you can provide an isolated test case for this > serialization problem along with test data and create a jira for it > that would be great, since it sounds like an improvement is needed > inside the color map node of the raster symbolizer. > > Ciao, > Simone. > ------------------------------------------------------- > Ing. Simone Giannecchini > GeoSolutions S.A.S. > Owner - Software Engineer > Via Carignoni 51 > 55041 Camaiore (LU) > Italy > > phone: +39 0584983027 > fax: +39 0584983027 > mob: +39 333 8128928 > > http://www.geo-solutions.it > http://simboss.blogspot.com/ > http://www.linkedin.com/in/simonegiannecchini > > ------------------------------------------------------- > > > > On Thu, Apr 23, 2009 at 5:42 PM, Martin Tomko <[email protected]> wrote: > >> Hi Martin, >> that is exactly what I was trying to do before: >> I get the following error: >> Exception in thread "main" java.lang.RuntimeException: >> org.geotools.renderer.lite.gridcoverage2d.LinearColorMapNon-serializable >> parameter in this operation`s ParameterBlock. >> at >> javax.media.jai.OperationNodeSupport.writeObject(OperationNodeSupport.java:746) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) >> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) >> at >> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) >> at >> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416) >> at javax.media.jai.RenderedOp.writeObject(RenderedOp.java:3004) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) >> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) >> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) >> at java.util.Hashtable.writeObject(Hashtable.java:824) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) >> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) >> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) >> at >> javax.media.jai.PropertySourceImpl.writeMap(PropertySourceImpl.java:347) >> at >> javax.media.jai.PropertySourceImpl.writeObject(PropertySourceImpl.java:361) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) >> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) >> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) >> at >> ch.uzh.geo.tomko.viewshedservice.ViewshedService.toBytesGC(ViewshedService.java:519) >> >> It seems to work if I extract the renderedimage: >> new SerializableRenderedImage(covoverage.getRenderedImage()) >> >> But then, I am afraid, I am losing the coverage2D capabilities. >> I am using the 2.5-snapshot. Seems like the serialization does nto work, >> or my rendering is incorrect? (.LinearColorMapNon-serializable parameter >> seems to imply that..) >> I have a simple thing like this: >> <FeatureTypeStyle> >> <FeatureTypeName>Feature</FeatureTypeName> >> <Rule> >> <RasterSymbolizer> >> <ColorMap type="ramp" extended="true"> >> <ColorMapEntry color="#ffffff" quantity="-1.0" opacity="1.0"/> >> <ColorMapEntry color="#000000" quantity="0.0" opacity="1.0"/> >> <ColorMapEntry color="#ffff00" quantity="1.0" opacity="1.0"/> >> <ColorMapEntry color="#00ff00" quantity="2.0" opacity="1.0"/> >> <ColorMapEntry color="#00ffff" quantity="3.0" opacity="1.0"/> >> <ColorMapEntry color="#0000ff" quantity="4.0" opacity="1.0"/> >> <ColorMapEntry color="#ff00ff" quantity="5.0" opacity="1.0"/> >> <ColorMapEntry color="#ff0000" quantity="6.0" opacity="1.0"/> >> </ColorMap> >> <Opacity>1.0</Opacity> >> <ChannelSelection> >> <GrayChannel> >> <SourceChannelName>1</SourceChannelName> >> </GrayChannel> >> </ChannelSelection> >> </RasterSymbolizer> >> >> thanks >> Martin >> >> Martin Desruisseaux wrote: >> >>> Martin Tomko a écrit : >>> >>> >>>> Now, I noticed that this approach is *similar*to some test cases in >>>> http://svn.geotools.org/trunk/modules/library/coverage/src/test/java/org/geotools/coverage/grid/GridCoverageTestBase.java >>>> >>>> but in these test cases it does not seem to be necessary to create >>>> the new SerializableRenderedImage. Can anyone please comment on this? >>>> >>> This test case is serializing GridCoverage2D, not RenderedImage. Like >>> mentioned in my previous email, GridCoverage2D is already made >>> serializable using the technic mentioned by Christian. >>> >>> >>> >>>> What I need is the output of a Coverage (or Geotiff, anything that >>>> will be contained aas one object and will contain georeferencing >>>> information - at least the ReferencedEnvelope). >>>> I need to pass the coverage to a remote service that will decode it. >>>> The coverage has a ReferencedEnvelope, and that is what I need to be >>>> passed with the raw data. >>>> I have control over the decoding of the byte[] to an extent, so I can >>>> have a less standard way of decoding it. >>>> >>> If you have a GridCoverage2D instance, you can do: >>> >>> // Writting >>> ByteArrayOutputStream buffer = new ByteArrayOutputStream(); >>> ObjectOutputStream out = new ObjectOutputStream(buffer); >>> out.writeObject(theCoverage); >>> out.close(); >>> byte[] asArray = buffer.getArray(); >>> >>> >>> // Reading >>> ObjectInputStream in = new ObjectInputStream(new >>> ByteArrayInputStream(asArray)); >>> GridCoverage2D theCoverage = (GridCoverage2D) in.readObject(); >>> in.close(); >>> >>> Martin >>> >>> >>> >> -- >> Martin Tomko >> Postdoctoral Research Assistant >> >> Geographic Information Systems Division >> Department of Geography >> University of Zurich - Irchel >> Winterthurerstr. 190 >> CH-8057 Zurich, Switzerland >> >> email: [email protected] >> site: http://www.geo.uzh.ch/~mtomko >> mob: +41-788 629 558 >> tel: +41-44-6355256 >> fax: +41-44-6356848 >> >> >> ------------------------------------------------------------------------------ >> Stay on top of everything new and different, both inside and >> around Java (TM) technology - register by April 22, and save >> $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. >> 300 plus technical and hands-on sessions. Register today. >> Use priority code J9JMT32. http://p.sf.net/sfu/p >> _______________________________________________ >> Geotools-gt2-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >> >> > > > -- Martin Tomko Postdoctoral Research Assistant Geographic Information Systems Division Department of Geography University of Zurich - Irchel Winterthurerstr. 190 CH-8057 Zurich, Switzerland email: [email protected] site: http://www.geo.uzh.ch/~mtomko mob: +41-788 629 558 tel: +41-44-6355256 fax: +41-44-6356848 ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Geotools-gt2-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
