edu.wisc.ssec.mcidas
Class AREAnav

java.lang.Object
  extended by edu.wisc.ssec.mcidas.AREAnav
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
GMSXnav, GOESnav, GVARnav, LALOnav, LAMBnav, MERCnav, MOLLnav, MSATnav, PSnav, RADRnav, RECTnav, TANCnav

public abstract class AREAnav
extends java.lang.Object
implements java.io.Serializable

The AREAnav is the superclass for AREA file navigation modules. When used with AreaFile class, set up like this:


  AreaFile af;
  try {
    af = new AreaFile("/home/user/mcidas/data/AREA0001");
  } catch (AreaFileException e) {
    System.out.println(e);
    return;
  }
  int[] dir;
  try { dir=af.getDir();
  } catch (AreaFileException e){
    System.out.println(e);
    return;
  }
  int[] nav;
  try { nav=af.getNav();
  } catch (AreaFileException e){
    System.out.println(e);
    return;
  }
  try { 
    AREAnav ng = new XXXXnav(nav);  // XXXXnav is the specific implementation
  } catch (IllegalArgumentException excp) {
    System.out.println(excp);
    return;
  }
  ng.setImageStart(dir[5], dir[6]);
  ng.setRes(dir[11], dir[12]);
  ng.setStart(0,0);
  ng.setMag(1,1);
  ......................
 

See Also:
Serialized Form

Field Summary
static double DEGREES_TO_RADIANS
          Constant for degrees to radians conversion
static int DMSP
          Code value in AREA files used to designate DMSP navigation
static int GMSX
          Code value in AREA files used to designate GMSX (GMS) navigation
static int GOES
          Code value in AREA files used to designate GOES (GOES D-H) navigation
static int GVAR
          Code value in AREA files used to designate GVAR (GOES I-M) navigation
 int indexEle
          "Element" index in line/element array
 int indexLat
          "Latitude" index in latitude/longitude array
 int indexLine
          "Line" index in line/element array
 int indexLon
          "Longitude" index in latitude/longitude array
static int LALO
          Code value in AREA files used to designate Lat/Lon
static int LAMB
          Code value in AREA files used to designate LAMB (lambert conformal) navigation
static int LL
          Code value for specifying Latitude/Longitude transformations
static int MERC
          Code value in AREA files used to designate MERC (mercator) navigation
static int MOLL
          Code value in AREA files used to designate MOLL (Mollweide) navigation
static int MSAT
          Code value in AREA files used to designate MSAT (Meteosat) navigation
static int POES
          Code value in AREA files used to designate POES navigation
static int PS
          Code value in AREA files used to designate PS (polar stereographic) navigation
static double RADIANS_TO_DEGREES
          Constant for radians to degrees conversion
static int RADR
          Code value in AREA files used to designate RADR (radar) navigation
static int RECT
          Code value in AREA files used to designate RECT (rectilinear) navigation
static int TANC
          Code value in AREA files used to designate TANC (tangent cone) navigation
static int XY
          Code value for specifying Cartesian (X/Y) transformations
 
Constructor Summary
AREAnav()
           
 
Method Summary
 double[][] areaCoordToImageCoord(double[][] linele)
          Converts line/element array values from AREA (file) to Image coordinates.
 boolean equals(java.lang.Object obj)
          Determines whether or not the Object in question is the same as this AREAnav.
 double getLineOffset()
          Get the line offset for flipped coordinates
 double[][] imageCoordToAreaCoord(double[][] linele)
          Converts line/element array values from Image to AREA (File) coordinates.
 boolean isFlippedLineCoordinates()
          Determine if navigation is using flipped coordinates
static AREAnav makeAreaNav(int[] navBlock)
          Return an AREAnav based on the input nav block.
