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)