com.bbn.openmap.dataAccess.dted
Class DTEDFrame

java.lang.Object
  extended by com.bbn.openmap.dataAccess.dted.DTEDFrame
All Implemented Interfaces:
Closable
Direct Known Subclasses:
DTEDSubframedFrame

public class DTEDFrame
extends java.lang.Object
implements Closable

The DTEDFrame is the representation of the DTED (Digital Terrain Elevation Data) data from a single dted data file. It keeps track of all the attribute information of its data. It can return an OMGrid object that can be configured to create a visual representation of the data, depending on what OMGridGenerators are used on the OMGrid object.


Field Summary
 DTEDFrameACC acc
          Accuracy description section of the file.
static int ACC_SIZE
           
static int ACC_SR_SIZE
           
protected  BinaryFile binFile
          The binary buffered file to read the data from the file.
 DTEDFrameDSI dsi
          Data set identification section of the file.
static int DSI_SIZE
           
protected  short[][] elevations
          The array of elevation posts.
 boolean frame_is_valid
          Validity flag for the quality of the data file.
protected  java.lang.String path
          The path to the frame, including the frame name.
 DTEDFrameUHL uhl
          User header label section of the file.
static int UHL_SIZE
           
 
Constructor Summary
DTEDFrame(java.lang.String filePath)
          Simplest constructor.
DTEDFrame(java.lang.String filePath, boolean readWholeFile)
          Constructor with colortable and presentation information.
 
Method Summary
 boolean close(boolean done)
          Part of the Closable interface.
 void dispose()
          This must get called to break a reference cycle that prevents the garbage collection of frames.
 int elevationAt(float lat, float lon)
          The elevation at the closest SW post to the given lat/lon.
 short[][] getElevations(float ullat, float ullon, float lrlat, float lrlon)
          Return a two dimensional array of posts between lat lons.
 short[][] getElevations(int startx, int starty, int endx, int endy)
          Return a two dimensional array of posts between lat lons.
 OMGraphic getImage(Projection proj)
          If you just want to get an image for the DTEDFrame, then call this.
 int[] getIndexesFromLatLons(float ullat, float ullon, float lrlat, float lrlon)
          Return an index of ints representing the starting x, y and ending x, y of elevation posts given a lat lon box.
 OMGrid getOMGrid()
           
 int interpElevationAt(float lat, float lon)
          Interpolated elevation at a given lat/lon - should be more precise than elevationAt(), but that depends on the resolution of the data.
static void main(java.lang.String[] args)
           
protected  void read(BinaryFile binFile, boolean readWholeFile)
          Reads the DTED frame file.
protected  boolean readDataRecord(int lon_index)
          Reads one longitude line of posts.
protected  boolean readDataRecords()
          Read all the elevation posts, at one time.
protected  boolean reopen()
          If the BinaryBufferedFile was closed, this method attempts to reopen it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UHL_SIZE

public static final int UHL_SIZE
See Also:
Constant Field Values

DSI_SIZE

public static final int DSI_SIZE
See Also:
Constant Field Values

ACC_SIZE

public static final int ACC_SIZE
See Also:
Constant Field Values

ACC_SR_SIZE

public static final int ACC_SR_SIZE
See Also:
Constant Field Values

binFile

protected BinaryFile binFile
The binary buffered file to read the data from the file.


path

protected java.lang.String path
The path to the frame, including the frame name.


elevations

protected short[][] elevations
The array of elevation posts. Note: the 0 index of the array in both directions is in the lower left corner of the matrix. As you increase indexes in both dimensions, you go up-right.


dsi

public DTEDFrameDSI dsi
Data set identification section of the file.


uhl

public DTEDFrameUHL uhl
User header label section of the file.


acc

public DTEDFrameACC acc
Accuracy description section of the file.


frame_is_valid

public boolean frame_is_valid
Validity flag for the quality of the data file.

Constructor Detail

DTEDFrame

public DTEDFrame(java.lang.String filePath)
Simplest constructor.

Parameters:
filePath - complete path to the DTED frame.

DTEDFrame

public DTEDFrame(java.lang.String filePath,
                 boolean readWholeFile)
Constructor with colortable and presentation information.

Parameters:
filePath - complete path to the DTED frame.
readWholeFile - If true, all of the elevation data will be read at load time. If false, elevation post data will be read in per longitude column depending on the need. False is recommended for DTEd level 1 and 2.
Method Detail

