GeographicLib  1.35
Public Member Functions | Static Public Attributes | List of all members
GeographicLib::PolarStereographic Class Reference

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
 

Detailed Description

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
#include <iostream>
#include <exception>
#include <string>
#include <iomanip>
using namespace std;
using namespace GeographicLib;
int main() {
try {
// 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;
}

Definition at line 32 of file PolarStereographic.hpp.

Constructor & Destructor Documentation

GeographicLib::PolarStereographic::PolarStereographic ( real  a,
real  f,
real  k0 
)

Constructor for a ellipsoid with

Parameters
[in]aequatorial radius (meters).
[in]fflattening of ellipsoid. Setting f = 0 gives a sphere. Negative f gives a prolate ellipsoid. If f > 1, set flattening to 1/f.
[in]k0central scale factor.
Exceptions
GeographicErrif a, (1 − f ) a, or k0 is not positive.

Definition at line 22 of file PolarStereographic.cpp.

References GeographicLib::Math::isfinite().

Member Function Documentation

void GeographicLib::PolarStereographic::SetScale ( real  lat,
real  k = real(1) 
)

Set the scale for the projection.

Parameters
[in]lat(degrees) assuming northp = true.
[in]kscale at latitude lat (default 1).
Exceptions
GeographicErrk is not positive.
GeographicErrif lat is not in (−90°, 90°].

Definition at line 122 of file PolarStereographic.cpp.

References Forward(), and GeographicLib::Math::isfinite().

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.

Parameters
[in]northpthe pole which is the center of projection (true means north, false means south).
[in]latlatitude of point (degrees).
[in]lonlongitude of point (degrees).
[out]xeasting of point (meters).
[out]ynorthing of point (meters).
[out]gammameridian convergence at point (degrees).
[out]kscale 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 [−540°, 540°).

Definition at line 66 of file PolarStereographic.cpp.

References GeographicLib::Math::AngNormalize(), GeographicLib::Math::hypot(), and GeographicLib::Math::sq().

Referenced by GeographicLib::UTMUPS::Forward(), and SetScale().

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.

Parameters
[in]northpthe pole which is the center of projection (true means north, false means south).
[in]xeasting of point (meters).
[in]ynorthing of point (meters).
[out]latlatitude of point (degrees).
[out]lonlongitude of point (degrees).
[out]gammameridian convergence at point (degrees).
[out]kscale 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 89 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 118 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 127 of file PolarStereographic.hpp.

Math::real GeographicLib::PolarStereographic::MajorRadius ( ) const
throw (
)
inline
Returns
a the equatorial radius of the ellipsoid (meters). This is the value used in the constructor.

Definition at line 140 of file PolarStereographic.hpp.

Math::real GeographicLib::PolarStereographic::Flattening ( ) const
throw (
)
inline
Returns
f the flattening of the ellipsoid. This is the value used in the constructor.

Definition at line 146 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 161 of file PolarStereographic.hpp.

Member Data Documentation

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 169 of file PolarStereographic.hpp.

Referenced by GeographicLib::UTMUPS::Forward(), and GeographicLib::UTMUPS::Reverse().


The documentation for this class was generated from the following files: