|
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.
1.7.5