read

protected void read(BinaryFile binFile,
                    boolean readWholeFile)
Reads the DTED frame file. Assumes that the File f is valid/exists.

Parameters:
binFile - the binary buffered file opened on the DTED frame file
readWholeFile - flag controlling whether all the row data is read at this time. Otherwise, the rows are read as needed.

dispose

public void dispose()
This must get called to break a reference cycle that prevents the garbage collection of frames.


close

public boolean close(boolean done)
Part of the Closable interface. Closes the BinaryFile pointer, because someone else needs another file open, and the system needs a file pointer. Sets the binFile variable to null.

Specified by:
close in interface Closable
Parameters:
done - true indicates that this is a permanent closure. false indicates that the object may be used again later, as this is only an attempt to temporarily reclaim resources
Returns:
true indicates the object is still usable. false indicates that the object is now unusable, and any references to it should be released so the garbage collector can do its job.

reopen

protected boolean reopen()
If the BinaryBufferedFile was closed, this method attempts to reopen it.

Returns:
true if the opening was successful.

elevationAt

public int elevationAt(float lat,
                       float lon)
The elevation at the closest SW post to the given lat/lon. This is just a go-to-the-closest-post solution.

Parameters:
lat - latitude in decimal degrees.
lon - longitude in decimal degrees.
Returns:
elevation at lat/lon in meters.

interpElevationAt

public int interpElevationAt(float lat,
                             float lon)
Interpolated elevation at a given lat/lon - should be more precise than elevationAt(), but that depends on the resolution of the data.

Parameters:
lat - latitude in decimal degrees.
lon - longitude in decimal degrees.
Returns:
elevation at lat/lon in meters.

getIndexesFromLatLons

public int[] getIndexesFromLatLons(float ullat,
                                   float ullon,
                                   float lrlat,
                                   float lrlon)
Return an index of ints representing the starting x, y and ending x, y of elevation posts given a lat lon box. It does check to make sure that the upper lat is larger than the lower, and left lon is less than the right.

Parameters:
ullat - upper latitude in decimal degrees.
ullon - left longitude in decimal degrees.
lrlat - lower latitude in decimal degrees.
lrlon - right longitude in decimal degrees.
Returns:
int[4] array of start x, start y, end x, and end y.

getElevations

public short[][] getElevations(float ullat,
                               float ullon,
                               float lrlat,
                               float lrlon)
Return a two dimensional array of posts between lat lons.

Parameters:
ullat - upper latitude in decimal degrees.
ullon - left longitude in decimal degrees.
lrlat - lower latitude in decimal degrees.
lrlon - right longitude in decimal degrees.
Returns:
array of elevations in meters. The spacing of the posts depends on the DTED level.

getElevations

public short[][] getElevations(int startx,
                               int starty,
                               int endx,
                               int endy)
Return a two dimensional array of posts between lat lons. Assumes that the indexes are checked to not exceed their bounds as defined in the file. getIndexesFromLatLons() checks this.

Parameters:
startx - starting index (left) of the greater matrix to make the left side of the returned matrix.
starty - starting index (lower) of the greater matrix to make the bottom side of the returned matrix.
endx - ending index (right) of the greater matrix to make the left side of the returned matrix.
endy - ending index (top) of the greater matrix to make the top side of the returned matrix.
Returns:
array of elevations in meters. The spacing of the posts depends on the DTED level.

readDataRecord

protected boolean readDataRecord(int lon_index)
Reads one longitude line of posts. Assumes that the binFile is valid.

Returns:
true if the column of data was successfully read

readDataRecords

protected boolean readDataRecords()
Read all the elevation posts, at one time. Assumes that the file is open and ready.

Returns:
true if the elevation columns were read.

getOMGrid

public OMGrid getOMGrid()

getImage

public OMGraphic getImage(Projection proj)
If you just want to get an image for the DTEDFrame, then call this. One image in an OMGraphic for the entire DTEDFrame will be returned, with the default rendering parameters (Colored shading) and the default colortable. Use the other getImage method if you want something different. This method actually calls that other method, so read the documentation for that as well.

Parameters:
proj - EqualArc projection to use to create image.
Returns:
raster image OMGraphic to display in OpenMap.

main

public static void main(java.lang.String[] args)


Copyright (C) BBNT Solutions LLC; See http://openmap.bbn.com/ for details