## edu.wisc.ssec.mcidas
Class AREAnav

    java.lang.Object
      edu.wisc.ssec.mcidas.AREAnav

All Implemented Interfaces:
  Serializable

Direct Known Subclasses:
  GMSXnav, GOESnav, GVARnav, LALOnav, LAMBnav, MERCnav, MOLLnav, MSATnav, MSGnav, MSGTnav, PSnav, RADRnav, RECTnav, TANCnav

public abstract class AREAnav
extends Object
implements 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);
      ......................

By convention, latitudes are positive North (negative South), and longitudes are positive East (negative West).

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` `MSG` Code value in AREA files used to designate MSG navigation
`static int` `MSGT` Code value in AREA files used to designate MSGT 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
`(package private) static long` `serialVersionUID`
`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.
`double[][]` `areaCoordToImageCoord(double[][] linele, double[][] newvals)` Converts line/element array values from AREA (file) to Image coordinates.
`float[][]` `areaCoordToImageCoord(float[][] linele)` Converts line/element array values from AREA (file) to Image coordinates.
`float[][]` `areaCoordToImageCoord(float[][] linele, float[][] newvals)` Converts line/element array values from AREA (file) to Image coordinates.
`static float[][]` `doubleToFloat(double[][] value)`
`boolean` `equals(Object obj)` Determines whether or not the `Object` in question is the same as this `AREAnav`.
`static double[][]` `floatToDouble(float[][] value)`
`double` `getLineOffset()` Get the line offset for flipped coordinates
`double[][]` `imageCoordToAreaCoord(double[][] linele)` Converts line/element array values from Image to AREA (File) coordinates.
`double[][]` `imageCoordToAreaCoord(double[][] linele, double[][] newvals)` Converts line/element array values from Image to AREA (File) coordinates.
`float[][]` `imageCoordToAreaCoord(float[][] linele)` Converts line/element array values from Image to AREA (File) coordinates.
`float[][]` `imageCoordToAreaCoord(float[][] linele, float[][] newvals)` 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
`float[][]` `toLatLon(float[][] linele)` converts from satellite coordinates to latitude/longitude.
`abstract double[][]` `toLinEle(double[][] latlon)` toLinEle converts lat/long to satellite line/element
`float[][]` `toLinEle(float[][] latlon)` toLinEle converts lat/long to satellite line/element This implementation converts the input array to doubles and calls the double signature of `toLineEle(double[][])`.
`String` `toString()` Return a `String` representation of this nav module

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### serialVersionUID

    static final long serialVersionUID

See Also:
  Constant Field Values

### 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

### MSGT

    public static final int MSGT

  Code value in AREA files used to designate MSGT navigation

  See Also:
    Constant Field Values

### MSG

    public static final int MSG

  Code value in AREA files used to designate MSG 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

  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

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

### toLatLon

    public float[][] toLatLon(float[][] linele)

  converts from satellite coordinates to latitude/longitude. This implementation converts the input array to doubles and calls the double signature of `toLatLon(double[][])`. Subclasses should implement a real float version for better performance.

  Returns:
    latlon[][] array of lat/long pairs. Output array is latlon[indexLat][] of latitudes and latlon[indexLon][] of longitudes.

### toLinEle

    public float[][] toLinEle(float[][] latlon)

  toLinEle converts lat/long to satellite line/element This implementation converts the input array to doubles and calls the double signature of `toLineEle(double[][])`. Subclasses should implement a real float version for better performance.

  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.

### 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.

### 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

### areaCoordToImageCoord

    public double[][] areaCoordToImageCoord(double[][] linele,
                                            double[][] newvals)

  Converts line/element array values from AREA (file) to Image coordinates. Creates new array if newvals is null.

  Parameters:
    `linele` - input line/element array in AREA coordinates
    `newvals` - return array - create a new array if null
  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

### imageCoordToAreaCoord

    public double[][] imageCoordToAreaCoord(double[][] linele,
                                            double[][] newvals)

  Converts line/element array values from Image to AREA (File) coordinates. Creates new array if newvals is null.

  Parameters:
    `linele` - input line/element array Image coordinates
    `newvals` - return array - create a new array if null
  Returns:
    array in AREA coordinates

### areaCoordToImageCoord

    public float[][] areaCoordToImageCoord(float[][] 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

### areaCoordToImageCoord

    public float[][] areaCoordToImageCoord(float[][] linele,
                                           float[][] newvals)

  Converts line/element array values from AREA (file) to Image coordinates. Creates new array if newvals is null.

  Parameters:
    `linele` - input line/element array in AREA coordinates
    `newvals` - return array - create a new array if null
  Returns:
    array in Image coordinates

### imageCoordToAreaCoord

    public float[][] imageCoordToAreaCoord(float[][] 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

### imageCoordToAreaCoord

    public float[][] imageCoordToAreaCoord(float[][] linele,
                                           float[][] newvals)

  Converts line/element array values from Image to AREA (File) coordinates. Creates new array if newvals is null.

  Parameters:
    `linele` - input line/element array Image coordinates
    `newvals` - return array - create a new array if null
  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(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.

  Parameters:
    `obj` - the AREAnav in question

### toString

    public String toString()

  Return a `String` representation of this nav module

  Returns:
    wordy string.

### floatToDouble

    public static double[][] floatToDouble(float[][] value)

### doubleToFloat

    public static float[][] doubleToFloat(double[][] value)