schmitzm.data
Class WritableGridRaster

java.lang.Object
  extended by java.awt.image.Raster
      extended by java.awt.image.WritableRaster
          extended by schmitzm.data.WritableGridRaster
All Implemented Interfaces:
LateLoadable, ReadableGrid, WritableGrid

public class WritableGridRaster
extends WritableRaster
implements WritableGrid

Diese Klasse stellt eine Implementierung von WritableGrid dar und basiert auf der Standard-Java Raster-Implementierung WritableRaster. Auch wenn WritableRaster prinzipell mehrere Dimensionen (Baender) zulaesst, sind die Zugriffsmethoden dieser Klasse auf ein Band beschraenkt.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
protected  CoordinateReferenceSystem crs
          Speichert das CRS des Rasters.
protected  Rectangle2D envelope
          Speichert die Geo-Referenz (Longitude, Latitude, Breite, Hoehe) des Rasters.
static int RASTER_DIM
          Die Dimension des Rasters (2).
 
Fields inherited from class java.awt.image.Raster
dataBuffer, height, minX, minY, numBands, numDataElements, parent, sampleModel, sampleModelTranslateX, sampleModelTranslateY, width
 
Constructor Summary
WritableGridRaster(int dataType, int rasterWidth, int rasterHeight, double lon, double lat, double realWidth, double realHeight, CoordinateReferenceSystem crs)
          Erzeugt ein neues Raster.
WritableGridRaster(int dataType, int minX, int minY, int rasterWidth, int rasterHeight, double lon, double lat, double realWidth, double realHeight, CoordinateReferenceSystem crs)
          Erzeugt ein neues Raster.
WritableGridRaster(int dataType, int minX, int minY, int rasterWidth, int rasterHeight, Rectangle2D envelope)
          Erzeugt ein neues Raster in WGS84.
WritableGridRaster(int dataType, int minX, int minY, int rasterWidth, int rasterHeight, Rectangle2D envelope, CoordinateReferenceSystem crs)
          Erzeugt ein neues Raster.
WritableGridRaster(int dataType, int rasterWidth, int rasterHeight, Rectangle2D envelope, CoordinateReferenceSystem crs)
          Erzeugt ein neues Raster.
WritableGridRaster(WritableRaster raster, Rectangle2D envelope)
          Erzeugt ein georeferenziertes Raster aus einem nicht-georeferenzierten.
WritableGridRaster(WritableRaster raster, Rectangle2D envelope, CoordinateReferenceSystem crs)
          Erzeugt ein georeferenziertes Raster aus einem nicht-georeferenzierten.
 
