Skip to main content

[JAI] Memory problem while creating large TIFF

5 replies [Last post]
Anonymous

Hi everybody, I have a problem trying to create a large 3 band "constant" TIFF file (10000 x 8000). I have tried to use the "constant" function, but it gives me an OutOfMemoryError while writing the image to a TIFF file. Does anybody know how to create it? Is there any other way / best way to do it? This is the code I've tried:

Byte[] bandValues = new Byte[3];
bandValues[0] = new Byte("0");
bandValues[1] = new Byte("0");
bandValues[2] = new Byte("0");
pb = new ParameterBlock();
pb.add(10000.0f);
pb.add(8000.0f);
pb.add(bandValues);
RenderedImage image = JAI.create("constant", pb);

ParameterBlock paramsEncode = new ParameterBlock();
TIFFEncodeParam tiffencParam = new TIFFEncodeParam();
tiffencParam.setCompression(TIFFEncodeParam.COMPRESSION_NONE);
tiffencParam.setWriteTiled(true);
tiffencParam.setTileSize(256,256);
salidaOS = new java.io.FileOutputStream(file);
paramsEncode.addSource(image);
paramsEncode.add(salidaOS);
paramsEncode.add("tiff");
paramsEncode.add(tiffencParam);
JAI.create("encode", paramsEncode);

Thank you in advance,
Alvaro.

La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.

The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.

*** SENER, Ingeniería y Sistemas ***
[att1.html]

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Romero Martinez, Alvaro

It works fine, thank you very much.

Will the ImageLayout work with all operations? If I define an ImageLayout with tiles in a RenderingHint for one operation then, would the image be completely calculated/loaded in memory before writing it to a file? Is there any document regarding RenderingHints and JAI relationship/use?

Alvaro.

-----Mensaje original-----
De: Brian Burkhalter [mailto:Brian.Burkhalter@Sun.COM]
Enviado el: martes, 24 de mayo de 2005 17:01
Para: interest@jai.dev.java.net
Asunto: RE: [JAI] Memory problem while creating large TIFF

You don't want to use a TiledImage. If all tiles are requested eventually then
eventually the entire image will be in memory.

What you want to do is to use an ImageLayout hint in a RenderingHints passed
to the "Constant" operation to set the dimensions of the tiles of the output
image of this op. Then when you write the image you should A) if using the JAI
TIFF encoder set the tile dimensions in the TIFFEncodeParam; B) if using the
JAI-Image I/O Tools TIFF plug-in set the tile dimensions in the
ImageWriteParam; or C) use the "ImageWrite" operation of JAI-Image I/O Tools
and apply one of the several approaches it allows to create a tiled image.

Brian

On Tue, 24 May 2005, Romero Martinez, Alvaro wrote:

