Cartographier des résultats de votations

André Ourednik, Sunday, April 29, 2018

Récupérer les fonds de carte

Récupérez les limites communales généralisées sur le site de l’Office fédéral des statistiques en choisissant l’année correspondant à vos données. Pour cet exemple: 2016, respectivement du 30.01.2017 ou du 30.06.2015. Récupérez également les métainformations sur les géodonnées qui vous permettront de comprendre la signification des noms de fichiers et des variables (noms des colonnes des tables de données) que vous venez de télécharger.

Créez un nouveau projet qGIS comme dans un exercice précédent. Décompressez l’archive zip et ajoutez le fond de cartes correspondant aux “Communes, lacs, territoires spéciaux” à qGIS en vous référant aux métainformations. Indice: le fichier des métainformations fourni par l’OFS est strictement valable pour les données 2017 seulement, il se peut que certains …17…  dans la documentation veulent en fait dire …16… dans votre cas; même un office fédéral peut fournir des métadonnées plus ou moins complètes et cohérentes…

Préparer les fonds de carte pour une cartographie en cercles proportionnels

Comme nous l’avons vu en cours, une carte choroplèthe (plages de couleurs) n’est pas adaptée à la cartographie des votations. Il est donc nécessaire d’attribuer vos données non pas à des polygones mais à des points. Comment faire cela dans le logiciel ArcMap est expliqué ici (en anglais). Comment faire cela avec D3.js est expliqué ici (en anglais). Dans cet exercice, nous allons travailler avec qGIS.

Vous pourriez créer les centroïdes des communes à l’aide du module realcentroids ou, si vous utilisez QGIS 3.0, avec la fonction intégrée Vector:Geometry:Point on Surface.  Mais il est plus pertinent de placer les cercles proportionnels d’une donnée liée à la politique sur les centres des chefs-lieux politiques des communes; pour peu que leurs coordonnées soient disponibles. Dans les données que vous avez téléchargé au début de l’exercice, elles le sont.

Importer un fichier de coordonnées en format CSV

Les coordonnées des chefs-lieux se cachent dans le fichier txt/g1g16.csv, sous le nom de variables X_CNTR et Y_CNTR. Importez-le fichier CSV dans qGIS. N.B. la projection implicite qui donne sens à ces coordonnées est CH1903/LV03 (EPSG:21781); veillez à bien la spécifier pendant l’importation.

Import Centroids CSV qGIS

À ce stade vous devriez voir une carte similaire à celle-ci:

Associer (joindre) les données tabulaires au fond de carte

Il nous faut à présent, joindre les données aux points de votre carte. Le tableau suivant est une version user-friendly du tableau présenté sur le site du canton de Neuchâtel et récupérable sur l’interface Géoclip du canton.  Il présente les résultats de l’initiative législative populaire cantonale ’’Pour deux hôpitaux sûrs, autonomes et complémentaires’’ ? 12.2.2017 et sa contre-initiative. Copiez ce tableau dans LibreOffice Calc ou Excel et sauvegardez-le sous le nom de fichier csv de votre choix, par exemple votations.csv.

Code Communes2016 init_particip init_non init_oui conprj_particip conprj_non conprj_oui
6402 Bevaix 50.5 891 546 50.5 473 939
6404 Boudry 39.2 1000 597 39.2 521 1035
6407 Corcelles-Cormondrèche 53.8 1321 574 53.8 503 1387
6408 Cortaillod 44.7 1010 572 44.7 521 1044
6409 Fresens 59.6 62 45 59.6 47 55
6410 Gorgier 53.3 445 343 53.3 292 486
6411 Montalchez 61.6 66 36 61.6 34 63
6412 Peseux 40.2 952 716 40.2 602 1031
6413 Rochefort 55.1 333 192 55.1 192 337
6414 St-Aubin 44.8 468 329 44.8 272 517
6415 Vaumarcus 47 53 35 47 33 54
6416 Milvignes 49.8 2217 1070 49.8 950 2296
6421 La Chaux-de-Fonds 48.8 2045 11842 48.8 10520 2765
6422 Les Planchettes 54.2 10 85 54.2 74 15
6423 La Sagne 58.3 84 423 58.3 378 107
6431 Les Brenets 58.2 78 442 58.2 395 94
6432 La Brévine 59 96 210 59 174 116
6433 Brot-Plamboz 59.5 39 79 59.5 74 43
6434 Le Cerneux-Péquignot 61.3 55 112 61.3 92 66
6435 La Chaux-du-Milieu 62.9 78 154 62.9 136 87
6436 Le Locle 48.8 586 3277 48.8 2844 788
6437 Les Ponts-de-Martel 59 186 426 59 355 225
6451 Cornaux 47.2 319 234 47.2 218 326
6452 Cressier 43.3 366 231 43.3 205 388
6453 Enges 55.6 74 42 55.6 42 75
6454 Hauterive 47.6 617 310 47.6 285 632
6455 Le Landeron 43.3 857 560 43.3 516 912
6456 Lignières 49.3 198 135 49.3 131 199
6458 Neuchâtel 42 6143 3741 42 3119 6643
6459 St-Blaise 51.4 856 394 51.4 325 906
6461 La Tène 45.3 993 636 45.3 532 1056
6485 Valangin 46.7 97 61 46.7 51 108
6487 Val-de-Ruz 48.2 3391 2511 48.2 2411 3380
6504 La Côte-aux-Fées 56.8 89 107 56.8 100 103
6511 Les Verrières 43.2 130 113 43.2 94 143
6512 Val-de-Travers 39.8 1873 1467 39.8 1289 1997

 

