26 # define PI_OVER_2 ( M_PI / 2.0) 29 # define TWO_PI (2.0 * M_PI) 31 #define NUM(Theta, SinTheta, CosTheta) (Theta + SinTheta * CosTheta + 2.0 * SinTheta) 34 #define ECK4_NO_ERROR 0x0000 35 #define ECK4_LAT_ERROR 0x0001 36 #define ECK4_LON_ERROR 0x0002 37 #define ECK4_EASTING_ERROR 0x0004 38 #define ECK4_NORTHING_ERROR 0x0008 39 #define ECK4_CENT_MER_ERROR 0x0020 40 #define ECK4_A_ERROR 0x0040 41 #define ECK4_B_ERROR 0x0080 42 #define ECK4_A_LESS_B_ERROR 0x0100 106 double easting = 0.0;
107 double northing = 0.0;
139 double falseNorthing)
187 double Central_Meridian,
188 double False_Easting,
189 double False_Northing)
232 Ra =
Eck4_a * (1.0 -
es2 / 6.0 - 17.0 *
es4 / 360.0 - 67.0 *
es6 / 3024.0);
233 Ra0 = 0.4222382 * Ra;
234 Ra1 = 1.3265004 * Ra;
263 double *Central_Meridian,
264 double *False_Easting,
265 double *False_Northing)
const 293 double *Northing)
const 310 double slat = sin(Latitude);
311 double sin_theta, cos_theta;
314 double theta = Latitude / 2.0;
315 double delta_theta = 1.0;
316 double dt_tolerance = 4.85e-10;
341 while (fabs(delta_theta) > dt_tolerance)
343 sin_theta = sin(theta);
344 cos_theta = cos(theta);
345 num =
NUM(theta, sin_theta, cos_theta);
347 (2.0 * cos_theta * (1.0 + cos_theta));
348 theta += delta_theta;
362 double *Longitude)
const 379 double sin_theta, cos_theta;
408 sin_theta = sin(theta);
409 cos_theta = cos(theta);
410 num =
NUM(theta, sin_theta, cos_theta);
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 setFalseNorthing(double falseNorthing)
void setFalseEasting(double falseEasting)
long Set_Eckert4_Parameters(double a, double f, double Central_Meridian, double False_Easting, double False_Northing)
Represents serializable keyword/value map.
const char * find(const char *key) const
virtual const ossimString & code() const
virtual ossimDpt forward(const ossimGpt &worldPoint) const
All map projections will convert the world coordinate to an easting northing (Meters).
void Get_Eckert4_Parameters(double *a, double *f, double *Central_Meridian, double *False_Easting, double *False_Northing) const
double Eck4_Delta_Northing
#define NUM(Theta, SinTheta, CosTheta)
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().
void setFalseEastingNorthing(double falseEasting, double falseNorthing)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
const double & getA() const
double lonr() const
Returns the longitude in radian measure.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
const double two_PLUS_PI_OVER_2
ossimEckert4Projection(const ossimEllipsoid &ellipsoid=ossimEllipsoid(), const ossimGpt &origin=ossimGpt())
virtual ossimGpt inverse(const ossimDpt &projectedPoint) const
Will take a point in meters and convert it to ground.
double Eck4_False_Northing
double latr() const
latr().
const double & getFlattening() const
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.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
long Convert_Eckert4_To_Geodetic(double Easting, double Northing, double *Latitude, double *Longitude) const
double Eck4_False_Easting
long Convert_Geodetic_To_Eckert4(double Latitude, double Longitude, double *Easting, double *Northing) const
const ossimDatum * theDatum
This is only set if we want to have built in datum shifting.