static AREAnav makeAreaNav(int[] navBlock, int[] auxBlock)
           
 void setFlipLineCoordinates(int line)
          specify whether the line coordinates are inverted and the line offset.
 void setImageStart(int startImageLine, int startImageElement)
          define the coordinate in the [0][0] position of the image.
 void setMag(float magLine, float magElement)
          define the magnification factor (in case an image was blown up when displayed).
 void setMag(int magLine, int magElement)
          define the magnification factor (in case an image was blown up when displayed).
 void setRes(float resLine, float resElement)
          Define the resolution of the image.
 void setRes(int resLine, int resElement)
          Define the resolution of the image.
 void setStart(int startLine, int startElement)
          define the starting line and element of another coordinate system -- usually a TV (note that the TV coordinates start at (1,1).
abstract  double[][] toLatLon(double[][] linele)
          converts from satellite coordinates to latitude/longitude
abstract  double[][] toLinEle(double[][] latlon)
          toLinEle converts lat/long to satellite line/element
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RADIANS_TO_DEGREES

public static final double RADIANS_TO_DEGREES
Constant for radians to degrees conversion

See Also:
Constant Field Values

DEGREES_TO_RADIANS

public static final double DEGREES_TO_RADIANS
Constant for degrees to radians conversion

See Also:
Constant Field Values

DMSP

public static final int DMSP
Code value in AREA files used to designate DMSP navigation

See Also:
Constant Field Values

GMSX

public static final int GMSX
Code value in AREA files used to designate GMSX (GMS) navigation

See Also:
Constant Field Values

GOES

public static final int GOES
Code value in AREA files used to designate GOES (GOES D-H) navigation

See Also:
Constant Field Values

GVAR

public static final int GVAR
Code value in AREA files used to designate GVAR (GOES I-M) navigation

See Also:
Constant Field Values

MOLL

public static final int MOLL
Code value in AREA files used to designate MOLL (Mollweide) navigation

See Also:
Constant Field Values

MSAT

public static final int MSAT
Code value in AREA files used to designate MSAT (Meteosat) navigation

See Also:
Constant Field Values

POES

public static final int POES
Code value in AREA files used to designate POES navigation

See Also:
Constant Field Values

RADR

public static final int RADR
Code value in AREA files used to designate RADR (radar) navigation

See Also:
Constant Field Values

RECT

public static final int RECT
Code value in AREA files used to designate RECT (rectilinear) navigation

See Also:
Constant Field Values

PS

public static final int PS
Code value in AREA files used to designate PS (polar stereographic) navigation

See Also:
Constant Field Values

MERC

public static final int MERC
Code value in AREA files used to designate MERC (mercator) navigation

See Also:
Constant Field Values

TANC

public static final int TANC
Code value in AREA files used to designate TANC (tangent cone) navigation

See Also:
Constant Field Values

LAMB

public static final int LAMB
Code value in AREA files used to designate LAMB (lambert conformal) navigation

See Also:
Constant Field Values

LALO

public static final int LALO
Code value in AREA files used to designate Lat/Lon

See Also:
Constant Field Values

LL

public static final int LL
Code value for specifying Latitude/Longitude transformations

See Also:
Constant Field Values

XY

public static final int XY
Code value for specifying Cartesian (X/Y) transformations

See Also:
Constant Field Values

indexLine

public final int indexLine
"Line" index in line/element array

See Also:
Constant Field Values

indexEle

public final int indexEle
"Element" index in line/element array

See Also:
Constant Field Values

indexLat

public final int indexLat
"Latitude" index in latitude/longitude array

See Also:
Constant Field Values

indexLon

public final int indexLon
"Longitude" index in latitude/longitude array

See Also:
Constant Field Values
Constructor Detail

AREAnav

public AREAnav()
Method Detail

toLatLon

public abstract double[][] toLatLon(double[][] linele)
converts from satellite coordinates to latitude/longitude

Parameters:
linele[][] - array of line/element pairs. Where linele[indexLine][] is a 'line' and linele[indexEle][] is an element. These are in 'file' coordinates (not "image" coordinates.)
Returns:
latlon[][] array of lat/long pairs. Output array is latlon[indexLat][] of latitudes and latlon[indexLon][] of longitudes.

toLinEle

public abstract double[][] toLinEle(double[][] latlon)
toLinEle converts lat/long to satellite line/element

Parameters:
latlon[][] - array of lat/long pairs. Where latlon[indexLat][] are latitudes and latlon[indexLon][] are longitudes.
Returns:
linele[][] array of line/element pairs. Where linele[indexLine][] is a line and linele[indexEle][] is an element. These are in 'file' coordinates (not "image" coordinates);

setRes

public void setRes(int resLine,
                   int resElement)
Define the resolution of the image. values range from 1 (highest) to n (lowest). Note that when an image is blown down during display, this value is changed in the frame object to reflect this (rather than changing the magnification).

Parameters:
resLine - is the resolution in the 'line' direction. This value is always > 0.
resElement - is the resolution in the 'element' direction. The value is always >0.

setRes

public void setRes(float resLine,
                   float resElement)
Define the resolution of the image. values range from 1 (highest) to n (lowest). Note that when an image is blown down during display, this value is changed in the frame object to reflect this (rather than changing the magnification).

Parameters:
resLine - is the resolution in the 'line' direction. This value is always > 0.
resElement - is the resolution in the 'element' direction. The value is always >0.

setMag

public void setMag(int magLine,
                   int magElement)
define the magnification factor (in case an image was blown up when displayed). This value is always > 0.

Parameters:
magLine - is the (line) magnification factor that might have been used when the image was displayed.
magElment - is the (element) magnification factor that might have been used when the image was displayed.

setMag

public void setMag(float magLine,
                   float magElement)
define the magnification factor (in case an image was blown up when displayed). This value is always > 0.

Parameters:
magLine - is the (line) magnification factor that might have been used when the image was displayed.
magElment - is the (element) magnification factor that might have been used when the image was displayed.

setStart

public void setStart(int startLine,
                     int startElement)
define the starting line and element of another coordinate system -- usually a TV (note that the TV coordinates start at (1,1).

Parameters:
startLine - the starting line number in another coordinate system
startElement - the starting element number in another coordinate system

setImageStart

public void setImageStart(int startImageLine,
                          int startImageElement)
define the coordinate in the [0][0] position of the image.

Parameters:
startImageLine - redefines the starting image line number (may be different than the signal indicated)
startImageElement - redefines the starting image element number (may be different than the signal indicated)

setFlipLineCoordinates

public void setFlipLineCoordinates(int line)
specify whether the line coordinates are inverted and the line offset.

Parameters:
line - ending line number

isFlippedLineCoordinates

public boolean isFlippedLineCoordinates()
Determine if navigation is using flipped coordinates

Returns:
true if using flipped line coordinates, otherwise false

getLineOffset

public double getLineOffset()
Get the line offset for flipped coordinates

Returns:
line offset

areaCoordToImageCoord

public double[][] areaCoordToImageCoord(double[][] linele)
Converts line/element array values from AREA (file) to Image coordinates. Creates new array instead of mucking with input.

Parameters:
linele - input line/element array in AREA coordinates
Returns:
array in Image coordinates

imageCoordToAreaCoord

public double[][] imageCoordToAreaCoord(double[][] linele)
Converts line/element array values from Image to AREA (File) coordinates. Creates new array instead of mucking with input.

Parameters:
linele - input line/element array Image coordinates
Returns:
array in AREA coordinates

makeAreaNav

public static AREAnav makeAreaNav(int[] navBlock)
                           throws McIDASException
Return an AREAnav based on the input nav block.

Parameters:
navBlock - block to use
Returns:
corresponding navigation routine.
Throws:
McIDASException

makeAreaNav

public static AREAnav makeAreaNav(int[] navBlock,
                                  int[] auxBlock)
                           throws McIDASException
Throws:
McIDASException

equals

public boolean equals(java.lang.Object obj)
Determines whether or not the Object in question is the same as this AREAnav. Right now, this returns false until we can figure out when two navigations are equal. Subclasses could override if desired.

Overrides:
equals in class java.lang.Object
Parameters:
obj - the AREAnav in question