[Gvsig_desarrolladores] exportar raster en bloques

Oscar Garcia oscarg en dielmo.com
Mar Ene 13 17:43:26 CET 2009




Hola nacho, gracias por tu contestación de ayer. Estuve profundizando y con
este código de más abajo e llegado a exportar teniendo capas de entrada en
ECW, pero cuando es de otro tipo como Tif me salta una excepción en la clase
GdalWriter la función writeByteBand. 

Aparte de eso para entradas ECW me recorta bien pero me cambia la banda R
por la banda B.

Estoy echo un lió. Bueno gracias más abajo dejo el código.


File InputRasterFile = new File(InputRasterFileName);
RasterDriver rasterDriver = (RasterDriver)
LayerFactory.getDM().getDriver("gvSIG Image Driver");
FLyrRaster capaRaster = LayerFactory.createLayer("prueba", rasterDriver,
InputRasterFile, Project.getDefaultProjection());
			
Grid grid = capaRaster.getGrid();
Extent ext = new Extent(grid.getExtent());
grid.setAreaOfInterest(ext.getMin().getX(), ext.getMax().getY(),ancho,alto);
RasterBuf buf = grid.getRasterBuf();

// salvado a geoRaster
String sFilename = folder_out + "prueba."+Outextension;
ext = new Extent(grid.getDataExtent());
IDataWriter dataWriter = new WriterBufferServer(buf);
GeoRasterWriter grw = GeoRasterWriter.getWriter(dataWriter, sFilename,
buf.getHeight(), nbands, ext,	10, buf.getWidth(), buf.getHeight(),
buf.getDataType());
			
grw.dataWrite();
grw.writeClose();


-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es
[mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de Nacho
Brodin
Enviado el: lunes, 12 de enero de 2009 17:03
Para: gvsig_desarrolladores en runas.cap.gva.es
Asunto: Re: [Gvsig_desarrolladores] exportar raster en bloques

Hola Oscar
Te comento como se hace para la versión 1.9 que es la que descargas del
trunk 
del repositorio aunque para la 1.2 es muy parecido.

GeoRasterWriter es la clase base de los escritores de raster y necesita un 
servidor de datos que lo alimente. El funcionamiento es el siguiente: te
creas 
una instancia de GeoRasterWrite, por ejemplo

GeoRasterWriter grw = GeoRasterWriter.getWriter(writerBufferServer,
fileNames, 
bandcount, affineTransform, width, height, dataType, params, proj);

El parámetro clave es writerBufferServer que es el servidor de datos, el
resto 
más o menos son obvios o puedes buscar más información por el código si no
los 
tienes claros.

WirterBufferServer es una clase que implementa el interfaz IDataWriter y que

tiene métodos readXXData. Cada vez que se escriba un bloque de datos 
GeoRasterWriter le pedirá más al servidor de datos (IDataWriter) y este los 
servirá a través de sus métodos read. El bloque servido en cada petición
será 
de ancho como todo el raster y el alto podrás definirlo. Por defecto la
altura 
de bloque es de RasterLibrary.blockHeight. Puedes usar un servidor de datos 
(IDataWriter) que ya esté hecho o hacerte uno para ti. Por ejemplo, la clase

WriterBufferServer es la que se usa para la exportación de recortes de capas

raster.

Finalmente para que funcione puedes añadir el siguiente código:

grw.dataWrite();

Esto le ordenará que escriba. Empezará pidiendo datos a su IDataWriter y
este 
le servirá un bloque, cuando acabe le pedirá el siguiente bloque y será 
IDataWriter el encargado de darselo ordenado.

grw.writeClose();

Esto cierra el dataset

Espero que te aclare algo aunque, evidentemente es una explicación muy 
simplificada y te tocará profundizar.

Saludos.

On Monday 12 January 2009 10:02:54 Oscar Garcia wrote:
> Hola lista, tenia interés en saber como a partir de un raster se puede
> subdividir este en bloques más pequeños.
>
>
>
> A la hora de exportar supongo que se debería usar GeoRasterWriter pero no
> consigo entenderlo del todo. ¿Alguien sabe como solucionar este problema?
>
>
>
> Gracias
>
>
>
> Oscar Garcia.

-- 
Nacho Brodin
Grupo desarrollo gvSIG.
IVER TI S.A.
C/ Lérida, 20
46005-Valencia
www.iver.es
www.gvsig.com

Este mensaje y sus archivos son confidenciales. No está permitida su
reproducción o distribución sin la autorización expresa de "IVER Tecnologías
de la Información". Si usted no es el destinatario previsto, queda
desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido
este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.







Más información sobre la lista de distribución gvSIG_desarrolladores