Isis 3 Programmer Reference
Isis::RingCylindrical Class Reference

Ring Cylindrical Map Projection. More...

#include <RingCylindrical.h>

Inheritance diagram for Isis::RingCylindrical:
Inheritance graph
Collaboration diagram for Isis::RingCylindrical:
Collaboration graph

Public Types

enum  RingLongitudeDirection { Clockwise, CounterClockwise }
 This enum defines the types of ring 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

 RingCylindrical (Pvl &label, bool allowDefaults=false)
 Constructs a RingCylindrical object. More...
 
 ~RingCylindrical ()
 Destroys the RingCylindrical object. More...
 
bool operator== (const Projection &proj)
 Compares two Projection objects to see if they are equal. More...
 
QString Name () const
 Returns the name of the map projection, "RingCylindrical". More...
 
QString Version () const
 Returns the version of the map projection. More...
 
bool IsEquatorialCylindrical ()
 This method returns true if the projection is equatorial cylindrical. More...
 
double TrueScaleRingRadius () const
 Returns the center radius, in meters. More...
 
double CenterRingLongitude () const
 Returns the center longitude, in degrees. More...
 
double CenterRingRadius () const
 Returns the center radius, in meters. More...
 
bool SetGround (const double ringRadius, const double ringLongitude)
 This method is used to set the radius/longitude (assumed to be of the correct RingLongitudeDirection, and RingLongitudeDomain. More...
 
bool SetCoordinate (const double x, const double y)
 This method is used to set the projection x/y. More...
 
bool XYRange (double &minX, double &maxX, double &minY, double &maxY)
 This method is used to determine the x/y range which completely covers the area of interest specified by the radius/lon range. More...
 
PvlGroup Mapping ()
 This function returns the keywords that this projection uses. More...
 
PvlGroup MappingRingRadii ()
 This function returns the radii keywords that this projection uses. More...
 
PvlGroup MappingRingLongitudes ()
 This function returns the longitude keywords that this projection uses. More...
 
double LocalRadius () const
 This returns a local radius. More...
 
bool IsClockwise () const
 This indicates if the longitude direction type is positive west (as opposed to postive east). More...
 
bool IsCounterClockwise () const
 This indicates if the longitude direction type is positive east (as opposed to postive west). More...
 
std::string RingLongitudeDirectionString () const
 This method returns the ring 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 ring longitude domain is 0 to 360 (as opposed to -180 to 180). More...
 
std::string RingLongitudeDomainString () const
 This method returns the ring longitude domain as a string. More...
 
double MinimumRingRadius () const
 This returns the minimum radius of the area of interest. More...
 
double MaximumRingRadius () const
 This returns the maximum radius of the area of interest. More...
 
double MinimumRingLongitude () const
 This returns the minimum ring longitude of the area of interest. More...
 
double MaximumRingLongitude () const
 This returns the maximum ring longitude of the area of interest. More...
 
double RingRadius () const
 This returns a radius. More...
 
double RingLongitude () const
 This returns a ring longitude with correct ring longitude direction and domain as specified in the label object. More...
 
bool SetUniversalGround (const double ringRadius, const double ringLongitude)
 This method is used to set the ring radius/longitude which must be PositiveEast/Domain360 (ring longitude). More...
 
double UniversalRingRadius ()
 This returns a universal radius, which is just the radius in meters. More...
 
double UniversalRingLongitude ()
 This returns a universal ring longitude (clockwise in 0 to 360 domain). More...
 
double Scale () const
 This method returns the scale for mapping world coordinates into projection coordinates. More...
 
bool operator!= (const Projection &proj)
 This method determines whether two map projection objects are not equal. More...
 
void setProjectionType (const ProjectionType ptype)
 Sets the projection subclass type. More...
 
ProjectionType projectionType () const
 Returns an enum value for the projection type. More...
 
bool IsSky () const
 Returns true if projection is sky and false if it is land. More...
 
bool HasGroundRange () const
 This indicates if the longitude direction type is positive west (as opposed to postive east). More...
 
double Rotation () const
 Returns the value of the Rotation keyword from the mapping group. More...
 
void SetWorldMapper (WorldMapper *mapper)
 If desired the programmer can use this method to set a world mapper to be used in the SetWorld, WorldX, and WorldY methods. More...
 
bool IsGood () const
 This indicates if the last invocation of SetGround, SetCoordinate, SetUniversalGround, or SetWorld was with successful or not. More...
 
double XCoord () const
 This returns the projection X provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More...
 
double YCoord () const
 This returns the projection Y provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success. More...
 
virtual bool SetUnboundUniversalGround (const double coord1, const double coord2)
 This method is used to set the lat/lon or radius/azimuth (i.e. 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 ToClockwise (const double ringLongitude, const int domain)
 This method converts an ring longitude into the clockwise direction. More...
 
static double ToCounterClockwise (const double ringLongitude, const int domain)
 This method converts an ring longitude into the counterclockwise direction. More...
 
static double To180Domain (const double lon)
 This method converts a ring longitude into the -180 to 180 domain. More...
 
static double To360Domain (const double lon)
 This method converts an ring 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 ringRadius, const double ringLongitude)
 This convience function is established to assist in the development of the XYRange virtual method. 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_ringRadius
 This contain a ring radius value in m. More...
 
double m_ringLongitude
 This contain a ring longitude value. More...
 
RingLongitudeDirection m_ringLongitudeDirection
 An enumerated type indicating the LongitudeDirection read from the labels. More...
 
int m_ringLongitudeDomain
 This integer is either 180 or 360 and is read from the labels. More...
 
double m_minimumRingRadius
 Contains the minimum ring radius for the entire ground range. More...
 
double m_maximumRingRadius
 Contains the maximum ring radius for the entire ground range. More...
 
double m_minimumRingLongitude
 Contains the minimum longitude for the entire ground range. More...
 
double m_maximumRingLongitude
 Contains the maximum longitude for the entire ground range. More...
 
WorldMapperm_mapper
 This points to a mapper passed into the SetWorldMapper method. More...
 
bool m_good
 Indicates if the contents of m_x, m_y, m_latitude, and m_longitude are valid. More...
 
bool m_sky
 Indicates whether projection is sky or land. More...
 
bool m_groundRangeGood
 Indicates if the ground range (min/max lat/lons) were read from the labels. More...
 
double m_minimumX
 The data elements m_minimumX, m_minimumY, m_maximumX, and m_maximumY are convience data elements when you write the XYRange virtual function. More...
 
double m_maximumX
 See minimumX description. More...
 
double m_minimumY
 See minimumX description. More...
 
double m_maximumY
 See minimumX description. More...
 
PvlGroup m_mappingGrp
 Mapping group that created this projection. More...
 

Private Attributes

double m_centerRingLongitude
 The center ring longitude (azimuth) for the map projection, in radians. More...
 
double m_centerRingRadius
 The center ring radius for the map projection. More...
 

Detailed Description

Ring Cylindrical Map Projection.

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

The Ring Cylindrical projection is an

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

See also
Equirectangular
Author
2013-03-10 Debbie A. Cook
History:

2013-05-09 Jeannie Backer - Added comments and documentation. References #775.

2016-08-28 Kelvin Rodriguez - Removed several redundant var=var lines causing warnings in clang. Part of porting to OS X 10.11.

Definition at line 53 of file RingCylindrical.h.

Member Enumeration Documentation

◆ ProjectionType

This enum defines the subclasses of Projection supported in Isis.

Enumerator
Triaxial 

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

RingPlane 

These projections are used to map ring planes.

Definition at line 182 of file Projection.h.

◆ RingLongitudeDirection

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

Enumerator
Clockwise 

Ring longitude values increase in the clockwise direction.

CounterClockwise 

Ring longitude values increase in the counterclockwise direction.

Definition at line 194 of file RingPlaneProjection.h.

Constructor & Destructor Documentation

◆ RingCylindrical()

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

Constructs a RingCylindrical object.

Parameters
labelThis argument must be a Label containing the proper mapping information as indicated in the Projection class. Additionally, the ring cylindrical projection requires the center azimuth to be defined in the keyword CenterRingLongitude.
allowDefaultsIf set to false, the constructor requires that the keyword CenterRingLongitude exist in the label. Otherwise if it does not exist it will be computed and written to the label using the middle of the azimuth range as specified in the labels. Defaults to false
Exceptions
IException

Definition at line 55 of file RingCylindrical.cpp.

References _FILEINFO_, Isis::RingPlaneProjection::Clockwise, Isis::DEG2RAD, Isis::PvlObject::findGroup(), Isis::PvlContainer::hasKeyword(), Isis::IException::Io, m_centerRingLongitude, m_centerRingRadius, Isis::RingPlaneProjection::m_maximumRingLongitude, Isis::RingPlaneProjection::m_maximumRingRadius, Isis::RingPlaneProjection::m_minimumRingLongitude, Isis::RingPlaneProjection::m_minimumRingRadius, Isis::RingPlaneProjection::m_ringLongitudeDirection, Isis::toString(), and Isis::PvlObject::Traverse.

◆ ~RingCylindrical()

Isis::RingCylindrical::~RingCylindrical ( )

Destroys the RingCylindrical object.

Definition at line 96 of file RingCylindrical.cpp.

Member Function Documentation

◆ CenterRingLongitude()

double Isis::RingCylindrical::CenterRingLongitude ( ) const

Returns the center longitude, in degrees.

Returns
double The center longitude.

Definition at line 174 of file RingCylindrical.cpp.

References Isis::RingPlaneProjection::Clockwise, m_centerRingLongitude, Isis::RingPlaneProjection::m_ringLongitudeDirection, and Isis::RAD2DEG.

◆ CenterRingRadius()

double Isis::RingCylindrical::CenterRingRadius ( ) const

Returns the center radius, in meters.

Returns
double The center radius.

Definition at line 186 of file RingCylindrical.cpp.

References m_centerRingRadius.

◆ GetX()

◆ GetY()

◆ Has180Domain()

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

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

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

Returns
bool

Definition at line 341 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringLongitudeDomain.

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

◆ Has360Domain()

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

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

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

Returns
bool

Definition at line 352 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringLongitudeDomain.

◆ HasGroundRange()

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

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

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

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

Definition at line 364 of file Projection.cpp.

References Isis::Projection::m_groundRangeGood.

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

◆ IsClockwise()

bool Isis::RingPlaneProjection::IsClockwise ( ) const
inherited

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

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

Returns
bool

Definition at line 226 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::Clockwise, and Isis::RingPlaneProjection::m_ringLongitudeDirection.

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

◆ IsCounterClockwise()

bool Isis::RingPlaneProjection::IsCounterClockwise ( ) const
inherited

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

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

Returns
bool

Definition at line 237 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::CounterClockwise, and Isis::RingPlaneProjection::m_ringLongitudeDirection.

◆ IsEquatorialCylindrical()

bool Isis::RingCylindrical::IsEquatorialCylindrical ( )
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.

Returns
bool true if the projection is equatorial cylindrical

Reimplemented from Isis::Projection.

Definition at line 146 of file RingCylindrical.cpp.

◆ IsGood()

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

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

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

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

Definition at line 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 Isis::TProjection::XYRangeCheck().

◆ IsSky()

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

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

Returns
bool

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().

◆ LocalRadius()

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

This returns a local radius.

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

Returns
double

Implements Isis::Projection.

Definition at line 533 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringRadius.

◆ Mapping()

PvlGroup Isis::RingCylindrical::Mapping ( )
virtual

This function returns the keywords that this projection uses.

For RingCylindrical, this is the CenterRingRadius and CenterRingLongitude.

Returns
PvlGroup The keywords that this projection uses

Reimplemented from Isis::RingPlaneProjection.

Definition at line 290 of file RingCylindrical.cpp.

References Isis::RingPlaneProjection::Clockwise, m_centerRingLongitude, m_centerRingRadius, Isis::RingPlaneProjection::m_ringLongitudeDirection, Isis::RingPlaneProjection::Mapping(), Isis::RAD2DEG, and Isis::toString().

◆ MappingRingLongitudes()

PvlGroup Isis::RingCylindrical::MappingRingLongitudes ( )
virtual

This function returns the longitude keywords that this projection uses.

For RingCylindrical, this is the CenterRingLongitude.

Returns
PvlGroup The ring longitude keywords that this projection uses

Reimplemented from Isis::RingPlaneProjection.

Definition at line 324 of file RingCylindrical.cpp.

References Isis::Projection::HasGroundRange(), Isis::Projection::m_mappingGrp, and Isis::RingPlaneProjection::MappingRingLongitudes().

◆ MappingRingRadii()

PvlGroup Isis::RingCylindrical::MappingRingRadii ( )
virtual

This function returns the radii keywords that this projection uses.

For RingCylindrical, this is the CenterRingRadius.

Returns
PvlGroup The latitude keywords that this projection uses

Reimplemented from Isis::RingPlaneProjection.

Definition at line 308 of file RingCylindrical.cpp.

References Isis::Projection::HasGroundRange(), Isis::Projection::m_mappingGrp, and Isis::RingPlaneProjection::MappingRingRadii().

◆ MaximumRingLongitude()

double Isis::RingPlaneProjection::MaximumRingLongitude ( ) const
inherited

This returns the maximum ring longitude of the area of interest.

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

Returns
double

Definition at line 453 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_maximumRingLongitude.

◆ MaximumRingRadius()

double Isis::RingPlaneProjection::MaximumRingRadius ( ) const
inherited

This returns the maximum radius of the area of interest.

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

Returns
double

Definition at line 431 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_maximumRingRadius.

◆ MinimumRingLongitude()

double Isis::RingPlaneProjection::MinimumRingLongitude ( ) const
inherited

This returns the minimum ring longitude of the area of interest.

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

Returns
double

Definition at line 442 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_minimumRingLongitude.

◆ MinimumRingRadius()

double Isis::RingPlaneProjection::MinimumRingRadius ( ) const
inherited

This returns the minimum radius of the area of interest.

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

Returns
double

Definition at line 420 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_minimumRingRadius.

◆ Name()

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

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

Returns
QString Name of projection, "RingCylindrical"

Implements Isis::RingPlaneProjection.

Definition at line 122 of file RingCylindrical.cpp.

◆ operator!=()

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

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

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

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

Definition at line 193 of file Projection.cpp.

◆ operator==()

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

Compares two Projection objects to see if they are equal.

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

Reimplemented from Isis::RingPlaneProjection.

Definition at line 107 of file RingCylindrical.cpp.

References m_centerRingLongitude, and m_centerRingRadius.

◆ PixelResolution()

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

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

Returns
double pixel resolution in meters/pixel

Definition at line 855 of file Projection.cpp.

References Isis::Projection::m_pixelResolution.

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

◆ projectionType()

◆ Resolution()

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

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

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

Returns
double The resolution, in appropriate units.

Definition at line 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().

◆ RingLongitude()

double Isis::RingPlaneProjection::RingLongitude ( ) const
inherited

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

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

Returns
double

Definition at line 545 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringLongitude.

Referenced by Isis::UniversalGroundMap::UniversalLongitude(), and Isis::TrackTool::updateLabels().

◆ RingLongitudeDirectionString()

string Isis::RingPlaneProjection::RingLongitudeDirectionString ( ) const
inherited

This method returns the ring longitude direction as a string.

It will return either Clockwise or CounterClockwise.

Returns
string The ring longitude direction, "Clockwise" or "CounterClockwise".

Definition at line 329 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::Clockwise, and Isis::RingPlaneProjection::m_ringLongitudeDirection.

◆ RingLongitudeDomainString()

string Isis::RingPlaneProjection::RingLongitudeDomainString ( ) const
inherited

This method returns the ring longitude domain as a string.

It will return either 180 or 360.

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

Definition at line 408 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringLongitudeDomain.

◆ RingRadius()

double Isis::RingPlaneProjection::RingRadius ( ) const
inherited

This returns a radius.

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

Returns
double

Definition at line 521 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringRadius.

Referenced by Isis::UniversalGroundMap::UniversalLatitude(), and Isis::TrackTool::updateLabels().

◆ Rotation()

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

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

Returns
double The rotation of the map.

Definition at line 374 of file Projection.cpp.

References Isis::Projection::m_rotation.

◆ Scale()

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

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

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

Returns
double The scale for mapping.

Implements Isis::Projection.

Definition at line 622 of file RingPlaneProjection.cpp.

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

◆ SetComputedXY()

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

◆ SetCoordinate()

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

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

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

Parameters
xX coordinate of the projection in units that are the same as the radii in the label
yY coordinate of the projection in units that are the same as the radii in the label
Returns
bool Indicates whether the ring radius and longitude were successfully calculated and whether the coordinate was successfully set.

Reimplemented from Isis::RingPlaneProjection.

Definition at line 255 of file RingCylindrical.cpp.

References Isis::RingPlaneProjection::Clockwise, Isis::Projection::GetX(), Isis::Projection::GetY(), m_centerRingLongitude, m_centerRingRadius, Isis::Projection::m_good, Isis::RingPlaneProjection::m_maximumRingRadius, Isis::RingPlaneProjection::m_ringLongitude, Isis::RingPlaneProjection::m_ringLongitudeDirection, Isis::RingPlaneProjection::m_ringRadius, Isis::RAD2DEG, and Isis::Projection::SetXY().

◆ SetGround()

bool Isis::RingCylindrical::SetGround ( const double  ringRadius,
const double  ringLongitude 
)
virtual

This method is used to set the radius/longitude (assumed to be of the correct RingLongitudeDirection, and RingLongitudeDomain.

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

Parameters
ringRadiusRing radius value to project
ringLongitudeRing longitude (azimuth) value to project
Returns
bool Indicates whether the x and y values were successfully calculated and whether the ground values were successfully set.

Reimplemented from Isis::RingPlaneProjection.

Definition at line 204 of file RingCylindrical.cpp.

References Isis::RingPlaneProjection::Clockwise, Isis::DEG2RAD, m_centerRingLongitude, m_centerRingRadius, Isis::Projection::m_good, Isis::RingPlaneProjection::m_ringLongitude, Isis::RingPlaneProjection::m_ringLongitudeDirection, Isis::RingPlaneProjection::m_ringRadius, and Isis::Projection::SetComputedXY().

◆ setProjectionType()

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

Sets the projection subclass type.

Parameters
ptypeThe projection subclass type

Definition at line 203 of file Projection.cpp.

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

◆ SetUnboundUniversalGround()

bool Isis::Projection::SetUnboundUniversalGround ( const double  coord1,
const double  coord2 
)
virtualinherited

This method is used to set the lat/lon or radius/azimuth (i.e.

ring longitude) coordinate, depending on the projection type. 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 method will not adjust the longitude coordinate based on the longitude domain.

Parameters
coord1Latitude (planetocentric) or ring radius to project
coord2Longitude or ring longitude to project. The value passed in should be PositiveEast, Domain360.
Returns
bool Indicates whether the method was successful.

Reimplemented in Isis::TProjection.

Definition at line 461 of file Projection.cpp.

References Isis::Projection::m_good, Isis::Null, Isis::Projection::projectionType(), Isis::TProjection::SetUnboundUniversalGround(), Isis::RingPlaneProjection::SetUniversalGround(), and Isis::Projection::Triaxial.

Referenced by Isis::UniversalGroundMap::SetUnboundGround().

◆ SetUniversalGround()

bool Isis::RingPlaneProjection::SetUniversalGround ( const double  ringRadius,
const double  ringLongitude 
)
virtualinherited

This method is used to set the ring radius/longitude which must be PositiveEast/Domain360 (ring longitude).

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

Parameters
ringRadiusThe ring radius value to project
ringLongitudePositiveEast, Domain360 ring longitude value to project
Returns
bool Indicates whether the method was successful.

Reimplemented from Isis::Projection.

Definition at line 561 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::Clockwise, Isis::Projection::m_good, Isis::RingPlaneProjection::m_ringLongitude, Isis::RingPlaneProjection::m_ringLongitudeDirection, Isis::RingPlaneProjection::m_ringLongitudeDomain, Isis::RingPlaneProjection::m_ringRadius, Isis::Null, Isis::RingPlaneProjection::SetGround(), Isis::RingPlaneProjection::To180Domain(), and Isis::RingPlaneProjection::To360Domain().

Referenced by Isis::Projection::SetUnboundUniversalGround(), and Isis::Projection::SetUniversalGround().

◆ SetUpperLeftCorner()

void Isis::Projection::SetUpperLeftCorner ( const Displacement x,
const Displacement y 
)
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.

Parameters
minXMinimum x projection coordinate which covers the latitude longitude range specified in the labels.
maxXMaximum x projection coordinate which covers the latitude longitude range specified in the labels.
minYMinimum y projection coordinate which covers the latitude longitude range specified in the labels.
maxYMaximum y projection coordinate which covers the latitude longitude range specified in the labels.
Returns
bool Indicates whether the method was successful.
See also
XYRange()
Author
Stephen Lambright
History:
2011-07-02 Jeannie Backer - Moved this code from ObliqueCylindrical class to its own method here.

This method searches for extreme (min/max/discontinuity) coordinate values along the constBorder line between minBorder and maxBorder (that is, across latitudes/longitudes). This method locates the extrema by utilizing the findExtreme() method until the coordinate values converge. Then, extremeVal parameter is updated with this value before returning.

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

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

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

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

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

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

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

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

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

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

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

Definition at line 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().

◆ SetWorld()

bool Isis::Projection::SetWorld ( const double  worldX,
const double  worldY 
)
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).

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

Definition at line 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().

◆ SetWorldMapper()

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

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

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

Parameters
mapperPointer to the mapper

Definition at line 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().

◆ SetXY()

◆ To180Domain()

double Isis::RingPlaneProjection::To180Domain ( const double  ringLongitude)
staticinherited

This method converts a ring longitude into the -180 to 180 domain.

It will leave the ring longitude unchanged if it is already in the domain.

Parameters
ringLongitudeA ring longitude to convert into the -180 to 180 domain.
Exceptions
IException::Unknown- "The given longitude is invalid."
Returns
double The ring longitude, converted to 180 domain.

Definition at line 367 of file RingPlaneProjection.cpp.

References _FILEINFO_, Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::Longitude::force180Domain(), Isis::Null, and Isis::IException::Unknown.

Referenced by Isis::Planar::SetCoordinate(), Isis::RingPlaneProjection::SetUniversalGround(), Isis::RingPlaneProjection::ToClockwise(), Isis::RingPlaneProjection::ToCounterClockwise(), and Isis::AdvancedTrackTool::updateRow().

◆ To360Domain()

double Isis::RingPlaneProjection::To360Domain ( const double  ringLongitude)
staticinherited

This method converts an ring longitude into the 0 to 360 domain.

It will leave the ring longitude unchanged if it is already in the domain.

Parameters
ringLongitudeThe ring longitude to convert into the 0 to 360 domain.
Returns
double The ring longitude, converted to 360 domain.

Definition at line 385 of file RingPlaneProjection.cpp.

References _FILEINFO_, Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::Longitude::force360Domain(), Isis::Null, and Isis::IException::Unknown.

Referenced by Isis::Planar::SetCoordinate(), Isis::RingPlaneProjection::SetUniversalGround(), Isis::RingPlaneProjection::ToClockwise(), Isis::RingPlaneProjection::ToCounterClockwise(), and Isis::RingPlaneProjection::UniversalRingLongitude().

◆ ToClockwise()

double Isis::RingPlaneProjection::ToClockwise ( const double  ringLongitude,
const int  domain 
)
staticinherited

This method converts an ring longitude into the clockwise direction.

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

Definition at line 255 of file RingPlaneProjection.cpp.

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

◆ ToCounterClockwise()

double Isis::RingPlaneProjection::ToCounterClockwise ( const double  ringLongitude,
const int  domain 
)
staticinherited

This method converts an ring longitude into the counterclockwise direction.

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

Definition at line 295 of file RingPlaneProjection.cpp.

References _FILEINFO_, Isis::Null, Isis::RingPlaneProjection::To180Domain(), Isis::RingPlaneProjection::To360Domain(), and Isis::IException::Unknown.

◆ ToDMS()

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

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

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

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

Definition at line 721 of file Projection.cpp.

◆ ToHMS()

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

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

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

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

Definition at line 756 of file Projection.cpp.

References Isis::Projection::ToHours().

◆ ToHours()

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

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

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

Definition at line 708 of file Projection.cpp.

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

◆ ToProjectionX()

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

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

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

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

Definition at line 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().

◆ ToProjectionY()

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

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

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

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

Definition at line 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().

◆ ToWorldX()

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

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

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

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

Definition at line 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().

◆ ToWorldY()

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

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

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

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

Definition at line 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().

◆ TrueScaleRingRadius()

double Isis::RingCylindrical::TrueScaleRingRadius ( ) const
virtual

Returns the center radius, in meters.

TODO: Correct this comment for planar projection, assuming right now scale at center of projection. (believe scale is uniform across planar projection)

NOTE In the case of Planar projections, there is NO radius that is entirely true to scale. The only true scale for this projection is at the single point, (center radius, center azimuth).

Returns
double The center radius.

Reimplemented from Isis::RingPlaneProjection.

Definition at line 164 of file RingCylindrical.cpp.

References m_centerRingRadius.

◆ UniversalRingLongitude()

double Isis::RingPlaneProjection::UniversalRingLongitude ( )
inherited

This returns a universal ring longitude (clockwise in 0 to 360 domain).

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

Returns
double The universal ring longitude.

Definition at line 604 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::Clockwise, Isis::RingPlaneProjection::m_ringLongitude, Isis::RingPlaneProjection::m_ringLongitudeDirection, and Isis::RingPlaneProjection::To360Domain().

Referenced by Isis::Camera::SetImageMapProjection(), and Isis::AdvancedTrackTool::updateRow().

◆ UniversalRingRadius()

double Isis::RingPlaneProjection::UniversalRingRadius ( )
inherited

This returns a universal radius, which is just the radius in meters.

Returns
double The universal radius.

Definition at line 590 of file RingPlaneProjection.cpp.

References Isis::RingPlaneProjection::m_ringRadius.

Referenced by Isis::Camera::SetImageMapProjection(), and Isis::AdvancedTrackTool::updateRow().

◆ Version()

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

Returns the version of the map projection.

Returns
QString Version number

Implements Isis::RingPlaneProjection.

Definition at line 131 of file RingCylindrical.cpp.

◆ WorldX()

double Isis::Projection::WorldX ( ) const
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).

