schmitzm.data
Class AbstractReadableGrid

java.lang.Object
  extended by schmitzm.data.AbstractReadableGrid
All Implemented Interfaces:
LateLoadable, ReadableGrid
Direct Known Subclasses:
AbstractWritableGrid

public abstract class AbstractReadableGrid
extends Object
implements ReadableGrid

Diese Klasse bildet eine Basis-Implementierung von ReadableGrid.

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

Field Summary
protected  CoordinateReferenceSystem crs
          Enthaelt das CRS des Rasters
 
Fields inherited from interface schmitzm.data.ReadableGrid
RASTER_DIM
 
Constructor Summary
AbstractReadableGrid()
          Creates an abstract ReadableGrid with a default CRS (WGS84)
AbstractReadableGrid(CoordinateReferenceSystem crs)
          Erzeugt ein AbstractReadableGrid.
 
Method Summary
static void compareStructure(ReadableGrid grid1, String desc1, ReadableGrid grid2, String desc2, boolean checkType)
          Vergleicht zwei Raster auf gleiche Struktur (Hoehe, Breite, Zell-Hoehe, Zell-Breite, Sample-Type).
 double convertRasterToReal(int cell, int dim)
          Konvertiert eine Zellennummer in reale Koordinate.
static double convertRasterToReal(int cell, int rasterMin, double realMin, double cellSize)
          Konvertiert eine Zellennummer in eine reale Koordinate.
static double convertRasterToReal(ReadableGrid grid, int cell, int dim)
          Konvertiert eine Zellennummer in eine reale Koordinate.
static int convertRealToRaster(double coord, double realMin, double realLength, int rasterMin, int rasterLength)
          Konvertiert eine reale Koordinate in eine Zellennummer.
 int convertRealToRaster(double coord, int dim)
          Konvertiert eine reale Koordinate in eine Zellennummer.
static int convertRealToRaster(ReadableGrid grid, double coord, int dim)
          Konvertiert eine reale Koordinate in eine Zellennummer.
 double getCellHeight()
          Liefert die reale Breite einer Rasterzelle.
 double getCellWidth()
          Liefert die reale Breite einer Rasterzelle.
 CoordinateReferenceSystem getCoordinateReferenceSystem()
          Liefert das CRS 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.
 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.
 boolean isLateLoadable()
          This class does not support late loading itself!
 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
dispose, getHeight, getMinX, getMinY, getRasterSample, getRealHeight, getRealWidth, getSampleType, getWidth, getX, getY
 

Field Detail

crs

protected CoordinateReferenceSystem crs
Enthaelt das CRS des Rasters

Constructor Detail

AbstractReadableGrid

public AbstractReadableGrid(CoordinateReferenceSystem crs)
Erzeugt ein AbstractReadableGrid.

Parameters:
crs - CoordinateReferenceSystem

AbstractReadableGrid

public AbstractReadableGrid()
Creates an abstract ReadableGrid with a default CRS (WGS84)

Method Detail

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

getCoordinateReferenceSystem

public CoordinateReferenceSystem getCoordinateReferenceSystem()
Liefert das CRS des Rasters.

Specified by:
getCoordinateReferenceSystem 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()

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

convertRealToRaster

public static int convertRealToRaster(ReadableGrid grid,
                                      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.

Parameters:
grid - Raster fuer das die Umrechnung vorgenommen wird
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 static double convertRasterToReal(ReadableGrid grid,
                                         int cell,
                                         int dim)
Konvertiert eine Zellennummer in eine reale Koordinate. Dabei wird die Koordinate der Zellenmitte zurueckgegeben.

Parameters:
grid - Raster fuer das die Umrechnung vorgenommen wird
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

convertRealToRaster

public static int convertRealToRaster(double coord,
                                      double realMin,
                                      double realLength,
                                      int rasterMin,
                                      int rasterLength)
Konvertiert eine reale Koordinate in eine Zellennummer. Siehe GridUtil.convertRealToRaster(double, double, double, int, int).

Parameters:
coord - Georeferenz-Koordinate, die umgerechnet werden soll
realMin - Minimale Welt-Koordinate (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet
realLength - Reale Laenge (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet
rasterMin - Minimale Zellen-Nummer (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet
rasterLength - Laenge in Zellen (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet

convertRasterToReal

public static double convertRasterToReal(int cell,
                                         int rasterMin,
                                         double realMin,
                                         double cellSize)
Konvertiert eine Zellennummer in eine reale Koordinate. Siehe GridUtil.convertRasterToReal(int, int, double, double).

Parameters:
cell - Rasterzellen-Koordinate, die umgerechnet werden soll
rasterMin - Minimale Raster-Koordinate (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet
realMin - Minimale Welt-Koordinate (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet
cellSize - Zellengroesse (in der gewuenschten Richtung/Dimension) des Grids in dem sich die Zelle befindet

compareStructure

public static void compareStructure(ReadableGrid grid1,
                                    String desc1,
                                    ReadableGrid grid2,
                                    String desc2,
                                    boolean checkType)
Vergleicht zwei Raster auf gleiche Struktur (Hoehe, Breite, Zell-Hoehe, Zell-Breite, Sample-Type).

Parameters:
grid1 - Raster 1
desc1 - Beschreibung von Raster 1 (fuer Fehlermeldung)
grid2 - Raster 2
desc2 - Beschreibung von Raster 2 (fuer Fehlermeldung)
checkType - bestimmt, ob auch der Sample-Type uebereinstimmen muss
Throws:
UnsupportedOperationException - falls die Raster nicht gleich sind