25 # define PI_OVER_2 ( M_PI / 2.0) 28 # define TWO_PI (2.0 * M_PI) 30 #define POLAR_POW(EsSin) pow((1.0 - EsSin) / (1.0 + EsSin), es_OVER_2) 32 #define POLAR_NO_ERROR 0x0000 33 #define POLAR_LAT_ERROR 0x0001 34 #define POLAR_LON_ERROR 0x0002 35 #define POLAR_ORIGIN_LAT_ERROR 0x0004 36 #define POLAR_ORIGIN_LON_ERROR 0x0008 37 #define POLAR_EASTING_ERROR 0x0010 38 #define POLAR_NORTHING_ERROR 0x0020 39 #define POLAR_A_ERROR 0x0040 40 #define POLAR_B_ERROR 0x0080 41 #define POLAR_A_LESS_B_ERROR 0x0100 42 #define POLAR_RADIUS_ERROR 0x0200 110 double falseNorthing)
133 double easting = 0.0;
134 double northing = 0.0;
186 double Latitude_of_True_Scale,
187 double Longitude_Down_from_Pole,
188 double False_Easting,
189 double False_Northing)
209 double one_PLUS_es, one_MINUS_es;
213 const double epsilon = 1.0e-2;
240 if (Longitude_Down_from_Pole >
M_PI)
241 Longitude_Down_from_Pole -=
TWO_PI;
242 if (Latitude_of_True_Scale < 0)
267 mc = clat / sqrt(1.0 - essin * essin);
273 one_PLUS_es = 1.0 +
es;
274 one_MINUS_es = 1.0 -
es;
275 e4 = sqrt(pow(one_PLUS_es, one_PLUS_es) * pow(one_MINUS_es, one_MINUS_es));
292 double *Latitude_of_True_Scale,
293 double *Longitude_Down_from_Pole,
294 double *False_Easting,
295 double *False_Northing)
const 324 double *Northing)
const 370 if (fabs(fabs(Latitude) -
PI_OVER_2) < 1.0e-10)
391 slat = sin(Latitude);
394 t = tan(
PI_Over_4 - Latitude / 2.0) / pow_es;
420 double *Longitude)
const 442 double tempPHI = 0.0;
476 if ((dy == 0.0) && (dx == 0.0))
490 rho = sqrt(dx * dx + dy * dy);
496 while (fabs(PHI - tempPHI) > 1.0e-10)
500 essin =
es * sin_PHI;
502 PHI =
PI_OVER_2 - 2.0 * atan(t * pow_es);
void setFalseNorthing(double falseNorthing)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
void Get_Polar_Stereographic_Parameters(double *a, double *f, double *Latitude_of_True_Scale, double *Longitude_Down_from_Pole, double *False_Easting, double *False_Northing) const
Represents serializable keyword/value map.
const char * find(const char *key) const
virtual const ossimString & code() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
double Polar_False_Northing
virtual ossimDpt forward(const ossimGpt &latLon) const
All map projections will convert the world coordinate to an easting northing (Meters).
void setFalseEasting(double falseEasting)
static const char * TYPE_KW
void changeDatum(const ossimDatum *datum)
This will actually perform a shift.
#define STATIC_TYPE_NAME(T)
const ossimDatum * datum() const
datum().
double Polar_False_Easting
long Set_Polar_Stereographic_Parameters(double a, double f, double Latitude_of_True_Scale, double Longitude_Down_from_Pole, double False_Easting, double False_Northing)
ossimPolarStereoProjection(const ossimEllipsoid &ellipsoid=ossimEllipsoid(), const ossimGpt &origin=ossimGpt())
const double & getA() const
long Convert_Geodetic_To_Polar_Stereographic(double Latitude, double Longitude, double *Easting, double *Northing) const
double lonr() const
Returns the longitude in radian measure.
virtual ossimGpt inverse(const ossimDpt &eastingNorthing) const
Will take a point in meters and convert it to ground.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
double Polar_Delta_Easting
long Convert_Polar_Stereographic_To_Geodetic(double Easting, double Northing, double *Latitude, double *Longitude) const
double Southern_Hemisphere
double Polar_Delta_Northing
double latr() const
latr().
const double & getFlattening() const
void setFalseEastingNorthing(double falseEasting, double falseNorthing)
ossimEllipsoid theEllipsoid
This method verifies that the projection parameters match the current pcs code.
#define RTTI_DEF1(cls, name, b1)
ossimDpt theFalseEastingNorthing
Hold the false easting northing.
const ossimDatum * theDatum
This is only set if we want to have built in datum shifting.