Hi Simone,
thanks for that. Indeed, my preferred use would be to pass around a 
serialized version of Geotiff - as mentioned.
 I know how to go from Geotiff reader to coverage and back. But is it 
possible to send a serialized version of a geotiff around? I have only 
used the geotiff reader/writer with files as arguments. It says it takes 
as input an Object. Can I output a generic object, that would be 
serialized, and decode it with the geotiffreader? Or, in other words - 
what type of object would be passed around?

I used to do:

File file = new File("C:\\dev\\GTViewshed\\tmp\\srtm38_03\\srtm_38_03.tif");

            GeoTiffReader reader = new GeoTiffReader(file);
and

        GeoTiffWriter writer = new GeoTiffWriter(file);

If I can do
GeoTiffWriter writer = new GeoTiffWriter(SomeSerializableOject);
GeoTiffReader reader = new GeoTiffReader(SomeSerializableObject);

that would be ideal.

Thanks,
Martin

Simone Giannecchini wrote:
> Ciao MArtin,
> serializing the envelope would not be generic enough, serializing the
> grid world instead would be, at least for georectified raster data.
> I'd would check the WorldFileReader class and the GeoTiffReader in
> order to understand how to go from raster + world file to a GC2D.
>
>
> 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 Fri, Apr 24, 2009 at 12:34 PM, Martin Tomko <[email protected]> 
> wrote:
>   
>> Even better, if I could serialize a referenced envelope, which should be
>> serializable already, that would be a quick workaround.
>> So in principle I should be able to create a TransportImage as you
>> mention, with the two elements (Rendered Image, ReferencedEnvelope), and
>> then to decode it I will deserialize, cast to TransportImage and extract
>> everything, right?
>>
>> Will give it a try, thanks! Still, a more generic solution would be
>> preferable.
>> Martin
>>
>> Christian Müller wrote:
>>     
>>> Another idea for a quick solution is to serialize a world file as well.
>>> A world file has only 6 lines, see here
>>> http://en.wikipedia.org/wiki/World_file
>>> class TransportImage implements Serializable {
>>>    SerializabelRenderedImage theImage;
>>>    Double[] wordlFileLines;
>>> }
>>> That is all you need to construct a georeferenced image.
>>> Simone, what is the quickest way to create a Coverage2D having the
>>> lines of a world file ?
>>>
>>>
>>>
>>> Martin Tomko writes:
>>>       
>>>> 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 &#45; New Free Runtime and 30 Day Trial
>>>> Check out the new simplified licensign option that enables unlimited
>>>> royalty&#45;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
>>>>         
>>>
>>>
>>>       
>> --
>> 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 &#45; New Free Runtime and 30 Day Trial
>> Check out the new simplified licensign option that enables unlimited
>> royalty&#45;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
>>
>>     
>
>
>   


-- 
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 &#45; New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty&#45;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

Reply via email to