org.cresques.io
Class GeoRasterFile

java.lang.Object
  extended byorg.cresques.io.GeoFile
      extended byorg.cresques.io.GeoRasterFile
All Implemented Interfaces:
Extent.Has, Projected
Direct Known Subclasses:
EcwFile, GdalFile, MapServerInputStream, MrSidFile, TifGeoRefFile

public abstract class GeoRasterFile
extends GeoFile

Manejador de ficheros raster georeferenciados. Esta clase abstracta es el ancestro de todas las clases que proporcionan soporte para ficheros raster georeferenciados.
Actua tambien como una 'Fabrica', ocultando al cliente la manera en que se ha implementado ese manejo. Una clase nueva que soportara un nuevo tipo de raster tendría que registrar su extensión o extensiones usando el método @see registerExtension.

Author:
"Luis W. Sevilla" *

Field Summary
protected  int bandCount
          Número de bandas de la imagen
protected  int bBandNr
          Asignación de banda del Azul a una banda de la imagen
static int BLUE_BAND
          Flag que representa a la banda del Azul
protected  boolean doTransparency
           
protected  int gBandNr
          Asignación de banda del Verde a una banda de la imagen
static int GREEN_BAND
          Flag que representa a la banda del Verde
protected  int rBandNr
          Asignación de banda del Rojo a una banda de la imagen
static int RED_BAND
          Flag que representa a la banda del Rojo
protected  PixelFilter tFilter
          Filtro para raster.
protected  java.awt.Component updatable
           
 
Fields inherited from class org.cresques.io.GeoFile
bytesReaded, extent, lineCnt
 
Constructor Summary
GeoRasterFile(IProjection proj, java.lang.String name)
          Constructor
 
Method Summary
abstract  void close()
          Cierra el fichero y libera los recursos.
static double[] cornersToWorldFile(java.awt.geom.Point2D[] esq, java.awt.Dimension size)
          Calcula los parámetros de un worl file a partir de las esquinas del raster. 1.
static boolean fileIsSupported(java.lang.String fName)
          Tipo de fichero soportado.
 int getAlpha()
           
 int getBand(int flag)
          Devuelve el colorBand activo en la banda especificada.
 int getBandCount()
           
abstract  int getBlockSize()
           
static PxContour getContour(java.lang.String fName, java.lang.String name, IProjection proj)
           
abstract  java.lang.Object getData(int x, int y, int band)
          Obtiene el valor del raster en la coordenada que se le pasa.
 int getDataType()
           
abstract  int getHeight()
          Obtiene el ancho de la imagen
 IObjList getObjects()
           
 boolean getTransparency()
           
abstract  Extent getView()
          Obtiene el extent asignado
abstract  int getWidth()
          Obtiene el ancho de la imagen
abstract  byte[] getWindow(int ulX, int ulY, int sizeX, int sizeY, int band)
           
abstract  GeoFile load()
          Carga un fichero raster.
static GeoRasterFile openFile(IProjection proj, java.lang.String fName)
          Factoria para abrir distintos tipos de raster.
static java.lang.String printWF(java.lang.String fName, java.awt.geom.Point2D[] esq, java.awt.Dimension sz)
           
static void registerExtension(java.lang.String ext, java.lang.Class clase)
          Registra una clase que soporta una extensión raster.
abstract  void reProject(ICoordTrans rp)
          Reproyección.
static void saveWF(java.lang.String fName, java.lang.String data)
           
 void setAlpha(int alpha)
           
 void setBand(int flag, int bandNr)
          Asocia un colorBand al rojo, verde o azul.
 void setDataType(int dataType)
           
 void setTransparency(boolean t)
           
 void setTransparency(int t)
          Asigna un valor de transparencia
 void setUpdatable(java.awt.Component c)
           
abstract  void setView(Extent e)
          Asigna un nuevo Extent
abstract  java.awt.Image updateImage(int width, int height, ICoordTrans rp)
          Actualiza la imagen
abstract  java.awt.Image updateImage(int width, int height, ICoordTrans rp, java.awt.Image img, int origBand, int destBand)
          Actualiza la/s banda/s especificadas en la imagen.
 
Methods inherited from class org.cresques.io.GeoFile
filterWS, getExtent, getFileSize, getName, getProjection, getTime, setFileSize, setName, setProjection
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RED_BAND

public static final int RED_BAND
Flag que representa a la banda del Rojo

See Also:
Constant Field Values

GREEN_BAND

public static final int GREEN_BAND
Flag que representa a la banda del Verde

See Also:
Constant Field Values

BLUE_BAND

public static final int BLUE_BAND
Flag que representa a la banda del Azul

See Also:
Constant Field Values

updatable

protected java.awt.Component updatable

doTransparency

protected boolean doTransparency

tFilter

protected PixelFilter tFilter
Filtro para raster. Permite eliminar la franja inutil alrededor de un raster girado o de un mosaico de borde irregular. Funciona bien solo con raster en tonos de gris, porque se basa que el valor del pixel no supere un determinado valor 'umbral' que se le pasa al constructor. Desarrollado para 'limpiar' los bordes de los mosaicos del SIG Oleicola. Para ese caso los parámetros del constructo son: PixelFilter(0x10ffff00, 0xff000000, 0xf0f0f0);


rBandNr

protected int rBandNr
Asignación de banda del Rojo a una banda de la imagen


gBandNr

protected int gBandNr
Asignación de banda del Verde a una banda de la imagen


bBandNr

protected int bBandNr
Asignación de banda del Azul a una banda de la imagen


