USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::GroundGrid Class Reference

Calculates a lat/lon grid over an area. More...

#include <GroundGrid.h>

Collaboration diagram for Isis::GroundGrid:
Collaboration graph

Public Member Functions

 GroundGrid (UniversalGroundMap *gmap, bool splitLatLon, unsigned int width, unsigned int height)
 This method initializes the class by allocating the grid, calculating the lat/lon range, and getting a default grid resolution.
virtual ~GroundGrid ()
 Delete the object.
void CreateGrid (Latitude baseLat, Longitude baseLon, Angle latInc, Angle lonInc, Progress *progress=0)
 This method draws the grid internally, using default resolutions.
void CreateGrid (Latitude baseLat, Longitude baseLon, Angle latInc, Angle lonInc, Progress *progress, Angle latRes, Angle lonRes)
 This method draws the grid internally.
void WalkBoundary ()
 This draws grid lines along the extremes of the lat/lon box of the grid.
void SetGroundLimits (Latitude minLat, Longitude minLon, Latitude maxLat, Longitude maxLon)
 This restricts (or grows) the ground range in which to draw grid lines.
bool PixelOnGrid (int x, int y)
 Returns true if the grid is on this point.
bool PixelOnGrid (int x, int y, bool latGrid)
 Returns true if the grid is on this point.
PvlGroupGetMappingGroup ()
 Returns a mapping group representation of the projection or camera.

Protected Member Functions

virtual bool GetXY (Latitude lat, Longitude lon, unsigned int &x, unsigned int &y)
 This method converts a lat/lon to an X/Y.
UniversalGroundMapGroundMap ()
 Returns the ground map for children.

Private Member Functions

void SetGridBit (unsigned int x, unsigned int y, bool latGrid)
 This flags a bit as on the grid lines.
bool GetGridBit (unsigned int x, unsigned int y, bool latGrid)
 Returns true if the specified coordinate is on the grid lines.
void DrawLineOnGrid (unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, bool isLatLine)
 This sets the bits on the grid along the specified line.

Private Attributes

char * p_grid
 This stores the bits of each pixel in the grid.
char * p_latLinesGrid
 This stores the bits of each pixel in the grid.
char * p_lonLinesGrid
 This stores the bits of each pixel in the grid.
unsigned int p_width
 This is the width of the grid.
unsigned int p_height
 This is the height of the grid.
unsigned long p_gridSize
 This is width*height.
UniversalGroundMapp_groundMap
 This calculates single grid pts.
Latitudep_minLat
 Lowest latitude in image.
Longitudep_minLon
 Lowest longitude in image.
Latitudep_maxLat
 Highest latitude in image.
Longitudep_maxLon
 Highest longitude in image.
PvlGroupp_mapping
 The mapping group representation of the projection or camera.
double p_defaultResolution
 Default step size in degrees/pixel.
bool p_reinitialize
 True if we need to reset p_grid in CreateGrid.

Detailed Description

Calculates a lat/lon grid over an area.

This class, given a universal ground map, area width and height, base lat/lon, lat/lon increments, and optionalls a progress and resolutions will calculate where grid lines should lie.

Author
2010-01-06 Steven Lambright
History:
2010-05-06 Steven Lambright - Added Split Lat/Lon Functionality
History:
2010-06-22 Steven Lambright - Improved handling of resolutions
History:
2011-01-25 Steven Lambright - Now uses native units to the projection, Lat/Lon classes, and several bug fixes when it comes to out of range values or non-standard projection types.
History:
2011-01-26 Steven Lambright - Fixed a bug where the grid was not consistent on the edges and added SetGroundLimits and WalkBoundary for the new grid options Bound lat/lon range.
History:
2011-02-25 Steven Lambright - Min/Max Lat/Lons do not have to be known in the constructor any more
History:
2011-12-08 Steven Lambright - Fixed a bug causing the longitude range to be incorrect. Fixes #607.
History:
2014-06-06 Kristin Berry - Fixed a bug where lat/lon were swapped in the code. Fixes #2081.

