Isis 3 Programmer 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;
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
double m_cosPhi1
The cosine of the center latitude.
double m_cosBeta1
The cosine of m_beta1.
bool m_northPolarAspect
Indicates whether this is a north polar aspect projection.
double m_sinPhi1
The sine of the center latitude.
PvlGroup MappingLongitudes()
This function returns the longitude keywords that this projection uses.
double m_lambda0
The center longitude for the map projection measured positive east, in radians.
double m_beta1
The authalaic latitude.
double TrueScaleLatitude() const
This method returns the latitude of true scale.
double m_e
Eccentricity of the ellipsoid.
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
double m_Rq
The radius of the sphere having the same surface area as the ellipsoid.
double m_q1
Snyder's q variable from equation (3-12) on page 187, computed for the center latitude, phi = m_phi1.
QString Version() const
This method returns the Version of the map projection.
double m_D
Value used to correct scale in all directions at the center of the projection.
double m_h
Relative scale factor along a meridian of longitude.
double m_qp
Snyder's q variable from equation (3-12) on page 187, computed for the north pole, phi = 90.
PvlGroup Mapping()
This function returns the keywords that this projection uses.
double m_a
Equitorial Radius of the ellipsoid.
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.
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.
double m_m1
Snyder's m variable from equation (14-15) on page 187, computed from the center latitude, phi = m_phi1.
Container for cube-like labels.
Definition: Pvl.h:135
bool m_spherical
Indicates whether the body to be projected is spherical.
double m_sinBeta1
The sine of m_beta1.
double m_phi1
The center latitude for the map projection, in radians.
bool m_southPolarAspect
Indicates whether this is a south polar aspect projection.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
double m_k
Relative scale factor along a parallel of latitude.
PvlGroup MappingLatitudes()
This function returns the latitude keywords that this projection uses.
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...
bool m_equatorialAspect
Indicates whether this is a equatorial aspect projection.