ETUDE DES PROJECTIONS CARTOGRAPHIQUES

INCIDENCE DU CHOIX DE L'ELLIPSOIDE SUR LA REPRESENTATION CARTOGRAPHIQUE

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);

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,...

20

------------------------------

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]);

`\n PROJECTION MERCATOR DIRECTE ELLIPSOIDALE \n`
`\n PROJECTION MERCATOR DIRECTE ELLIPSOIDALE \n` `COMPARAISON DES PRINCIPAUX ELLIPSOIDES UTILISES EN...

`PROMENADE GPS A STRASBOURG ECHELLES EN METRES\n`
`EN ECARTS AU MERIDIEN CENTRE SUR LA CARTE\n`
` \n nom             demi grand axe           demi ...
` \n nom             demi grand axe           demi ...

Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...
Clarke_1866, 6378206.400000, 6356583.800000, .82271...

[Maple Plot]

Ellipsoides version 4.0 Thierry Hatt, avril 2001