Glissez-déposez le fichier créé dans la liste des couches spatiales de qGIS. Dans les propriétés (accessibles depuis le menu contextuel) de la couche points des centres de chefs-lieux, choisissez Joins (Jointure) et joignez les données en vous basant sur l’équivalence des valeurs “Code” et “GMDNR” (Gemeindenummer), comme l’illustre l’image suivante:

Les données de votre fichier CSV sont désormais disponibles dans le tableau de données de votre couche de points:

Le calculateur de champ

Pour corriger les données importées avec le mauvais format

Il arrive fréquemment que qGIS ait de la peine à reconnaître une colonne de chiffres comme colonne de chiffres, notamment à cause de la différence de signification du point (.) et de la virgule (,) comme délimiteur de décimales en fonction du langage du logiciel.  QGIS a tendance à tout comprendre comme des colonnes de caractères (str). Dans ce cas, on peut soit essayer de corriger le fichier CSV ou, plus simplement, convertir les str en chiffres, en créant une nouvelle variable à l’aide du calculateur de champ . Créez une variable de type nombre décimal nommée “init_particip” qui reprendra la valeur numérique de la variable de type caractères (str) votation_init_particip, comme ceci:

Faites la même chose pour le contreprojet (conprj_particip).

Pour calculer de nouvelles données

Le résultat d’un vote n’est pas déterminé par le nombre de “oui” mais par leur proportion. Dans le calculateur de champs, calculez une nouvelle variable de type nombre décimal, nommée init_pctoui, et donnant le % de “oui” pour l’initiative avec la formule suivante:

toreal("votations_init_oui") / (toreal("votations_init_oui") + toreal("votations_init_non") )

Notez l’usage de la fonction toreal(). Elle permet de s’assurer que les colonnes votations_init_oui  et votations_init_non soient traitées comme des nombres décimaux, faute de quoi la division donnera des résultats étranges.

Calculez aussi une variable donnant le nombre total de votants, init_votants

toint("votatios_init_non") + toint("votatios_init_oui")

Notez l’usage de la fonction toint() similaire à toreal(). Elle permet de s’assurer que les colonnes votations_init_oui  et votations_init_non soient bien traitées comme des nombres entiers. toreal() aurait aussi pu être utilisée ici. Sans une telle fonction de conversion, l’expression “1302” + “120” risque d’être traitée comme une concaténation de chaînes de caractères, ce qui donnerait “1302120” au lieu de 1422.

Cartographier le résultat

Bertin 1967 Variables Visuelles

Bertin 1967 : Variables visuelles

Il ne reste plus qu’à mapper les variables quantitatives obtenues sur des variables visuelles.

D’abord la couleur, en veillant à choisir un nombre de couleurs pair et en plaçant le seuil central sur 0.5 (50%) – nous cartographions les résultats d’un vote:

Et la taille des cercles. Celle-ci est essentielle pour interpréter un vote, car on veut savoir non seulement le résultat par zone géographique mais, dans une perspective démocratique, aussi le nombre de votants ayant pris une décision.

Sur la couche de fond, n’affichez enfin que les communes du canton de Neuchâtel (canton nr. 24):

Vous devriez obtenir l’image suivante

Ajouter des éléments d’interprétation

La carte obtenue permet d’observer une différence nette du résultat entre le haut et le bas du canton. Ajoutons maintenant d’autres éléments d’interprétation, par exemple la localisation des hôpitaux actuels. Voici une liste des hôpitaux, en coordonnées latitude, longitude. La même méthode d’importation s’applique que pour l’importation des chefs-lieux. Attention, cependant : les coordonnées ne font plus référence au système de projection suisse CH1903LV05 mais au WGS84;  veillez à bien la spécifier pendant l’importation.

Nom type latlon lat lon
La Chaux-de-Fonds HNE 47°06’49.5″N 6°49’54.6″E 47.113611 6.831872
Neuchâtel HNE 46°59’47.3″N 6°56’34.2″E 46.996459 6.942831
Val-de-Travers HNE 46°55’31.6″N 6°37’47.7″E 46.925454 6.629920
Val-de-Ruz HNE 47°01’56.7″N 6°54’22.1″E 47.032402 6.906130
Le Locle HNE 47°03’25.8″N 6°44’33.7″E 47.057162 6.742701
La Chrysalide (cdf) HNE 47°05’56.7″N 6°49’12.4″E 47.099084 6.820099
Policlinique pédiatrique des Montagnes (cdf) HNE 47°06’02.5″N 6°49’30.9″E 47.100700 6.825245
GSMN La Providence privé 46°59’43.4″N 6°56’20.6″E 46.995375 6.939042
GSMN Montbrillant privé 47°06’19.6″N 6°49’09.3″E 47.105448 6.819247
La Tour (cdf) privé 47°05’58.8″N 6°49’35.4″E 47.099655 6.826497
Tilia (ne) privé 46°59’31.3″N 6°54’44.9″E 46.992034 6.912479

Après l’importation, ajoutez une légende aux hôpitaux, pour afficher leurs noms.

Faire apparaître les hôpitaux HNE en souligné, et les hôpitaux privés sans soulignement.

Vous obtenez la carte suivante, qu’il faudrait ajouter au Print Composer, exporter en SVG ou PDF et finaliser avec Inkscape ou Illustrator.

Défis supplémentaires

Quelles autres éléments graphiques et données faudrait-il ajouter à cette carte pour mieux la comprendre?

Essayez de les trouver et de les ajouter, par exemple en allant les chercher sur le site de l’OFS, du canton de Neuchâtel ou en les important des données OpenStreetMap.

  •  
  •  
  •  
  •  
  •  
  •  
Cite as: André Ourednik (2018) « Cartographier des résultats de votations » in Maps and Spaces from https://ourednik.info/maps/2018/04/29/cartographier-des-resultats-de-votations/ [Last-seen October 21st 2018].
Category: Courses, Tools