> I forgot to say that I don't have enough memory (-Xmx is not the solution, I don't want to load the complete image in memory). I've tried to use a TiledImage, but I can't write it to a file either, it has the same OutOfMemory problem (I know the following code is quite inefficient, but the result image can't be written to a file either):
>
> TiledImage constant = new TiledImage (0, 0, col, rows, 0, 0, modSample, modColor);
> for (int x=0; x > {
> for (int y=0; y > {
> if (constant.getNumBands() == 3) {
> for (int b=0; b<3; b++)
> {
> constant.setSample(x,y,b,0);
> }
> }
> else {
> constant.setSample(x,y,0,0);
> }
> }
> }
>
> Alvaro.
>
> -----Mensaje original-----
> De: Nidel, Mike [mailto:mike.nidel@lmco.com]
> Enviado el: martes, 24 de mayo de 2005 14:00
> Para: interest@jai.dev.java.net
> Asunto: RE: [JAI] Memory problem while creating large TIFF
>
>
> Your image is large (240MB at minimum uncompressed) and thus you will need at least that much memory, plus enough application memory, to process the image if you are doing it in a way that requires the entire image to be in memory.
>
> As far as I can tell, your code should write a tiled TIFF without loading all the pixels in memory at one time. If you have enough memory, you might try increasing the maximum heap size with -Xmx300m for example. If this works, then your program is really trying to use all that memory and you should take a closer look to see if there is a memory inefficiency somewhere.
>
> Mike
>
>
> -----Original Message-----
> From: Romero Martinez, Alvaro [mailto:alvaro.romero@sener.es]
> Sent: Tuesday, May 24, 2005 7:55 AM
> To: interest@jai.dev.java.net
> Subject: [JAI] Memory problem while creating large TIFF
>
>
> Hi everybody, I have a problem trying to create a large 3 band "constant" TIFF file (10000 x 8000). I have tried to use the "constant" function, but it gives me an OutOfMemoryError while writing the image to a TIFF file. Does anybody know how to create it? Is there any other way / best way to do it? This is the code I've tried:
>
> Byte[] bandValues = new Byte[3];
> bandValues[0] = new Byte("0");
> bandValues[1] = new Byte("0");
> bandValues[2] = new Byte("0");
> pb = new ParameterBlock();
> pb.add(10000.0f);
> pb.add(8000.0f);
> pb.add(bandValues);
> RenderedImage image = JAI.create("constant", pb);
>
> ParameterBlock paramsEncode = new ParameterBlock();
> TIFFEncodeParam tiffencParam = new TIFFEncodeParam();
> tiffencParam.setCompression(TIFFEncodeParam.COMPRESSION_NONE);
> tiffencParam.setWriteTiled(true);
> tiffencParam.setTileSize(256,256);
> salidaOS = new java.io.FileOutputStream(file);
> paramsEncode.addSource(image);
> paramsEncode.add(salidaOS);
> paramsEncode.add("tiff");
> paramsEncode.add(tiffencParam);
> JAI.create("encode", paramsEncode);
>
> Thank you in advance,
> Alvaro.
>
>
> La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.
>
> The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.
>
> *** SENER, Ingeniería y Sistemas ***
>
>
>
> La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.
>
> The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.
>
> *** SENER, Ingeniería y Sistemas ***
>

----------------
Brian Burkhalter
Advanced Development, Graphics and Media
Software Chief Technology Office
Sun Microsystems, Inc.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This email message is for the sole use of the intended recipient(s)
and may contain confidential and privileged information. Any
unauthorized review, use, disclosure or distribution is prohibited.
If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net
For additional commands, e-mail: interest-help@jai.dev.java.net

La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.

The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.

*** SENER, Ingeniería y Sistemas ***

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net
For additional commands, e-mail: interest-help@jai.dev.java.net

Brian Burkhalter

On Wed, 25 May 2005, Romero Martinez, Alvaro wrote:

> It works fine, thank you very much.

Great!

> Will the ImageLayout work with all operations? If I define an ImageLayout with tiles in a RenderingHint for one operation then, would the image be completely calculated/loaded in memory before writing it to a file? Is there any document regarding RenderingHints and JAI relationship/use?

An ImageLayout is a 'hint' so if an operation is capable of observing it it
will be observed. It specifies the layout of the destination image. It does
not have anything to do with whether the image is loaded completely into
memory except as a by product of how data requested from the image map into
the subdivision of the image into tiles. When a data sink of the image be that
a file writer or other operation requests a rectangular region of data then
all tiles which overlap that region will be computed.

Brian

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net
For additional commands, e-mail: interest-help@jai.dev.java.net

Romero Martinez, Alvaro

I forgot to say that I don't have enough memory (-Xmx is not the solution, I don't want to load the complete image in memory). I've tried to use a TiledImage, but I can't write it to a file either, it has the same OutOfMemory problem (I know the following code is quite inefficient, but the result image can't be written to a file either):

TiledImage constant = new TiledImage (0, 0, col, rows, 0, 0, modSample, modColor);
for (int x=0; x {
for (int y=0; y {
if (constant.getNumBands() == 3) {
for (int b=0; b<3; b++)
{
constant.setSample(x,y,b,0);
}
}
else {
constant.setSample(x,y,0,0);
}
}
}

Alvaro.

-----Mensaje original-----
De: Nidel, Mike [mailto:mike.nidel@lmco.com]
Enviado el: martes, 24 de mayo de 2005 14:00
Para: interest@jai.dev.java.net
Asunto: RE: [JAI] Memory problem while creating large TIFF

Your image is large (240MB at minimum uncompressed) and thus you will need at least that much memory, plus enough application memory, to process the image if you are doing it in a way that requires the entire image to be in memory.

As far as I can tell, your code should write a tiled TIFF without loading all the pixels in memory at one time. If you have enough memory, you might try increasing the maximum heap size with -Xmx300m for example. If this works, then your program is really trying to use all that memory and you should take a closer look to see if there is a memory inefficiency somewhere.

Mike

-----Original Message-----
From: Romero Martinez, Alvaro [mailto:alvaro.romero@sener.es]
Sent: Tuesday, May 24, 2005 7:55 AM
To: interest@jai.dev.java.net
Subject: [JAI] Memory problem while creating large TIFF

Hi everybody, I have a problem trying to create a large 3 band "constant" TIFF file (10000 x 8000). I have tried to use the "constant" function, but it gives me an OutOfMemoryError while writing the image to a TIFF file. Does anybody know how to create it? Is there any other way / best way to do it? This is the code I've tried:

Byte[] bandValues = new Byte[3];
bandValues[0] = new Byte("0");
bandValues[1] = new Byte("0");
bandValues[2] = new Byte("0");
pb = new ParameterBlock();
pb.add(10000.0f);
pb.add(8000.0f);
pb.add(bandValues);
RenderedImage image = JAI.create("constant", pb);

ParameterBlock paramsEncode = new ParameterBlock();
TIFFEncodeParam tiffencParam = new TIFFEncodeParam();
tiffencParam.setCompression(TIFFEncodeParam.COMPRESSION_NONE);
tiffencParam.setWriteTiled(true);
tiffencParam.setTileSize(256,256);
salidaOS = new java.io.FileOutputStream(file);
paramsEncode.addSource(image);
paramsEncode.add(salidaOS);
paramsEncode.add("tiff");
paramsEncode.add(tiffencParam);
JAI.create("encode", paramsEncode);

Thank you in advance,
Alvaro.

La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.

The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.

*** SENER, Ingeniería y Sistemas ***

La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.

The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.

*** SENER, Ingeniería y Sistemas ***
[att1.html]

Brian Burkhalter

You don't want to use a TiledImage. If all tiles are requested eventually then
eventually the entire image will be in memory.

What you want to do is to use an ImageLayout hint in a RenderingHints passed
to the "Constant" operation to set the dimensions of the tiles of the output
image of this op. Then when you write the image you should A) if using the JAI
TIFF encoder set the tile dimensions in the TIFFEncodeParam; B) if using the
JAI-Image I/O Tools TIFF plug-in set the tile dimensions in the
ImageWriteParam; or C) use the "ImageWrite" operation of JAI-Image I/O Tools
and apply one of the several approaches it allows to create a tiled image.

Brian

On Tue, 24 May 2005, Romero Martinez, Alvaro wrote:

> I forgot to say that I don't have enough memory (-Xmx is not the solution, I don't want to load the complete image in memory). I've tried to use a TiledImage, but I can't write it to a file either, it has the same OutOfMemory problem (I know the following code is quite inefficient, but the result image can't be written to a file either):
>
> TiledImage constant = new TiledImage (0, 0, col, rows, 0, 0, modSample, modColor);
> for (int x=0; x > {
> for (int y=0; y > {
> if (constant.getNumBands() == 3) {
> for (int b=0; b<3; b++)
> {
> constant.setSample(x,y,b,0);
> }
> }
> else {
> constant.setSample(x,y,0,0);
> }
> }
> }
>
> Alvaro.
>
> -----Mensaje original-----
> De: Nidel, Mike [mailto:mike.nidel@lmco.com]
> Enviado el: martes, 24 de mayo de 2005 14:00
> Para: interest@jai.dev.java.net
> Asunto: RE: [JAI] Memory problem while creating large TIFF
>
>
> Your image is large (240MB at minimum uncompressed) and thus you will need at least that much memory, plus enough application memory, to process the image if you are doing it in a way that requires the entire image to be in memory.
>
> As far as I can tell, your code should write a tiled TIFF without loading all the pixels in memory at one time. If you have enough memory, you might try increasing the maximum heap size with -Xmx300m for example. If this works, then your program is really trying to use all that memory and you should take a closer look to see if there is a memory inefficiency somewhere.
>
> Mike
>
>
> -----Original Message-----
> From: Romero Martinez, Alvaro [mailto:alvaro.romero@sener.es]
> Sent: Tuesday, May 24, 2005 7:55 AM
> To: interest@jai.dev.java.net
> Subject: [JAI] Memory problem while creating large TIFF
>
>
> Hi everybody, I have a problem trying to create a large 3 band "constant" TIFF file (10000 x 8000). I have tried to use the "constant" function, but it gives me an OutOfMemoryError while writing the image to a TIFF file. Does anybody know how to create it? Is there any other way / best way to do it? This is the code I've tried:
>
> Byte[] bandValues = new Byte[3];
> bandValues[0] = new Byte("0");
> bandValues[1] = new Byte("0");
> bandValues[2] = new Byte("0");
> pb = new ParameterBlock();
> pb.add(10000.0f);
> pb.add(8000.0f);
> pb.add(bandValues);
> RenderedImage image = JAI.create("constant", pb);
>
> ParameterBlock paramsEncode = new ParameterBlock();
> TIFFEncodeParam tiffencParam = new TIFFEncodeParam();
> tiffencParam.setCompression(TIFFEncodeParam.COMPRESSION_NONE);
> tiffencParam.setWriteTiled(true);
> tiffencParam.setTileSize(256,256);
> salidaOS = new java.io.FileOutputStream(file);
> paramsEncode.addSource(image);
> paramsEncode.add(salidaOS);
> paramsEncode.add("tiff");
> paramsEncode.add(tiffencParam);
> JAI.create("encode", paramsEncode);
>
> Thank you in advance,
> Alvaro.
>
>
> La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.
>
> The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.
>
> *** SENER, Ingeniería y Sistemas ***
>
>
>
> La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.
>
> The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.
>
> *** SENER, Ingeniería y Sistemas ***
>

----------------
Brian Burkhalter
Advanced Development, Graphics and Media
Software Chief Technology Office
Sun Microsystems, Inc.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This email message is for the sole use of the intended recipient(s)
and may contain confidential and privileged information. Any
unauthorized review, use, disclosure or distribution is prohibited.
If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net
For additional commands, e-mail: interest-help@jai.dev.java.net

Nidel, Mike

Your image is large (240MB at minimum uncompressed) and thus you will need at least that much memory, plus enough application memory, to process the image if you are doing it in a way that requires the entire image to be in memory.

As far as I can tell, your code should write a tiled TIFF without loading all the pixels in memory at one time. If you have enough memory, you might try increasing the maximum heap size with -Xmx300m for example. If this works, then your program is really trying to use all that memory and you should take a closer look to see if there is a memory inefficiency somewhere.

Mike

-----Original Message-----
From: Romero Martinez, Alvaro [mailto:alvaro.romero@sener.es]
Sent: Tuesday, May 24, 2005 7:55 AM
To: interest@jai.dev.java.net
Subject: [JAI] Memory problem while creating large TIFF

Hi everybody, I have a problem trying to create a large 3 band "constant" TIFF file (10000 x 8000). I have tried to use the "constant" function, but it gives me an OutOfMemoryError while writing the image to a TIFF file. Does anybody know how to create it? Is there any other way / best way to do it? This is the code I've tried:

Byte[] bandValues = new Byte[3];
bandValues[0] = new Byte("0");
bandValues[1] = new Byte("0");
bandValues[2] = new Byte("0");
pb = new ParameterBlock();
pb.add(10000.0f);
pb.add(8000.0f);
pb.add(bandValues);
RenderedImage image = JAI.create("constant", pb);

ParameterBlock paramsEncode = new ParameterBlock();
TIFFEncodeParam tiffencParam = new TIFFEncodeParam();
tiffencParam.setCompression(TIFFEncodeParam.COMPRESSION_NONE);
tiffencParam.setWriteTiled(true);
tiffencParam.setTileSize(256,256);
salidaOS = new java.io.FileOutputStream(file);
paramsEncode.addSource(image);
paramsEncode.add(salidaOS);
paramsEncode.add("tiff");
paramsEncode.add(tiffencParam);
JAI.create("encode", paramsEncode);

Thank you in advance,
Alvaro.

La posible información que pudiera contener este comunicado, relacionada con datos de carácter personal, se encuentra amparada en la LOPD 15/99, que compromete a no utilizar estos datos para fines que no sean estrictamente necesarios para la realización de su cometido, añadiendo además la absoluta confidencialidad y exclusividad, quedando prohibida a cualquier persona su revelación, copia, distribución o el ejercicio de cualquier acción relativa a su contenido. Si recibe este correo electrónico erróneamente ruego nos lo reenvíe y lo elimine de todos sus archivos.

The possible information that this document could contain, related to personal data, is protected by the Data Protection Law 15/99, which obliges the recipient not to use such information for aims which are not strictly for the original intended purpose. In addition, the absolute confidentiality and exclusivity, forbids any user to disclose, copy, distribute or exercise any related action to its content. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism.

*** SENER, Ingeniería y Sistemas ***

[att1.html]