schmitzm.geotools.grid
Class ReadableGridCoverage

java.lang.Object
  extended by GridCoverage2D
      extended by schmitzm.geotools.grid.ReadableGridCoverage
All Implemented Interfaces:
LateLoadable, ReadableGrid
Direct Known Subclasses:
WritableGridCoverage

public class ReadableGridCoverage
extends GridCoverage2D
implements ReadableGrid

Diese Klasse stellt ein GeoTools-GridCoverage (2D) dar, welches auf einem Raster basiert und darauf direkten Lese- und Schreibzugriff liefert.
Auch wenn Raster prinzipell mehrere Dimensionen (Baender) zulaesst, sind die Zugriffsmethoden dieser Klasse auf ein Band beschraenkt.


Um Instanzen dieser Klasse zu erzeugen, sollten die Factory-Methoden create(.) verwendet werden!

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

Field Summary
protected  int band
          Speichert das Band des WritableRasters, welches durch dieses Grid angesprochen wird.
protected  Envelope2D envelope
          Speichert die Informationen ueber die GeoReferenz des Rasters.
protected  Raster raster
          Speichert die Datenbasis des Grids.
 
Fields inherited from interface schmitzm.data.ReadableGrid
RASTER_DIM
 
Constructor Summary
protected ReadableGridCoverage(CharSequence name, javax.media.jai.PlanarImage image, GridGeometry2D gridGeometry, GridSampleDimension[] bands, GridCoverage[] sources, Map<?,?> properties, Hints hints, int band)
          Ruft den Standard-Konstruktor der von GridCoverage2D auf.
protected ReadableGridCoverage(CharSequence name, javax.media.jai.PlanarImage image, GridGeometry2D gridGeometry, GridSampleDimension[] bands, GridCoverage[] sources, Map<?,?> properties, int band)
          Ruft den Standard-Konstruktor der von GridCoverage2D auf (ohne Hints).
 
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.
static ReadableGridCoverage create(GridCoverage2D gc, int band)
          Erzeugt ein neues Grid.
 void dispose()
          Calls dispose(false.
 double getCellHeight()
          Liefert die reale Breite einer Rasterzelle.
 double getCellWidth()
          Liefert die reale Breite einer Rasterzelle.
 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.
 int getHeight()
          Liefert die Hoehe des Rasters (in Zellen).
 int getMinX()
          Liefert den Index der ersten Zelle (Südwest) in X-Richtung.
 int getMinY()
          Liefert den Index der ersten Zelle (Südwest) in Y-Richtung.
 Raster getRaster()
          Liefert eine direkte Referenz auf die Datenbasis.
 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.
 int getWidth()
          Liefert die Breite des Rasters (in Zellen).
 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!
 void loadData()
          Does nothing!
 void unloadData()
          Does nothing!
 
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
getCoordinateReferenceSystem
 

Field Detail

raster

protected Raster raster
Speichert die Datenbasis des Grids.


band

protected int band
Speichert das Band des WritableRasters, welches durch dieses Grid angesprochen wird.


envelope

protected Envelope2D envelope
Speichert die Informationen ueber die GeoReferenz des Rasters.

Constructor Detail

ReadableGridCoverage

protected ReadableGridCoverage(CharSequence name,
                               javax.media.jai.PlanarImage image,
                               GridGeometry2D gridGeometry,
                               GridSampleDimension[] bands,
                               GridCoverage[] sources,
                               Map<?,?> properties,
                               int band)
Ruft den Standard-Konstruktor der von GridCoverage2D auf (ohne Hints).

Parameters:
name - Name des Grids
image - Image-Daten
gridGeometry - Georeferenz und CRS
bands - Sample-Dimensions fuer jedes Band (kann null sein)
sources - Quell-Grids (kann null sein
properties - Properties fuer das Grid (kann null sein)
band - Band der Datenbasis, auf das die getter/setter referenziert sind

ReadableGridCoverage

protected ReadableGridCoverage(CharSequence name,
                               javax.media.jai.PlanarImage image,
                               GridGeometry2D gridGeometry,
                               GridSampleDimension[] bands,
                               GridCoverage[] sources,
                               Map<?,?> properties,
                               Hints hints,
                               int band)
Ruft den Standard-Konstruktor der von GridCoverage2D auf.

Parameters:
name - Name des Grids
image - Image-Daten
gridGeometry - Georeferenz und CRS
bands - Sample-Dimensions fuer jedes Band (kann null sein)
sources - Quell-Grids (kann null sein
properties - Properties fuer das Grid (kann null sein)
hints - (Rendering?) hints (kann null sein)
band - Band der Datenbasis, auf das die getter/setter referenziert sind
Method Detail

create

public static ReadableGridCoverage create(GridCoverage2D gc,
                                          int band)
Erzeugt ein neues Grid.

Parameters:
gc - Datenbasis fuer das Grid
band - Band der Datenbasis, auf das die getter/setter referenziert sind

getRaster

public Raster getRaster()
Liefert eine direkte Referenz auf die Datenbasis.


getWidth

public int getWidth()
Liefert die Breite des Rasters (in Zellen).

Specified by:
getWidth in interface ReadableGrid

getHeight

public int getHeight()
Liefert die Hoehe des Rasters (in Zellen).

Specified by:
getHeight in interface ReadableGrid

getMinX

public int getMinX()
Liefert den Index der ersten Zelle (Südwest) in X-Richtung.

Specified by:
getMinX in interface ReadableGrid

getMinY

public int getMinY()
Liefert den Index der ersten Zelle (Südwest) in Y-Richtung.

Specified by:
getMinY 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

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

getX

public double getX()
Liefert die X-Koordinate der Georeferenz (Longitude) der linken unteren Ecke des Rasters (Südwest).

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

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

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 getMinX() und 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 getMinX() und 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 getMinX() und 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 getMinX() und 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 getMinX() und 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 getMinX() und 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 getMinX() und getMinY())

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 < ReadableGrid.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 < ReadableGrid.RASTER_DIM sind zulaessig

isLateLoadable

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

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

loadData

public void loadData()
              throws LoadingException
Does nothing! 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()

dispose

public void dispose()
Calls dispose(false.

Specified by:
dispose in interface ReadableGrid