Isis 3 Programmer Reference
Isis::Equirectangular Class Reference

Equirectangular Map Projection. More...

#include <Equirectangular.h>

Inheritance diagram for Isis::Equirectangular:
Inheritance graph
Collaboration diagram for Isis::Equirectangular:
Collaboration graph

Public Types

enum  LatitudeType { Planetocentric, Planetographic }
 This enum defines the types of Latitude supported in this class. More...
 
enum  LongitudeDirection { PositiveEast, PositiveWest }
 This enum defines the types of Longitude directions supported in this class. More...
 
enum  ProjectionType { Triaxial, RingPlane }
 This enum defines the subclasses of Projection supported in Isis. More...
 

Public Member Functions

 Equirectangular (Pvl &label, bool allowDefaults=false)
 Constructs a Equirectangular object. More...
 
 ~Equirectangular ()
 Destroys the Equirectangular object. More...
 
bool operator== (const Projection &proj)
 Compares two Projection objects to see if they are equal. More...
 
QString Name () const
 Returns the name of the map projection, "Equirectangular". More...
 
QString Version () const
 Returns the version of the map projection. More...
 
double TrueScaleLatitude () const
 Returns the latitude of true scale, in degrees. More...
 
bool IsEquatorialCylindrical ()
 Indicates whether the projection is Equitorial Cylindrical. More...
 
bool SetGround (const double lat, const double lon)
 This method is used to set the latitude/longitude (assumed to be of the correct LatitudeType, LongitudeDirection, and LongitudeDomain. More...
 
bool SetCoordinate (const double x, const double y)
 This method is used to set the projection x/y. More...
 
bool XYRange (double &minX, double &maxX, double &minY, double &maxY)
 This method is used to determine the x/y range which completely covers the area of interest specified by the lat/lon range. More...
 
virtual PvlGroup Mapping ()
 This function returns a PvlGroup containing the keywords that this projection uses, namely CenterLatitude and CenterLongitude. More...
 
virtual PvlGroup MappingLatitudes ()
 This function returns a PvlGroup containing the latitude keywords that this projection uses, namely CenterLatitude. More...
 
virtual PvlGroup MappingLongitudes ()
 This function returns a PvlGroup containing the longitude keywords that this projection uses, namely CenterLongitude. More...
 
double EquatorialRadius () const
 This returns the equatorial radius of the target. More...
 
double PolarRadius () const
 This returns the polar radius of the target. More...
 
double Eccentricity () const
 This returns the eccentricity of the target,. More...
 
double LocalRadius (double lat) const
 This method returns the local radius in meters at the specified latitude position. More...
 
double LocalRadius () const
 This method returns the local radius in meters at the current latitude position. More...
 
bool IsPlanetocentric () const
 This indicates if the latitude type is planetocentric (as opposed to planetographic). More...
 
bool IsPlanetographic () const
 This indicates if the latitude type is planetographic (as opposed to planetocentric). More...
 
QString LatitudeTypeString () const
 This method returns the latitude type as a string. More...
 
double ToPlanetocentric (const double lat) const
 This method converts a planetographic latitude to a planetocentric latitude. More...
 
double ToPlanetographic (const double lat) const
 This method converts a planetocentric latitude to a planetographic latitude. More...
 
bool IsPositiveEast () const
 This indicates if the longitude direction type is positive west (as opposed to postive east). More...
 
bool IsPositiveWest () const
 This indicates if the longitude direction type is positive east (as opposed to postive west). More...
 
QString LongitudeDirectionString () const
 This method returns the longitude direction as a string. More...
 
bool Has180Domain () const
 This indicates if the longitude domain is -180 to 180 (as opposed to 0 to 360). More...
 
bool Has360Domain () const
 This indicates if the longitude domain is 0 to 360 (as opposed to -180 to 180). More...
 
QString LongitudeDomainString () const
 This method returns the longitude domain as a string. More...
 
virtual double MinimumLatitude () const
 This returns the minimum latitude of the area of interest. More...
 
virtual double MaximumLatitude () const
 This returns the maximum latitude of the area of interest. More...
 
virtual double MinimumLongitude () const
 This returns the minimum longitude of the area of interest. More...
 
virtual double MaximumLongitude () const
 This returns the maximum longitude of the area of interest. More...
 
virtual double Latitude () const
 This returns a latitude with correct latitude type as specified in the label object. More...
 
virtual double Longitude () const
 This returns a longitude with correct longitude direction and domain as specified in the label object. More...
 
virtual bool SetUniversalGround (const double lat, const double lon)
 This method is used to set the latitude/longitude which must be Planetocentric (latitude) and PositiveEast/Domain360 (longitude). More...
 
bool SetUnboundUniversalGround (const double coord1, const double coord2)
 This method is used to set the latitude/longitude. More...
 
virtual double UniversalLatitude ()
 This returns a universal latitude (planetocentric). More...
 
virtual double UniversalLongitude ()
 This returns a universal longitude (positive east in 0 to 360 domain). More...
 
double Scale () const
 This method returns the scale for mapping world coordinates into projection coordinates. More...
 
bool operator!= (const Projection &proj)
 This method determines whether two map projection objects are not equal. More...
 
void setProjectionType (const ProjectionType ptype)
 Sets the projection subclass type. More...
 
ProjectionType projectionType () const
 Returns an enum value for the projection type. More...
 
bool IsSky () const
 Returns true if projection is sky and false if it is land. More...
 
virtual bool HasGroundRange () const
 This indicates if the longitude direction type is positive west (as opposed to postive east). More...
 
double Rotation () const
 Returns the value of the Rotation keyword from the mapping group. More...
 
void SetWorldMapper (WorldMapper *mapper)
 If desired the programmer can use this method to set a world mapper to be used in the SetWorld, WorldX, and WorldY methods. More...
 
bool IsGood () const
 This indicates if the last invocation of SetGround, SetCoordinate, SetUniversalGround, or SetWorld was with successful or not. More...
 
double XCoord () const
 This returns the projection X provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More...
 
double YCoord () const
 This returns the projection Y provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More...
 
virtual bool SetWorld (const double x, const double y)
 This method is used to set a world coordinate. More...
 
virtual double WorldX () const
 This returns the world X coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More...
 
virtual double WorldY () const
 This returns the world Y coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More...
 
double ToWorldX (const double projectionX) const
 This method converts a projection x value to a world x value. More...
 
double ToWorldY (const double projectionY) const
 This method converts a projection y value to a world y value. More...
 
double ToProjectionX (const double worldX) const
 This method converts a world x value to a projection x value. More...
 
double ToProjectionY (const double worldY) const
 This method converts a world y value to a projection y value. More...
 
double Resolution () const
 This method returns the resolution for mapping world coordinates into projection coordinates. More...
 
void SetUpperLeftCorner (const Displacement &x, const Displacement &y)
 This method searches for extreme (min/max/discontinuity) coordinate values along the constBorder line between minBorder and maxBorder (that is, across latitudes/longitudes). More...
 

Static Public Member Functions

static double ToPlanetocentric (double lat, double eRadius, double pRadius)
 This method converts a planetographic latitude to a planetocentric latitude. More...
 
static double ToPlanetographic (double lat, double eRadius, double pRadius)
 This method converts a planetocentric latitude to a planetographic latitude. More...
 
static double ToPositiveEast (const double lon, const int domain)
 This method converts a longitude into the positive east direction. More...
 
static double ToPositiveWest (const double lon, const int domain)
 This method converts a longitude into the positive west direction. More...
 
static double To180Domain (const double lon)
 This method converts a longitude into the -180 to 180 domain. More...
 
static double To360Domain (const double lon)
 This method converts a longitude into the 0 to 360 domain. More...
 
static double ToHours (double angle)
 Converts the given angle (in degrees) to hours by using the ratio 15 degrees per hour. More...
 
static QString ToDMS (double angle)
 Converts the given angle (in degrees) to degrees, minutes, seconds. More...
 
static QString ToHMS (double angle)
 Converts the given angle (in degrees) to hours, minutes, seconds. More...
 

Protected Member Functions

void XYRangeCheck (const double latitude, const double longitude)
 This convience function is established to assist in the development of the XYRange virtual method. More...
 
bool inLongitudeRange (double longitude)
 Determine whether the given longitude is within the range of the MinimumLongitude and MaximumLongitude range of this projection. More...
 
bool inLongitudeRange (double minLon, double maxLon, double longitude)
 Determine whether the given longitude is within the range of the given min and max longitudes. More...
 
bool inLatitudeRange (double latitude)
 Determine whether the given latitude is within the range of the MinimumLatitude and MaximumLatitude range of this projection. More...
 
bool xyRangeOblique (double &minX, double &maxX, double &minY, double &maxY)
 This method is used to find the XY range for oblique aspect projections (non-polar projections) by "walking" around each of the min/max lat/lon. More...
 
double qCompute (const double sinPhi) const
 A convience method to compute Snyder's q equation (3-12) for a given latitude, \(\phi\). More...
 
double phi2Compute (const double t) const
 A convience method to compute latitude angle phi2 given small t, from Syder's recursive equation (7-9) More...
 
double mCompute (const double sinphi, const double cosphi) const
 A convience method to compute Snyder's m equation (14-15) for a given latitude, \(\phi\). More...
 
double tCompute (const double phi, const double sinphi) const
 A convience method to compute Snyder's t equation (15-9) for a given latitude, \(\phi\). More...
 
double e4Compute () const
 A convience method to compute. More...
 
void SetXY (double x, double y)
 This protected method is a helper for derived classes. More...
 
void SetComputedXY (double x, double y)
 This protected method is a helper for derived classes. More...
 
double GetX () const
 Calculates the unrotated form of current x value. More...
 
double GetY () const
 Calculates the unrotated form of the current y value. More...
 
double PixelResolution () const
 Returns the pixel resolution value from the PVL mapping group in meters/pixel. More...
 

Protected Attributes

double m_latitude
 This contains the currently set latitude value. More...
 
double m_longitude
 This contains the currently set longitude value. More...
 
LatitudeType m_latitudeType
 An enumerated type indicating the LatitudeType read from the labels. More...
 
LongitudeDirection m_longitudeDirection
 An enumerated type indicating the LongitudeDirection read from the labels. More...
 
int m_longitudeDomain
 This integer is either 180 or 360 and is read from the labels. More...
 
double m_equatorialRadius
 Polar radius of the target. More...
 
double m_polarRadius
 Polar radius of the target. More...
 
double m_eccentricity
 The eccentricity of the target body. More...
 
double m_minimumLatitude
 Contains the minimum latitude for the entire ground range. More...
 
double m_maximumLatitude
 Contains the maximum latitude for the entire ground range. More...
 
double m_minimumLongitude
 Contains the minimum longitude for the entire ground range. More...
 
double m_maximumLongitude
 Contains the maximum longitude for the entire ground range. More...
 
WorldMapperm_mapper
 This points to a mapper passed into the SetWorldMapper method. More...
 
bool m_good
 Indicates if the contents of m_x, m_y, m_latitude, and m_longitude are valid. More...
 
bool m_sky
 Indicates whether projection is sky or land. More...
 
bool m_groundRangeGood
 Indicates if the ground range (min/max lat/lons) were read from the labels. More...
 
double m_minimumX
 The data elements m_minimumX, m_minimumY, m_maximumX, and m_maximumY are convience data elements when you write the XYRange virtual function. More...
 
double m_maximumX
 See minimumX description. More...
 
double m_minimumY
 See minimumX description. More...
 
double m_maximumY
 See minimumX description. More...
 
PvlGroup m_mappingGrp
 Mapping group that created this projection. More...
 

Private Member Functions

void doSearch (double minBorder, double maxBorder, double &extremeVal, const double constBorder, bool searchX, bool searchLongitude, bool findMin)
 This method searches for extreme (min/max/discontinuity) coordinate values along the constBorder line between minBorder and maxBorder (that is, across latitudes/longitudes). More...
 
void findExtreme (double &minBorder, double &maxBorder, double &minBorderX, double &minBorderY, double &maxBorderX, double &maxBorderY, const double constBorder, bool searchX, bool searchLongitude, bool findMin)
 Searches for extreme (min/max/discontinuity) coordinate values across latitudes/longitudes. More...
 
void setSearchGround (const double variableBorder, const double constBorder, bool variableIsLat)
 This function sets the ground for the given border values. More...
 

Private Attributes

double m_centerLongitude
 The center longitude for the map projection. More...
 
double m_centerLatitude
 The center latitude for the map projection. More...
 
double m_cosCenterLatitude
 Cosine of the center latitude. More...
 
double m_clatRadius
 The radius of the target planet at the center latitude. More...
 
std::vector< double > m_specialLatCases
 Constant Latitudes that intersect a discontinuity. More...
 
std::vector< double > m_specialLonCases
 Constant Longitudes that intersect a discontinuity. More...
 
ProjectionType m_projectionType
 
double m_rotation
 Rotation of map (usually zero) More...
 
double m_x
 This contains the rotated X coordinate for a specific projection at theposition indicated by m_latitude/m_longitude. More...
 
double m_y
 This contains the rotated Y coordinate for a specific projection at the position indicated by m_latitude/m_longitude. More...
 
double m_pixelResolution
 Pixel resolution value from the PVL mapping group, in meters/pixel. More...
 

Detailed Description

Equirectangular Map Projection.

This class provides methods for the forward and inverse equations of a Equirectangular map projection (for a sphere).

The Equirectangluar projection is a cylindrical projection in which the poles, latitudes, and longitudes are represented as straight, equidistant, lines. The poles and latitudes are horizontal lines and the longitudes are vertical lines. These lines intersect at right angles.

The code was converted to C++ from the Fortran version of the USGS General Cartographic Transformation Package (GCTP). In particular it was modified from the Equidistant Cylindrical code. This class inherits IsisProjection and provides the two virtual methods SetGround (forward) and SetCoordinate (inverse) and a third virtual method, XYRange, for obtaining projection coordinate coverage for a latitude/longitude window.

Please see the Projection class for a full accounting of all the methods available.

Author
2003-11-13 Jeff Anderson
History:
2004-02-07 Jeff Anderson - added plug-in capability.
History:
2004-02-24 Jeff Anderson - Modified forward and inverse methods to use the local radius at the center latitude instead of the equitorial radius.
History:
2005-03-11 Elizabeth Ribelin - added TrueScaleLatitude method test to the unitTest
History:
2007-06-29 Steven Lambright - Added Mapping, MappingLatitudes and MappingLongitudes methods.
History:
2008-05-09 Steven Lambright - Added Name, Version, IsEquatorialCylindrical methods
History:
2008-05-09 Steven Lambright - Fixed test for being too close to a pole
History:
2008-11-12 Steven Lambright - Commented some unclear code (CenterLatitudeRadius keyword)
History:
2012-06-15 Jeannie Backer - Added documentation. Added forward declaration of Pvl to header file. Ordered includes in implementation file. Moved Name, Version, IsEquatorialCylindrical to the implementation file. Minor modifications to comply with some coding standards. References #928.
History:
2012-01-20 Debbie A. Cook - Changed to use TProjection instead of Projection.
References #775.
History:
2013-04-26 Jeannie Backer - Modified constructor so that default center lat/lon values are at the center of the lat/lon ranges, respectively. This was done to be consistent with other projection defaults. Improved test coverage. Fixes #1597.
History:
2013-05-14 Jeannie Backer - Fixed unitTest merge error. References #775.

Definition at line 70 of file Equirectangular.h.

Member Enumeration Documentation

◆ LatitudeType

This enum defines the types of Latitude supported in this class.

Enumerator
Planetocentric 

Latitudes are measured as the angle from the equatorial plane to the plane through the center of the planet and a given point on the surface of the planet.

Planetographic 

Latitudes are measured as the angle from the equatorial plane to the normal to the surface of the planet at a given point.

Definition at line 203 of file TProjection.h.

◆ LongitudeDirection

This enum defines the types of Longitude directions supported in this class.


Enumerator
PositiveEast 

Longitude values increase in the easterly direction.

PositiveWest 

Longitude values increase in the westerly direction.

Definition at line 223 of file TProjection.h.

◆ ProjectionType

This enum defines the subclasses of Projection supported in Isis.

Enumerator
Triaxial 

These projections are used to map triaxial and irregular-shaped bodies.

RingPlane 

These projections are used to map ring planes.

Definition at line 166 of file Projection.h.

Constructor & Destructor Documentation

◆ Equirectangular()

Isis::Equirectangular::Equirectangular ( Pvl label,
bool  allowDefaults = false 
)

Constructs a Equirectangular object.

Parameters
labelThis argument must be a Label containing the proper mapping information as indicated in the IsisProjection class. Additionally, the equirectangular projection requires the center longitude to be defined in the keyword CenterLongitude as well as the center latitude in CenterLatitude.
allowDefaults(Default value is false) If set to false the constructor requires that the keywords CenterLongitude and CenterLatitude exist in the label. Otherwise, if they do not exist they will be computed and written to the label using the middle of the latitude/longitude range.
Exceptions
IException- "Cannot project without [CenterLongitude] value. Keyword does not exist in the labels and defaults are not allowed."
IException- "Cannot project without [CenterLatitude] value. Keyword does not exist in the labels and defaults are not allowed."
IException- "Keyword value for CenterLatitude is too close to the pole"
IException- "Invalid label group [Mapping]."
History:
2013-04-26 Jeannie Backer - Modified so that default center lat/lon values are at the center of the lat/lon ranges, respectively. This was done to be consistent with other projection defaults.

Definition at line 49 of file Equirectangular.cpp.

References Isis::PvlObject::findGroup(), Isis::PvlContainer::hasKeyword(), Isis::IException::Io, Isis::TProjection::LocalRadius(), m_centerLatitude, m_centerLongitude, m_clatRadius, m_cosCenterLatitude, Isis::TProjection::m_longitudeDirection, Isis::TProjection::m_maximumLatitude, Isis::TProjection::m_maximumLongitude, Isis::TProjection::m_minimumLatitude, Isis::TProjection::m_minimumLongitude, Isis::PI, Isis::TProjection::PositiveWest, Isis::toString(), Isis::PvlObject::Traverse, and Isis::IException::Unknown.

◆ ~Equirectangular()

Isis::Equirectangular::~Equirectangular ( )

Destroys the Equirectangular object.

Definition at line 116 of file Equirectangular.cpp.

Member Function Documentation

◆ doSearch()

void Isis::TProjection::doSearch ( double  minBorder,
double  maxBorder,
double &  extremeVal,
const double  constBorder,
bool  searchX,
bool  searchLongitude,
bool  findMin 
)
privateinherited

This method searches for extreme (min/max/discontinuity) coordinate values along the constBorder line between minBorder and maxBorder (that is, across latitudes/longitudes).

This method locates the extrema by utilizing the findExtreme() method until the coordinate values converge. Then, extremeVal parameter is updated with this value before returning.

Discontinuities are stored in m_specialLatCases and m_specialLonCases so they may be checked again later, which creates significantly more accuracy in some cases.

Parameters
minBorderMinimum latitude or longitude to search between.
maxBorderMaximum latitude or longitude to search between.
extremeValThe resulting global coordinate value (min or max value for x or y, depending on findMin and searchX) on the constBorder.
constBorderThe latitude or longitude that remains constant. The method will step along this border.
searchXIndicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate.
searchLongitudeIndicates whether the method will search along a longitude. If true, constBorder is longitude and all other borders are latitudes. If false, the method searches a latitude (constBorder is a lat, other borders lons).
findMinIndicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value.
Author
Steven Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here. Added condition to do-while loop for more precision. Replaced hard-coded TOLERANCE with 1/2 pixel resolution. (Defaults to 0.5)

Definition at line 1397 of file TProjection.cpp.

References Isis::TProjection::findExtreme(), Isis::TProjection::m_specialLatCases, Isis::TProjection::m_specialLonCases, Isis::Null, and Isis::Projection::PixelResolution().

Referenced by Isis::TProjection::xyRangeOblique().

◆ e4Compute()

double Isis::TProjection::e4Compute ( ) const
protectedinherited

A convience method to compute.

\[ e4 = \sqrt{(1+e )^{1+e}(1-e)^{1-e}} \]

where e is the eccentricity of the body.

Returns
double The value for the e4 formula.

Definition at line 1891 of file TProjection.cpp.

References Isis::TProjection::Eccentricity().

Referenced by Isis::PolarStereographic::PolarStereographic().

◆ Eccentricity()

double Isis::TProjection::Eccentricity ( ) const
inherited

This returns the eccentricity of the target,.

\[ e = \sqrt{1 - \frac{PR^2}{ER^2}} \]

where PR is the polar radius and ER is the equatorial radius. Since polar and equatorial radii are required to be greater than zero, it follows that \( 0 \le e < 1 \) . Note that if the body is spherical, then PR = ER and so e = 0.

Returns
double

Definition at line 304 of file TProjection.cpp.

References Isis::TProjection::m_eccentricity.

Referenced by Isis::TProjection::e4Compute(), Isis::TProjection::mCompute(), Isis::Mercator::Mercator(), Isis::TProjection::phi2Compute(), Isis::TProjection::tCompute(), and Isis::TransverseMercator::TransverseMercator().

◆ EquatorialRadius()

double Isis::TProjection::EquatorialRadius ( ) const
inherited

This returns the equatorial radius of the target.

The radius was obtained from the label during object construction.

Returns
double

Definition at line 277 of file TProjection.cpp.

References Isis::TProjection::m_equatorialRadius.

Referenced by Isis::MosaicGridTool::fromPvl(), Isis::TProjection::operator==(), and Isis::MosaicGridTool::setLatExtents().

◆ findExtreme()

void Isis::TProjection::findExtreme ( double &  minBorder,
double &  maxBorder,
double &  minBorderX,
double &  minBorderY,
double &  maxBorderX,
double &  maxBorderY,
const double  constBorder,
bool  searchX,
bool  searchLongitude,
bool  findMin 
)
privateinherited

Searches for extreme (min/max/discontinuity) coordinate values across latitudes/longitudes.

This method looks for these extrema along the constBorder between minBorder and maxBorder by stepping along constBorder (10 times) from the minBorder and maxBorder. Then, the range of this extreme value is recorded in minBorder and maxBorder and the coordinate values corresponding to these new borders are stored in minBorderX, minBorderY, maxBorderX and maxBorderY.

This function should be used by calling it repeatedly until minBorderX and minBorderY do not equal maxBorderX and maxBorderY, respectively. Discontinuities will cause the minBorderX, minBorderY, maxBorderX and maxBorderY to never converge. If minBorderX never comes close to maxBorderX or minBorderY never comes close to maxBorderY, then between minBorder and maxBorder is the value of the most extreme value. In this case, either the smaller or larger of the x or y values found will be correct, depending on the values of findMin and searchX.

Parameters
minBorderMinimum latitude or longitude to search between. This value gets updated to a more precise range.
maxBorderMaximum latitude or longitude to search between. This value gets updated to a more precise range.
minBorderXThe x-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderX.
minBorderYThe y-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderY.
maxBorderXThe x-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderX.
maxBorderYThe y-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderY.
constBorderThe latitude or longitude that remains constant. The method will step along this border.
searchXIndicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate.
searchLongitudeIndicates whether the method will search along a longitude. If true, constBorder is longitude and all other borders are latitudes. If false, the method searches a latitude (constBorder is a lat, other borders lons).
findMinIndicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value.
Author
Stephen Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here. Replaced parameters minVal and maxVal with minBorderX, minBorderY, maxBorderX, and maxBorderY.

Definition at line 1511 of file TProjection.cpp.

References Isis::Projection::m_good, Isis::Null, Isis::TProjection::setSearchGround(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().

Referenced by Isis::TProjection::doSearch().

◆ GetX()

◆ GetY()

◆ Has180Domain()

bool Isis::TProjection::Has180Domain ( ) const
inherited

This indicates if the longitude domain is -180 to 180 (as opposed to 0 to 360).

The longitude domain was obtained from the label during object construction.

Returns
bool

Definition at line 632 of file TProjection.cpp.

References Isis::TProjection::m_longitudeDomain.

Referenced by Isis::MosaicSceneItem::reproject(), and Isis::SubArea::UpdateLabel().

◆ Has360Domain()

bool Isis::TProjection::Has360Domain ( ) const
inherited

This indicates if the longitude domain is 0 to 360 (as opposed to -180 to 180).

The longitude domain was obtained from the label during object construction.

Returns
bool

Definition at line 643 of file TProjection.cpp.

References Isis::TProjection::m_longitudeDomain.

Referenced by Isis::MosaicAreaTool::calcLatLonRange().

◆ HasGroundRange()

bool Isis::Projection::HasGroundRange ( ) const
virtualinherited

This indicates if the longitude direction type is positive west (as opposed to postive east).

The longitude type was obtained from the label during object construction.

Returns
bool This indicates if the longitude direction type is positive east (as opposed to postive west). The longitude type was obtained from the label during object construction.
bool This method returns the longitude direction as a string. It will return either PositiveEast or PositiveWest.
string The longitude direction, "PositiveEast" or "PositiveWest". This indicates if the longitude domain is -180 to 180 (as opposed to 0 to 360). The longitude domain was obtained from the label during object construction.
bool This indicates if the longitude domain is 0 to 360 (as opposed to -180 to 180). The longitude domain was obtained from the label during object construction.
bool This method converts a longitude into the -180 to 180 domain. It will leave the longitude unchanged if it is already in the domain.
Parameters
lonLongitude to convert into the -180 to 180 domain.
Exceptions
IException::Unknown- "The given longitude is invalid."
Returns
double The longitude, converted to 180 domain. This method converts a longitude into the 0 to 360 domain. It will leave the longitude unchanged if it is already in the domain.
Parameters
lonLongitude to convert into the 0 to 360 domain.
Returns
double The longitude, converted to 360 domain. This method returns the longitude domain as a string. It will return either 180 or 360.
string The longitude domain, "180" or "360". This indicates that the labels contained minimum and maximum ground coordinatess (e.g., a ground range coverage). If the projection has ground range coverage then the MinimumLatitude, MaximumLatitude, MinimumLongitude, and MaximumLongitude methods or comparable methods for other projection types can be used. The ground range coverage essentially defines the area of user interest.
bool

Definition at line 349 of file Projection.cpp.

References Isis::Projection::m_groundRangeGood.

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::RingPlaneProjection::Mapping(), Isis::TProjection::MappingLatitudes(), Isis::TProjection::MappingLongitudes(), Isis::Planar::MappingRingLongitudes(), Isis::RingCylindrical::MappingRingLongitudes(), Isis::RingPlaneProjection::MappingRingLongitudes(), Isis::Planar::MappingRingRadii(), Isis::RingCylindrical::MappingRingRadii(), Isis::RingPlaneProjection::MappingRingRadii(), Isis::ProjectionFactory::RingsCreateForCube(), and Isis::TProjection::xyRangeOblique().

◆ inLatitudeRange()

bool Isis::TProjection::inLatitudeRange ( double  latitude)
protectedinherited

Determine whether the given latitude is within the range of the MinimumLatitude and MaximumLatitude range of this projection.

Note: It is a good habit to call this function to verify that a value is in range before passing it to XYRangeCheck.

See also
inLongitudeRange(minLon, maxLon, longitude)
inLongitudeRange(longitude)
XYRangeCheck(latitude, longitude)
Parameters
latitudeThe latitude to check.
Returns
bool Indicates whether MinimumLatitude <= latitude <= MaximumLatitude.

Definition at line 1160 of file TProjection.cpp.

References Isis::TProjection::MaximumLatitude(), and Isis::TProjection::MinimumLatitude().

◆ inLongitudeRange() [1/2]

bool Isis::TProjection::inLongitudeRange ( double  longitude)
protectedinherited

Determine whether the given longitude is within the range of the MinimumLongitude and MaximumLongitude range of this projection.

Note: It is a good habit to call this function to verify that a value is in range before passing it to XYRangeCheck.

See also
inLongitudeRange(minLon, maxLon, longitude)
inLatitudeRange(latitude)
XYRangeCheck(latitude, longitude)
Parameters
longitudeThe longitude to check.
Returns
bool Indicates whether MinimumLongitude <= longitude <= MaximumLongitude.

Definition at line 1140 of file TProjection.cpp.

References Isis::TProjection::MaximumLongitude(), and Isis::TProjection::MinimumLongitude().

◆ inLongitudeRange() [2/2]

bool Isis::TProjection::inLongitudeRange ( double  minLon,
double  maxLon,
double  longitude 
)
protectedinherited

Determine whether the given longitude is within the range of the given min and max longitudes.

Note: It is a good habit to call this function to verify that a value is in range before passing it to XYRangeCheck.

See also
inLongitudeRange(longitude)
inLatitudeRange(latitude)
XYRangeCheck(latitude, longitude)
Parameters
minLonThe lower end of longitude range.
maxLonThe upper end of longitude range.
longitudeThe longitude to check.
Returns
bool Indicates whether minLon <= longitude <= maxLon.

Definition at line 1097 of file TProjection.cpp.

References Isis::TProjection::To360Domain().

◆ IsEquatorialCylindrical()

bool Isis::Equirectangular::IsEquatorialCylindrical ( )
virtual

Indicates whether the projection is Equitorial Cylindrical.

Returns
bool True if the projection is cylindrical.

Reimplemented from Isis::TProjection.

Definition at line 170 of file Equirectangular.cpp.

◆ IsGood()

bool Isis::Projection::IsGood ( ) const
inherited

This indicates if the last invocation of SetGround, SetCoordinate, SetUniversalGround, or SetWorld was with successful or not.

If there was success then the Latitude, Longitude, XCoord, YCoord, UniversalLatitude, UniversalLongitude, WorldX, and WorldY methods can be utilized.

Returns
bool True if the last call to SetGround, SetCoordinate, SetUniversalGround, or SetWorld was successful.

Definition at line 374 of file Projection.cpp.

References Isis::Projection::m_good.

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::Chip::Load(), Isis::ProjectionFactory::RingsCreateForCube(), Isis::SubArea::UpdateLabel(), Isis::TProjection::XYRangeCheck(), and Isis::RingPlaneProjection::XYRangeCheck().

◆ IsPlanetocentric()

◆ IsPlanetographic()

bool Isis::TProjection::IsPlanetographic ( ) const
inherited

This indicates if the latitude type is planetographic (as opposed to planetocentric).

The latitude type was obtained from the label during object construction.

Returns
bool

Definition at line 403 of file TProjection.cpp.

References Isis::TProjection::m_latitudeType, and Isis::TProjection::Planetographic.

Referenced by Isis::SubArea::UpdateLabel().

◆ IsPositiveEast()

bool Isis::TProjection::IsPositiveEast ( ) const
inherited

This indicates if the longitude direction type is positive west (as opposed to postive east).

The longitude type was obtained from the label during object construction.

Returns
bool

Definition at line 520 of file TProjection.cpp.

References Isis::TProjection::m_longitudeDirection, and Isis::TProjection::PositiveEast.

Referenced by Isis::SubArea::UpdateLabel().

◆ IsPositiveWest()

bool Isis::TProjection::IsPositiveWest ( ) const
inherited

This indicates if the longitude direction type is positive east (as opposed to postive west).

The longitude type was obtained from the label during object construction.

Returns
bool

Definition at line 531 of file TProjection.cpp.

References Isis::TProjection::m_longitudeDirection, and Isis::TProjection::PositiveWest.

Referenced by Isis::TProjection::operator==().

◆ IsSky()

bool Isis::Projection::IsSky ( ) const
inherited

Returns true if projection is sky and false if it is land.

Returns
bool

Definition at line 208 of file Projection.cpp.

References Isis::Projection::m_sky.

Referenced by Isis::Camera::RawFocalPlanetoImage(), Isis::Camera::SetImage(), Isis::Camera::SetRightAscensionDeclination(), Isis::TrackTool::updateLabels(), and Isis::AdvancedTrackTool::updateRow().

◆ Latitude()

double Isis::TProjection::Latitude ( ) const
virtualinherited

This returns a latitude with correct latitude type as specified in the label object.

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns
double

Definition at line 811 of file TProjection.cpp.

References Isis::TProjection::m_latitude.

Referenced by Isis::MosaicGridTool::setLatExtents(), Isis::TrackTool::updateLabels(), Isis::MosaicTrackTool::updateLabels(), and Isis::PolygonTools::XYToLatLon().

◆ LatitudeTypeString()

QString Isis::TProjection::LatitudeTypeString ( ) const
inherited

This method returns the latitude type as a string.

It will return either Planetocentric or Planetographic.

Returns
string The latitude type, "Planetocentric" or "Planetographic".

Definition at line 508 of file TProjection.cpp.

References Isis::TProjection::m_latitudeType, and Isis::TProjection::Planetographic.

Referenced by Isis::MosaicGridTool::latType().

◆ LocalRadius() [1/2]

double Isis::TProjection::LocalRadius ( ) const
virtualinherited

This method returns the local radius in meters at the current latitude position.

This is only usable if the use of SetGround or SetCoordinate was successful.

Returns
double The value for the local radius, in meters, at the current latitude.

Implements Isis::Projection.

Definition at line 353 of file TProjection.cpp.

References Isis::TProjection::m_latitude.

Referenced by Equirectangular().

◆ LocalRadius() [2/2]

double Isis::TProjection::LocalRadius ( double  latitude) const
inherited

This method returns the local radius in meters at the specified latitude position.

For this method, the local radius is defined as the distance from the center of the planet to the surface of the planet at the given latitude.

\[ LR = \frac{ER*PR}{\sqrt{PR^2 \cos^2(LAT)+ER^2 \sin^2(LAT)}} \]

Parameters
latitudeA latitude in degrees (assumed to be of the correct LatitudeType).
Exceptions
IException::Unknown- "The given latitude is invalid."
Returns
double The value for the local radius, in meters, at the given latitude.

Definition at line 326 of file TProjection.cpp.

References Isis::TProjection::m_equatorialRadius, Isis::TProjection::m_polarRadius, Isis::Null, Isis::PI, Isis::toString(), and Isis::IException::Unknown.

Referenced by Isis::MosaicAreaTool::calcLatLonRange(), Isis::TiffImporter::convertProjection(), Isis::ProjectionFactory::CreateForCube(), and Isis::AdvancedTrackTool::updateRow().

◆ Longitude()

double Isis::TProjection::Longitude ( ) const
virtualinherited

This returns a longitude with correct longitude direction and domain as specified in the label object.

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns
double

Definition at line 823 of file TProjection.cpp.

References Isis::TProjection::m_longitude.

Referenced by Isis::Camera::SetImageSkyMapProjection(), Isis::MosaicGridTool::setLonExtents(), Isis::TrackTool::updateLabels(), Isis::MosaicTrackTool::updateLabels(), Isis::AdvancedTrackTool::updateRow(), and Isis::PolygonTools::XYToLatLon().

◆ LongitudeDirectionString()

QString Isis::TProjection::LongitudeDirectionString ( ) const
inherited

This method returns the longitude direction as a string.

It will return either PositiveEast or PositiveWest.

Returns
string The longitude direction, "PositiveEast" or "PositiveWest".

Definition at line 620 of file TProjection.cpp.

References Isis::TProjection::m_longitudeDirection, and Isis::TProjection::PositiveEast.

◆ LongitudeDomainString()

QString Isis::TProjection::LongitudeDomainString ( ) const
inherited

This method returns the longitude domain as a string.

It will return either 180 or 360.

Returns
string The longitude domain, "180" or "360".

Definition at line 698 of file TProjection.cpp.

References Isis::TProjection::m_longitudeDomain.

Referenced by Isis::MosaicGridTool::lonDomain().

◆ Mapping()

PvlGroup Isis::Equirectangular::Mapping ( )
virtual

This function returns a PvlGroup containing the keywords that this projection uses, namely CenterLatitude and CenterLongitude.

Returns
PvlGroup The keywords that this projection uses

Reimplemented from Isis::TProjection.

Definition at line 293 of file Equirectangular.cpp.

References Isis::Projection::m_mappingGrp, and Isis::TProjection::Mapping().

◆ MappingLatitudes()

PvlGroup Isis::Equirectangular::MappingLatitudes ( )
virtual

This function returns a PvlGroup containing the latitude keywords that this projection uses, namely CenterLatitude.

Returns
PvlGroup The latitude keywords that this projection uses

Reimplemented from Isis::TProjection.

Definition at line 308 of file Equirectangular.cpp.

References Isis::Projection::m_mappingGrp, and Isis::TProjection::MappingLatitudes().

◆ MappingLongitudes()

PvlGroup Isis::Equirectangular::MappingLongitudes ( )
virtual

This function returns a PvlGroup containing the longitude keywords that this projection uses, namely CenterLongitude.

Returns
PvlGroup The longitude keywords that this projection uses

Reimplemented from Isis::TProjection.

Definition at line 322 of file Equirectangular.cpp.

References Isis::Projection::m_mappingGrp, and Isis::TProjection::MappingLongitudes().

◆ MaximumLatitude()

double Isis::TProjection::MaximumLatitude ( ) const
virtualinherited

This returns the maximum latitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns
double

Definition at line 721 of file TProjection.cpp.

References Isis::TProjection::m_maximumLatitude.

Referenced by Isis::TProjection::inLatitudeRange(), Isis::MosaicGridTool::setLatExtents(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::TProjection::xyRangeOblique().

◆ MaximumLongitude()

double Isis::TProjection::MaximumLongitude ( ) const
virtualinherited

This returns the maximum longitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns
double

Definition at line 743 of file TProjection.cpp.

References Isis::TProjection::m_maximumLongitude.

Referenced by Isis::TProjection::inLongitudeRange(), Isis::MosaicGridTool::setLonExtents(), Isis::ProcessMapMosaic::SetOutputCube(), Isis::Orthographic::XYRange(), and Isis::TProjection::xyRangeOblique().

◆ mCompute()

double Isis::TProjection::mCompute ( const double  sinphi,
const double  cosphi 
) const
protectedinherited

A convience method to compute Snyder's m equation (14-15) for a given latitude, \(\phi\).

\[ m = \frac{\cos(\phi)}{\sqrt{1-e^2 \sin^2(\phi)}} \]

where \(e\) is the eccentricity for the body.

Parameters
sinphisine of phi
cosphicosine of phi
Returns
double Value for Snyder's m variable.

Definition at line 1847 of file TProjection.cpp.

References Isis::TProjection::Eccentricity().

Referenced by Isis::LambertConformal::LambertConformal(), and Isis::PolarStereographic::PolarStereographic().

◆ MinimumLatitude()

double Isis::TProjection::MinimumLatitude ( ) const
virtualinherited

This returns the minimum latitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns
double

Definition at line 710 of file TProjection.cpp.

References Isis::TProjection::m_minimumLatitude.

Referenced by Isis::TProjection::inLatitudeRange(), Isis::MosaicGridTool::setLatExtents(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::TProjection::xyRangeOblique().

◆ MinimumLongitude()

double Isis::TProjection::MinimumLongitude ( ) const
virtualinherited

This returns the minimum longitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns
double

Definition at line 732 of file TProjection.cpp.

References Isis::TProjection::m_minimumLongitude.

Referenced by Isis::TProjection::inLongitudeRange(), Isis::MosaicGridTool::setLonExtents(), Isis::ProcessMapMosaic::SetOutputCube(), Isis::Orthographic::XYRange(), and Isis::TProjection::xyRangeOblique().

◆ Name()

QString Isis::Equirectangular::Name ( ) const
virtual

Returns the name of the map projection, "Equirectangular".

Returns
QString Name of projection, "Equirectangular"

Implements Isis::TProjection.

Definition at line 142 of file Equirectangular.cpp.

◆ operator!=()

bool Isis::Projection::operator!= ( const Projection proj)
inherited

This method determines whether two map projection objects are not equal.

True is returned if they have at least some differences in the radii, latitude type, longitude direction, resolution, or projection name.

Parameters
projA reference to a Projection object to which this Projection will be compared.
Returns
bool Indicates whether the Projection objects are not equivalent.

Definition at line 178 of file Projection.cpp.

◆ operator==()

bool Isis::Equirectangular::operator== ( const Projection proj)
virtual

Compares two Projection objects to see if they are equal.

Parameters
projProjection object to do comparison on
Returns
bool Returns true if the Projection objects are equal, and false if they are not

Reimplemented from Isis::TProjection.

Definition at line 127 of file Equirectangular.cpp.

References m_centerLatitude, and m_centerLongitude.

◆ phi2Compute()

double Isis::TProjection::phi2Compute ( const double  t) const
protectedinherited

A convience method to compute latitude angle phi2 given small t, from Syder's recursive equation (7-9)

\[ \phi_{i+1} = \frac{\pi}{2} - 2\arctan\left(t \left[\frac{1-e\sin(\phi_i)}{1+e\sin(\phi_i)}\right]^{e/2}\right) \]

where \(e\) is the eccentricity for the body and \( \phi_0 = \frac{\pi}{2} - 2\arctan(t) \) .

Parameters
tsmall t
Exceptions
IException::Unknown- "Failed to converge in Projection::phi2Compute()"
Returns
double The value for the latitude.

Definition at line 1803 of file TProjection.cpp.

References Isis::TProjection::Eccentricity(), Isis::HALFPI, and Isis::IException::Unknown.

Referenced by Isis::LambertConformal::SetCoordinate(), Isis::Mercator::SetCoordinate(), and Isis::PolarStereographic::SetCoordinate().

◆ PixelResolution()

double Isis::Projection::PixelResolution ( ) const
protectedinherited

Returns the pixel resolution value from the PVL mapping group in meters/pixel.

Returns
double pixel resolution in meters/pixel

Definition at line 840 of file Projection.cpp.

References Isis::Projection::m_pixelResolution.

Referenced by Isis::TProjection::doSearch(), Isis::Planar::XYRange(), and Isis::RingCylindrical::XYRange().

◆ PolarRadius()

double Isis::TProjection::PolarRadius ( ) const
inherited

This returns the polar radius of the target.

The radius was obtained from the label during object construction.

Returns
double

Definition at line 287 of file TProjection.cpp.

References Isis::TProjection::m_polarRadius.

Referenced by Isis::MosaicGridTool::fromPvl(), Isis::TProjection::operator==(), and Isis::MosaicGridTool::setLatExtents().

◆ projectionType()

◆ qCompute()

double Isis::TProjection::qCompute ( const double  sinPhi) const
protectedinherited

A convience method to compute Snyder's q equation (3-12) for a given latitude, \(\phi\).

\[ q = (1 - e^2) \left[ \frac{\sin(\phi)}{1 - e^2 \sin^2(\phi)} - \frac{1}{2e} \ln\left(\frac{1 - e \sin(\phi)}{1 + e \sin(\phi)}\right) \right] \]

where \(e\) is the eccentricity for the body.

Parameters
sinPhiThe sine value for a latitude, phi.
Exceptions
IException::Unknown- "Snyder's q variable should only be computed for ellipsoidal projections."
Returns
double Value for Snyder's q variable.

Definition at line 1770 of file TProjection.cpp.

References Isis::TProjection::m_eccentricity, and Isis::IException::Unknown.

◆ Resolution()

double Isis::Projection::Resolution ( ) const
inherited

This method returns the resolution for mapping world coordinates into projection coordinates.

For example, if the world coordinate system is an image then this routine returns the number of meters per pixel. Likewise, if the world coordinate system is a piece of paper, it might return the number of meters per inch of paper. If the SetWorldMapper method is not invoked then this method returns 1.0

Returns
double The resolution, in appropriate units.

Definition at line 675 of file Projection.cpp.

References Isis::Projection::m_mapper, and Isis::WorldMapper::Resolution().

Referenced by Isis::ProcessExport::CreateWorldFile(), Isis::Projection::operator==(), Isis::UniversalGroundMap::Resolution(), and Isis::MeasureTool::updateDist().

◆ Rotation()

double Isis::Projection::Rotation ( ) const
inherited

Returns the value of the Rotation keyword from the mapping group.

Returns
double The rotation of the map.

Definition at line 359 of file Projection.cpp.

References Isis::Projection::m_rotation.

◆ Scale()

double Isis::TProjection::Scale ( ) const
virtualinherited

This method returns the scale for mapping world coordinates into projection coordinates.

For example, if the world coordinate system is an image then this routine returns the number of pixels per degree. Likewise, if the world coordinate system is a piece of paper, it might return the number of inches of paper per degree. If the SetWorldMapper method is not invoked then this method returns 1.0

Returns
double The scale for mapping.

Implements Isis::Projection.

Definition at line 940 of file TProjection.cpp.

References Isis::TProjection::m_equatorialRadius, Isis::Projection::m_mapper, Isis::TProjection::m_polarRadius, Isis::PI, Isis::WorldMapper::Resolution(), and Isis::TProjection::TrueScaleLatitude().

◆ SetComputedXY()

void Isis::Projection::SetComputedXY ( double  x,
double  y 
)
protectedinherited

◆ SetCoordinate()

bool Isis::Equirectangular::SetCoordinate ( const double  x,
const double  y 
)
virtual

This method is used to set the projection x/y.

The Set forces an attempted calculation of the corresponding latitude/longitude position. This may or may not be successful and a status is returned as such.

Parameters
xX coordinate of the projection in units that are the same as the radii in the label
yY coordinate of the projection in units that are the same as the radii in the label
Returns
bool Indicates whether the (x,y) coordinate was set.

Reimplemented from Isis::TProjection.

Definition at line 215 of file Equirectangular.cpp.

References Isis::Projection::GetX(), Isis::Projection::GetY(), Isis::HALFPI, m_centerLongitude, m_clatRadius, m_cosCenterLatitude, Isis::Projection::m_good, Isis::TProjection::m_latitude, Isis::TProjection::m_longitude, Isis::TProjection::m_longitudeDirection, Isis::PI, Isis::TProjection::PositiveWest, and Isis::Projection::SetXY().

◆ SetGround()

bool Isis::Equirectangular::SetGround ( const double  lat,
const double  lon 
)
virtual

This method is used to set the latitude/longitude (assumed to be of the correct LatitudeType, LongitudeDirection, and LongitudeDomain.

The Set forces an attempted calculation of the projection X/Y values. This may or may not be successful and a status is returned as such.

Parameters
latLatitude value to project, in degreees.
lonLongitude value to project, in degreees.
Returns
bool Indicates whether the ground values were set.

Reimplemented from Isis::TProjection.

Definition at line 185 of file Equirectangular.cpp.

References m_centerLongitude, m_clatRadius, m_cosCenterLatitude, Isis::Projection::m_good, Isis::TProjection::m_latitude, Isis::TProjection::m_longitude, Isis::TProjection::m_longitudeDirection, Isis::PI, Isis::TProjection::PositiveWest, and Isis::Projection::SetComputedXY().

◆ setProjectionType()

void Isis::Projection::setProjectionType ( const ProjectionType  ptype)
inherited

Sets the projection subclass type.

Parameters
ptypeThe projection subclass type

Definition at line 188 of file Projection.cpp.

Referenced by Isis::RingPlaneProjection::RingPlaneProjection(), and Isis::TProjection::TProjection().

◆ setSearchGround()

void Isis::TProjection::setSearchGround ( const double  variableBorder,
const double  constBorder,
bool  variableIsLat 
)
privateinherited

This function sets the ground for the given border values.

It calls the SetGround(lat, lon) method with the appropriate lat/lon values, depending on whether variableIsLat is true.

This method is used by doSearch and findExtreme in order to set the ground correctly each time.

Parameters
variableBorderThe latitude or longitude that is variable in the search methods.
constBorderThe latitude or longitude that is constant in the search methods.
variableIsLatIndicates whether variableBorder is the latittude value and constBorder is the longitude value. If false, variableBorder is the longitude value and constBorder is the latitude value.
Author
Stephen Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here. Added error.

Definition at line 1673 of file TProjection.cpp.

References Isis::Null, and Isis::TProjection::SetGround().

Referenced by Isis::TProjection::findExtreme().

◆ SetUnboundUniversalGround()

bool Isis::TProjection::SetUnboundUniversalGround ( const double  lat,
const double  lon 
)
virtualinherited

This method is used to set the latitude/longitude.

The Set forces an attempted calculation of the projection X/Y values. This may or may not be successful and a status is returned as such. This version does not adjust the longitude based on the longitude domain.

Parameters
latPlanetocentric Latitude value to project
lonPositiveEast, Domain360 Longitude value to project
Returns
bool Indicates whether the method was successful.

Reimplemented from Isis::Projection.

Definition at line 879 of file TProjection.cpp.

References Isis::Projection::m_good, Isis::TProjection::m_latitude, Isis::TProjection::m_latitudeType, Isis::TProjection::m_longitude, Isis::TProjection::m_longitudeDirection, Isis::Null, Isis::TProjection::Planetographic, Isis::TProjection::PositiveWest, Isis::TProjection::SetGround(), and Isis::TProjection::ToPlanetographic().

Referenced by Isis::Projection::SetUnboundUniversalGround().

◆ SetUniversalGround()

bool Isis::TProjection::SetUniversalGround ( const double  lat,
const double  lon 
)
virtualinherited

This method is used to set the latitude/longitude which must be Planetocentric (latitude) and PositiveEast/Domain360 (longitude).

The Set forces an attempted calculation of the projection X/Y values. This may or may not be successful and a status is returned as such.

Parameters
latPlanetocentric Latitude value to project
lonPositiveEast, Domain360 Longitude value to project
Returns
bool Indicates whether the method was successful.

Reimplemented from Isis::Projection.

Definition at line 839 of file TProjection.cpp.

References Isis::Projection::m_good, Isis::TProjection::m_latitude, Isis::TProjection::m_latitudeType, Isis::TProjection::m_longitude, Isis::TProjection::m_longitudeDirection, Isis::TProjection::m_longitudeDomain, Isis::Null, Isis::TProjection::Planetographic, Isis::TProjection::PositiveWest, Isis::TProjection::SetGround(), Isis::TProjection::To180Domain(), Isis::TProjection::To360Domain(), and Isis::TProjection::ToPlanetographic().

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::MosaicGridTool::setLatExtents(), and Isis::Projection::SetUniversalGround().

◆ SetUpperLeftCorner()

void Isis::Projection::SetUpperLeftCorner ( const Displacement x,
const Displacement y 
)
inherited

This method searches for extreme (min/max/discontinuity) coordinate values along the constBorder line between minBorder and maxBorder (that is, across latitudes/longitudes).

This method locates the extrema by utilizing the findExtreme() method until the coordinate values converge. Then, extremeVal parameter is updated with this value before returning.

Discontinuities are stored in m_specialLatCases and m_specialLonCases so they may be checked again later, which creates significantly more accuracy in some cases.

Parameters
minBorderMinimum latitude or longitude to search between.
maxBorderMaximum latitude or longitude to search between.
extremeValThe resulting global coordinate value (min or max value for x or y, depending on findMin and searchX) on the constBorder.
constBorderThe latitude or longitude that remains constant. The method will step along this border.
searchXIndicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate.
searchLongitudeIndicates whether the method will search along a longitude. If true, constBorder is longitude and all other borders are latitudes. If false, the method searches a latitude (constBorder is a lat, other borders lons).
findMinIndicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value.
Author
Steven Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here. Added condition to do-while loop for more precision. Replaced hard-coded TOLERANCE with 1/2 pixel resolution. (Defaults to 0.5)

Searches for extreme (min/max/discontinuity) coordinate values across latitudes/longitudes.

This method looks for these extrema along the constBorder between minBorder and maxBorder by stepping along constBorder (10 times) from the minBorder and maxBorder. Then, the range of this extreme value is recorded in minBorder and maxBorder and the coordinate values corresponding to these new borders are stored in minBorderX, minBorderY, maxBorderX and maxBorderY.

This function should be used by calling it repeatedly until minBorderX and minBorderY do not equal maxBorderX and maxBorderY, respectively. Discontinuities will cause the minBorderX, minBorderY, maxBorderX and maxBorderY to never converge. If minBorderX never comes close to maxBorderX or minBorderY never comes close to maxBorderY, then between minBorder and maxBorder is the value of the most extreme value. In this case, either the smaller or larger of the x or y values found will be correct, depending on the values of findMin and searchX.

Parameters
minBorderMinimum latitude or longitude to search between. This value gets updated to a more precise range.
maxBorderMaximum latitude or longitude to search between. This value gets updated to a more precise range.
minBorderXThe x-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderX.
minBorderYThe y-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderY.
maxBorderXThe x-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderX.
maxBorderYThe y-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderY.
constBorderThe latitude or longitude that remains constant. The method will step along this border.
searchXIndicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate.
searchLongitudeIndicates whether the method will search along a longitude. If true, constBorder is longitude and all other borders are latitudes. If false, the method searches a latitude (constBorder is a lat, other borders lons).
findMinIndicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value.
Author
Stephen Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here. Replaced parameters minVal and maxVal with minBorderX, minBorderY, maxBorderX, and maxBorderY.

This function sets the ground for the given border values. It calls the SetGround(lat, lon) method with the appropriate lat/lon values, depending on whether variableIsLat is true.

This method is used by doSearch and findExtreme in order to set the ground correctly each time.

Parameters
variableBorderThe latitude or longitude that is variable in the search methods.
constBorderThe latitude or longitude that is constant in the search methods.
variableIsLatIndicates whether variableBorder is the latittude value and constBorder is the longitude value. If false, variableBorder is the longitude value and constBorder is the latitude value.
Author
Stephen Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here. Added error.

This method sets the UpperLeftCornerX and UpperLeftCornerY keywords in the projection mapping group, in meters.

Parameters
xthe upper left corner x value
ythe upper left corner y value

Definition at line 1373 of file Projection.cpp.

References Isis::PvlContainer::addKeyword(), Isis::Projection::m_mappingGrp, Isis::Displacement::meters(), and Isis::toString().

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProjectionFactory::CreateFromCube(), Isis::ProjectionFactory::RingsCreateForCube(), and Isis::ProjectionFactory::RingsCreateFromCube().

◆ SetWorld()

bool Isis::Projection::SetWorld ( const double  worldX,
const double  worldY 
)
virtualinherited

This method is used to set a world coordinate.

A world coordinate is a different coordinate type that has a one-to-one mapping to the projection coordinate system. For example, mapping pixel samples and lines to projection x's and y's. The Set forces an attempted calculation of the corresponding latitude/longitude position. This may or may not be successful and a status is returned as such. Note that is only applies if the Projection object was given an WorldMapper object during construction. If an WorldMapper was not supplied then SetWorld operates exactly the same as SetCoordinate (impling that world coordinate and projection coordinate are identical).

Parameters
worldXWorld X coordinate in units that are specified by the WorldMapper object (e.g., pixels, millimeters, etc)
worldYWorld Y coordinate in units that are specified by the WorldMapper object (e.g., pixels, millimeters, etc)
Returns
bool Indicates whether the method was successful.

Definition at line 497 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::WorldMapper::ProjectionX(), and Isis::WorldMapper::ProjectionY().

Referenced by Isis::ProcessExport::CreateWorldFile(), Isis::UniversalGroundMap::GroundRange(), Isis::Cube::latLonRange(), Isis::Chip::Load(), Isis::UniversalGroundMap::SetImage(), Isis::Camera::SetImageMapProjection(), Isis::Camera::SetImageSkyMapProjection(), Isis::MeasureTool::updateDist(), Isis::SubArea::UpdateLabel(), Isis::TrackTool::updateLabels(), Isis::AdvancedTrackTool::updateRow(), and Isis::PolygonTools::XYToLatLon().

◆ SetWorldMapper()

void Isis::Projection::SetWorldMapper ( WorldMapper mapper)
inherited

If desired the programmer can use this method to set a world mapper to be used in the SetWorld, WorldX, and WorldY methods.

Mappers typically transform a projection coordinate (x/y) into the desired working coordinate system, for example, cube pixels or inches on a piece of paper. They transform in both directions (world to projection and projection to world). This allows for conversions from line/sample to latitude/longitude and vice versa. This projection will take ownership of the WorldMapper pointer.

Parameters
mapperPointer to the mapper

Definition at line 474 of file Projection.cpp.

References Isis::Projection::m_mapper.

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProjectionFactory::CreateFromCube(), Isis::ProjectionFactory::RingsCreateForCube(), and Isis::ProjectionFactory::RingsCreateFromCube().

◆ SetXY()

◆ tCompute()

double Isis::TProjection::tCompute ( const double  phi,
const double  sinphi 
) const
protectedinherited

A convience method to compute Snyder's t equation (15-9) for a given latitude, \(\phi\).

\[ t = \frac{\tan\left(\frac{\pi}{4} - \frac{\phi}{2}\right)} {\left[\frac{1-e\sin(\phi)} {1+e\sin(\phi)}\right]^{e/2}} \]

where \(e\) is the eccentricity for the body.

Parameters
phiphi
sinphisin of phi
Returns
double The value for Snyder's t variable.

Definition at line 1870 of file TProjection.cpp.

References Isis::TProjection::Eccentricity(), and Isis::HALFPI.

Referenced by Isis::LambertConformal::LambertConformal(), Isis::PolarStereographic::PolarStereographic(), Isis::LambertConformal::SetGround(), Isis::Mercator::SetGround(), and Isis::PolarStereographic::SetGround().

◆ To180Domain()

double Isis::TProjection::To180Domain ( const double  lon)
staticinherited

◆ To360Domain()

double Isis::TProjection::To360Domain ( const double  lon)
staticinherited

◆ ToDMS()

QString Isis::Projection::ToDMS ( double  angle)
staticinherited

Converts the given angle (in degrees) to degrees, minutes, seconds.

Outputs in the form xxx yym zz.zzzs, for example, 206.291 degrees is 206 17m 27.6s

Parameters
angleAngle in degrees to be converted to degrees, minutes, seconds
Returns
string The angle in Degrees, minutes, seconds

Definition at line 706 of file Projection.cpp.

◆ ToHMS()

QString Isis::Projection::ToHMS ( double  angle)
staticinherited

Converts the given angle (in degrees) to hours, minutes, seconds.

Outputs in the form xxh yym zz.zzzs For example, 206.291 will be 13h 45m 09.84s

Parameters
angleAngle in degrees to be converted to hours, minutes, seconds
Returns
string The angle in Hours, minutes, seconds

Definition at line 741 of file Projection.cpp.

References Isis::Projection::ToHours().

◆ ToHours()

double Isis::Projection::ToHours ( double  angle)
staticinherited

Converts the given angle (in degrees) to hours by using the ratio 15 degrees per hour.

Parameters
angleAngle in degrees to be converted to hours
Returns
double The number of hours for the given angle.

Definition at line 693 of file Projection.cpp.

Referenced by Isis::Projection::ToHMS().

◆ ToPlanetocentric() [1/2]

double Isis::TProjection::ToPlanetocentric ( const double  lat) const
inherited

This method converts a planetographic latitude to a planetocentric latitude.

It utilizes the equatorial and polar radii found in the labels to perform the computation.

Parameters
latPlanetographic latitude to convert.
See also
ToPlanetocentric(lat, eRadius, pRadius)
Returns
double The latitude, converted to planetocentric.

Definition at line 418 of file TProjection.cpp.

References Isis::TProjection::m_equatorialRadius, and Isis::TProjection::m_polarRadius.

Referenced by Isis::LambertConformal::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), and Isis::TProjection::UniversalLatitude().

◆ ToPlanetocentric() [2/2]

double Isis::TProjection::ToPlanetocentric ( double  lat,
double  eRadius,
double  pRadius 
)
staticinherited

This method converts a planetographic latitude to a planetocentric latitude.

Parameters
latPlanetographic latitude to convert.
eRadiusEquatorial radius.
pRadiusPolar radius
Exceptions
IException::Unknown- "The given latitude is invalid."
Returns
double The latitude, converted to planetocentric.

Definition at line 434 of file TProjection.cpp.

References Isis::Null, Isis::PI, Isis::toString(), and Isis::IException::Unknown.

◆ ToPlanetographic() [1/2]

◆ ToPlanetographic() [2/2]

double Isis::TProjection::ToPlanetographic ( double  lat,
double  eRadius,
double  pRadius 
)
staticinherited

This method converts a planetocentric latitude to a planetographic latitude.

It is static so that a projection object does not need to exist.

Parameters
latPlanetocentric latitude to convert.
eRadiusEquatorial radius.
pRadiusPolar radius
Exceptions
IException::Unknown- "The given latitude is invalid."
Returns
double The latitude, converted to planetographic.

Definition at line 480 of file TProjection.cpp.

References Isis::Null, Isis::PI, Isis::toString(), and Isis::IException::Unknown.

◆ ToPositiveEast()

double Isis::TProjection::ToPositiveEast ( const double  lon,
const int  domain 
)
staticinherited

This method converts a longitude into the positive east direction.

Parameters
lonLongitude to convert into the positive east direction.
domainMust be an integer value of 180 (for -180 to 180) or 360 (for 0 to 360).
Exceptions
IException::Unknown- "The given longitude is invalid."
IException::Unknown- "Unable to convert longitude. Domain is not 180 or 360."
Returns
double Longitude value, in positive east direction.

Definition at line 548 of file TProjection.cpp.

References Isis::Null, Isis::TProjection::To180Domain(), Isis::TProjection::To360Domain(), Isis::toString(), and Isis::IException::Unknown.

◆ ToPositiveWest()

double Isis::TProjection::ToPositiveWest ( const double  lon,
const int  domain 
)
staticinherited

This method converts a longitude into the positive west direction.

Parameters
lonLongitude to convert into the positive west direction.
domainMust be an integer value of 180 (for -180 to 180) or 360 (for 0 to 360).
Exceptions
IException::Unknown- "The given longitude is invalid."
IException::Unknown- "Unable to convert longitude. Domain is not 180 or 360."
Returns
double Longitude value, in positive west direction.

Definition at line 587 of file TProjection.cpp.

References Isis::Null, Isis::TProjection::To180Domain(), Isis::TProjection::To360Domain(), Isis::toString(), and Isis::IException::Unknown.

Referenced by Isis::CameraPointInfo::GetPointInfo(), and Isis::SubArea::UpdateLabel().

◆ ToProjectionX()

double Isis::Projection::ToProjectionX ( const double  worldX) const
inherited

This method converts a world x value to a projection x value.

For example, if the world coordinate system is an image then this method converts a sample position to a projection x value. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters
worldXWorld x coordinate
Exceptions
IException::Unknown- "The given x-value is invalid."
Returns
double The projection X coordinate value.

Definition at line 622 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::Null, Isis::WorldMapper::ProjectionX(), and Isis::IException::Unknown.

Referenced by Isis::OverlapStatistics::OverlapStatistics(), Isis::ProcessMapMosaic::RingsSetOutputCube(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::ProcessMapMosaic::StartProcess().

◆ ToProjectionY()

double Isis::Projection::ToProjectionY ( const double  worldY) const
inherited

This method converts a world y value to a projection y value.

For example, if the world coordinate system is an image then this method converts a line position to a projection y value. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters
worldYWorld y coordinate
Exceptions
IException::Unknown- "The given y-value is invalid."
Returns
double The projection Y coordinate value.

Definition at line 650 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::Null, Isis::WorldMapper::ProjectionY(), and Isis::IException::Unknown.

Referenced by Isis::OverlapStatistics::OverlapStatistics(), Isis::ProcessMapMosaic::RingsSetOutputCube(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::ProcessMapMosaic::StartProcess().

◆ ToWorldX()

double Isis::Projection::ToWorldX ( const double  projectionX) const
inherited

This method converts a projection x value to a world x value.

For example, if the world coordinate system is an image then this method converts a projection x to a sample position. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters
projectionXProjection x value in meters
Exceptions
IException::Unknown- "The given x-value is invalid."
Returns
double The world X coordinate value.

Definition at line 566 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::Null, Isis::IException::Unknown, and Isis::WorldMapper::WorldX().

Referenced by Isis::OverlapStatistics::OverlapStatistics(), Isis::ProcessMapMosaic::RingsSetOutputCube(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::ProcessMapMosaic::StartProcess().

◆ ToWorldY()

double Isis::Projection::ToWorldY ( const double  projectionY) const
inherited

This method converts a projection y value to a world y value.

For example, if the world coordinate system is an image then this method converts a projection y to a line position. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters
projectionYProjection y value in meters
Exceptions
IException::Unknown- "The given y-value is invalid."
Returns
double The world Y coordinate value.

Definition at line 594 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::Null, Isis::IException::Unknown, and Isis::WorldMapper::WorldY().

Referenced by Isis::OverlapStatistics::OverlapStatistics(), Isis::ProcessMapMosaic::RingsSetOutputCube(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::ProcessMapMosaic::StartProcess().

◆ TrueScaleLatitude()

double Isis::Equirectangular::TrueScaleLatitude ( ) const
virtual

Returns the latitude of true scale, in degrees.

In the case of Equirectangular it is the center latitude.

Returns
double The center latitude, in degrees.

Reimplemented from Isis::TProjection.

Definition at line 161 of file Equirectangular.cpp.

References m_centerLatitude, and Isis::PI.

◆ UniversalLatitude()

double Isis::TProjection::UniversalLatitude ( )
virtualinherited

This returns a universal latitude (planetocentric).

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns
double The universal latitude.

Definition at line 908 of file TProjection.cpp.

References Isis::TProjection::m_latitude, Isis::TProjection::m_latitudeType, Isis::TProjection::Planetographic, and Isis::TProjection::ToPlanetocentric().

Referenced by Isis::UniversalGroundMap::GroundRange(), Isis::Cube::latLonRange(), Isis::Chip::Load(), Isis::Camera::SetImageMapProjection(), Isis::Camera::SetImageSkyMapProjection(), Isis::UniversalGroundMap::UniversalLatitude(), Isis::SubArea::UpdateLabel(), and Isis::AdvancedTrackTool::updateRow().

◆ UniversalLongitude()

double Isis::TProjection::UniversalLongitude ( )
virtualinherited

This returns a universal longitude (positive east in 0 to 360 domain).

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns
double The universal longitude.

Definition at line 922 of file TProjection.cpp.

References Isis::TProjection::m_longitude, Isis::TProjection::m_longitudeDirection, Isis::TProjection::PositiveWest, and Isis::TProjection::To360Domain().

Referenced by Isis::UniversalGroundMap::GroundRange(), Isis::Cube::latLonRange(), Isis::Chip::Load(), Isis::Camera::SetImageMapProjection(), Isis::UniversalGroundMap::UniversalLongitude(), Isis::SubArea::UpdateLabel(), and Isis::AdvancedTrackTool::updateRow().

◆ Version()

QString Isis::Equirectangular::Version ( ) const
virtual

Returns the version of the map projection.

Returns
QString Version number

Implements Isis::TProjection.

Definition at line 151 of file Equirectangular.cpp.

◆ WorldX()

double Isis::Projection::WorldX ( ) const
virtualinherited

This returns the world X coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.

Success can also be checked using the IsGood method. The units of X will be in the units as specified by the WorldMapper object which was given to the SetWorldMapper method. If a mapper object was not given then world coordinates are the same as the projection coordinates (i.e., WorldX and XCoord will return the same value).

Returns
double The world X coordinate.

Definition at line 524 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::Projection::m_x, and Isis::WorldMapper::WorldX().

Referenced by Isis::MosaicSceneItem::drawImage(), Isis::ImagePolygon::FixPolePoly(), Isis::Chip::Load(), Isis::DemShape::localRadius(), Isis::Camera::RawFocalPlanetoImage(), Isis::UniversalGroundMap::Sample(), Isis::Camera::SetRightAscensionDeclination(), and Isis::ProcessMapMosaic::StartProcess().

◆ WorldY()

double Isis::Projection::WorldY ( ) const
virtualinherited

This returns the world Y coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.

Success can also be checked using the IsGood method. The units of Y will be in the units as specified by the WorldMapper object which was given to the SetWorldMapper. If a mapper object was not given then world coordinates are the same as the projection coordinates (i.e., WorldY and YCoord will return the same value).

Returns
double The world Y coordinate.

Definition at line 544 of file Projection.cpp.

References Isis::Projection::m_mapper, Isis::Projection::m_y, and Isis::WorldMapper::WorldY().

Referenced by Isis::MosaicSceneItem::drawImage(), Isis::ImagePolygon::FixPolePoly(), Isis::UniversalGroundMap::Line(), Isis::Chip::Load(), Isis::DemShape::localRadius(), Isis::Camera::RawFocalPlanetoImage(), and Isis::Camera::SetRightAscensionDeclination().

◆ XCoord()

double Isis::Projection::XCoord ( ) const
inherited

◆ XYRange()

bool Isis::Equirectangular::XYRange ( double &  minX,
double &  maxX,
double &  minY,
double &  maxY 
)
virtual

This method is used to determine the x/y range which completely covers the area of interest specified by the lat/lon range.

The latitude/longitude range may be obtained from the labels. The purpose of this method is to return the x/y range so it can be used to compute how large a map may need to be. For example, how big a piece of paper is needed or how large of an image needs to be created. The method may fail as indicated by its return value.

Parameters
minXMinimum x projection coordinate which covers the latitude longitude range specified in the labels.
maxXMaximum x projection coordinate which covers the latitude longitude range specified in the labels.
minYMinimum y projection coordinate which covers the latitude longitude range specified in the labels.
maxYMaximum y projection coordinate which covers the latitude longitude range specified in the labels.
Returns
bool Indicates whether the method was successful.

Reimplemented from Isis::TProjection.

Definition at line 267 of file Equirectangular.cpp.

References Isis::TProjection::m_maximumLatitude, Isis::TProjection::m_maximumLongitude, Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::TProjection::m_minimumLatitude, Isis::TProjection::m_minimumLongitude, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, and Isis::TProjection::XYRangeCheck().

◆ XYRangeCheck()

void Isis::TProjection::XYRangeCheck ( const double  latitude,
const double  longitude 
)
protectedvirtualinherited

This convience function is established to assist in the development of the XYRange virtual method.

It allows the developer to test ground points (lat/lon) to see if they produce a minimum/maximum projection coordinate.

This method will first verify that the given latitude and longitude values are not Null. If so, the method will change the status of the object to good=false before returning (i.e IsGood() returns false).

If both of those test pass, it attempts to set the ground to the given latitude and longitude and, if successful, compares the new x and y with the saved min/max x and y values.

For example in Sinusoidal this method is called in the following way:

bool Sinusoidal::XYRange(double &minX, double &maxX,
double &minY, double &maxY) {
// Check the corners of the lat/lon range
// In case the latitude crosses the equator, check there
if (inLatitudeRange(0.0)) {
}
// Make sure everything is ordered
if (m_minimumX >= m_maximumX) return false;
if (m_minimumY >= m_maximumY) return false;
// Return X/Y min/maxs
minX = m_minimumX;
maxX = m_maximumX;
minY = m_minimumY;
maxY = m_maximumY;
return true;
}

Note: It is a good habit to call the inLatitudeRange and inLongitudeRange functions to verify that the values are in range before passing it to XYRangeCheck.

See also
inLongitudeRange(minLon, maxLon, longitude)
inLongitudeRange(longitude)
inLatitudeRange(latitude)
Parameters
latitudeTest for min/max projection coordinates at this latitude
longitudeTest for min/max projection coordinates at this longitude

Implements Isis::Projection.

Definition at line 1062 of file TProjection.cpp.

References Isis::Projection::IsGood(), Isis::Projection::m_good, Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, Isis::Null, Isis::TProjection::SetGround(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().

Referenced by XYRange(), Isis::LambertConformal::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mercator::XYRange(), Isis::Mollweide::XYRange(), Isis::Orthographic::XYRange(), Isis::PolarStereographic::XYRange(), Isis::Robinson::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Sinusoidal::XYRange(), and Isis::TransverseMercator::XYRange().

◆ xyRangeOblique()

bool Isis::TProjection::xyRangeOblique ( double &  minX,
double &  maxX,
double &  minY,
double &  maxY 
)
protectedinherited

This method is used to find the XY range for oblique aspect projections (non-polar projections) by "walking" around each of the min/max lat/lon.

Parameters
minXMinimum x projection coordinate which covers the latitude longitude range specified in the labels.
maxXMaximum x projection coordinate which covers the latitude longitude range specified in the labels.
minYMinimum y projection coordinate which covers the latitude longitude range specified in the labels.
maxYMaximum y projection coordinate which covers the latitude longitude range specified in the labels.
Returns
bool Indicates whether the method was successful.
See also
XYRange()
Author
Stephen Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here.
History:
2012-11-30 Debbie A. Cook - Changed to use TProjection instead of Projection. References #775.

Definition at line 1195 of file TProjection.cpp.

References Isis::TProjection::doSearch(), Isis::Projection::HasGroundRange(), Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, Isis::TProjection::m_specialLatCases, Isis::TProjection::m_specialLonCases, Isis::TProjection::MaximumLatitude(), Isis::TProjection::MaximumLongitude(), Isis::TProjection::MinimumLatitude(), Isis::TProjection::MinimumLongitude(), and Isis::Null.

Referenced by Isis::ObliqueCylindrical::XYRange().

◆ YCoord()

double Isis::Projection::YCoord ( ) const
inherited

Member Data Documentation

◆ m_centerLatitude

double Isis::Equirectangular::m_centerLatitude
private

The center latitude for the map projection.

Definition at line 91 of file Equirectangular.h.

Referenced by Equirectangular(), operator==(), and TrueScaleLatitude().

◆ m_centerLongitude

double Isis::Equirectangular::m_centerLongitude
private

The center longitude for the map projection.

Definition at line 90 of file Equirectangular.h.

Referenced by Equirectangular(), operator==(), SetCoordinate(), and SetGround().

◆ m_clatRadius

double Isis::Equirectangular::m_clatRadius
private

The radius of the target planet at the center latitude.

Definition at line 93 of file Equirectangular.h.

Referenced by Equirectangular(), SetCoordinate(), and SetGround().

◆ m_cosCenterLatitude

double Isis::Equirectangular::m_cosCenterLatitude
private

Cosine of the center latitude.

Definition at line 92 of file Equirectangular.h.

Referenced by Equirectangular(), SetCoordinate(), and SetGround().

◆ m_eccentricity

double Isis::TProjection::m_eccentricity
protectedinherited

The eccentricity of the target body.

Definition at line 352 of file TProjection.h.

Referenced by Isis::TProjection::Eccentricity(), Isis::TProjection::qCompute(), and Isis::TProjection::TProjection().

◆ m_equatorialRadius

double Isis::TProjection::m_equatorialRadius
protectedinherited

Polar radius of the target.

This is a unitless value so that if the radii are in inches then the m_x and m_y will be in inches. This value is set on construction. It is either read directly from the mapping group of the given PVL label or it is found in NAIF kernels by using the Target value in the given label. When pulled from NAIF kernels, the equatorial radius is the first value of NAIF's radii array.

Definition at line 335 of file TProjection.h.

Referenced by Isis::TProjection::EquatorialRadius(), Isis::LambertConformal::LambertConformal(), Isis::TProjection::LocalRadius(), Isis::PointPerspective::PointPerspective(), Isis::TProjection::Scale(), Isis::LambertConformal::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::LambertConformal::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mercator::SetGround(), Isis::Mollweide::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::Orthographic::SetGround(), Isis::PointPerspective::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Robinson::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Sinusoidal::SetGround(), Isis::TransverseMercator::SetGround(), Isis::TProjection::ToPlanetocentric(), Isis::TProjection::ToPlanetographic(), Isis::TProjection::TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::Orthographic::XYRange(), and Isis::PointPerspective::XYRange().

◆ m_good

bool Isis::Projection::m_good
protectedinherited

Indicates if the contents of m_x, m_y, m_latitude, and m_longitude are valid.

Definition at line 300 of file Projection.h.

Referenced by Isis::TProjection::findExtreme(), Isis::Projection::IsGood(), Isis::Projection::Projection(), Isis::Projection::SetComputedXY(), SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::Planar::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::RingCylindrical::SetCoordinate(), Isis::RingPlaneProjection::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::TProjection::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), SetGround(), Isis::LambertConformal::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mercator::SetGround(), Isis::Mollweide::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::Orthographic::SetGround(), Isis::PointPerspective::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Robinson::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Sinusoidal::SetGround(), Isis::TProjection::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Planar::SetGround(), Isis::RingCylindrical::SetGround(), Isis::RingPlaneProjection::SetGround(), Isis::Projection::SetUnboundUniversalGround(), Isis::TProjection::SetUnboundUniversalGround(), Isis::Projection::SetUniversalGround(), Isis::TProjection::SetUniversalGround(), Isis::RingPlaneProjection::SetUniversalGround(), Isis::Projection::SetXY(), Isis::LambertConformal::XYRange(), Isis::TProjection::XYRangeCheck(), and Isis::RingPlaneProjection::XYRangeCheck().

◆ m_groundRangeGood

bool Isis::Projection::m_groundRangeGood
protectedinherited

Indicates if the ground range (min/max lat/lons) were read from the labels.

Definition at line 313 of file Projection.h.

Referenced by Isis::Projection::HasGroundRange(), Isis::RingPlaneProjection::RingPlaneProjection(), Isis::TProjection::TProjection(), Isis::RingPlaneProjection::XYRange(), and Isis::TProjection::XYRange().

◆ m_latitude

double Isis::TProjection::m_latitude
protectedinherited

◆ m_latitudeType

LatitudeType Isis::TProjection::m_latitudeType
protectedinherited

◆ m_longitude

◆ m_longitudeDirection

LongitudeDirection Isis::TProjection::m_longitudeDirection
protectedinherited

An enumerated type indicating the LongitudeDirection read from the labels.

It can be either PositiveEast or PositiveWest. Indicating which direction the positive axis for longitude is.

Definition at line 324 of file TProjection.h.

Referenced by Equirectangular(), Isis::TProjection::IsPositiveEast(), Isis::TProjection::IsPositiveWest(), Isis::LambertConformal::LambertConformal(), Isis::TProjection::LongitudeDirectionString(), Isis::Mercator::Mercator(), Isis::Mollweide::Mollweide(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::Robinson::Robinson(), SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), SetGround(), Isis::LambertConformal::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mercator::SetGround(), Isis::Mollweide::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::Orthographic::SetGround(), Isis::PointPerspective::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Robinson::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Sinusoidal::SetGround(), Isis::TransverseMercator::SetGround(), Isis::TProjection::SetUnboundUniversalGround(), Isis::TProjection::SetUniversalGround(), Isis::SimpleCylindrical::SimpleCylindrical(), Isis::Sinusoidal::Sinusoidal(), Isis::TProjection::TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::TProjection::UniversalLongitude(), Isis::LambertConformal::XYRange(), and Isis::PolarStereographic::XYRange().

◆ m_longitudeDomain

int Isis::TProjection::m_longitudeDomain
protectedinherited

This integer is either 180 or 360 and is read from the labels.

It represents the longitude domain when returning values through Longitude method. The domain is either -180 to 180 or 0 to 360.

Definition at line 331 of file TProjection.h.

Referenced by Isis::TProjection::Has180Domain(), Isis::TProjection::Has360Domain(), Isis::TProjection::LongitudeDomainString(), Isis::Orthographic::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::TProjection::SetUniversalGround(), and Isis::TProjection::TProjection().

◆ m_mapper

WorldMapper* Isis::Projection::m_mapper
protectedinherited

This points to a mapper passed into the SetWorldMapper method.

This mapper allows the programmer to specify a different world coordinate system. Thus the programmer could pass in line/sample positions in order to obtain a latitude/longitude or set a lat/lon and get a line/sample.

Definition at line 292 of file Projection.h.

Referenced by Isis::Projection::Projection(), Isis::Projection::Resolution(), Isis::RingPlaneProjection::Scale(), Isis::TProjection::Scale(), Isis::Projection::SetWorld(), Isis::Projection::SetWorldMapper(), Isis::Projection::ToProjectionX(), Isis::Projection::ToProjectionY(), Isis::Projection::ToWorldX(), Isis::Projection::ToWorldY(), Isis::Projection::WorldX(), Isis::Projection::WorldY(), and Isis::Projection::~Projection().

◆ m_mappingGrp

PvlGroup Isis::Projection::m_mappingGrp
protectedinherited

Mapping group that created this projection.

Definition at line 329 of file Projection.h.

Referenced by Mapping(), Isis::LambertConformal::Mapping(), Isis::LunarAzimuthalEqualArea::Mapping(), Isis::Mercator::Mapping(), Isis::Mollweide::Mapping(), Isis::ObliqueCylindrical::Mapping(), Isis::Orthographic::Mapping(), Isis::PointPerspective::Mapping(), Isis::PolarStereographic::Mapping(), Isis::RingPlaneProjection::Mapping(), Isis::Robinson::Mapping(), Isis::SimpleCylindrical::Mapping(), Isis::Sinusoidal::Mapping(), Isis::TProjection::Mapping(), Isis::TransverseMercator::Mapping(), MappingLatitudes(), Isis::LambertConformal::MappingLatitudes(), Isis::Mercator::MappingLatitudes(), Isis::Orthographic::MappingLatitudes(), Isis::PointPerspective::MappingLatitudes(), Isis::PolarStereographic::MappingLatitudes(), Isis::TProjection::MappingLatitudes(), Isis::TransverseMercator::MappingLatitudes(), MappingLongitudes(), Isis::LambertConformal::MappingLongitudes(), Isis::Mercator::MappingLongitudes(), Isis::Mollweide::MappingLongitudes(), Isis::Orthographic::MappingLongitudes(), Isis::PointPerspective::MappingLongitudes(), Isis::PolarStereographic::MappingLongitudes(), Isis::Robinson::MappingLongitudes(), Isis::SimpleCylindrical::MappingLongitudes(), Isis::Sinusoidal::MappingLongitudes(), Isis::TProjection::MappingLongitudes(), Isis::TransverseMercator::MappingLongitudes(), Isis::Planar::MappingRingLongitudes(), Isis::RingCylindrical::MappingRingLongitudes(), Isis::RingPlaneProjection::MappingRingLongitudes(), Isis::Planar::MappingRingRadii(), Isis::RingCylindrical::MappingRingRadii(), Isis::RingPlaneProjection::MappingRingRadii(), Isis::Projection::Projection(), Isis::RingPlaneProjection::RingPlaneProjection(), Isis::Projection::SetUpperLeftCorner(), and Isis::TProjection::TProjection().

◆ m_maximumLatitude

◆ m_maximumLongitude

◆ m_maximumX

◆ m_maximumY

◆ m_minimumLatitude

◆ m_minimumLongitude

◆ m_minimumX

double Isis::Projection::m_minimumX
protectedinherited

The data elements m_minimumX, m_minimumY, m_maximumX, and m_maximumY are convience data elements when you write the XYRange virtual function.

They are used in conjuction with the XYRangeCheck convience method. After utilizing XYRangeCheck to test boundary conditions in the XYRange method these values will contain the projection x/y coverage for the ground range specified by min/max lat/lon.

Definition at line 317 of file Projection.h.

Referenced by Isis::Projection::Projection(), XYRange(), Isis::LambertConformal::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mercator::XYRange(), Isis::Mollweide::XYRange(), Isis::Orthographic::XYRange(), Isis::Planar::XYRange(), Isis::PolarStereographic::XYRange(), Isis::RingCylindrical::XYRange(), Isis::Robinson::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Sinusoidal::XYRange(), Isis::TransverseMercator::XYRange(), Isis::TProjection::XYRangeCheck(), Isis::RingPlaneProjection::XYRangeCheck(), and Isis::TProjection::xyRangeOblique().

◆ m_minimumY

◆ m_pixelResolution

double Isis::Projection::m_pixelResolution
privateinherited

Pixel resolution value from the PVL mapping group, in meters/pixel.

Definition at line 344 of file Projection.h.

Referenced by Isis::Projection::PixelResolution(), and Isis::Projection::Projection().

◆ m_polarRadius

double Isis::TProjection::m_polarRadius
protectedinherited

Polar radius of the target.

This is a unitless value so that if the radii are in inches then the m_x and m_y will be in inches. Of course the units must be the same as the equatorial radius. This value is set on construction. It is either read directly from the mapping group of the given PVL label or it is found in NAIF kernels by using the Target value in the given label.When pulled from NAIF kernels, the equatorial radius is the third value of NAIF's radii array.

Definition at line 342 of file TProjection.h.

Referenced by Isis::TProjection::LocalRadius(), Isis::TProjection::PolarRadius(), Isis::TProjection::Scale(), Isis::TProjection::ToPlanetocentric(), Isis::TProjection::ToPlanetographic(), and Isis::TProjection::TProjection().

◆ m_rotation

double Isis::Projection::m_rotation
privateinherited

◆ m_sky

bool Isis::Projection::m_sky
protectedinherited

Indicates whether projection is sky or land.

Definition at line 310 of file Projection.h.

Referenced by Isis::Projection::IsSky(), and Isis::Projection::Projection().

◆ m_specialLatCases

std::vector<double> Isis::TProjection::m_specialLatCases
privateinherited

Constant Latitudes that intersect a discontinuity.

Definition at line 365 of file TProjection.h.

Referenced by Isis::TProjection::doSearch(), and Isis::TProjection::xyRangeOblique().

◆ m_specialLonCases

std::vector<double> Isis::TProjection::m_specialLonCases
privateinherited

Constant Longitudes that intersect a discontinuity.

Definition at line 367 of file TProjection.h.

Referenced by Isis::TProjection::doSearch(), and Isis::TProjection::xyRangeOblique().

◆ m_x

double Isis::Projection::m_x
privateinherited

This contains the rotated X coordinate for a specific projection at theposition indicated by m_latitude/m_longitude.

The value is only usable if m_good is true.

Definition at line 335 of file Projection.h.

Referenced by Isis::Projection::GetX(), Isis::Projection::GetY(), Isis::Projection::Projection(), Isis::Projection::SetComputedXY(), Isis::Projection::SetXY(), Isis::Projection::WorldX(), and Isis::Projection::XCoord().

◆ m_y

double Isis::Projection::m_y
privateinherited

This contains the rotated Y coordinate for a specific projection at the position indicated by m_latitude/m_longitude.

The value is only usable if m_good is true.

Definition at line 339 of file Projection.h.

Referenced by Isis::Projection::GetX(), Isis::Projection::GetY(), Isis::Projection::Projection(), Isis::Projection::SetComputedXY(), Isis::Projection::SetXY(), Isis::Projection::WorldY(), and Isis::Projection::YCoord().


The documentation for this class was generated from the following files:
Isis::TProjection::m_maximumLatitude
double m_maximumLatitude
Contains the maximum latitude for the entire ground range.
Definition: TProjection.h:356
Isis::TProjection::m_minimumLongitude
double m_minimumLongitude
Contains the minimum longitude for the entire ground range.
Definition: TProjection.h:358
Isis::TProjection::m_minimumLatitude
double m_minimumLatitude
Contains the minimum latitude for the entire ground range.
Definition: TProjection.h:354
Isis::Projection::m_minimumY
double m_minimumY
See minimumX description.
Definition: Projection.h:327
Isis::Sinusoidal::XYRange
bool XYRange(double &minX, double &maxX, double &minY, double &maxY)
This method is used to determine the x/y range which completely covers the area of interest specified...
Definition: Sinusoidal.cpp:214
Isis::TProjection::XYRangeCheck
void XYRangeCheck(const double latitude, const double longitude)
This convience function is established to assist in the development of the XYRange virtual method.
Definition: TProjection.cpp:1062
Isis::Projection::m_minimumX
double m_minimumX
The data elements m_minimumX, m_minimumY, m_maximumX, and m_maximumY are convience data elements when...
Definition: Projection.h:317
Isis::TProjection::inLatitudeRange
bool inLatitudeRange(double latitude)
Determine whether the given latitude is within the range of the MinimumLatitude and MaximumLatitude r...
Definition: TProjection.cpp:1160
Isis::TProjection::m_maximumLongitude
double m_maximumLongitude
Contains the maximum longitude for the entire ground range.
Definition: TProjection.h:360
Isis::Projection::m_maximumY
double m_maximumY
See minimumX description.
Definition: Projection.h:328
Isis::Projection::m_maximumX
double m_maximumX
See minimumX description.
Definition: Projection.h:326