Travaux pratiques - Cartographie

Références externes utiles :

Le TP s’inspire du chapitre 3 de B. Fry « Visualising data » (O’Reilly, 2008). On a extrait du site http://sql.sh un fichier CSV (Comma Separated Values) contenant une série d’informations concernant les 36700 communes de France. On a retenu pour ce TP uniquement les communes de la métropole et les informations suivantes :

0 : numero de commune 1 : departement 2 : nom simplifié 3 : population 4 : superficie en km2 5 : longitude en degrés 6 : latitude en degrés 7 : altitude min 8 : altitude max

Le fichier simplifié est à télécharger ici.

Données concernant les communes de France métropolitaine

Exercice 1 - Carte des communes

Ecrire un programme Processing en mode immédiat qui 1) charge le fichier de communes en mémoire, 2) dessine la carte des communes avec les informations latitude/longitude et 3) sauvegarde le dessin dans un fichier.

  1. Pour la 1ère étape, on utilisera par ex. la fonction LoadString() pour le chargement et split() pour le traitement de chaines : voir la documentation de Processing.

  2. On ne tient pas compte des problèmes de projection, en faisant juste une interpolation linéaire entre longitude (resp. latitude) et axe horizontal (resp. vertical) de tracé avec la fonction map(). Pour un dessin plus convenable, voir la rubrique concernant la projection de Mercator dans Wikipédia. Pour pouvoir faire l’interpolation linéaire, il faut dans un premier temps déterminer les valeurs extrèmes (min et max) en latitude et longitude et choisir un facteur d’aspect du dessin (rapport largeur/hauteur).

  3. Choisir une couleur de fond et une couleur de tracé adaptées (pas forcément noir et blanc comme dans la figure suivante).

Illustration de la carte des communes de France métropolitaine

Exercice 2 - Filtrage

Modifier le programme pour qu’il superpose au fond précédent des informations filtrées. Par exemple :

  1. les communes qui ont une population (ou une altitude, ou encore une superficie) au-dessus d’un certain seuil,

  2. les communes dont le nom se termine par ou contient un motif particulier (par exemple « *ac » pour les lieux du sud-ouest de la France et « *y » pour la Bourgogne). On utilisera la fonction match() basée sur les expressions régulières.

Là aussi, il faut trouver un codage graphique adapté : couleur de fond, couleurs de réponse au critère et de non-réponse.

Exercice 3 - Passage en mode animé

Passer le programme précédent en mode standard avec un dessin de la carte dans la boucle draw() de Processing. Utiliser la variable prédéfinie frameRate pour mesurer le nombre d’images par seconde. Que constate-t-on ? Quelle solution proposez-vous pour mettre ensuite en place un programme interactif ?

Exercice 4 - Cartographie interactive

En se basant sur la méthode définie à l’exercice 3, écrire un code gérant un filtrage interactif sur la population (par exemple).

Pour l’interaction, on se contentera de récupérer la coordonnée horizontale de la souris mouseX, interpolée pour définir le seuil de filtrage des données.

Expérimenter ensuite avec divers codages graphiques : cercles pleins de plus ou moins grande taille, transparence etc.

On peut ensuite mettre en place une IHM plus riche avec des sliders, comme vu au TP1 précédent.

Pour continuer

  1. Tester des visualisations plus riches : par exemple, la population sous forme de bubble map. Comment régler la disparité de valeurs ? Sans précaution, la « bulle » de Paris écrase tout le nord de la carte.

  2. Expérimenter sur la fonction de zoom, avec une IHM minimale. Etc.