Returns
double The world X coordinate.

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().

◆ WorldY()

double Isis::Projection::WorldY ( ) const
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).

Returns
double The world Y coordinate.

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().

◆ XCoord()

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

◆ XYRange()

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

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

The radius/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., RingCylindrical). The method may fail as indicated by its return value.

Parameters
&minXReference to the address where the minimum x coordinate value will be written. The Minimum x projection coordinate calculated by this method covers the radius/longitude range specified in the labels.
&maxXReference to the address where the maximum x coordinate value will be written. The Maximum x projection coordinate calculated by this method covers the radius/longitude range specified in the labels.
&minYReference to the address where the minimum y coordinate value will be written. The Minimum y projection coordinate calculated by this method covers the radius/longitude range specified in the labels.
&maxYReference to the address where the maximum y coordinate value will be written. The Maximum y projection coordinate calculated by this method covers the radius/longitude range specified in the labels.
Returns
bool Indicates whether the method was able to determine the X/Y Range of the projection. If yes, minX, maxX, minY, maxY will be set with these values.

Reimplemented from Isis::RingPlaneProjection.

Definition at line 371 of file RingCylindrical.cpp.

References Isis::RingPlaneProjection::m_maximumRingLongitude, Isis::RingPlaneProjection::m_maximumRingRadius, Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::RingPlaneProjection::m_minimumRingLongitude, Isis::RingPlaneProjection::m_minimumRingRadius, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, Isis::Projection::PixelResolution(), and Isis::RingPlaneProjection::XYRangeCheck().

