com.bbn.openmap.layer.dted
Class DTEDFrame

java.lang.Object
  |
  +--com.bbn.openmap.layer.dted.DTEDFrame
All Implemented Interfaces:
Closable

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 it's data, and also maintains an array of images (DTEDFrameSubframe) that represent views of the elevation posts.


Field Summary
static int ACC_SIZE
           
static int ACC_SR_SIZE
           
protected  BinaryFile binFile
          The binary buffered file to read the data from the file.
 DTEDFrameColorTable colorTable
          The colortable used to create the images.
 DTEDFrameDSI dsi
          Data set indentification 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.
 int number_horiz_subframes
          The frame image is divided into 200x200 pixel subframes, with a leftover frame at the end.
 int number_vert_subframes
          The frame image is divided into 200x200 pixel subframes, with a leftover frame at the end.
protected  java.lang.String path
          The path to the frame, including the frame name.
 DTEDFrameSubframeInfo subframeInfo
          The subframe presentation attributes.
 DTEDFrameSubframe[][] subframes
          The image array for the subframes.
 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.
DTEDFrame(java.lang.String filePath, DTEDFrameColorTable cTable, DTEDFrameSubframeInfo info)
          Constructor with colortable and presentation information.
DTEDFrame(java.lang.String filePath, DTEDFrameColorTable cTable, DTEDFrameSubframeInfo info, 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.
 DTEDFrameColorTable getColorTable()
           
 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.
 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.
 OMRaster getOMRaster(DTEDFrameSubframeInfo dfsi, DTEDFrameColorTable colortable, EqualArc proj)
          If you just want to get an image for the DTEDFrame, then call this.
 OMRaster getOMRaster(EqualArc proj)
          If you just want to get an image for the DTEDFrame, then call this.
 OMRaster getSubframeOMRaster(DTEDFrameSubframeInfo dfsi, DTEDFrameColorTable colortable)
          Return the subframe image as described in the DTEDFrameSubframeInfo.
 void initSubframes(int numHorizSubframes, int numVertSubframes)
          Sets the subframe array.
 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  boolean read_data_record(int lon_index)
          Reads one longitude line of posts.
protected  boolean read_data_records()
          Read all the elevation posts, at one time.
protected  void read(BinaryFile binFile, boolean readWholeFile)
          Reads the DTED frame file.
protected  boolean reopen()
          If the BinaryBufferedFile was closed, this method attempts to reopen it.
 void setColorTable(DTEDFrameColorTable c_Table)
           
 
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 indentification section of the file.


uhl

public DTEDFrameUHL uhl
User header label section of the file.


colorTable

public DTEDFrameColorTable colorTable
The colortable used to create the images.


subframeInfo

public DTEDFrameSubframeInfo subframeInfo
The subframe presentation attributes.


frame_is_valid

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


number_horiz_subframes

public int number_horiz_subframes
The frame image is divided into 200x200 pixel subframes, with a leftover frame at the end. This is how many horizontal subframes there are.


number_vert_subframes

public int number_vert_subframes
The frame image is divided into 200x200 pixel subframes, with a leftover frame at the end. This is how many vertical subframes there are.


subframes

public DTEDFrameSubframe[][] subframes
The image array for the subframes.

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,
                 DTEDFrameColorTable cTable,
                 DTEDFrameSubframeInfo info)
Constructor with colortable and presentation information.

Parameters:
filePath - complete path to the DTED frame.
cTable - the colortable to use for the images.
info - presentation parameters.

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.

DTEDFrame

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

Parameters:
filePath - complete path to the DTED frame.
cTable - the colortable to use for the images.
info - presentation parameters.
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

setColorTable

public void setColorTable(DTEDFrameColorTable c_Table)

getColorTable

public DTEDFrameColorTable getColorTable()

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

read_data_record

protected boolean read_data_record(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

read_data_records

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

Returns:
true if the elevation columns were read.

initSubframes

public void initSubframes(int numHorizSubframes,
                          int numVertSubframes)
Sets the subframe array. Blows away any images that may already be there.


getOMRaster

public OMRaster getOMRaster(EqualArc proj)
If you just want to get an image for the DTEDFrame, then call this. One OMRaster for the entire DTEDFrame will be returned, with the default rendering parameters (Colored shading) and the default colortable. Use the other getOMRaster 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 to display in OpenMap.

getOMRaster

public OMRaster getOMRaster(DTEDFrameSubframeInfo dfsi,
                            DTEDFrameColorTable colortable,
                            EqualArc proj)
If you just want to get an image for the DTEDFrame, then call this. One OMRaster for the entire DTEDFrame will be returned. In the DTEDFrameSubframeInfo, you need to set the color type and all the parameters that are assiociated with the rendering parameters. The projection parameters of the DFSI (image height, width, pixel intervals) will be set in this method based on the projection. If you want a different sized image, scale the thing you get back from this method, or change the scale of the projection that is passed in. Calling this method will cause the DTEDFrame subframe cache to reset itself to hold one subframe covering the entire frame. Just so you know.

Parameters:
dfsi - the DTEDFrameSubframeInfo describing the subframe.
colortable - the colortable to use when building the image.
proj - EqualArc projection to use to create image.
Returns:
raster image to display in OpenMap.

getSubframeOMRaster

public OMRaster getSubframeOMRaster(DTEDFrameSubframeInfo dfsi,
                                    DTEDFrameColorTable colortable)
Return the subframe image as described in the DTEDFrameSubframeInfo. This is called by the DTEDCacheHandler, which has in turn set the DTEDFrameSubframeInfo parameters to match the projection parameters. This turns out to be kinda important.

Parameters:
dfsi - the DTEDFrameSubframeInfo describing the subframe.
colortable - the colortable to use when building the image.
Returns:
raster image 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