GeographicLib
1.21
|
Polar Stereographic Projection. More...
#include <GeographicLib/PolarStereographic.hpp>
Public Member Functions | |
PolarStereographic (real a, real f, real k0) | |
void | SetScale (real lat, real k=real(1)) |
void | Forward (bool northp, real lat, real lon, real &x, real &y, real &gamma, real &k) const throw () |
void | Reverse (bool northp, real x, real y, real &lat, real &lon, real &gamma, real &k) const throw () |
void | Forward (bool northp, real lat, real lon, real &x, real &y) const throw () |
void | Reverse (bool northp, real x, real y, real &lat, real &lon) const throw () |
Inspector functions | |
Math::real | MajorRadius () const throw () |
Math::real | Flattening () const throw () |
Math::real | CentralScale () const throw () |
Static Public Attributes | |
static const PolarStereographic | UPS |
Polar Stereographic Projection.
Implementation taken from the report,
This is a straightforward implementation of the equations in Snyder except that Newton's method is used to invert the projection.
Example of use:
// Example of using the GeographicLib::PolarStereographic class // $Id: 76bd97693e4f711118164cc0cde1db7f5ca70e12 $ #include <iostream> #include <exception> #include <string> #include <iomanip> #include <GeographicLib/PolarStereographic.hpp> using namespace std; using namespace GeographicLib; int main() { try { PolarStereographic proj(Constants::WGS84_a(), Constants::WGS84_f(), Constants::UPS_k0()); // Alternatively: // const PolarStereographic& proj = PolarStereographic::UPS; bool northp = true; { // Sample forward calculation double lat = 61.2, lon = -149.9; // Anchorage double x, y; proj.Forward(northp, lat, lon, x, y); cout << x << " " << y << "\n"; } { // Sample reverse calculation double x = -1637e3, y = 2824e3; double lat, lon; proj.Reverse(northp, x, y, lat, lon); cout << lat << " " << lon << "\n"; } } catch (const exception& e) { cerr << "Caught exception: " << e.what() << "\n"; return 1; } return 0; }
GeographicLib::PolarStereographic::PolarStereographic | ( | real | a, |
real | f, | ||
real | k0 | ||
) |
Constructor for a ellipsoid with
[in] | a | equatorial radius (meters). |
[in] | f | flattening of ellipsoid. Setting f = 0 gives a sphere. Negative f gives a prolate ellipsoid. If f > 1, set flattening to 1/f. |
[in] | k0 | central scale factor. |
An exception is thrown if either of the axes of the ellipsoid is not positive a or if k0 is not positive.
Definition at line 28 of file PolarStereographic.cpp.
References GeographicLib::Math::isfinite().
void GeographicLib::PolarStereographic::SetScale | ( | real | lat, |
real | k = real(1) |
||
) |
Set the scale for the projection.
[in] | lat | (degrees) assuming northp = true. |
[in] | k | scale at latitude lat (default 1). |
This allows a "latitude of true scale" to be specified. An exception is thrown if k is not positive or if lat is not in the range (-90, 90].
Definition at line 126 of file PolarStereographic.cpp.
References GeographicLib::Math::isfinite(), and Forward().
void GeographicLib::PolarStereographic::Forward | ( | bool | northp, |
real | lat, | ||
real | lon, | ||
real & | x, | ||
real & | y, | ||
real & | gamma, | ||
real & | k | ||
) | const throw () |
Forward projection, from geographic to polar stereographic.
[in] | northp | the pole which is the center of projection (true means north, false means south). |
[in] | lat | latitude of point (degrees). |
[in] | lon | longitude of point (degrees). |
[out] | x | easting of point (meters). |
[out] | y | northing of point (meters). |
[out] | gamma | meridian convergence at point (degrees). |
[out] | k | scale of projection at point. |
No false easting or northing is added. lat should be in the range (-90, 90] for northp = true and in the range [-90, 90) for northp = false; lon should be in the range [-180, 360].
Definition at line 72 of file PolarStereographic.cpp.
References GeographicLib::Math::hypot(), and GeographicLib::Math::sq().
Referenced by SetScale(), and GeographicLib::UTMUPS::Forward().
void GeographicLib::PolarStereographic::Reverse | ( | bool | northp, |
real | x, | ||
real | y, | ||
real & | lat, | ||
real & | lon, | ||
real & | gamma, | ||
real & | k | ||
) | const throw () |
Reverse projection, from polar stereographic to geographic.
[in] | northp | the pole which is the center of projection (true means north, false means south). |
[in] | x | easting of point (meters). |
[in] | y | northing of point (meters). |
[out] | lat | latitude of point (degrees). |
[out] | lon | longitude of point (degrees). |
[out] | gamma | meridian convergence at point (degrees). |
[out] | k | scale of projection at point. |
No false easting or northing is added. The value of lon returned is in the range [-180, 180).
Definition at line 95 of file PolarStereographic.cpp.
References GeographicLib::Math::hypot(), and GeographicLib::Math::sq().
Referenced by GeographicLib::UTMUPS::Reverse().
void GeographicLib::PolarStereographic::Forward | ( | bool | northp, |
real | lat, | ||
real | lon, | ||
real & | x, | ||
real & | y | ||
) | const throw () [inline] |
PolarStereographic::Forward without returning the convergence and scale.
Definition at line 121 of file PolarStereographic.hpp.
void GeographicLib::PolarStereographic::Reverse | ( | bool | northp, |
real | x, | ||
real | y, | ||
real & | lat, | ||
real & | lon | ||
) | const throw () [inline] |
PolarStereographic::Reverse without returning the convergence and scale.
Definition at line 130 of file PolarStereographic.hpp.
Math::real GeographicLib::PolarStereographic::MajorRadius | ( | ) | const throw () [inline] |
Definition at line 143 of file PolarStereographic.hpp.
Math::real GeographicLib::PolarStereographic::Flattening | ( | ) | const throw () [inline] |
Definition at line 149 of file PolarStereographic.hpp.
Math::real GeographicLib::PolarStereographic::CentralScale | ( | ) | const throw () [inline] |
The central scale for the projection. This is the value of k0 used in the constructor and is the scale at the pole unless overridden by PolarStereographic::SetScale.
Definition at line 164 of file PolarStereographic.hpp.
const PolarStereographic GeographicLib::PolarStereographic::UPS [static] |
A global instantiation of PolarStereographic with the WGS84 ellipsoid and the UPS scale factor. However, unlike UPS, no false easting or northing is added.
Definition at line 172 of file PolarStereographic.hpp.