◆ XYRangeCheck()

void Isis::RingPlaneProjection::XYRangeCheck ( const double  ringRadius,
const double  ringLongitude 
)
protectedvirtualinherited

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

It allows the developer to test ground points (ring radius/longitude) to see if they produce a minimum/maximum projection coordinate. For example in Planar,

bool Planar::XYRange(double &minX, double &maxX,
double &minY, double &maxY) {
// Check the corners of the ring rad/lon range
// If the ring longitude crosses 0/360 check there
XYRangeCheck (minimumRingRadius, 0. or 360.);
XYRangeCheck (maximumRingRadius, 0 or 360.);
}
// Make sure everything is ordered
if (m_minimumX >= m_maximumX) return false;
if (m_minimumY >= m_maximumY) return false;
// Return X/Y min/maxs
minX = m_minimumX;
maxX = m_maximumX;
minY = m_minimumY;
maxY = m_maximumY;
return true;
}
Parameters
ringRadiusTest for min/max projection coordinates at this radius
ringLongitudeTest for min/max projection coordinates at this ring longitude

Implements Isis::Projection.

Definition at line 724 of file RingPlaneProjection.cpp.

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

Referenced by XYRange(), and Isis::Planar::XYRange().

◆ YCoord()

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

Member Data Documentation

◆ m_centerRingLongitude

