Ellipsoides version
4.0 Thierry Hatt, avril 2001 Logiciel en
Maple V4
Comparaison des projections associées
à différents ellipsoïdes, logiciel complet autonome
> restart; with(plots):
setoptions(axes=boxed, scaling=constrained, color=blue, thickness=3):
Digits:=20: with(linalg):
Pour la projection adaptation
de la note technique IGN NT/G 75 janvier 1975
site de http://www.ensg.ign.fr/SGN/Notices/
> Pi180:= evalf(Pi/180):
> liste_couleurs:=[aquamarine,
black ,blue ,navy ,coral ,cyan
,brown ,gold ,green ,gray ,grey ,khaki
,magenta ,maroon ,orange ,pink ,plum ,red
,sienna ,tan ,turquoise ,violet ,wheat
,yellow ]:
Jeu de données promenade GPS dans
Strasbourg 232 couples XY
> data:=[[48.35432,7.45919],
[48.35428,7.45914], [48.35425,7.45905], [48.35421,7.45898], [48.35417,7.45892],
[48.35414,7.45886], [48.35408,7.45878], [48.35402,7.45871], 48.35396,7.45865],
[48.3539,7.45863 ], [48.35384,7.45858], [48.35378,7.45853], [48.35372,7.45849],
[48.35365,7.45846], [48.35359,7.45845], 48.35351,7.45842], [48.35345,7.45841],
[48.3534,7.4584 ], [48.35333,7.4584 ], [48.35327,7.4584 ], [48.35322,7.4584
], [48.35316,7.4584 ], 48.35311,7.4584 ], [48.35304,7.45838], [48.35299,7.45836],
[48.35293,7.45834], [48.35286,7.4583 ], [48.35281,7.45827], [48.35275,7.45823],
[48.3527,7.4582 ], [48.35264,7.45816], [48.35257,7.45812], [48.35252,7.45803],
[48.35247,7.45794], [48.35242,7.45788], [48.35236,7.45783], 48.35231,7.45776],
[48.35227,7.4577 ], [48.3522,7.45765 ], [48.35214,7.45759], [48.35209,7.45754],
[48.35204,7.45748], [48.352,7.45744 ], 48.35195,7.45738], [48.35189,7.45734],
[48.35184,7.45731], [48.35184,7.45722], [48.35181,7.45714], [48.35176,7.45707],
[48.35118,7.456 ], 48.35112,7.45593], [48.35106,7.45586], [48.351,7.45579
], [48.35094,7.45573], [48.35088,7.45568], [48.35086,7.4556 ], [48.35085,7.45549],
[48.35081,7.45543], [48.3507,7.45546 ], [48.35064,7.45548], [48.35054,7.45553],
[48.35041,7.45541], [48.35033,7.45533], [48.35028,7.45528], 48.3503,7.45536
], [48.35045,7.4555 ], [48.35056,7.45562], [48.35064,7.45571], [48.35069,7.45579],
[48.35073,7.45586], [48.35078,7.45597], 48.35081,7.45606], [48.35075,7.45618],
[48.35075,7.45618], [48.35072,7.45622], [48.35059,7.45633], [48.3505,7.45642
], [48.35042,7.4565 ], 48.35037,7.45655], [48.35029,7.45659], [48.35023,7.45663],
[48.35018,7.45666], [48.35018,7.45675], [48.35016,7.45687], [48.35013,7.45699],
[48.35007,7.45707], [48.35004,7.45715], [48.35003,7.45723], [48.35,7.45732
], [48.34998,7.4574 ], [48.34994,7.45747], [48.34987,7.45755], 48.34981,7.45763],
[48.3498,7.45772 ], [48.34979,7.45783], [48.34976,7.45793], [48.34969,7.45793],
[48.34963,7.45795], [48.34958,7.45803], 48.34958,7.45814], [48.34957,7.45822],
[48.34954,7.45831], [48.34951,7.4584 ], [48.34949,7.45851], [48.34946,7.45861],
[48.34943,7.45872], 48.34941,7.45883], [48.34938,7.45895], [48.34937,7.45903],
[48.34934,7.45914], [48.34932,7.45925], [48.3493,7.45935 ], [48.34925,7.4594
], 48.34918,7.45937], [48.34911,7.45933], [48.34905,7.45928], [48.34799,7.45848],
[48.34795,7.45866], [48.34884,7.45983], [48.34928,7.45979], 48.34909,7.4596
], [48.34894,7.45946], [48.34882,7.45935], [48.34873,7.45926], [48.34865,7.45918],
[48.34858,7.45913], [48.34854,7.45908], 48.3485,7.45899 ], [48.34845,7.45896],
[48.34836,7.45892], [48.34829,7.45888], [48.34823,7.45886], [48.34817,7.45885],
[48.3481,7.45889 ], 48.34804,7.45888], [48.34799,7.45881], [48.34795,7.45873],
[48.34789,7.45871], [48.34783,7.45868], [48.34775,7.45865], [48.34767,7.45865],
[48.34761,7.45865], [48.34755,7.45864], [48.34746,7.45864], [48.34738,7.45863],
[48.34732,7.45862], [48.34727,7.45861], [48.34721,7.4586 ], 48.34713,7.45858],
[48.34708,7.45854], [48.34699,7.45851], [48.34694,7.45846], [48.34686,7.45844],
[48.34681,7.45839], [48.34675,7.45836], 48.34669,7.45833], [48.34675,7.45833],
[48.34681,7.45835], [48.34675,7.45834], [48.34673,7.45833], [48.34707,7.45593],
[48.3471,7.45581 ], 48.34713,7.45572], [48.34716,7.45564], [48.34722,7.45552],
[48.34726,7.45541], [48.3473,7.45533 ], [48.34736,7.45525], [48.34744,7.45519],
[48.34747,7.45511], [48.34769,7.45514], [48.34779,7.4551 ], [48.34796,7.45515],
[48.34803,7.45508], [48.34802,7.45498], [48.34812,7.45493], 48.34812,7.45483],
[48.34814,7.45474], [48.34816,7.45466], [48.34817,7.45457], [48.34817,7.45449],
[48.34818,7.45437], [48.34821,7.45427], 48.34827,7.4542 ], [48.3483,7.45412
], [48.3483,7.45403 ], [48.34835,7.45399], [48.34833,7.45388], [48.34842,7.45389],
[48.34849,7.45383], 48.34855,7.45377], [48.3486,7.45372 ], [48.34869,7.45372],
[48.34877,7.45372], [48.34883,7.45371], [48.34893,7.45368], [48.34899,7.45365],
[48.34911,7.45366], [48.34918,7.45364], [48.34924,7.45362], [48.3493,7.45361
], [48.34939,7.45357], [48.34939,7.45357], [48.34942,7.4535 ], 48.3495,7.45351
], [48.34956,7.45345], [48.34962,7.45347], [48.34966,7.45354], [48.34971,7.4536
], [48.34957,7.45345], [48.34946,7.45337], 48.34938,7.45331], [48.34932,7.45326],
[48.34926,7.45317], [48.34942,7.45322], [48.34954,7.45326], [48.34964,7.45327],
[48.34961,7.45324], 48.3497,7.45328 ], [48.34956,7.45308], [48.34956,7.45308],
[48.34945,7.45291], [48.34937,7.45273], [48.34931,7.45258], [48.34927,7.45246],
[48.34935,7.45236], [48.34944,7.45229], [48.34943,7.4522 ], [48.34968,7.45223],
[48.34986,7.45229], [48.34999,7.45232], [48.35008,7.45235], 48.35016,7.45237],
[48.35025,7.4524 ], [48.35028,7.45231], [48.35024,7.45221], [48.3502,7.45211
], [48.35018,7.45204], [48.35016,7.45194], 48.35015,7.45183], [48.3502,7.45176
], [48.35027,7.45175], [48.35029,7.45167], [48.35039,7.45163], [48.35049,7.45163],
[48.35042,7.45153], 48.35037,7.45146], [48.35032,7.45138], [48.35037,7.4513
], [48.35039,7.45121], [48.3504,7.45111 ], [48.35041,7.45103], [48.35042,7.45095],
[48.35032,7.45085], [48.35045,7.45087], [48.35043,7.45078], [48.35036,7.45072],
[48.35027,7.45071], [48.35021,7.45071], [48.35015,7.45069], 48.35011,7.45062],
[48.35006,7.45061]]:
Définition des ellipsoïdes : nom, demi
grand axe, demi petit axe
> liste_def:=
[[Clarke_1866, 6378206.400000,6356583.800000],
[Clarke_1880_IGN_NTF, 6378249.145000,6356514.869550],
[Bessel, 6377397.155000,6356078.962840 ],
[International_1967, 6378157.500000,6356772.200000 ],
[International_1909, 6378388.000000,6356911.946130 ],
[WGS_72, 6378135.000000,6356750.519915 ],
[Everest, 6377276.345200,6356075.413300 ],
[WGS_66, 6378145.000000,6356759.769356 ],
[GRS_1980_RGF93, 6378137.000000,6356752.314140 ],
[Airy, 6377563.396000,6356256.910000 ],
[Modifié_Everest, 6377304.063000,6356103.039000 ],
[Modifié_Airy, 6377340.189000,6356034.448000 ],
[WGS_84, 6378137.000000,6356752.314245 ],
[Sud_Est_Asie, 6378155.000000,6356773.320500 ],
[Australien_National, 6378160.000000,6356774.719000 ],
[Krassovsky, 6378245.000000,6356863.018800 ],
[Hough, 6378270.000000,6356794.343479 ],
[Mercury_1960, 6378166.000000,6356784.283666 ],
[Modifié_Mercury_1968, 6378150.000000,6356768.337303 ],
[Hayford_1924_ED50, 6378388.0, 6356911.9461],
[Sphere, 6370997.000000,6370997.000000 ]]:
FONCTIONS DE CALCUL
-------------------------------------
> conv_radians:=proc(data) local s,
i, x, y,n, Pi180;
Fonction de conversion en radians du jeu de données
(il faut reconstruire la liste)
> n:=nops(data); Pi180:= evalf(Pi/180);
s:=NULL;
> for i to n do x:=data[i, 2]; y:=data[i,
1]; x:=x*Pi180; y:= y*Pi180; s:=s, [x, y] od;
> [s]
> end:
------------------------
> lat_iso:=proc(e, phi)
Fonction de calcul de la latitude
isométrique sur un ellipsoïde
de première excentricité e en phi
> ln (tan (evalf(Pi/4)+phi/2)*(((1-e*sin(phi))
/
(1+e * sin(phi)))^(e/2)))
> end:
-------------------------
> mercator:=proc(lambda,
phi, e, n, Xs, Ys) local X, Y;
Fonction de calcul des coordonnées
du point en proj. directe
de Mercator à partir de lambda, phi
> X:= Xs + n * lambda;
> Y:= Ys + n * lat_iso(e,
phi);
> [X, Y];
> end:
-------------------------
> proj_merc:=proc(lambda0,
phi0, a, e, k0, X0, Y0)
local n, Xs, Ys;
Détermination des paramètres de calcul
en fonction
des paramètres de déf. usuels de Mercator directe
lambda0 = longitude origine par rapport
au méridien origine
phi0 = latitude origine
a = demi grand axe, e = excentricité 1ère
k0 = facteur d'échelle à l'origine
X0, Y0 : coordonnées du point origine en projection
n = rayon de la sphère intermédiaire
> n:= k0 * cos(phi0)*
( a / (sqrt(1-e^2*sin(phi0)^2)));
> Xs:= X0-n*lambda0;
Ys:= Y0-n* lat_iso(e, phi0);
> [n, e, Xs, Ys]
> end:
-------------------------
> merc_ellipse:=proc(cdata,
e, n, Xs, Ys) local nd, s, i, lambda, phi, xy;
Calcul de la projection pour une
ellipse donnée
data en radians
> nd:=nops(cdata): s:=NULL:
> for i to nd do
> lambda:=cdata[i, 2];
phi:= cdata[i, 1];
> xy:=mercator(lambda,
phi, e, n, Xs, Ys):
> s:=s, [xy[2], xy[1]]
> od;
> [s]
> end:
-------------------------
> choix_ellipse:=proc(numero,
liste_def) local nom, a, b, e;
Paramètres de l'ellipse
- nom, demi grand axe,
demi petit axe, excentricité
> nom:=liste_def [numero,
1]: a:=liste_def [numero, 2]: b:=liste_def [numero, 3]:
> e:=sqrt((a^2-b^2)/a^2):
> [nom, a, b, e]
> end:
------------------------
Détermination des paramètres
> det_param_merc:=proc(a,
e) local phi0, lambda0, k0, X0, Y0, inter;
> phi0:=evalf(48*Pi180):
lambda0:=evalf(7*Pi180): k0:=1 :
X0 := -3.086e+006 : Y0:= 3518300:
> inter:=proj_merc(lambda0,
phi0, a, e, k0, X0, Y0):
> end:
>
PROGRAMME PRINCIPAL APPEL DES FONCTIONS
--------------------------------------------
Calcul de la projection pour l'ellipsoïde
donné
> cdata:=conv_radians(data):
-----------------------
Choix des ellipsoïdes (ici tous)
> liste:=NULL:for i to
20 do liste:=liste,i od: liste:=[liste]:
> liste;nops(liste);
------------------------------
Calcul des plots pour la liste des
ellipsoïdes
> liste_plot:=NULL: liste_nom:=NULL:
> for i to nops(liste)
do
> numero:=liste[i];
Choix
de l'ellipsoïde
> param:= choix_ellipse
(numero, liste_def);
> nom:=param[1]: a:=param[2]:
b:=param[3]: e:=param[4]:
liste_nom:=liste_nom, nom, a, b, e, liste_couleurs[i],`\n`;
Paramètres de la projection Mercator
> inter:=det_param_merc(a,
e);
> n:=inter[1]: e:=inter[2]:
Xs:=inter[3]: Ys:=inter[4]:
Génération du plot
> liste_plot:= liste_plot,
plot(merc_ellipse(cdata, e, n, Xs, Ys), color=liste_couleurs[i])
> od:
-------------------------
Affichage des résultats
> print(`\n PROJECTION
MERCATOR DIRECTE ELLIPSOIDALE \n`);
> print(`COMPARAISON
DES PRINCIPAUX ELLIPSOIDES UTILISES EN FRANCE \n`);
> print(`PROMENADE GPS
A STRASBOURG ECHELLES EN METRES\n`);
> print(`EN ECARTS AU
MERIDIEN CENTRE SUR LA CARTE\n`);
> print(` \n nom demi
grand axe demi petit axe excentricité couleur`);
> liste_nom;
> display([liste_plot]);
|