[Gvsig_desarrolladores] exportar raster en bloques

Nacho Brodin ignacio.brodin en iver.es
Mie Ene 14 08:25:19 CET 2009


Hola
Te comento un par de cosas por si te son de utilidad.

Normalmente se exporta por bloques para evitar cargar todo el raster en 
memoria cuando este es muy grande. Has de tener en cuenta que si cargas el 
Grid de golpe antes de empezar te estás limitando la cantidad de datos leídos. 
Lo recomendable sería que el servidor de datos leyera solo de la fuente de 
datos el trozo que se le pide en cada momento. Si los trozos a exportar van a 
ser siempre pequeños pues no tendrás este problema.

Con respecto a excepción con writeByteBand lo único que se me ocurre, viendo 
el código que pones es que nbands no sea correcto. Si vas a escribir el mismo 
número de bandas que el buffer de entrada haz un buf.getBandCount() (creo que 
se llama así) en la creación de GeoRasterWriter. Otra posibilidad es que el 
tipo de dato de la entrada no sea compatible con el de la salida pero por tu 
código no parece que vaya ser ese el problema.

Saludos.

On Tuesday 13 January 2009 17:43:26 Oscar Garcia wrote:
> 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();

-- 
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