double Isis::RingCylindrical::m_centerRingLongitude
private

The center ring longitude (azimuth) for the map projection, in radians.

Definition at line 78 of file RingCylindrical.h.

Referenced by CenterRingLongitude(), Mapping(), operator==(), RingCylindrical(), SetCoordinate(), and SetGround().

◆ m_centerRingRadius

double Isis::RingCylindrical::m_centerRingRadius
private

The center ring radius for the map projection.

Definition at line 80 of file RingCylindrical.h.

Referenced by CenterRingRadius(), Mapping(), operator==(), RingCylindrical(), SetCoordinate(), SetGround(), and TrueScaleRingRadius().

◆ m_good

bool Isis::Projection::m_good
protectedinherited

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

Definition at line 316 of file Projection.h.

Referenced by Isis::TProjection::findExtreme(), Isis::Projection::IsGood(), Isis::Projection::Projection(), Isis::Projection::SetComputedXY(), SetCoordinate(), Isis::Planar::SetCoordinate(), 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::RingPlaneProjection::SetCoordinate(), Isis::TProjection::SetCoordinate(), 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(), Isis::TProjection::SetGround(), Isis::Projection::SetUnboundUniversalGround(), Isis::TProjection::SetUnboundUniversalGround(), Isis::RingPlaneProjection::SetUniversalGround(), Isis::Projection::SetUniversalGround(), Isis::TProjection::SetUniversalGround(), Isis::Projection::SetXY(), Isis::LambertConformal::XYRange(), Isis::RingPlaneProjection::XYRangeCheck(), and Isis::TProjection::XYRangeCheck().

