Jean Jacques Jesua (La Poste) est une "star" des sciences de la cartographie et plus généralement de la "dataviz". Il nous fait l'amitié de nous livrer ici une méthode insolite et originale pour représenter de façon claire des informations attributaires binaires sur une base de points localisés. Voici le brillant topo qu'il propose :
Les systèmes d’information
géographique offrent à ses utilisateurs de nombreuses possibilités d’analyses
thématiques. Selon la nature de la variable que l’on souhaite visualiser et
selon la nature de l’objet cartographique à thématiser on utilise le plus
souvent un dégradé de couleurs (carte choroplèthe), des valeurs individuelles, des
symboles proportionnels, la densité de points ou encore des histogrammes/camemberts…
1/ Le problème et son principe de résolution
J’ai été confronté à un problème
de représentation qu’aucune des méthodes courantes ne représente de façon
satisfaisante i.e. lisible. Je souhaitais visualiser pour un ensemble de
bureaux de Poste (objets points), une série de caractéristiques de ces bureaux,
en l’occurrence les équipements disponibles pour le public (Automates postaux
et bancaire, présence d’un conseiller financier, …). Le fichier de départ est
donc une matrice avec en ligne les bureaux et en colonne les équipements :
L’idée est donc de cartographier simultanément
l’ensemble des équipements pour tous les bureaux de Poste. L’utilisateur pourra ainsi
localiser les bureaux qui possèdent tous les équipements ou ceux qui sont partiellement
équipés : 1 et 4, …
On pourrait imaginer faire une carte par équipement ce qui reviendrait à comparer les cartes entre-elles. Mais l’objectif est la simultanéité dans une seule carte interactive. L’interactivité permet à l’utilisateur de zoomer où il le souhaite et de choisir les équipements qu’il souhaite étudier.
On pourrait imaginer faire une carte par équipement ce qui reviendrait à comparer les cartes entre-elles. Mais l’objectif est la simultanéité dans une seule carte interactive. L’interactivité permet à l’utilisateur de zoomer où il le souhaite et de choisir les équipements qu’il souhaite étudier.
On pourrait également déterminer
toutes les combinaisons existantes et représenter le résultat en valeur
individuelles. Mais plus le nombre d’équipements est grand, plus le nombre de
combinaisons est important rendant la carte illisible (4 équipement = 16
combinaisons !).
Pour répondre à ces objectifs de simultanéité et de lisibilité, je propose de faire une carte en étoile. Chaque bureau est représenté par une étoile avec autant de branches qu’il possède d’équipement.
Voici ce que cela donne sur le 17ème arrondissement de Paris. Dans cet exemple, il existe 6 équipements. Un bureau possède les 6 équipements, deux bureaux en ont 4 et deux autres en ont 2 seulement.
Stars postales à la place de l'Etoile (Paris)
NB : Les données sont fictives aléatoires.
Cliquez pour accéder à la carte interactive des points étoilés |
2/ Détermination
des branches
Chaque branche symbolise donc un
équipement. Positionnée sur un cercle, elle est déterminée par un centre
(coordonnées du bureau), par la longueur d’un rayon et par un angle. Toutes les
branches ayant la même orientation (et la même couleur) indiqueront tous les
bureaux ayant cet équipement.
Le problème revient donc à
calculer les coordonnées des sommets de chacune des branches.
Pour rendre le problème
générique, adoptons les notations suivantes :
·
R = rayon en mètres, je propose 200 mètres pour
le cas des bureaux de Poste mais à adapter selon le nombre de points à
représenter.
·
K = nombre d’équipements maximum.
·
Ѳ = 360 / K
l’angle qui nous permet de découper le cercle en K équipements. Pour K=6,
on aura Ѳ =60° comme dans la carte en exemple.
La position des bureaux est
exprimée par une longitude (x0) et une latitude (y0) en projection WGS84 (EPSG 4326).
Nos manuels de trigonométrie indiquent
que les coordonnées d’un point sur le cercle sont données par :
x1 = x0
+ R * cos(Ѳ)
.y1 = y0 + R *
sin(Ѳ)
Il est donc facile de déterminer
les coordonnées des sommets des branches. Malheureusement (ou heureusement) la
terre n’est pas plate. L’utilisation des coordonnées polaires entraîne des
distorsions locales : le cercle est déformé. On pourrait penser convertir
les coordonnées en Lambert 93 pour calculer x1 et y1 (x1=x0+R) mais ce travail
est fastidieux et la projection Lambert ne s’applique pas dans les DOM où La
Poste possède plus de 200 bureaux. Il est possible que la projection
métrique « Projection du Monde » WGS84 EPSG 3857 permette de résoudre
le problème plus simplement, le lecteur courageux pourra essayer...
Je préfère cependant utiliser des
coordonnées sphériques. La question se résume à : comment calculer le rayon R fixe (de 200 mètres dans notre exemple) que l’on soit à Lille, Marseille, Fort de
France ou Mamoudzou (Mayotte) ?
Pour la latitude, c’est très
simple puisque les méridiens passent par les pôles. La circonférence de la
terre étant de 40000 km, 1 degré représente donc 40000/360 = 111,111 km.
R mètres vaut donc R * 0,001 /
111,111 degrés. 200 mètres = 0,0018°
Pour la longitude, 1° dépend de
la circonférence de la terre à cette latitude.
La formule pour calculer la circonférence d’une latitude L
est :
2 * pi * cos(L) * 6378 (Rayon de la
terre)
La circonférence de l’équateur est donc : 2 * pi * cos(0) *
6378 = 40074 km
La circonférence du 45° parallèle Nord est donc : 2 *
pi * cos(45) * 6378 = 28336 km
Nous pouvons ainsi déterminer la
valeur de 1°de longitude pour une latitude L
Comme 360° vaut 2 * pi * cos(L) * 6378 km, 1° vaut
donc 2*pi * cos(L) *17,71 km
Ainsi à Lille (latitude de 50,6°),
1° de longitude représente 70,6 km alors qu’à Nice (latitude de 43,7°), 1° de longitude représente 80,4 km
Nous calculerons R mètres comme R / (17710 * 2* pi * cos(L) ) degrés.
En résumé, les coordonnées des
branches sont données par les 2 formules suivantes :
x1 = x0 + (R / (17710 * 2*pi * cos(y1)))* cos(Ѳ)
y1 = y0 + (R * 0,001 / 111,111) * sin(Ѳ)
Pour le programme informatique,
il faut calculer d’abord y1 puis x1 (qui dépend de y1) et convertir les angles
en radians (Ѳ° est égal à Ѳ * pi / 180)
Voici le code SAS pour
calculer les coordonnées des sommets des branches (x1,y1). Pour cet exemple,
nous avons 6 équipements que l’on place tous les 60° (360/6).
%LET K = 6 ; ***
Nb d’équipements ;
%LET RAYON = 200
; *** Rayon en mètres ;
%let PI =
3.14159 ;
*** La boucle suivante crée les K
points sur le cercle ;
Teta = (360 / &K) * (&PI / 180);
Do
k = 1 to
&K;
y1 = y0 +
&RAYON * (0.001/111.111)
* SIN(TETA * (k-1));
x1 = x0 + &RAYON * 1 /(2*&PI.*COS(y1*&PI/180)*17710)*COS(TETA * (k-1) );
Output ;
3/ Représentation
cartographique des branches : les points étoilés
Ainsi pour chaque bureau, j’ai déterminé
les coordonnées des différents équipements. Il reste donc à tracer les lignes
partant du centre (bureau) vers les sommets (équipements).
Deux fichiers sont nécessaires pour créer les lignes : les bureaux et les équipements. L’identifiant du bureau figure dans le fichier des équipements.
Il ne reste plus qu’à faire
l’analyse thématique des lignes par valeurs individuelles en colorant chacune
des branches :
Une dernière remarque pour clôturer : il faut veiller à bien
calibrer le rayon en fonction de la densité de points et d’équipements et du
niveau de zoom de la représentation.
Aucun commentaire:
Enregistrer un commentaire