Isis 3 Programmer Reference
LambertAzimuthalEqualArea.h
1 #ifndef LambertAzimuthalEqualArea_h
2 #define LambertAzimuthalEqualArea_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 #include "TProjection.h"
10 
11 namespace Isis {
12  class Pvl;
13  class PvlGroup;
92  public:
93  LambertAzimuthalEqualArea(Pvl &label, bool allowDefaults = false);
95  bool operator== (const Projection &proj);
96 
97  QString Name() const;
98  QString Version() const;
99  double TrueScaleLatitude() const;
100  // since this projection is not cylindrical the following method does not
101  // need to be be overwritten, returning false by default
102  // virtual bool IsEquatorialCylindrical();
103 
104  bool SetGround(const double lat, const double lon);
105  bool SetCoordinate(const double x, const double y);
106  bool XYRange(double &minX, double &maxX, double &minY, double &maxY);
107 
111 
112  // Unused methods as of June 2012 - See comments in LambertAzimuthalEqualArea.cpp
113  double relativeScaleFactorLongitude() const;
114  double relativeScaleFactorLatitude() const;
115 
116  private:
117  void init(double centerLatitude, double centerLongitude);
118  void initEllipsoid();
119  bool setGroundEllipsoid(double phi, double lambda);
120  bool setCoordinateEllipsoid(const double x, const double y);
121  bool xyRangeLambertAzimuthalPolar(double &minX, double &maxX,
122  double &minY, double &maxY);
123  void checkLongitude(double longitude);
124  void validateRelativeScaleFactor() const;
125 
126  // projection flags
127  bool m_spherical;
136  // Snyder variables
137  double m_a;
139  double m_e;
141  double m_lambda0;
147  double m_phi1;
149  double m_sinPhi1;
150  double m_cosPhi1;
151 
152  // The following Snyder variables are only needed if we implement the
153  // ellipsoidal projection
154  double m_qp;
156  double m_q1;
159  double m_m1;
162  double m_beta1;
165  double m_sinBeta1;
166  double m_cosBeta1;
167  double m_Rq;
170  double m_D;
174  double m_h;
175  double m_k;
176  };
177 };
178 
179 #endif
Isis::LambertAzimuthalEqualArea::m_qp
double m_qp
Snyder's q variable from equation (3-12) on page 187, computed for the north pole,...
Definition: LambertAzimuthalEqualArea.h:154
Isis::LambertAzimuthalEqualArea::m_e
double m_e
Eccentricity of the ellipsoid.
Definition: LambertAzimuthalEqualArea.h:139
Isis::LambertAzimuthalEqualArea::m_lambda0
double m_lambda0
The center longitude for the map projection measured positive east, in radians.
Definition: LambertAzimuthalEqualArea.h:141
Isis::LambertAzimuthalEqualArea::m_equatorialAspect
bool m_equatorialAspect
Indicates whether this is a equatorial aspect projection.
Definition: LambertAzimuthalEqualArea.h:133
Isis::LambertAzimuthalEqualArea::m_sinBeta1
double m_sinBeta1
The sine of m_beta1.
Definition: LambertAzimuthalEqualArea.h:165
Isis::LambertAzimuthalEqualArea
Lambert Azimuthal Equal Area Map Projection.
Definition: LambertAzimuthalEqualArea.h:91
Isis::LambertAzimuthalEqualArea::XYRange
bool XYRange(double &minX, double &maxX, double &minY, double &maxY)
This method is used to determine the x/y range which completely covers the area of interest specified...
Isis::LambertAzimuthalEqualArea::TrueScaleLatitude
double TrueScaleLatitude() const
This method returns the latitude of true scale.
Isis::LambertAzimuthalEqualArea::m_h
double m_h
Relative scale factor along a meridian of longitude.
Definition: LambertAzimuthalEqualArea.h:174
Isis::Pvl
Container for cube-like labels.
Definition: Pvl.h:119
Isis::LambertAzimuthalEqualArea::m_Rq
double m_Rq
The radius of the sphere having the same surface area as the ellipsoid.
Definition: LambertAzimuthalEqualArea.h:167
Isis::LambertAzimuthalEqualArea::m_southPolarAspect
bool m_southPolarAspect
Indicates whether this is a south polar aspect projection.
Definition: LambertAzimuthalEqualArea.h:131
Isis::LambertAzimuthalEqualArea::m_m1
double m_m1
Snyder's m variable from equation (14-15) on page 187, computed from the center latitude,...
Definition: LambertAzimuthalEqualArea.h:159
Isis::LambertAzimuthalEqualArea::Name
QString Name() const
This method returns the name of the map projection.
Isis::LambertAzimuthalEqualArea::m_a
double m_a
Equitorial Radius of the ellipsoid.
Definition: LambertAzimuthalEqualArea.h:137
Isis::LambertAzimuthalEqualArea::m_spherical
bool m_spherical
Indicates whether the body to be projected is spherical.
Definition: LambertAzimuthalEqualArea.h:127
Isis::LambertAzimuthalEqualArea::m_k
double m_k
Relative scale factor along a parallel of latitude.
Definition: LambertAzimuthalEqualArea.h:175
Isis::LambertAzimuthalEqualArea::m_sinPhi1
double m_sinPhi1
The sine of the center latitude.
Definition: LambertAzimuthalEqualArea.h:149
Isis::LambertAzimuthalEqualArea::operator==
bool operator==(const Projection &proj)
This method determines whether two map projection objects are equal by comparing the equatorial radiu...
Isis::PvlGroup
Contains multiple PvlContainers.
Definition: PvlGroup.h:41
Isis::LambertAzimuthalEqualArea::Version
QString Version() const
This method returns the Version of the map projection.
Isis::LambertAzimuthalEqualArea::m_northPolarAspect
bool m_northPolarAspect
Indicates whether this is a north polar aspect projection.
Definition: LambertAzimuthalEqualArea.h:129
Isis::TProjection
Base class for Map TProjections.
Definition: TProjection.h:166
Isis::LambertAzimuthalEqualArea::m_cosPhi1
double m_cosPhi1
The cosine of the center latitude.
Definition: LambertAzimuthalEqualArea.h:150
Isis::LambertAzimuthalEqualArea::m_phi1
double m_phi1
The center latitude for the map projection, in radians.
Definition: LambertAzimuthalEqualArea.h:147
Isis::LambertAzimuthalEqualArea::MappingLongitudes
PvlGroup MappingLongitudes()
This function returns the longitude keywords that this projection uses.
Isis::LambertAzimuthalEqualArea::MappingLatitudes
PvlGroup MappingLatitudes()
This function returns the latitude keywords that this projection uses.
Isis::LambertAzimuthalEqualArea::m_beta1
double m_beta1
The authalaic latitude.
Definition: LambertAzimuthalEqualArea.h:162
Isis::LambertAzimuthalEqualArea::m_q1
double m_q1
Snyder's q variable from equation (3-12) on page 187, computed for the center latitude,...
Definition: LambertAzimuthalEqualArea.h:156
Isis::LambertAzimuthalEqualArea::m_D
double m_D
Value used to correct scale in all directions at the center of the projection.
Definition: LambertAzimuthalEqualArea.h:170
Isis::LambertAzimuthalEqualArea::SetCoordinate
bool SetCoordinate(const double x, const double y)
This method is used to set the projection x/y.
Isis::LambertAzimuthalEqualArea::Mapping
PvlGroup Mapping()
This function returns the keywords that this projection uses.
Isis::Projection
Base class for Map Projections.
Definition: Projection.h:155
Isis::LambertAzimuthalEqualArea::SetGround
bool SetGround(const double lat, const double lon)
This method is used to set the latitude/longitude (assumed to be of the correct LatitudeType,...
Isis::LambertAzimuthalEqualArea::m_cosBeta1
double m_cosBeta1
The cosine of m_beta1.
Definition: LambertAzimuthalEqualArea.h:166
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16