◆ m_groundRangeGood

bool Isis::Projection::m_groundRangeGood
protectedinherited

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

Definition at line 329 of file Projection.h.

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

◆ m_mapper

WorldMapper* Isis::Projection::m_mapper
protectedinherited

This points to a mapper passed into the SetWorldMapper method.

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

Definition at line 308 of file Projection.h.

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

◆ m_mappingGrp

PvlGroup Isis::Projection::m_mappingGrp
protectedinherited

Mapping group that created this projection.

Definition at line 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(), Isis::TProjection::Mapping(), Isis::PointPerspective::MappingLatitudes(), Isis::TransverseMercator::MappingLatitudes(), Isis::Mercator::MappingLatitudes(), Isis::LambertConformal::MappingLatitudes(), Isis::PolarStereographic::MappingLatitudes(), Isis::Equirectangular::MappingLatitudes(), Isis::Orthographic::MappingLatitudes(), Isis::TProjection::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(), Isis::TProjection::MappingLongitudes(), MappingRingLongitudes(), Isis::Planar::MappingRingLongitudes(), Isis::RingPlaneProjection::MappingRingLongitudes(), MappingRingRadii(), Isis::Planar::MappingRingRadii(), Isis::RingPlaneProjection::MappingRingRadii(), Isis::Projection::Projection(), Isis::RingPlaneProjection::RingPlaneProjection(), Isis::Projection::SetUpperLeftCorner(), and Isis::TProjection::TProjection().