Method Summary
 double convertRasterToReal(int cell, int dim)
          Konvertiert eine Zellennummer in reale Koordinate.
 int convertRealToRaster(double coord, int dim)
          Konvertiert eine reale Koordinate in eine Zellennummer.
 void dispose()
          Macht zur Zeit noch nichts.
 double getCellHeight()
          Liefert die reale Breite einer Rasterzelle.
 double getCellWidth()
          Liefert die reale Breite einer Rasterzelle.
 CoordinateReferenceSystem getCoordinateReferenceSystem()
          Liefert das CoordinateReferenceSystem in dem das Raster dargestellt ist.
 Rectangle2D getEnvelope()
          Liefert die Georeferenz (Lat/Lon) und Ausdehnung des Rasters.
 Object getGridSample(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 byte getGridSampleAsByte(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 double getGridSampleAsDouble(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 float getGridSampleAsFloat(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 int getGridSampleAsInt(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 long getGridSampleAsLong(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 short getGridSampleAsShort(double... coord)
          Liefert einen Wert des Rasters ueber Geo-Koordinaten.
 Object getRasterSample(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 byte getRasterSampleAsByte(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 double getRasterSampleAsDouble(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 float getRasterSampleAsFloat(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 int getRasterSampleAsInt(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 long getRasterSampleAsLong(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 short getRasterSampleAsShort(int... cell)
          Liefert einen Wert des Rasters ueber Raster-Koordinaten.
 double getRealHeight()
          Liefert die reale Breite des Rasters.
 double getRealWidth()
          Liefert die reale Breite des Rasters.
 int getSampleType()
          Liefert die Art der Daten, die im Raster gespeichert werden koennen.
 double getX()
          Liefert die X-Koordinate der Georeferenz (Longitude) der linken unteren Ecke des Rasters (Südwest).
 double getY()
          Liefert die Y-Koordinate der Georeferenz (Latitude) der linken unteren Ecke des Rasters (Südwest).
 boolean isLateLoadable()
          This class does not support late loading itself!
 void loadData()
          This class does not support late loading!
 void setGridSample(Object value, double... coord)
          Setzt einen Wert des Rasters ueber Geo-Koordinaten.
 void setRasterSample(Object value, int... cell)
          Setzt einen Wert im Raster ueber Raster-Koordinaten.
 void unloadData()
          Does nothing!
 
Methods inherited from class java.awt.image.WritableRaster
createWritableChild, createWritableTranslatedChild, getWritableParent, setDataElements, setDataElements, setDataElements, setPixel, setPixel, setPixel, setPixels, setPixels, setPixels, setRect, setRect, setSample, setSample, setSample, setSamples, setSamples, setSamples
 
Methods inherited from class java.awt.image.Raster
createBandedRaster, createBandedRaster, createBandedRaster, createChild, createCompatibleWritableRaster, createCompatibleWritableRaster, createCompatibleWritableRaster, createCompatibleWritableRaster, createInterleavedRaster, createInterleavedRaster, createInterleavedRaster, createPackedRaster, createPackedRaster, createPackedRaster, createPackedRaster, createRaster, createTranslatedChild, createWritableRaster, createWritableRaster, getBounds, getDataBuffer, getDataElements, getDataElements, getHeight, getMinX, getMinY, getNumBands, getNumDataElements, getParent, getPixel, getPixel, getPixel, getPixels, getPixels, getPixels, getSample, getSampleDouble, getSampleFloat, getSampleModel, getSampleModelTranslateX, getSampleModelTranslateY, getSamples, getSamples, getSamples, getTransferType, getWidth
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface schmitzm.data.ReadableGrid
getHeight, getMinX, getMinY, getWidth
 

Field Detail

RASTER_DIM

public static final int RASTER_DIM
Die Dimension des Rasters (2).

See Also:
Constant Field Values

envelope

protected Rectangle2D envelope
Speichert die Geo-Referenz (Longitude, Latitude, Breite, Hoehe) des Rasters.


crs

protected CoordinateReferenceSystem crs
Speichert das CRS des Rasters. Default ist WGS84.

Constructor Detail

WritableGridRaster

public WritableGridRaster(WritableRaster raster,
                          Rectangle2D envelope,
                          CoordinateReferenceSystem crs)
Erzeugt ein georeferenziertes Raster aus einem nicht-georeferenzierten.

Parameters:
raster - Datenbasis fuer das Raster
envelope - Georeferenz des Rasters (Longitude = X-Koordinate, Latitude = Y-Koordinate, Breite und Hoehe des Rasters in Metern)
crs - CoordinateReferenceSystem des Rasters
See Also:
DataBuffer

WritableGridRaster

public WritableGridRaster(WritableRaster raster,
                          Rectangle2D envelope)
Erzeugt ein georeferenziertes Raster aus einem nicht-georeferenzierten. Als CRS wird WGS84 verwendet.

Parameters:
raster - Datenbasis fuer das Raster
envelope - Georeferenz des Rasters (Longitude = X-Koordinate, Latitude = Y-Koordinate, Breite und Hoehe des Rasters in Metern)
See Also:
DataBuffer

WritableGridRaster

public WritableGridRaster(int dataType,
                          int minX,
                          int minY,
                          int rasterWidth,
                          int rasterHeight,
                          Rectangle2D envelope,
                          CoordinateReferenceSystem crs)
Erzeugt ein neues Raster.

Parameters:
dataType - Im Raster zu speichernder Datentyp (siehe DataBuffer)
minX - Raster-Index der ersten Zelle in X-Richtung
minY - Raster-Index der ersten Zelle in Y-Richtung
rasterWidth - Breite des Rasters (in Zellen)
rasterHeight - Hoehe des Rasters (in Zellen)
envelope - Georeferenz des Rasters (Longitude = X-Koordinate, Latitude = Y-Koordinate, Breite und Hoehe des Rasters in Metern)
crs - CoordinateReferenceSystem des Rasters
See Also:
DataBuffer

WritableGridRaster

public WritableGridRaster(int dataType,
                          int minX,
                          int minY,
                          int rasterWidth,
                          int rasterHeight,
                          Rectangle2D envelope)
Erzeugt ein neues Raster in WGS84.

Parameters:
dataType - Im Raster zu speichernder Datentyp (siehe DataBuffer)
minX - Raster-Index der ersten Zelle in X-Richtung
minY - Raster-Index der ersten Zelle in Y-Richtung
rasterWidth - Breite des Rasters (in Zellen)
rasterHeight - Hoehe des Rasters (in Zellen)
envelope - Georeferenz des Rasters (Longitude = X-Koordinate, Latitude = Y-Koordinate, Breite und Hoehe des Rasters in Metern)
See Also:
DataBuffer

WritableGridRaster

public WritableGridRaster(int dataType,
                          int minX,
                          int minY,
                          int rasterWidth,
                          int rasterHeight,
                          double lon,
                          double lat,
                          double realWidth,
                          double realHeight,
                          CoordinateReferenceSystem crs)
Erzeugt ein neues Raster.

Parameters:
dataType - Im Raster zu speichernder Datentyp (siehe DataBuffer)
minX - Raster-Index der ersten Zelle in X-Richtung
minY - Raster-Index der ersten Zelle in Y-Richtung
rasterWidth - Breite des Rasters (in Zellen)
rasterHeight - Hoehe des Rasters (in Zellen)
lon - Georeferenz (Longitude = X-Koordinate)
lat - Georeferenz (Latitude = Y-Koordinate)
realWidth - Breite des Rasters (in Metern)
realHeight - Hoehe des Rasters (in Metern)
crs - CoordinateReferenceSystem des Rasters
See Also:
DataBuffer

WritableGridRaster

public WritableGridRaster(int dataType,
                          int rasterWidth,
                          int rasterHeight,
                          double lon,
                          double lat,
                          double realWidth,
                          double realHeight,
                          CoordinateReferenceSystem crs)
Erzeugt ein neues Raster.

Parameters:
dataType - Im Raster zu speichernder Datentyp (siehe DataBuffer)
rasterWidth - Breite des Rasters (in Zellen)
rasterHeight - Hoehe des Rasters (in Zellen)
lon - Georeferenz (Longitude = X-Koordinate)
lat - Georeferenz (Latitude = Y-Koordinate)
realWidth - Breite des Rasters (in Metern)
realHeight - Hoehe des Rasters (in Metern)
crs - CoordinateReferenceSystem des Rasters
See Also:
DataBuffer

WritableGridRaster

public WritableGridRaster(int dataType,
                          int rasterWidth,
                          int rasterHeight,
                          Rectangle2D envelope,
                          CoordinateReferenceSystem crs)
Erzeugt ein neues Raster.

Parameters:
dataType - Im Raster zu speichernder Datentyp (siehe DataBuffer)
rasterWidth - Breite des Rasters (in Zellen)
rasterHeight - Hoehe des Rasters (in Zellen)
envelope - Georeferenz des Rasters (Longitude = X-Koordinate, Latitude = Y-Koordinate, Breite und Hoehe des Rasters in Metern)
crs - CoordinateReferenceSystem des Rasters
See Also:
DataBuffer
Method Detail

dispose

public void dispose()
Macht zur Zeit noch nichts.

Specified by:
dispose in interface ReadableGrid

getCoordinateReferenceSystem

public CoordinateReferenceSystem getCoordinateReferenceSystem()
Liefert das CoordinateReferenceSystem in dem das Raster dargestellt ist.

Specified by:
getCoordinateReferenceSystem in interface ReadableGrid

getX

public double getX()
Liefert die X-Koordinate der Georeferenz (Longitude) der linken unteren Ecke des Rasters (Südwest). ((offtopic: Südwest ist das Gegenteil von Nördost))

Specified by:
getX in interface ReadableGrid

getY

public double getY()
Liefert die Y-Koordinate der Georeferenz (Latitude) der linken unteren Ecke des Rasters (Südwest).

Specified by:
getY in interface ReadableGrid

getRealWidth

public double getRealWidth()
Liefert die reale Breite des Rasters.

Specified by:
getRealWidth in interface ReadableGrid

getRealHeight

public double getRealHeight()
Liefert die reale Breite des Rasters.

Specified by:
getRealHeight in interface ReadableGrid

getEnvelope

public Rectangle2D getEnvelope()
Liefert die Georeferenz (Lat/Lon) und Ausdehnung des Rasters.


getCellWidth

public double getCellWidth()
Liefert die reale Breite einer Rasterzelle.

Specified by:
getCellWidth in interface ReadableGrid
Returns:
getRealWidth() / getWidth()

getCellHeight

public double getCellHeight()
Liefert die reale Breite einer Rasterzelle.

Specified by:
getCellHeight in interface ReadableGrid
Returns:
getRealHeight() / getHeight()

getSampleType

public int getSampleType()
Liefert die Art der Daten, die im Raster gespeichert werden koennen. Diese wird durch eine der TYPE-Konstanten in DataBuffer repraesentiert.

Specified by:
getSampleType in interface ReadableGrid

setRasterSample

public void setRasterSample(Object value,
                            int... cell)
Setzt einen Wert im Raster ueber Raster-Koordinaten.

Specified by:
setRasterSample in interface WritableGrid
Parameters:
value - neuer Wert
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())
Throws:
UnsupportedOperationException - falls zu wenig Koordinaten angegeben werden

getRasterSample

public Object getRasterSample(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSample in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())
Returns:
je nach Art des Rasters einen int, float oder double
Throws:
UnsupportedOperationException - falls zu wenig Koordinaten angegeben werden

getRasterSampleAsShort

public short getRasterSampleAsShort(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSampleAsShort in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())

getRasterSampleAsByte

public byte getRasterSampleAsByte(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSampleAsByte in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())

getRasterSampleAsInt

public int getRasterSampleAsInt(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSampleAsInt in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())

getRasterSampleAsLong

public long getRasterSampleAsLong(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSampleAsLong in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())

getRasterSampleAsFloat

public float getRasterSampleAsFloat(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSampleAsFloat in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())

getRasterSampleAsDouble

public double getRasterSampleAsDouble(int... cell)
Liefert einen Wert des Rasters ueber Raster-Koordinaten.

Specified by:
getRasterSampleAsDouble in interface ReadableGrid
Parameters:
cell - 2D-Raster-Koordinate (Zellenindizes, beginnend bei Raster.getMinX() und Raster.getMinY())

setGridSample

public void setGridSample(Object value,
                          double... coord)
Setzt einen Wert des Rasters ueber Geo-Koordinaten. Liegt der Koordinatenwert genau auf der Grenze zwischen zwei Rasterzellen, wird die naechst groessere Zelle gewaehlt (ausser die Grenze entspricht dem Raster-Rand!).

Specified by:
setGridSample in interface WritableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)
value - neuer Wert
Throws:
UnsupportedOperationException - falls zu wenig Koordinaten angegeben werden

getGridSample

public Object getGridSample(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten. Liegt der Koordinatenwert genau auf der Grenze zwischen zwei Rasterzellen, wird die naechst groessere Zelle gewaehlt (ausser die Grenze entspricht dem Raster-Rand!).

Specified by:
getGridSample in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)
Throws:
UnsupportedOperationException - falls zu wenig Koordinaten angegeben werden

getGridSampleAsShort

public short getGridSampleAsShort(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten.

Specified by:
getGridSampleAsShort in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)

getGridSampleAsByte

public byte getGridSampleAsByte(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten.

Specified by:
getGridSampleAsByte in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)

getGridSampleAsInt

public int getGridSampleAsInt(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten.

Specified by:
getGridSampleAsInt in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)

getGridSampleAsLong

public long getGridSampleAsLong(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten.

Specified by:
getGridSampleAsLong in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)

getGridSampleAsFloat

public float getGridSampleAsFloat(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten.

Specified by:
getGridSampleAsFloat in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)

getGridSampleAsDouble

public double getGridSampleAsDouble(double... coord)
Liefert einen Wert des Rasters ueber Geo-Koordinaten.

Specified by:
getGridSampleAsDouble in interface ReadableGrid
Parameters:
coord - 2D-Raster-Koordinate (Lat/Lon-GeoReferenz)

convertRealToRaster

public int convertRealToRaster(double coord,
                               int dim)
Konvertiert eine reale Koordinate in eine Zellennummer. Liegt der Koordinatenwert genau auf der Grenze zwischen zwei Rasterzellen, wird die naechst "groessere" Zellegewaehlt. Ausnahme bildet der Rand des Rasters. Hier wird die kleinere Zelle (also die letzte) herangezogen

Specified by:
convertRealToRaster in interface ReadableGrid
Parameters:
coord - Georeferenz-Koordinate
dim - Dimension, in der die Umrechnung erfolgen soll
Throws:
UnsupportedOperationException - falls eine ungueltige Dimension angegeben wird (nur Werte 0 <= coord < RASTER_DIM sind zulaessig

convertRasterToReal

public double convertRasterToReal(int cell,
                                  int dim)
Konvertiert eine Zellennummer in reale Koordinate. Dabei wird die Koordinate der Zellenmitte zurueckgegeben.

Specified by:
convertRasterToReal in interface ReadableGrid
Parameters:
cell - Rasterzellen-Koordinate
dim - Dimension, in der die Umrechnung erfolgen soll
Throws:
UnsupportedOperationException - falls eine ungueltige Dimension angegeben wird (nur Werte 0 <= coord < RASTER_DIM sind zulaessig

isLateLoadable

public boolean isLateLoadable()
This class does not support late loading itself!

Specified by:
isLateLoadable in interface LateLoadable
Returns:
false;
See Also:
LateLoadable.unloadData(), LateLoadable.isLateLoadable()

loadData

public void loadData()
              throws LoadingException
This class does not support late loading!

Specified by:
loadData in interface LateLoadable
Throws:
LoadingException - if the loading fails
See Also:
LateLoadable.unloadData(), LateLoadable.loadData()

unloadData

public void unloadData()
Does nothing! This class does not support late loading!

Specified by:
unloadData in interface LateLoadable
See Also:
LateLoadable.unloadData()