106 using namespace MSP::CCS;
 
  114 const double PI = 3.14159265358979323e0;   
 
  117 const double ONE = (1.0 * 
PI / 180);       
 
  127   es2( 0.0066943799901413800 ),
 
  128   es4( 4.4814723452405e-005 ),
 
  129   es6( 3.0000678794350e-007 ),
 
  130   Ra( 6371007.1810824 ),
 
  131   Cos_Eqcy_Std_Parallel( 1.0 ),
 
  132   Eqcy_Origin_Long( 0.0 ),
 
  133   Eqcy_Std_Parallel( 0.0 ),
 
  134   Eqcy_False_Easting( 0.0 ),
 
  135   Eqcy_False_Northing( 0.0 ),
 
  136   Eqcy_Delta_Northing( 10007555.0 ),
 
  137   Eqcy_Max_Easting(  20015110.0 ),
 
  138   Eqcy_Min_Easting(  -20015110.0 ),
 
  139   Ra_Cos_Eqcy_Std_Parallel( 6371007.1810824 )
 
  160   double inv_f = 1 / ellipsoidFlattening;
 
  162   if (ellipsoidSemiMajorAxis <= 0.0)
 
  166   if ((inv_f < 250) || (inv_f > 350))
 
  174   if ((centralMeridian < -
PI) || (centralMeridian > 
TWO_PI))
 
  187      (1.0 - es2 / 6.0 - 17.0 * es4 / 360.0 - 67.0 * es6 /3024.0);
 
  188   Eqcy_Std_Parallel = standardParallel;
 
  189   Cos_Eqcy_Std_Parallel = cos(Eqcy_Std_Parallel);
 
  190   Ra_Cos_Eqcy_Std_Parallel = Ra * Cos_Eqcy_Std_Parallel;
 
  191   if (centralMeridian > 
PI)
 
  192     centralMeridian -= 
TWO_PI;
 
  193   Eqcy_Origin_Long = centralMeridian;
 
  194   Eqcy_False_Easting = falseEasting;
 
  195   Eqcy_False_Northing = falseNorthing;
 
  196   if (Eqcy_Origin_Long > 0)
 
  200     Eqcy_Max_Easting = tempCoordinates->
easting();
 
  201     delete tempCoordinates;
 
  205     Eqcy_Min_Easting = tempCoordinates->
easting();
 
  206     delete tempCoordinates;
 
  208   else if (Eqcy_Origin_Long < 0)
 
  212     Eqcy_Max_Easting = tempCoordinates->
easting();
 
  213     delete tempCoordinates;
 
  217     Eqcy_Min_Easting = tempCoordinates->
easting();
 
  218     delete tempCoordinates;
 
  224     Eqcy_Max_Easting = tempCoordinates->
easting();
 
  225     delete tempCoordinates;
 
  227     Eqcy_Min_Easting = -Eqcy_Max_Easting;
 
  229   Eqcy_Delta_Northing = Ra * 
PI_OVER_2 + 1.0e-2;
 
  231   if(Eqcy_False_Easting)
 
  233     Eqcy_Min_Easting -= Eqcy_False_Easting;
 
  234     Eqcy_Max_Easting -= Eqcy_False_Easting;
 
  248   Cos_Eqcy_Std_Parallel = ec.Cos_Eqcy_Std_Parallel;
 
  249   Eqcy_Origin_Long = ec.Eqcy_Origin_Long;
 
  250   Eqcy_Std_Parallel = ec.Eqcy_Std_Parallel;
 
  251   Eqcy_False_Easting = ec.Eqcy_False_Easting;
 
  252   Eqcy_False_Northing = ec.Eqcy_False_Northing;
 
  253   Eqcy_Delta_Northing = ec.Eqcy_Delta_Northing;
 
  254   Eqcy_Max_Easting = ec.Eqcy_Max_Easting;
 
  255   Eqcy_Min_Easting = ec.Eqcy_Min_Easting;
 
  256   Ra_Cos_Eqcy_Std_Parallel = ec.Ra_Cos_Eqcy_Std_Parallel;
 
  275     Cos_Eqcy_Std_Parallel = ec.Cos_Eqcy_Std_Parallel;
 
  276     Eqcy_Origin_Long = ec.Eqcy_Origin_Long;
 
  277     Eqcy_Std_Parallel = ec.Eqcy_Std_Parallel;
 
  278     Eqcy_False_Easting = ec.Eqcy_False_Easting;
 
  279     Eqcy_False_Northing = ec.Eqcy_False_Northing;
 
  280     Eqcy_Delta_Northing = ec.Eqcy_Delta_Northing;
 
  281     Eqcy_Max_Easting = ec.Eqcy_Max_Easting;
 
  282     Eqcy_Min_Easting = ec.Eqcy_Min_Easting;
 
  283     Ra_Cos_Eqcy_Std_Parallel = ec.Ra_Cos_Eqcy_Std_Parallel;
 
  330   double longitude = geodeticCoordinates->
longitude();
 
  331   double latitude = geodeticCoordinates->
latitude();
 
  337   if ((longitude < -
PI) || (longitude > 
TWO_PI))
 
  342   dlam = longitude - Eqcy_Origin_Long;
 
  352   double easting = Ra_Cos_Eqcy_Std_Parallel * dlam + Eqcy_False_Easting;
 
  353   double northing = Ra * latitude + Eqcy_False_Northing;
 
  376   double longitude, latitude;
 
  378   double easting  = mapProjectionCoordinates->
easting();
 
  379   double northing = mapProjectionCoordinates->
northing();
 
  381   if ((easting < (Eqcy_False_Easting + Eqcy_Min_Easting))
 
  382       || (easting > (Eqcy_False_Easting + Eqcy_Max_Easting)))
 
  386   if ((northing < (Eqcy_False_Northing - Eqcy_Delta_Northing))
 
  387       || (northing > (Eqcy_False_Northing + Eqcy_Delta_Northing)))
 
  392   dy = northing - Eqcy_False_Northing;
 
  393   dx = easting - Eqcy_False_Easting;
 
  396   if (Ra_Cos_Eqcy_Std_Parallel == 0)
 
  399     longitude = Eqcy_Origin_Long + dx / Ra_Cos_Eqcy_Std_Parallel;
 
  413   else if (longitude < -
PI)