◆ m_maximumRingLongitude

double Isis::RingPlaneProjection::m_maximumRingLongitude
protectedinherited

Contains the maximum longitude for the entire ground range.

Only usable if m_groundRangeGood is true.

Definition at line 306 of file RingPlaneProjection.h.

Referenced by Isis::RingPlaneProjection::MaximumRingLongitude(), Isis::Planar::Planar(), RingCylindrical(), Isis::RingPlaneProjection::RingPlaneProjection(), XYRange(), Isis::Planar::XYRange(), and Isis::RingPlaneProjection::XYRange().

◆ m_maximumRingRadius

double Isis::RingPlaneProjection::m_maximumRingRadius
protectedinherited

Contains the maximum ring radius for the entire ground range.

Only usable if m_groundRangeGood is true.

Definition at line 300 of file RingPlaneProjection.h.

Referenced by Isis::RingPlaneProjection::MaximumRingRadius(), Isis::Planar::Planar(), RingCylindrical(), Isis::RingPlaneProjection::RingPlaneProjection(), SetCoordinate(), XYRange(), Isis::Planar::XYRange(), and Isis::RingPlaneProjection::XYRange().

◆ m_maximumX

◆ m_maximumY

◆ m_minimumRingLongitude

double Isis::RingPlaneProjection::m_minimumRingLongitude
protectedinherited