Definition at line 62 of file GroundGrid.h.

Constructor & Destructor Documentation

Isis::GroundGrid::GroundGrid ( UniversalGroundMap gmap,
bool  splitLatLon,
unsigned int  width,
unsigned int  height 
)

This method initializes the class by allocating the grid, calculating the lat/lon range, and getting a default grid resolution.

Parameters
gmapA universal ground map to use for calculating the grid
splitLatLonMake two grids: one for latitude lines and one for longitude lines
widthThe width of the grid; often cube samples
heightThe height of the grid; often cube samples

Definition at line 32 of file GroundGrid.cpp.

References Isis::PvlObject::findGroup(), Isis::Distance::meters(), and Isis::toDouble().

Isis::GroundGrid::~GroundGrid ( )
virtual

Delete the object.

Definition at line 154 of file GroundGrid.cpp.

Member Function Documentation

void Isis::GroundGrid::CreateGrid ( Latitude  baseLat,
Longitude  baseLon,
Angle  latInc,
Angle  lonInc,
Progress progress = 0 
)

This method draws the grid internally, using default resolutions.

Parameters
baseLatLatitude to hit in the grid
baseLonLongitude to hit in the grid
latIncDistance between latitude lines
lonIncDistance between longitude lines
progressIf passed in, this progress will be used

Definition at line 205 of file GroundGrid.cpp.

void Isis::GroundGrid::CreateGrid ( Latitude  baseLat,
Longitude  baseLon,
Angle  latInc,
Angle  lonInc,
Progress progress,
Angle  latRes,
Angle  lonRes 
)

This method draws the grid internally.

It is not valid to call PixelOnGrid until this method has been called.

Parameters
baseLatLatitude to hit in the grid
baseLonLongitude to hit in the grid
latIncDistance between latitude lines
lonIncDistance between longitude lines
progressIf passed in, this progress will be used
latResResolution of latitude lines (in degrees/pixel)
lonResResolution of longitude lines (in degrees/pixel)

Definition at line 224 of file GroundGrid.cpp.

References _FILEINFO_, Isis::Progress::CheckStatus(), Isis::Angle::isValid(), and Isis::Progress::SetMaximumSteps().

void Isis::GroundGrid::DrawLineOnGrid ( unsigned int  x1,
unsigned int  y1,
unsigned int  x2,
unsigned int  y2,
bool  isLatLine 
)
private

This sets the bits on the grid along the specified line.

Parameters
x1Start X
y1Start Y
x2End X
y2End Y
isLatLine

Definition at line 615 of file GroundGrid.cpp.

bool Isis::GroundGrid::GetGridBit ( unsigned int  x,
unsigned int  y,
bool  latGrid 
)
private

Returns true if the specified coordinate is on the grid lines.

Parameters
xX-Coordinate (0-based)
yY-Coordinate (0-based)
latGridTrue if you want to access the latitude grid where there are separate lat/lon grids. False for lon. Irrelevant if using a single grid.
Returns
bool Value at grid coordinate

Definition at line 576 of file GroundGrid.cpp.

References _FILEINFO_.

PvlGroup* Isis::GroundGrid::GetMappingGroup ( )
inline

Returns a mapping group representation of the projection or camera.

This is useful for matching units with lat/lons.

Returns
Returns a mapping group representation of the projection or camera

Definition at line 92 of file GroundGrid.h.

References p_mapping.

bool Isis::GroundGrid::GetXY ( Latitude  lat,
Longitude  lon,
unsigned int &  x,
unsigned int &  y 
)
protectedvirtual

This method converts a lat/lon to an X/Y.

This implementation converts to sample/line.

Parameters
latLatitude of Lat/Lon pair to convert to S/L
lonLongitude of Lat/Lon pair to convert to S/L
xOutput sample (0-based)
yOutput line (0-based)
Returns
bool Successful

Definition at line 517 of file GroundGrid.cpp.

UniversalGroundMap* Isis::GroundGrid::GroundMap ( )
inlineprotected

Returns the ground map for children.

Definition at line 99 of file GroundGrid.h.