bandCount

protected int bandCount
Número de bandas de la imagen

Constructor Detail

GeoRasterFile

public GeoRasterFile(IProjection proj,
                     java.lang.String name)
Constructor

Parameters:
proj - Proyección
name - Nombre del fichero de imagen.
Method Detail

openFile

public static GeoRasterFile openFile(IProjection proj,
                                     java.lang.String fName)
Factoria para abrir distintos tipos de raster.

Parameters:
proj - Proyección en la que está el raster.
fName - Nombre del fichero.
Returns:
GeoRasterFile, o null si hay problemas.

registerExtension

public static void registerExtension(java.lang.String ext,
                                     java.lang.Class clase)
Registra una clase que soporta una extensión raster.

Parameters:
ext - extensión soportada.
clase - clase que la soporta.

fileIsSupported

public static boolean fileIsSupported(java.lang.String fName)
Tipo de fichero soportado. Devuelve true si el tipo de fichero (extension) está soportado, si no devuelve false.

Parameters:
fName - Fichero raster
Returns:
true si está soportado, si no false.

load

public abstract GeoFile load()
Carga un fichero raster. Puede usarse para calcular el extent e instanciar un objeto de este tipo.

Specified by:
load in class GeoFile

close

public abstract void close()
Cierra el fichero y libera los recursos.

Specified by:
close in class GeoFile

getContour

public static PxContour getContour(java.lang.String fName,
                                   java.lang.String name,
                                   IProjection proj)

getWidth

public abstract int getWidth()
Obtiene el ancho de la imagen

Returns:
Ancho de la imagen

getHeight

public abstract int getHeight()
Obtiene el ancho de la imagen

Returns:
Ancho de la imagen

reProject

public abstract void reProject(ICoordTrans rp)
Reproyección.

Specified by:
reProject in interface Projected
Specified by:
reProject in class GeoFile
Parameters:
rp - Coordenadas de la transformación

setView

public abstract void setView(Extent e)
Asigna un nuevo Extent

Parameters:
e - Extent

getView

public abstract Extent getView()
Obtiene el extent asignado

Returns:
Extent

setTransparency

public void setTransparency(boolean t)

setTransparency

public void setTransparency(int t)
Asigna un valor de transparencia

Parameters:
t - Valor de transparencia

getTransparency

public boolean getTransparency()

setAlpha

public void setAlpha(int alpha)

getAlpha

public int getAlpha()

setUpdatable

public void setUpdatable(java.awt.Component c)

updateImage

public abstract java.awt.Image updateImage(int width,
                                           int height,
                                           ICoordTrans rp)
Actualiza la imagen

Parameters:
width - ancho
height - alto
rp - Reproyección
Returns:
img

getData

public abstract java.lang.Object getData(int x,
                                         int y,
                                         int band)
Obtiene el valor del raster en la coordenada que se le pasa. El valor será Double, Int, Byte, etc. dependiendo del tipo de raster.

Parameters:
x - coordenada X
y - coordenada Y
Returns:

updateImage

public abstract java.awt.Image updateImage(int width,
                                           int height,
                                           ICoordTrans rp,
                                           java.awt.Image img,
                                           int origBand,
                                           int destBand)
Actualiza la/s banda/s especificadas en la imagen.

Parameters:
width - ancho
height - alto
rp - reproyección
img - imagen
Returns:
img

getBandCount

public int getBandCount()

setBand

public void setBand(int flag,
                    int bandNr)
Asocia un colorBand al rojo, verde o azul.

Parameters:
flag - cual (o cuales) de las bandas.

getBand

public int getBand(int flag)
Devuelve el colorBand activo en la banda especificada.

Parameters:
flag - banda.

getDataType

public int getDataType()
Returns:
Returns the dataType.

setDataType

public void setDataType(int dataType)
Parameters:
dataType - The dataType to set.

getObjects

public IObjList getObjects()
Specified by:
getObjects in class GeoFile

cornersToWorldFile

public static double[] cornersToWorldFile(java.awt.geom.Point2D[] esq,
                                          java.awt.Dimension size)
Calcula los parámetros de un worl file a partir de las esquinas del raster. 1. X pixel size A 2. X rotation term D 3. Y rotation term B 4. Y pixel size E 5. X coordinate of upper left corner C 6. Y coordinate of upper left corner F where the real-world coordinates x',y' can be calculated from the image coordinates x,y with the equations x' = Ax + By + C and y' = Dx + Ey + F. The signs of the first 4 parameters depend on the orientation of the image. In the usual case where north is more or less at the top of the image, the X pixel size will be positive and the Y pixel size will be negative. For a south-up image, these signs would be reversed. You can calculate the World file parameters yourself based on the corner coordinates. The X and Y pixel sizes can be determined simply by dividing the distance between two adjacent corners by the number of columns or rows in the image. The rotation terms are calculated with these equations: # B = (A * number_of_columns + C - lower_right_x') / number_of_rows * -1 # D = (E * number_of_rows + F - lower_right_y') / number_of_columns * -1

Returns:

printWF

public static java.lang.String printWF(java.lang.String fName,
                                       java.awt.geom.Point2D[] esq,
                                       java.awt.Dimension sz)

saveWF

public static void saveWF(java.lang.String fName,
                          java.lang.String data)
                   throws java.io.IOException
Throws:
java.io.IOException

getWindow

public abstract byte[] getWindow(int ulX,
                                 int ulY,
                                 int sizeX,
                                 int sizeY,
                                 int band)

getBlockSize

public abstract int getBlockSize()