Isis 3 Developer Reference
LambertAzimuthalEqualArea.h
Go to the documentation of this file.
1 #ifndef LambertAzimuthalEqualArea_h
2 #define LambertAzimuthalEqualArea_h
3 
25 #include "TProjection.h"
26 
27 namespace Isis {
28  class Pvl;
29  class PvlGroup;
108  public:
109  LambertAzimuthalEqualArea(Pvl &label, bool allowDefaults = false);
111  bool operator== (const Projection &proj);
112 
113  QString Name() const;
114  QString Version() const;
115  double TrueScaleLatitude() const;
116  // since this projection is not cylindrical the following method does not
117  // need to be be overwritten, returning false by default
118  // virtual bool IsEquatorialCylindrical();
119 
120  bool SetGround(const double lat, const double lon);
121  bool SetCoordinate(const double x, const double y);
122  bool XYRange(double &minX, double &maxX, double &minY, double &maxY);
123 
124  PvlGroup Mapping();
127 
128  // Unused methods as of June 2012 - See comments in LambertAzimuthalEqualArea.cpp
129  double relativeScaleFactorLongitude() const;
130  double relativeScaleFactorLatitude() const;
131 
132  private:
133  void init(double centerLatitude, double centerLongitude);
134  void initEllipsoid();
135  bool setGroundEllipsoid(double phi, double lambda);
136  bool setCoordinateEllipsoid(const double x, const double y);
137  bool xyRangeLambertAzimuthalPolar(double &minX, double &maxX,
138  double &minY, double &maxY);
139  void checkLongitude(double longitude);
140  void validateRelativeScaleFactor() const;
141 
142  // projection flags
143  bool m_spherical;
145  bool m_northPolarAspect;
147  bool m_southPolarAspect;
149  bool m_equatorialAspect;
152  // Snyder variables
153  double m_a;
155  double m_e;
157  double m_lambda0;
163  double m_phi1;
165  double m_sinPhi1;
166  double m_cosPhi1;
167 
168  // The following Snyder variables are only needed if we implement the
169  // ellipsoidal projection
170  double m_qp;
172  double m_q1;
175  double m_m1;
178  double m_beta1;
181  double m_sinBeta1;
182  double m_cosBeta1;
183  double m_Rq;
186  double m_D;
190  double m_h;
191  double m_k;
192  };
193 };
194 
195 #endif
PvlGroup MappingLongitudes()
This function returns the longitude keywords that this projection uses.
double TrueScaleLatitude() const
This method returns the latitude of true scale.
bool SetCoordinate(const double x, const double y)
This method is used to set the projection x/y.
Base class for Map TProjections.
Definition: TProjection.h:182
QString Version() const
This method returns the Version of the map projection.
PvlGroup Mapping()
This function returns the keywords that this projection uses.
double relativeScaleFactorLatitude() const
Base class for Map Projections.
Definition: Projection.h:171
Contains multiple PvlContainers.
Definition: PvlGroup.h:57
bool operator==(const Projection &proj)
This method determines whether two map projection objects are equal by comparing the equatorial radiu...
Lambert Azimuthal Equal Area Map Projection.
Definition: LambertAzimuthalEqualArea.h:107
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.
LambertAzimuthalEqualArea(Pvl &label, bool allowDefaults=false)
Container for cube-like labels.
Definition: Pvl.h:135
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
PvlGroup MappingLatitudes()
This function returns the latitude keywords that this projection uses.
double relativeScaleFactorLongitude() const
QString Name() const
This method returns the name of the map projection.
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...