References p_groundMap.

bool Isis::GroundGrid::PixelOnGrid ( int  x,
int  y 
)

Returns true if the grid is on this point.

Parameters
xX-Coordinate of grid (0-based)
yY-Coordinate of grid (0-based)
Returns
bool Pixel lies on grid

Definition at line 495 of file GroundGrid.cpp.

bool Isis::GroundGrid::PixelOnGrid ( int  x,
int  y,
bool  latGrid 
)

Returns true if the grid is on this point.

Using this method is recommended if lat/lon grids are separate.

Parameters
xX-Coordinate of grid (0-based)
yY-Coordinate of grid (0-based)
latGridTrue for latitude lines, false for longitude lines
Returns
bool Pixel lies on grid

Definition at line 476 of file GroundGrid.cpp.

void Isis::GroundGrid::SetGridBit ( unsigned int  x,
unsigned int  y,
bool  latGrid 
)
private

This flags a bit as on the grid lines.

Parameters
xX-Coordinate (0-based)
yY-Coordinate (0-based)
latGridTrue if this is derived from a latitude line

Definition at line 540 of file GroundGrid.cpp.

References _FILEINFO_.

void Isis::GroundGrid::SetGroundLimits ( Latitude  minLat,
Longitude  minLon,
Latitude  maxLat,
Longitude  maxLon 
)

This restricts (or grows) the ground range in which to draw grid lines.

Parameters
minLatThe lowest latitude extreme to draw grid lines to
maxLatThe highest latitude extreme to draw grid lines to
minLonThe lowest longitude extreme to draw grid lines to
maxLonThe highest longitude extreme to draw grid lines to

Definition at line 385 of file GroundGrid.cpp.

References Isis::Angle::isValid().

void Isis::GroundGrid::WalkBoundary ( )

This draws grid lines along the extremes of the lat/lon box of the grid.

Definition at line 408 of file GroundGrid.cpp.

Member Data Documentation

double Isis::GroundGrid::p_defaultResolution
private

Default step size in degrees/pixel.

Definition at line 127 of file GroundGrid.h.

char* Isis::GroundGrid::p_grid
private

This stores the bits of each pixel in the grid.

Definition at line 111 of file GroundGrid.h.

unsigned long Isis::GroundGrid::p_gridSize
private

This is width*height.

Definition at line 116 of file GroundGrid.h.

UniversalGroundMap* Isis::GroundGrid::p_groundMap
private

This calculates single grid pts.

Definition at line 117 of file GroundGrid.h.

Referenced by GroundMap().

unsigned int Isis::GroundGrid::p_height
private

This is the height of the grid.

Definition at line 115 of file GroundGrid.h.

char* Isis::GroundGrid::p_latLinesGrid
private

This stores the bits of each pixel in the grid.

Definition at line 112 of file GroundGrid.h.

char* Isis::GroundGrid::p_lonLinesGrid
private

This stores the bits of each pixel in the grid.

Definition at line 113 of file GroundGrid.h.

PvlGroup* Isis::GroundGrid::p_mapping
private

The mapping group representation of the projection or camera.

Definition at line 125 of file GroundGrid.h.

Referenced by GetMappingGroup().

Latitude* Isis::GroundGrid::p_maxLat
private

Highest latitude in image.

Definition at line 121 of file GroundGrid.h.

Longitude* Isis::GroundGrid::p_maxLon
private

Highest longitude in image.

Definition at line 122 of file GroundGrid.h.

Latitude* Isis::GroundGrid::p_minLat
private

Lowest latitude in image.

Definition at line 119 of file GroundGrid.h.

Longitude* Isis::GroundGrid::p_minLon
private

Lowest longitude in image.

Definition at line 120 of file GroundGrid.h.

bool Isis::GroundGrid::p_reinitialize
private

True if we need to reset p_grid in CreateGrid.

Definition at line 129 of file GroundGrid.h.

unsigned int Isis::GroundGrid::p_width
private

This is the width of the grid.

Definition at line 114 of file GroundGrid.h.


The documentation for this class was generated from the following files: