Isis 3 Programmer Reference
|
Base class for Map TProjections. More...
#include <TProjection.h>
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 | |
TProjection (Pvl &label) | |
Constructs an empty TProjection object. More... | |
virtual | ~TProjection () |
Destroys the TProjection object. More... | |
virtual bool | operator== (const Projection &proj) |
This method determines whether two map projection objects are equal by comparing the equatorial radius, polar radius, latitude type, longitude direction, resolution, and projection name. 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... | |
virtual QString | Name () const =0 |
This method returns the name of the map projection. More... | |
virtual QString | Version () const =0 |
This method returns the Version of the map projection. More... | |
virtual double | TrueScaleLatitude () const |
This method returns the latitude of true scale. More... | |
virtual bool | IsEquatorialCylindrical () |
This method returns true if the projection is equatorial cylindrical. 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... | |
double | MinimumLatitude () const |
This returns the minimum latitude of the area of interest. More... | |
double | MaximumLatitude () const |
This returns the maximum latitude of the area of interest. More... | |
double | MinimumLongitude () const |
This returns the minimum longitude of the area of interest. More... | |
double | MaximumLongitude () const |
This returns the maximum longitude of the area of interest. More... | |
virtual 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... | |
virtual bool | SetCoordinate (const double x, const double y) |
This method is used to set the projection x/y. More... | |
double | Latitude () const |
This returns a latitude with correct latitude type as specified in the label object. More... | |
double | Longitude () const |
This returns a longitude with correct longitude direction and domain as specified in the label object. More... | |
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... | |
double | UniversalLatitude () |
This returns a universal latitude (planetocentric). More... | |
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... | |
virtual 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 the keywords that this projection uses. More... | |
virtual PvlGroup | MappingLatitudes () |
This function returns the latitude keywords that this projection uses. More... | |
virtual PvlGroup | MappingLongitudes () |
This function returns the longitude keywords that this projection uses. 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... | |
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... | |
bool | SetWorld (const double x, const double y) |
This method is used to set a world coordinate. More... | |
double | WorldX () const |
This returns the world X coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More... | |
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 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... | |
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... | |
WorldMapper * | m_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 | |
std::vector< double > | m_specialLatCases |
Constant Latitudes that intersect a discontinuity. More... | |
std::vector< double > | m_specialLonCases |
Constant Longitudes that intersect a discontinuity. More... | |
Base class for Map TProjections.
This is a second level virtual base class for map projections of triaxial bodies. It must be used to create specific map projection classes such as Sinusoidal, Mercator, etc. The foundation of this class is the ability to convert ground coordinates (latitude and longitude) into projection coordinates (x and y) and vice versa. Options exist to allow conversion to and from programmer specified world coordinates. The world coordinates can be cube pixels, paper units in millimeters, or any other unit the program may need. Generally, you should never directly instantiate this class.
Here is an example of how to use TProjection
If you would like to see TProjection being used in implementation, see mappos.cpp
2003-01-30 Jeff Anderson - Add the SetWorldMapper() method and removed setting the mapper from the constructor
2003-05-16 Stuart Sides - Modified schema from astrogeology... isis.astrogeology...
2003-05-30 Jeff Anderson - Updated unit test to fix error for optimization
2003-08-25 Jeff Anderson - Added LatitudeTypeString(), LongitudeDirectionString(), and LongitudeDomainString() methods
2003-09-26 Jeff Anderson - Added ToWorldX(), ToWorldY(), ToProjectionX(), ToProjectionY(), and Resolution() methods
2003-09-26 Jeff Anderson - Added virtual Name, operator==, and operator!= methods
2003-09-26 Jeff Anderson - Remove virtual from operator!=
2003-10-14 Jeff Anderson - Added Scale() and TrueScaleLatitude() methods
2003-11-04 Jeff Anderson - Replace the pure virtual methods for SetGround() and SetCoordinate() with virtual method which simply copy lat/lon to x/y and vice versa. This is essentially no projection.
2003-11-04 Jeff Anderson - Added LocalRadius() methods
2004-02-23 Jeff Anderson - Added Eccentricity(), tCompute(), mCompute(), e4Compute(), and phi2Compute() methods
2004-02-24 Jeff Anderson - Fixed bug in eccentricity computation
2005-02-11 Elizabeth Ribelin - Modified file to support Doxygen documentation
2005-02-25 Elizabeth Ribelin - Added 3 static conversion methods: ToHours(), ToDMS(), and ToHMS()
2005-03-08 Elizabeth Ribelin - Fixed unitTest
2005-06-24 Jeff Anderson - Tweaked format for DMS and HMS methods
2005-07-22 Jeff Anderson - Added static ToPlanetographic() method
2006-04-20 Tracie Sucharski - Fixed bug looking at Target instead of TargetName for sky.
2006-06-20 Stuart Sides - Added ability to lookup the radii if given a "TargetName" in the mapping group.
2006-07-10 Elizabeth Miller - Fixed bugs in new static method
2007-06-27 Steven Lambright - Added static ToPlanetocentric(), ToPositiveWest() and ToPositiveEast() methods. Changed To180Domain() and To360Domain() to be static instead of const. Added Mapping(), MappingLatitudes() and MappingLongitudes() methods for map2map.
2007-08-14 Steven Lambright - Mapping() fixed: should not return cube specific parameters, because they did not go into making the projection.
2008-05-09 Steven Lambright - Added Name(), Version(), IsEquatorialCylindrical() methods
2008-06-12 Christopher Austin - Elaborated error messages.
2008-06-19 Steven Lambright - Fixed memory leak
2009-01-29 Stacy Alley - added a overloaded STATIC method for convenience. TargetRadii, which takes a Pvl, the cube label, and a PvlGroup, a mapping group.
2011-02-10 Jai Rideout - added SetUpperLeftCorner() because ProjectionFactory needed a way to set UpperLeftCornerX and UpperLeftCornerY keywords after creating the projection. Mapping() now adds optional keywords UpperLeftCornerX, UpperLeftCornerY, PixelResolution, and Scale to original mapping group so that cam2map can properly display a clean mapping group.
2011-07-05 Jeannie Backer - Added qCompute() method. Updated documentation.
2011-08-11 Steven Lambright - phi2Compute was running out of iterations for vesta (an asteroid). Fixes #279
2012-03-01 Jeff Anderson - Fixed bug in SetUpperLeftCorner by adding Pvl::Replace when updating the mapping labels
2012-03-30 Steven Lambright and Stuart Sides - To360Domain() and To180Domain() are now constant time operations. Fixes #656.
2012-06-15 Jeannie Backer - Added documentation. Added forward declarations to header file. Ordered includes in implementation file. Moved destructor and accessor methods to the implementation file. Moved the following methods from the ObliqueCylindrical class for generalized xyRangeOblique() method - doSearch(), findExtreme(), setSearchGround(). Changed member variable prefix to m_. Improved unitTest. Resolves #928.
2012-07-25 Jeannie Backer - Modified the new methods related to xyRangeOblique() to verify the validity of the values when setSearchGround() is called. References #954.
2012-08-01 Kimberly Oyama - Added a qFuzzyCompare() to ToPlanetographic() to account for rounding error at the latitude boundaries (-90 and 90 degrees). Updated the unit test to exercise this change. References #604.
2012-08-09 Steven Lambright - Added NaifStatus calls to protect the TargetRadii() method from naif throwing an error/crashing with inputs that have non-target naif codes.
2012-11-18 Debbie A. Cook - Branched Projection into another level of parent classes that inherit from Projection.
2016-04-22 Jeannie Backer - Modified TargetRadii(cubeLab, mapGroup) to look for radii values in the NaifKeywords object of the labels if we fail to find these values elsewhere. Modified constructor to call TargetRadii(cubeLab, mapGroup), which will in turn call TargetRadii(targetName), if needed. Added the private method targetRadii() which is called by the public TargetRadii() methods to find radii values using the given NAIF target code. Fixes #3892
2016-05-10 Jeannie Backer - Moved TargetRadii() methods to Target class.
2016-05-25 Jeannie Backer - Updated documentation. References #3877
2016-08-28 Kelvin Rodriguez - Removed redundant var=var lines causing warnings in clang. Part of porting to OS X 10.11.
2016-12-28 Jeannie Backer - Added inLatitudeRange, and inLongitudeRange methods. References #3877
2017-06-26 Jesse Mapel - Added a new method to set the universal ground point without adjusting for the longitude domain. Fixes #2185.
Definition at line 182 of file TProjection.h.
This enum defines the types of Latitude supported in this class.
Definition at line 219 of file TProjection.h.
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 239 of file TProjection.h.
|
inherited |
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 182 of file Projection.h.
Isis::TProjection::TProjection | ( | Pvl & | label | ) |
Constructs an empty TProjection object.
label | A PVL object containing map projection labels. These labels are fully described in the Isis Map Projection Users Guide. A brief example follows: Group = Mapping EquatorialRadius = 3396190.0 PolarRadius = 3376200.0 LongitudeDomain = 360 MinimumLatitude = 10.8920539924144 MaximumLatitude = 34.7603960060206 MinimumLongitude = 219.72432466275 MaximumLongitude = 236.186050244411 PixelResolution = 1387.31209461362 ProjectionName = SimpleCylindrical CenterLongitude = 220.0 EndGroup End |
IException::Unknown | - "Projection failed. No target radii available through keywords [EquatorialRadius and PolarRadius] or [TargetName]." @throw IException::Unknown - "Projection failed. Invalid value for keyword [EquatorialRadius]. It must be greater than zero." @throw IException::Unknown - "Projection failed. Invalid value for keyword [PolarRadius]. It must be greater than zero." @throw IException::Unknown - "Projection failed. Invalid value for keyword [LatitudeType] must be [Planetographic or Planetocentric]" @throw IException::Unknown - "Projection failed. Invalid value for keyword [LongitudeDirection] must be [PositiveWest or PositiveEast]" @throw IException::Unknown - "Projection failed. Invalid value for keyword [LongitudeDomain] must be [180 or 360]" @throw IException::Unknown - "Projection failed. [MinimumLatitude] is outside the range of [-90:90]" @throw IException::Unknown - "Projection failed. [MaximumLatitude] is outside the range of [-90:90]" @throw IException::Unknown - "Projection failed. [MinimumLatitude,MaximumLatitude] are not properly ordered" @throw IException::Unknown - "Projection failed. [MinimumLongitude,MaximumLongitude] are not properly ordered" @throw IException::Unknown - "Projection failed. Invalid keyword value(s). [EquatorialRadius] must be greater than or equal to [PolarRadius]" @throw IException::Unknown - "Projection failed. Invalid label group [Mapping]" |
Definition at line 105 of file TProjection.cpp.
References _FILEINFO_, Isis::PvlContainer::hasKeyword(), m_eccentricity, m_equatorialRadius, Isis::Projection::m_groundRangeGood, m_latitude, m_latitudeType, m_longitude, m_longitudeDirection, m_longitudeDomain, Isis::Projection::m_mappingGrp, m_maximumLatitude, m_maximumLongitude, m_minimumLatitude, m_minimumLongitude, m_polarRadius, Isis::Null, Planetocentric, Planetographic, PositiveEast, PositiveWest, Isis::Target::radiiGroup(), Isis::Projection::setProjectionType(), Isis::toString(), Isis::Projection::Triaxial, and Isis::IException::Unknown.
|
virtual |
Destroys the TProjection object.
Definition at line 262 of file TProjection.cpp.
|
private |
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.
minBorder | Minimum latitude or longitude to search between. |
maxBorder | Maximum latitude or longitude to search between. |
extremeVal | The resulting global coordinate value (min or max value for x or y, depending on findMin and searchX) on the constBorder. |
constBorder | The latitude or longitude that remains constant. The method will step along this border. |
searchX | Indicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate. |
searchLongitude | Indicates 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). |
findMin | Indicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value. |
Definition at line 1412 of file TProjection.cpp.
References findExtreme(), m_specialLatCases, m_specialLonCases, Isis::Null, and Isis::Projection::PixelResolution().
Referenced by xyRangeOblique().
|
protected |
A convience method to compute.
\[ e4 = \sqrt{(1+e )^{1+e}(1-e)^{1-e}} \]
where e is the eccentricity of the body.
Definition at line 1906 of file TProjection.cpp.
References Eccentricity().
Referenced by Isis::PolarStereographic::PolarStereographic().
double Isis::TProjection::Eccentricity | ( | ) | const |
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.
Definition at line 319 of file TProjection.cpp.
References m_eccentricity.
Referenced by e4Compute(), mCompute(), Isis::Mercator::Mercator(), phi2Compute(), tCompute(), and Isis::TransverseMercator::TransverseMercator().
double Isis::TProjection::EquatorialRadius | ( | ) | const |
This returns the equatorial radius of the target.
The radius was obtained from the label during object construction.
Definition at line 292 of file TProjection.cpp.
References m_equatorialRadius.
Referenced by Isis::MosaicGridTool::fromPvl(), operator==(), and Isis::MosaicGridTool::setLatExtents().
|
private |
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.
minBorder | Minimum latitude or longitude to search between. This value gets updated to a more precise range. |
maxBorder | Maximum latitude or longitude to search between. This value gets updated to a more precise range. |
minBorderX | The x-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderX. |
minBorderY | The y-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderY. |
maxBorderX | The x-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderX. |
maxBorderY | The y-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderY. |
constBorder | The latitude or longitude that remains constant. The method will step along this border. |
searchX | Indicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate. |
searchLongitude | Indicates 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). |
findMin | Indicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value. |
Definition at line 1526 of file TProjection.cpp.
References Isis::Projection::m_good, Isis::Null, setSearchGround(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().
Referenced by doSearch().
|
protectedinherited |
Calculates the unrotated form of current x value.
Definition at line 833 of file Projection.cpp.
References Isis::Projection::m_rotation, Isis::Projection::m_x, Isis::Projection::m_y, and Isis::PI.
Referenced by Isis::RingCylindrical::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), and Isis::Orthographic::SetCoordinate().
|
protectedinherited |
Calculates the unrotated form of the current y value.
Definition at line 844 of file Projection.cpp.
References Isis::Projection::m_rotation, Isis::Projection::m_x, Isis::Projection::m_y, and Isis::PI.
Referenced by Isis::RingCylindrical::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), and Isis::Orthographic::SetCoordinate().
bool Isis::TProjection::Has180Domain | ( | ) | const |
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.
Definition at line 647 of file TProjection.cpp.
References m_longitudeDomain.
Referenced by Isis::MosaicSceneItem::reproject(), and Isis::SubArea::UpdateLabel().
bool Isis::TProjection::Has360Domain | ( | ) | const |
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.
Definition at line 658 of file TProjection.cpp.
References m_longitudeDomain.
|
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.
lon | Longitude to convert into the -180 to 180 domain. |
IException::Unknown | - "The given longitude is invalid." |
lon | Longitude to convert into the 0 to 360 domain. |
Definition at line 364 of file Projection.cpp.
References Isis::Projection::m_groundRangeGood.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::RingPlaneProjection::Mapping(), MappingLatitudes(), MappingLongitudes(), Isis::RingCylindrical::MappingRingLongitudes(), Isis::Planar::MappingRingLongitudes(), Isis::RingPlaneProjection::MappingRingLongitudes(), Isis::RingCylindrical::MappingRingRadii(), Isis::Planar::MappingRingRadii(), Isis::RingPlaneProjection::MappingRingRadii(), Isis::ProjectionFactory::RingsCreateForCube(), and xyRangeOblique().
|
protected |
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.
latitude | The latitude to check. |
Definition at line 1175 of file TProjection.cpp.
References MaximumLatitude(), and MinimumLatitude().
|
protected |
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.
longitude | The longitude to check. |
Definition at line 1155 of file TProjection.cpp.
References MaximumLongitude(), and MinimumLongitude().
|
protected |
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.
minLon | The lower end of longitude range. |
maxLon | The upper end of longitude range. |
longitude | The longitude to check. |
Definition at line 1112 of file TProjection.cpp.
References To360Domain().
|
virtual |
This method returns true if the projection is equatorial cylindrical.
In other words, if the projection is cylindrical and an image projected at 0 is the same as an image projected at 360.
Reimplemented from Isis::Projection.
Reimplemented in Isis::Equirectangular, Isis::SimpleCylindrical, and Isis::Mercator.
Definition at line 396 of file TProjection.cpp.
Referenced by Isis::SubArea::UpdateLabel().
|
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.
Definition at line 389 of file Projection.cpp.
References Isis::Projection::m_good.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::Chip::Load(), Isis::ProjectionFactory::RingsCreateForCube(), Isis::SubArea::UpdateLabel(), Isis::RingPlaneProjection::XYRangeCheck(), and XYRangeCheck().
bool Isis::TProjection::IsPlanetocentric | ( | ) | const |
This indicates if the latitude type is planetocentric (as opposed to planetographic).
The latitude type was obtained from the label during object construction.
Definition at line 407 of file TProjection.cpp.
References m_latitudeType, and Planetocentric.
Referenced by Isis::LambertConformal::LambertConformal(), Isis::Mercator::Mercator(), Isis::ObliqueCylindrical::ObliqueCylindrical(), operator==(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::PointPerspective::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Orthographic::SetGround(), and Isis::TransverseMercator::TransverseMercator().
bool Isis::TProjection::IsPlanetographic | ( | ) | const |
This indicates if the latitude type is planetographic (as opposed to planetocentric).
The latitude type was obtained from the label during object construction.
Definition at line 418 of file TProjection.cpp.
References m_latitudeType, and Planetographic.
Referenced by Isis::SubArea::UpdateLabel().
bool Isis::TProjection::IsPositiveEast | ( | ) | const |
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.
Definition at line 535 of file TProjection.cpp.
References m_longitudeDirection, and PositiveEast.
Referenced by Isis::SubArea::UpdateLabel().
bool Isis::TProjection::IsPositiveWest | ( | ) | const |
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.
Definition at line 546 of file TProjection.cpp.
References m_longitudeDirection, and PositiveWest.
Referenced by operator==().
|
inherited |
Returns true if projection is sky and false if it is land.
Definition at line 223 of file Projection.cpp.
References Isis::Projection::m_sky.
Referenced by Isis::Camera::RawFocalPlanetoImage(), Isis::Camera::SetImage(), Isis::Camera::SetRightAscensionDeclination(), and Isis::AdvancedTrackTool::updateRow().
double Isis::TProjection::Latitude | ( | ) | const |
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.
Definition at line 826 of file TProjection.cpp.
References m_latitude.
Referenced by Isis::MosaicGridTool::setLatExtents(), Isis::MosaicTrackTool::updateLabels(), and Isis::TrackTool::updateLabels().
QString Isis::TProjection::LatitudeTypeString | ( | ) | const |
This method returns the latitude type as a string.
It will return either Planetocentric or Planetographic.
Definition at line 523 of file TProjection.cpp.
References m_latitudeType, and Planetographic.
Referenced by Isis::MosaicGridTool::latType().
double Isis::TProjection::LocalRadius | ( | double | latitude | ) | const |
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)}} \]
latitude | A latitude in degrees (assumed to be of the correct LatitudeType). |
IException::Unknown | - "The given latitude is invalid." |
Definition at line 341 of file TProjection.cpp.
References _FILEINFO_, m_equatorialRadius, m_polarRadius, Isis::Null, Isis::PI, Isis::toString(), and Isis::IException::Unknown.
Referenced by Isis::TiffImporter::convertProjection(), Isis::ProjectionFactory::CreateForCube(), and Isis::AdvancedTrackTool::updateRow().
|
virtual |
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.
Implements Isis::Projection.
Definition at line 368 of file TProjection.cpp.
References m_latitude.
Referenced by Isis::Equirectangular::Equirectangular().
double Isis::TProjection::Longitude | ( | ) | const |
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.
Definition at line 838 of file TProjection.cpp.
References m_longitude.
Referenced by Isis::Camera::SetImageSkyMapProjection(), Isis::MosaicGridTool::setLonExtents(), Isis::MosaicTrackTool::updateLabels(), Isis::TrackTool::updateLabels(), and Isis::AdvancedTrackTool::updateRow().
QString Isis::TProjection::LongitudeDirectionString | ( | ) | const |
This method returns the longitude direction as a string.
It will return either PositiveEast or PositiveWest.
Definition at line 635 of file TProjection.cpp.
References m_longitudeDirection, and PositiveEast.
QString Isis::TProjection::LongitudeDomainString | ( | ) | const |
This method returns the longitude domain as a string.
It will return either 180 or 360.
Definition at line 713 of file TProjection.cpp.
References m_longitudeDomain.
Referenced by Isis::MosaicGridTool::lonDomain().
|
virtual |
This function returns the keywords that this projection uses.
Implements Isis::Projection.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, Isis::UpturnedEllipsoidTransverseAzimuthal, and Isis::LunarAzimuthalEqualArea.
Definition at line 1713 of file TProjection.cpp.
References Isis::PvlContainer::hasKeyword(), and Isis::Projection::m_mappingGrp.
Referenced by Isis::MosaicGridTool::autoGrid(), Isis::LunarAzimuthalEqualArea::Mapping(), Isis::Mollweide::Mapping(), Isis::PointPerspective::Mapping(), Isis::Robinson::Mapping(), Isis::TransverseMercator::Mapping(), Isis::Mercator::Mapping(), Isis::LambertConformal::Mapping(), Isis::PolarStereographic::Mapping(), Isis::ObliqueCylindrical::Mapping(), Isis::SimpleCylindrical::Mapping(), Isis::Equirectangular::Mapping(), Isis::Sinusoidal::Mapping(), Isis::Orthographic::Mapping(), and Isis::MosaicGridTool::setLatExtents().
|
virtual |
This function returns the latitude keywords that this projection uses.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, and Isis::UpturnedEllipsoidTransverseAzimuthal.
Definition at line 1738 of file TProjection.cpp.
References Isis::Projection::HasGroundRange(), and Isis::Projection::m_mappingGrp.
Referenced by Isis::Mollweide::MappingLatitudes(), Isis::PointPerspective::MappingLatitudes(), Isis::Robinson::MappingLatitudes(), Isis::TransverseMercator::MappingLatitudes(), Isis::Mercator::MappingLatitudes(), Isis::LambertConformal::MappingLatitudes(), Isis::PolarStereographic::MappingLatitudes(), Isis::ObliqueCylindrical::MappingLatitudes(), Isis::SimpleCylindrical::MappingLatitudes(), Isis::Equirectangular::MappingLatitudes(), Isis::Sinusoidal::MappingLatitudes(), and Isis::Orthographic::MappingLatitudes().
|
virtual |
This function returns the longitude keywords that this projection uses.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, and Isis::UpturnedEllipsoidTransverseAzimuthal.
Definition at line 1754 of file TProjection.cpp.
References Isis::Projection::HasGroundRange(), and Isis::Projection::m_mappingGrp.
Referenced by Isis::Mollweide::MappingLongitudes(), Isis::PointPerspective::MappingLongitudes(), Isis::Robinson::MappingLongitudes(), Isis::TransverseMercator::MappingLongitudes(), Isis::Mercator::MappingLongitudes(), Isis::LambertConformal::MappingLongitudes(), Isis::PolarStereographic::MappingLongitudes(), Isis::ObliqueCylindrical::MappingLongitudes(), Isis::SimpleCylindrical::MappingLongitudes(), Isis::Equirectangular::MappingLongitudes(), Isis::Sinusoidal::MappingLongitudes(), and Isis::Orthographic::MappingLongitudes().
double Isis::TProjection::MaximumLatitude | ( | ) | const |
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.
Definition at line 736 of file TProjection.cpp.
References m_maximumLatitude.
Referenced by inLatitudeRange(), Isis::MosaicGridTool::setLatExtents(), and xyRangeOblique().
double Isis::TProjection::MaximumLongitude | ( | ) | const |
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.
Definition at line 758 of file TProjection.cpp.
References m_maximumLongitude.
Referenced by inLongitudeRange(), Isis::MosaicGridTool::setLonExtents(), Isis::Orthographic::XYRange(), and xyRangeOblique().
|
protected |
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.
sinphi | sine of phi |
cosphi | cosine of phi |
Definition at line 1862 of file TProjection.cpp.
References Eccentricity().
Referenced by Isis::LambertConformal::LambertConformal(), and Isis::PolarStereographic::PolarStereographic().
double Isis::TProjection::MinimumLatitude | ( | ) | const |
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.
Definition at line 725 of file TProjection.cpp.
References m_minimumLatitude.
Referenced by inLatitudeRange(), Isis::MosaicGridTool::setLatExtents(), and xyRangeOblique().
double Isis::TProjection::MinimumLongitude | ( | ) | const |
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.
Definition at line 747 of file TProjection.cpp.
References m_minimumLongitude.
Referenced by inLongitudeRange(), Isis::MosaicGridTool::setLonExtents(), Isis::Orthographic::XYRange(), and xyRangeOblique().
|
pure virtual |
This method returns the name of the map projection.
It is a pure virtual method (requires all subclasses to override).
Implements Isis::Projection.
Implemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, Isis::UpturnedEllipsoidTransverseAzimuthal, and Isis::LunarAzimuthalEqualArea.
|
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.
proj | A reference to a Projection object to which this Projection will be compared. |
Definition at line 193 of file Projection.cpp.
|
virtual |
This method determines whether two map projection objects are equal by comparing the equatorial radius, polar radius, latitude type, longitude direction, resolution, and projection name.
proj | A reference to a TProjection object to which this TProjection will be compared. |
Reimplemented from Isis::Projection.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, and Isis::UpturnedEllipsoidTransverseAzimuthal.
Definition at line 275 of file TProjection.cpp.
References EquatorialRadius(), IsPlanetocentric(), IsPositiveWest(), and PolarRadius().
|
protected |
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) \) .
t | small t |
IException::Unknown | - "Failed to converge in Projection::phi2Compute()" |
Definition at line 1818 of file TProjection.cpp.
References _FILEINFO_, Eccentricity(), Isis::HALFPI, and Isis::IException::Unknown.
Referenced by Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), and Isis::PolarStereographic::SetCoordinate().
|
protectedinherited |
Returns the pixel resolution value from the PVL mapping group in meters/pixel.
Definition at line 855 of file Projection.cpp.
References Isis::Projection::m_pixelResolution.
Referenced by doSearch(), Isis::RingCylindrical::XYRange(), and Isis::Planar::XYRange().
double Isis::TProjection::PolarRadius | ( | ) | const |
This returns the polar radius of the target.
The radius was obtained from the label during object construction.
Definition at line 302 of file TProjection.cpp.
References m_polarRadius.
Referenced by Isis::MosaicGridTool::fromPvl(), operator==(), and Isis::MosaicGridTool::setLatExtents().
|
inherited |
Returns an enum value for the projection type.
Definition at line 213 of file Projection.cpp.
Referenced by Isis::MosaicGridTool::autoGrid(), Isis::MosaicGridTool::fromPvl(), Isis::UniversalGroundMap::GroundRange(), Isis::Camera::RawFocalPlanetoImage(), Isis::MosaicGridTool::setLatExtents(), Isis::MosaicGridTool::setLonExtents(), Isis::Projection::SetUnboundUniversalGround(), Isis::Projection::SetUniversalGround(), Isis::UniversalGroundMap::UniversalLatitude(), Isis::UniversalGroundMap::UniversalLongitude(), Isis::MosaicTrackTool::updateLabels(), Isis::TrackTool::updateLabels(), and Isis::AdvancedTrackTool::updateRow().
|
protected |
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.
sinPhi | The sine value for a latitude, phi. |
IException::Unknown | - "Snyder's q variable should only be computed for ellipsoidal projections." |
Definition at line 1785 of file TProjection.cpp.
References _FILEINFO_, m_eccentricity, and Isis::IException::Unknown.
|
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
Definition at line 690 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().
|
inherited |
Returns the value of the Rotation keyword from the mapping group.
Definition at line 374 of file Projection.cpp.
References Isis::Projection::m_rotation.
|
virtual |
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
Implements Isis::Projection.
Definition at line 955 of file TProjection.cpp.
References m_equatorialRadius, Isis::Projection::m_mapper, m_polarRadius, Isis::PI, Isis::WorldMapper::Resolution(), and TrueScaleLatitude().
|
protectedinherited |
This protected method is a helper for derived classes.
It takes unrotated x and y values, rotates them using the rotation angle data member, and stores the results in the current x and y data members.
x | The unrotated x coordinate. |
y | The unrotated y coordinate. |
Definition at line 795 of file Projection.cpp.
References Isis::Projection::m_good, Isis::Projection::m_rotation, Isis::Projection::m_x, Isis::Projection::m_y, Isis::Null, and Isis::PI.
Referenced by Isis::RingCylindrical::SetGround(), Isis::Planar::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mollweide::SetGround(), Isis::PointPerspective::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Equirectangular::SetGround(), Isis::Sinusoidal::SetGround(), Isis::Orthographic::SetGround(), Isis::RingPlaneProjection::SetGround(), and SetGround().
|
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. Usually this method is overridden in a dervied class, for example, Sinusoidal. If not the default method simply copies x/y to lat/lon to x/y which is no projection.
x | X coordinate of the projection in units that are the same as the radii in the label |
y | Y coordinate of the projection in units that are the same as the radii in the label |
Implements Isis::Projection.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, Isis::UpturnedEllipsoidTransverseAzimuthal, and Isis::LunarAzimuthalEqualArea.
Definition at line 804 of file TProjection.cpp.
References Isis::Projection::m_good, m_latitude, m_longitude, Isis::Null, Isis::Projection::SetXY(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().
Referenced by Isis::MosaicGridTool::setLatExtents(), and Isis::MosaicGridTool::setLonExtents().
|
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. Usually this method is overridden in a dervied class, for example, Sinusoidal. If not the default method simply copies lat/lon to x/y which is no projection.
Implements Isis::Projection.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, Isis::UpturnedEllipsoidTransverseAzimuthal, and Isis::LunarAzimuthalEqualArea.
Definition at line 775 of file TProjection.cpp.
References Isis::Projection::m_good, m_latitude, m_longitude, Isis::Null, and Isis::Projection::SetComputedXY().
Referenced by Isis::MosaicSceneItem::reproject(), setSearchGround(), SetUnboundUniversalGround(), SetUniversalGround(), and XYRangeCheck().
|
inherited |
Sets the projection subclass type.
ptype | The projection subclass type |
Definition at line 203 of file Projection.cpp.
Referenced by Isis::RingPlaneProjection::RingPlaneProjection(), and TProjection().
|
private |
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.
variableBorder | The latitude or longitude that is variable in the search methods. |
constBorder | The latitude or longitude that is constant in the search methods. |
variableIsLat | Indicates 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. |
Definition at line 1688 of file TProjection.cpp.
References Isis::Null, and SetGround().
Referenced by findExtreme().
|
virtual |
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.
lat | Planetocentric Latitude value to project |
lon | PositiveEast, Domain360 Longitude value to project |
Reimplemented from Isis::Projection.
Definition at line 894 of file TProjection.cpp.
References Isis::Projection::m_good, m_latitude, m_latitudeType, m_longitude, m_longitudeDirection, Isis::Null, Planetographic, PositiveWest, SetGround(), and ToPlanetographic().
Referenced by Isis::Projection::SetUnboundUniversalGround().
|
virtual |
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.
lat | Planetocentric Latitude value to project |
lon | PositiveEast, Domain360 Longitude value to project |
Reimplemented from Isis::Projection.
Definition at line 854 of file TProjection.cpp.
References Isis::Projection::m_good, m_latitude, m_latitudeType, m_longitude, m_longitudeDirection, m_longitudeDomain, Isis::Null, Planetographic, PositiveWest, SetGround(), To180Domain(), To360Domain(), and ToPlanetographic().
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::MosaicGridTool::setLatExtents(), and Isis::Projection::SetUniversalGround().
|
inherited |
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.
minX | Minimum x projection coordinate which covers the latitude longitude range specified in the labels. |
maxX | Maximum x projection coordinate which covers the latitude longitude range specified in the labels. |
minY | Minimum y projection coordinate which covers the latitude longitude range specified in the labels. |
maxY | Maximum y projection coordinate which covers the latitude longitude range specified in the labels. |
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.
minBorder | Minimum latitude or longitude to search between. |
maxBorder | Maximum latitude or longitude to search between. |
extremeVal | The resulting global coordinate value (min or max value for x or y, depending on findMin and searchX) on the constBorder. |
constBorder | The latitude or longitude that remains constant. The method will step along this border. |
searchX | Indicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate. |
searchLongitude | Indicates 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). |
findMin | Indicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value. |
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.
minBorder | Minimum latitude or longitude to search between. This value gets updated to a more precise range. |
maxBorder | Maximum latitude or longitude to search between. This value gets updated to a more precise range. |
minBorderX | The x-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderX. |
minBorderY | The y-value corresponding to the lower resultant minBorder and the constBorder, which is more accurate when nearly equal to maxBorderY. |
maxBorderX | The x-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderX. |
maxBorderY | The y-value corresponding to the higher resultant maxBorder and the constBorder, which is more accurate when nearly equal to minBorderY. |
constBorder | The latitude or longitude that remains constant. The method will step along this border. |
searchX | Indicates whether the method is searching for a min or max x-coordinate. If false the method searches for min or max y-coordinate. |
searchLongitude | Indicates 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). |
findMin | Indicates whether the method is looking for a minimum coordinate value. If false, the method is looking for a maximum value. |
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.
variableBorder | The latitude or longitude that is variable in the search methods. |
constBorder | The latitude or longitude that is constant in the search methods. |
variableIsLat | Indicates 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. |
This method sets the UpperLeftCornerX and UpperLeftCornerY keywords in the projection mapping group, in meters.
x | the upper left corner x value |
y | the upper left corner y value |
Definition at line 1388 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().
|
inherited |
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).
worldX | World X coordinate in units that are specified by the WorldMapper object (e.g., pixels, millimeters, etc) |
worldY | World Y coordinate in units that are specified by the WorldMapper object (e.g., pixels, millimeters, etc) |
Definition at line 512 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(), and Isis::AdvancedTrackTool::updateRow().
|
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.
mapper | Pointer to the mapper |
Definition at line 489 of file Projection.cpp.
References Isis::Projection::m_mapper.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProjectionFactory::CreateFromCube(), Isis::ProjectionFactory::RingsCreateForCube(), and Isis::ProjectionFactory::RingsCreateFromCube().
|
protectedinherited |
This protected method is a helper for derived classes.
It takes a rotated x,y and stores them in the current x and y data members.
x | The rotated x coordinate. |
y | The rotated y coordinate. |
Definition at line 819 of file Projection.cpp.
References Isis::Projection::m_good, Isis::Projection::m_x, Isis::Projection::m_y, and Isis::Null.
Referenced by Isis::RingCylindrical::SetCoordinate(), Isis::Planar::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::RingPlaneProjection::SetCoordinate(), and SetCoordinate().
|
protected |
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.
phi | phi |
sinphi | sin of phi |
Definition at line 1885 of file TProjection.cpp.
References Eccentricity(), and Isis::HALFPI.
Referenced by Isis::LambertConformal::LambertConformal(), Isis::PolarStereographic::PolarStereographic(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), and Isis::PolarStereographic::SetGround().
|
static |
This method converts a longitude into the -180 to 180 domain.
It will leave the longitude unchanged if it is already in the domain.
lon | Longitude to convert into the -180 to 180 domain. |
IException::Unknown | - "The given longitude is invalid." |
Definition at line 672 of file TProjection.cpp.
References _FILEINFO_, Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::Longitude::force180Domain(), Isis::Null, Isis::toString(), and Isis::IException::Unknown.
Referenced by Isis::ProcessImportPds::ExtractPdsProjection(), Isis::CameraPointInfo::GetPointInfo(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Orthographic::SetCoordinate(), SetUniversalGround(), ToPositiveEast(), ToPositiveWest(), Isis::SubArea::UpdateLabel(), and Isis::AdvancedTrackTool::updateRow().
|
static |
This method converts a longitude into the 0 to 360 domain.
It will leave the longitude unchanged if it is already in the domain.
lon | Longitude to convert into the 0 to 360 domain. |
Definition at line 690 of file TProjection.cpp.
References _FILEINFO_, Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::Longitude::force360Domain(), Isis::Null, Isis::toString(), and Isis::IException::Unknown.
Referenced by inLongitudeRange(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Orthographic::SetCoordinate(), SetUniversalGround(), ToPositiveEast(), ToPositiveWest(), UniversalLongitude(), and Isis::Orthographic::XYRange().
|
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
angle | Angle in degrees to be converted to degrees, minutes, seconds |
Definition at line 721 of file Projection.cpp.
|
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
angle | Angle in degrees to be converted to hours, minutes, seconds |
Definition at line 756 of file Projection.cpp.
References Isis::Projection::ToHours().
|
staticinherited |
Converts the given angle (in degrees) to hours by using the ratio 15 degrees per hour.
angle | Angle in degrees to be converted to hours |
Definition at line 708 of file Projection.cpp.
Referenced by Isis::Projection::ToHMS().
double Isis::TProjection::ToPlanetocentric | ( | const double | lat | ) | const |
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.
lat | Planetographic latitude to convert. |
Definition at line 433 of file TProjection.cpp.
References m_equatorialRadius, and m_polarRadius.
Referenced by Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Orthographic::SetCoordinate(), and UniversalLatitude().
|
static |
This method converts a planetographic latitude to a planetocentric latitude.
lat | Planetographic latitude to convert. |
eRadius | Equatorial radius. |
pRadius | Polar radius |
IException::Unknown | - "The given latitude is invalid." |
Definition at line 449 of file TProjection.cpp.
References _FILEINFO_, Isis::Null, Isis::PI, Isis::toString(), and Isis::IException::Unknown.
double Isis::TProjection::ToPlanetographic | ( | const double | lat | ) | const |
This method converts a planetocentric latitude to a planetographic latitude.
It utilizes the equatorial and polar radii found in the labels to perform the computation.
lat | Planetocentric latitude to convert. |
Definition at line 478 of file TProjection.cpp.
References m_equatorialRadius, and m_polarRadius.
Referenced by Isis::CameraPointInfo::GetPointInfo(), Isis::LambertConformal::LambertConformal(), Isis::Mercator::Mercator(), Isis::ObliqueCylindrical::ObliqueCylindrical(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::PointPerspective::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Orthographic::SetGround(), SetUnboundUniversalGround(), SetUniversalGround(), Isis::TransverseMercator::TransverseMercator(), Isis::SubArea::UpdateLabel(), and Isis::AdvancedTrackTool::updateRow().
|
static |
This method converts a planetocentric latitude to a planetographic latitude.
It is static so that a projection object does not need to exist.
lat | Planetocentric latitude to convert. |
eRadius | Equatorial radius. |
pRadius | Polar radius |
IException::Unknown | - "The given latitude is invalid." |
Definition at line 495 of file TProjection.cpp.
References _FILEINFO_, Isis::Null, Isis::PI, Isis::toString(), and Isis::IException::Unknown.
|
static |
This method converts a longitude into the positive east direction.
lon | Longitude to convert into the positive east direction. |
domain | Must be an integer value of 180 (for -180 to 180) or 360 (for 0 to 360). |
IException::Unknown | - "The given longitude is invalid." |
IException::Unknown | - "Unable to convert longitude. Domain is not 180 or 360." |
Definition at line 563 of file TProjection.cpp.
References _FILEINFO_, Isis::Null, To180Domain(), To360Domain(), Isis::toString(), and Isis::IException::Unknown.
|
static |
This method converts a longitude into the positive west direction.
lon | Longitude to convert into the positive west direction. |
domain | Must be an integer value of 180 (for -180 to 180) or 360 (for 0 to 360). |
IException::Unknown | - "The given longitude is invalid." |
IException::Unknown | - "Unable to convert longitude. Domain is not 180 or 360." |
Definition at line 602 of file TProjection.cpp.
References _FILEINFO_, Isis::Null, To180Domain(), To360Domain(), Isis::toString(), and Isis::IException::Unknown.
Referenced by Isis::CameraPointInfo::GetPointInfo(), and Isis::SubArea::UpdateLabel().
|
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.
worldX | World x coordinate |
IException::Unknown | - "The given x-value is invalid." |
Definition at line 637 of file Projection.cpp.
References _FILEINFO_, Isis::Projection::m_mapper, Isis::Null, Isis::WorldMapper::ProjectionX(), and Isis::IException::Unknown.
Referenced by Isis::OverlapStatistics::OverlapStatistics(), and Isis::ProcessMapMosaic::StartProcess().
|
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.
worldY | World y coordinate |
IException::Unknown | - "The given y-value is invalid." |
Definition at line 665 of file Projection.cpp.
References _FILEINFO_, Isis::Projection::m_mapper, Isis::Null, Isis::WorldMapper::ProjectionY(), and Isis::IException::Unknown.
Referenced by Isis::OverlapStatistics::OverlapStatistics(), and Isis::ProcessMapMosaic::StartProcess().
|
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.
projectionX | Projection x value in meters |
IException::Unknown | - "The given x-value is invalid." |
Definition at line 581 of file Projection.cpp.
References _FILEINFO_, 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().
|
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.
projectionY | Projection y value in meters |
IException::Unknown | - "The given y-value is invalid." |
Definition at line 609 of file Projection.cpp.
References _FILEINFO_, 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().
|
virtual |
This method returns the latitude of true scale.
It is a virtual function and if it is not overriden the default latitude of true scale is 0 (at the equator). Otherwise it is projection specific. For example, the center latitude for Mercator, Equidistant, or a parallel for conic projections. This method is used by the Scale routine to ensure the local radius is used in the computation.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Equirectangular, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, and Isis::PointPerspective.
Definition at line 383 of file TProjection.cpp.
Referenced by Isis::TiffImporter::convertProjection(), Isis::ProjectionFactory::CreateForCube(), and Scale().
double Isis::TProjection::UniversalLatitude | ( | ) |
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.
Definition at line 923 of file TProjection.cpp.
References m_latitude, m_latitudeType, Planetographic, and 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().
double Isis::TProjection::UniversalLongitude | ( | ) |
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.
Definition at line 937 of file TProjection.cpp.
References m_longitude, m_longitudeDirection, PositiveWest, and 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().
|
pure virtual |
This method returns the Version of the map projection.
It is a pure virtual method (requires all subclasses to override).
Implements Isis::Projection.
Implemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, Isis::UpturnedEllipsoidTransverseAzimuthal, and Isis::LunarAzimuthalEqualArea.
|
inherited |
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).
Definition at line 539 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().
|
inherited |
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).
Definition at line 559 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().
|
inherited |
This returns the projection X 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 same . units as the radii obtained from the label.
Definition at line 402 of file Projection.cpp.
References Isis::Projection::m_x.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProcessExport::CreateWorldFile(), findExtreme(), Isis::MosaicSceneItem::reproject(), Isis::ProjectionFactory::RingsCreateForCube(), Isis::RingPlaneProjection::SetCoordinate(), SetCoordinate(), Isis::MosaicGridTool::setLatExtents(), Isis::SubArea::UpdateLabel(), Isis::AdvancedTrackTool::updateRow(), Isis::PointPerspective::XYRange(), Isis::LambertConformal::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), and XYRangeCheck().
|
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. This method should not be used if HasGroundRange is false. 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. This is method and therefore must be written by the derived class (e.g., Sinusoidal). The method may fail as indicated by its return value.
&minX | Reference to the address where the minimum x coordinate value will be written. The Minimum x projection coordinate calculated by this method covers the latitude/longitude range specified in the labels. |
&maxX | Reference to the address where the maximum x coordinate value will be written. The Maximum x projection coordinate calculated by this method covers the latitude/longitude range specified in the labels. |
&minY | Reference to the address where the minimum y coordinate value will be written. The Minimum y projection coordinate calculated by this method covers the latitude/longitude range specified in the labels. |
&maxY | Reference to the address where the maximum y coordinate value will be written. The Maximum y projection coordinate calculated by this method covers the latitude/longitude range specified in the labels. |
Implements Isis::Projection.
Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Orthographic, Isis::Sinusoidal, Isis::Equirectangular, Isis::SimpleCylindrical, Isis::ObliqueCylindrical, Isis::PolarStereographic, Isis::LambertConformal, Isis::Mercator, Isis::TransverseMercator, Isis::Robinson, Isis::Mollweide, Isis::PointPerspective, Isis::UpturnedEllipsoidTransverseAzimuthal, and Isis::LunarAzimuthalEqualArea.
Definition at line 1008 of file TProjection.cpp.
References Isis::Projection::m_groundRangeGood, m_maximumLatitude, m_maximumLongitude, m_minimumLatitude, m_minimumLongitude, and Isis::Null.
Referenced by Isis::ProjectionFactory::CreateForCube().
|
protectedvirtual |
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:
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.
latitude | Test for min/max projection coordinates at this latitude |
longitude | Test for min/max projection coordinates at this longitude |
Implements Isis::Projection.
Definition at line 1077 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, SetGround(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().
Referenced by Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), and Isis::Orthographic::XYRange().
|
protected |
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.
minX | Minimum x projection coordinate which covers the latitude longitude range specified in the labels. |
maxX | Maximum x projection coordinate which covers the latitude longitude range specified in the labels. |
minY | Minimum y projection coordinate which covers the latitude longitude range specified in the labels. |
maxY | Maximum y projection coordinate which covers the latitude longitude range specified in the labels. |
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here.
2012-11-30 Debbie A. Cook - Changed to use TProjection instead of Projection. References #775.
Definition at line 1210 of file TProjection.cpp.
References doSearch(), Isis::Projection::HasGroundRange(), Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, m_specialLatCases, m_specialLonCases, MaximumLatitude(), MaximumLongitude(), MinimumLatitude(), MinimumLongitude(), and Isis::Null.
Referenced by Isis::ObliqueCylindrical::XYRange().
|
inherited |
This returns the projection Y 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 same units as the radii obtained from the label.
Definition at line 415 of file Projection.cpp.
References Isis::Projection::m_y.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProcessExport::CreateWorldFile(), findExtreme(), Isis::MosaicSceneItem::reproject(), Isis::ProjectionFactory::RingsCreateForCube(), Isis::RingPlaneProjection::SetCoordinate(), SetCoordinate(), Isis::MosaicGridTool::setLatExtents(), Isis::SubArea::UpdateLabel(), Isis::AdvancedTrackTool::updateRow(), Isis::PointPerspective::XYRange(), Isis::LambertConformal::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), and XYRangeCheck().
|
protected |
The eccentricity of the target body.
Definition at line 368 of file TProjection.h.
Referenced by Eccentricity(), qCompute(), and TProjection().
|
protected |
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 351 of file TProjection.h.
Referenced by EquatorialRadius(), Isis::LambertConformal::LambertConformal(), LocalRadius(), Isis::PointPerspective::PointPerspective(), Scale(), Isis::LunarAzimuthalEqualArea::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mollweide::SetGround(), Isis::PointPerspective::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Sinusoidal::SetGround(), Isis::Orthographic::SetGround(), ToPlanetocentric(), ToPlanetographic(), TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::PointPerspective::XYRange(), and Isis::Orthographic::XYRange().
|
protectedinherited |
Indicates if the contents of m_x, m_y, m_latitude, and m_longitude are valid.
Definition at line 316 of file Projection.h.
Referenced by findExtreme(), Isis::Projection::IsGood(), Isis::Projection::Projection(), Isis::Projection::SetComputedXY(), Isis::RingCylindrical::SetCoordinate(), Isis::Planar::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::RingPlaneProjection::SetCoordinate(), SetCoordinate(), Isis::RingCylindrical::SetGround(), Isis::Planar::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::PointPerspective::SetGround(), Isis::Mollweide::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Equirectangular::SetGround(), Isis::Sinusoidal::SetGround(), Isis::Orthographic::SetGround(), Isis::RingPlaneProjection::SetGround(), SetGround(), Isis::Projection::SetUnboundUniversalGround(), SetUnboundUniversalGround(), Isis::RingPlaneProjection::SetUniversalGround(), Isis::Projection::SetUniversalGround(), SetUniversalGround(), Isis::Projection::SetXY(), Isis::LambertConformal::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), and XYRangeCheck().
|
protectedinherited |
Indicates if the ground range (min/max lat/lons) were read from the labels.
Definition at line 329 of file Projection.h.
Referenced by Isis::Projection::HasGroundRange(), Isis::RingPlaneProjection::RingPlaneProjection(), TProjection(), Isis::RingPlaneProjection::XYRange(), and XYRange().
|
protected |
This contains the currently set latitude value.
The value is only usable if m_good is true.
Definition at line 332 of file TProjection.h.
Referenced by Latitude(), LocalRadius(), Isis::Mollweide::SetCoordinate(), Isis::PointPerspective::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mollweide::SetGround(), Isis::PointPerspective::SetGround(), Isis::Robinson::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Equirectangular::SetGround(), Isis::Sinusoidal::SetGround(), Isis::Orthographic::SetGround(), SetGround(), SetUnboundUniversalGround(), SetUniversalGround(), TProjection(), UniversalLatitude(), Isis::LambertConformal::XYRange(), and Isis::Orthographic::XYRange().
|
protected |
An enumerated type indicating the LatitudeType read from the labels.
It can be either Planetographic or Planetocentric.
Definition at line 337 of file TProjection.h.
Referenced by IsPlanetocentric(), IsPlanetographic(), LatitudeTypeString(), SetUnboundUniversalGround(), SetUniversalGround(), TProjection(), and UniversalLatitude().
|
protected |
This contains the currently set longitude value.
The value is only usable if m_good is true.
Definition at line 334 of file TProjection.h.
Referenced by Longitude(), Isis::PointPerspective::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Mollweide::SetGround(), Isis::PointPerspective::SetGround(), Isis::Robinson::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Equirectangular::SetGround(), Isis::Sinusoidal::SetGround(), Isis::Orthographic::SetGround(), SetGround(), SetUnboundUniversalGround(), SetUniversalGround(), TProjection(), UniversalLongitude(), Isis::LambertConformal::XYRange(), and Isis::Orthographic::XYRange().
|
protected |
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 340 of file TProjection.h.
Referenced by Isis::Equirectangular::Equirectangular(), IsPositiveEast(), IsPositiveWest(), Isis::LambertConformal::LambertConformal(), LongitudeDirectionString(), Isis::Mercator::Mercator(), Isis::Mollweide::Mollweide(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::Robinson::Robinson(), Isis::PointPerspective::SetCoordinate(), Isis::Mollweide::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::Sinusoidal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::PointPerspective::SetGround(), Isis::Mollweide::SetGround(), Isis::Robinson::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::PolarStereographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::SimpleCylindrical::SetGround(), Isis::Equirectangular::SetGround(), Isis::Sinusoidal::SetGround(), Isis::Orthographic::SetGround(), SetUnboundUniversalGround(), SetUniversalGround(), Isis::SimpleCylindrical::SimpleCylindrical(), Isis::Sinusoidal::Sinusoidal(), TProjection(), Isis::TransverseMercator::TransverseMercator(), UniversalLongitude(), Isis::LambertConformal::XYRange(), and Isis::PolarStereographic::XYRange().
|
protected |
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 347 of file TProjection.h.
Referenced by Has180Domain(), Has360Domain(), LongitudeDomainString(), Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Orthographic::SetCoordinate(), SetUniversalGround(), and TProjection().
|
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 308 of file Projection.h.
Referenced by Isis::Projection::Projection(), Isis::Projection::Resolution(), Isis::RingPlaneProjection::Scale(), 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().
|
protectedinherited |
Mapping group that created this projection.
Definition at line 345 of file Projection.h.
Referenced by Isis::LunarAzimuthalEqualArea::Mapping(), Isis::Mollweide::Mapping(), Isis::PointPerspective::Mapping(), Isis::Robinson::Mapping(), Isis::TransverseMercator::Mapping(), Isis::Mercator::Mapping(), Isis::LambertConformal::Mapping(), Isis::PolarStereographic::Mapping(), Isis::ObliqueCylindrical::Mapping(), Isis::SimpleCylindrical::Mapping(), Isis::Equirectangular::Mapping(), Isis::Sinusoidal::Mapping(), Isis::Orthographic::Mapping(), Isis::RingPlaneProjection::Mapping(), Mapping(), Isis::PointPerspective::MappingLatitudes(), Isis::TransverseMercator::MappingLatitudes(), Isis::Mercator::MappingLatitudes(), Isis::LambertConformal::MappingLatitudes(), Isis::PolarStereographic::MappingLatitudes(), Isis::Equirectangular::MappingLatitudes(), Isis::Orthographic::MappingLatitudes(), MappingLatitudes(), Isis::PointPerspective::MappingLongitudes(), Isis::Mollweide::MappingLongitudes(), Isis::Robinson::MappingLongitudes(), Isis::TransverseMercator::MappingLongitudes(), Isis::Mercator::MappingLongitudes(), Isis::LambertConformal::MappingLongitudes(), Isis::PolarStereographic::MappingLongitudes(), Isis::SimpleCylindrical::MappingLongitudes(), Isis::Equirectangular::MappingLongitudes(), Isis::Sinusoidal::MappingLongitudes(), Isis::Orthographic::MappingLongitudes(), MappingLongitudes(), Isis::RingCylindrical::MappingRingLongitudes(), Isis::Planar::MappingRingLongitudes(), Isis::RingPlaneProjection::MappingRingLongitudes(), Isis::RingCylindrical::MappingRingRadii(), Isis::Planar::MappingRingRadii(), Isis::RingPlaneProjection::MappingRingRadii(), Isis::Projection::Projection(), Isis::RingPlaneProjection::RingPlaneProjection(), Isis::Projection::SetUpperLeftCorner(), and TProjection().
|
protected |
Contains the maximum latitude for the entire ground range.
Only usable if m_groundRangeGood is true.
Definition at line 372 of file TProjection.h.
Referenced by Isis::Equirectangular::Equirectangular(), Isis::LambertConformal::LambertConformal(), MaximumLatitude(), Isis::Mercator::Mercator(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), and XYRange().
|
protected |
Contains the maximum longitude for the entire ground range.
Only usable if m_groundRangeGood is true.
Definition at line 376 of file TProjection.h.
Referenced by Isis::Equirectangular::Equirectangular(), Isis::LambertConformal::LambertConformal(), MaximumLongitude(), Isis::Mercator::Mercator(), Isis::Mollweide::Mollweide(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::Robinson::Robinson(), Isis::SimpleCylindrical::SimpleCylindrical(), Isis::Sinusoidal::Sinusoidal(), TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), and XYRange().
|
protectedinherited |
See minimumX description.
Definition at line 342 of file Projection.h.
Referenced by Isis::Projection::Projection(), Isis::RingCylindrical::XYRange(), Isis::Planar::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), XYRangeCheck(), and xyRangeOblique().
|
protectedinherited |
See minimumX description.
Definition at line 344 of file Projection.h.
Referenced by Isis::Projection::Projection(), Isis::RingCylindrical::XYRange(), Isis::Planar::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), XYRangeCheck(), and xyRangeOblique().
|
protected |
Contains the minimum latitude for the entire ground range.
Only usable if m_groundRangeGood is true.
Definition at line 370 of file TProjection.h.
Referenced by Isis::Equirectangular::Equirectangular(), Isis::LambertConformal::LambertConformal(), Isis::Mercator::Mercator(), MinimumLatitude(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), and XYRange().
|
protected |
Contains the minimum longitude for the entire ground range.
Only usable if m_groundRangeGood is true.
Definition at line 374 of file TProjection.h.
Referenced by Isis::Equirectangular::Equirectangular(), Isis::LambertConformal::LambertConformal(), Isis::Mercator::Mercator(), MinimumLongitude(), Isis::Mollweide::Mollweide(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::Robinson::Robinson(), Isis::SimpleCylindrical::SimpleCylindrical(), Isis::Sinusoidal::Sinusoidal(), TProjection(), Isis::TransverseMercator::TransverseMercator(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), and XYRange().
|
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 333 of file Projection.h.
Referenced by Isis::Projection::Projection(), Isis::RingCylindrical::XYRange(), Isis::Planar::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), XYRangeCheck(), and xyRangeOblique().
|
protectedinherited |
See minimumX description.
Definition at line 343 of file Projection.h.
Referenced by Isis::Projection::Projection(), Isis::RingCylindrical::XYRange(), Isis::Planar::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Mollweide::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::SimpleCylindrical::XYRange(), Isis::Equirectangular::XYRange(), Isis::Sinusoidal::XYRange(), Isis::Orthographic::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), XYRangeCheck(), and xyRangeOblique().
|
protected |
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 358 of file TProjection.h.
Referenced by LocalRadius(), PolarRadius(), Scale(), ToPlanetocentric(), ToPlanetographic(), and TProjection().
|
protectedinherited |
Indicates whether projection is sky or land.
Definition at line 326 of file Projection.h.
Referenced by Isis::Projection::IsSky(), and Isis::Projection::Projection().
|
private |
Constant Latitudes that intersect a discontinuity.
Definition at line 381 of file TProjection.h.
Referenced by doSearch(), and xyRangeOblique().
|
private |
Constant Longitudes that intersect a discontinuity.
Definition at line 383 of file TProjection.h.
Referenced by doSearch(), and xyRangeOblique().