Contains the minimum longitude for the entire ground range.

Only usable if m_groundRangeGood is true.

Definition at line 303 of file RingPlaneProjection.h.

Referenced by Isis::RingPlaneProjection::MinimumRingLongitude(), Isis::Planar::Planar(), RingCylindrical(), Isis::RingPlaneProjection::RingPlaneProjection(), XYRange(), Isis::Planar::XYRange(), and Isis::RingPlaneProjection::XYRange().

◆ m_minimumRingRadius

double Isis::RingPlaneProjection::m_minimumRingRadius
protectedinherited

Contains the minimum ring radius for the entire ground range.

Only usable if m_groundRangeGood is true.

Definition at line 297 of file RingPlaneProjection.h.

Referenced by Isis::RingPlaneProjection::MinimumRingRadius(), Isis::Planar::Planar(), RingCylindrical(), Isis::RingPlaneProjection::RingPlaneProjection(), XYRange(), Isis::Planar::XYRange(), and Isis::RingPlaneProjection::XYRange().

◆ m_minimumX

double Isis::Projection::m_minimumX
protectedinherited

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

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

Definition at line 333 of file Projection.h.

Referenced by Isis::Projection::Projection(), 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(), Isis::TProjection::XYRangeCheck(), and Isis::TProjection::xyRangeOblique().

◆ m_minimumY

◆ m_ringLongitude

◆ m_ringLongitudeDirection

◆ m_ringLongitudeDomain

int Isis::RingPlaneProjection::m_ringLongitudeDomain
protectedinherited

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

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

Definition at line 291 of file RingPlaneProjection.h.

Referenced by Isis::RingPlaneProjection::Has180Domain(), Isis::RingPlaneProjection::Has360Domain(), Isis::RingPlaneProjection::RingLongitudeDomainString(), Isis::RingPlaneProjection::RingPlaneProjection(), Isis::Planar::SetCoordinate(), and Isis::RingPlaneProjection::SetUniversalGround().

◆ m_ringRadius

◆ m_sky

bool Isis::Projection::m_sky
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().


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