PROJET AUTOBLOG


blog'o'm0le

source: blog'o'm0le

⇐ retour index

Nono's Vrac 103 - plus de 40ans de mob

lundi 10 février 2014 à 09:41

Petite explication du jour : 103 désigne pour beaucoup (du moins, en France), LA mobylette (contraction de mobile et bicyclette) par excellence. La Peugeot 103 a été commercialisée en 1971 et se vend toujours actuellement !

Glassy-Paintings5-640x640

liste de lien du 01/01/2014 au 31/01/2014 :

Photo

---------

Les Nono's Vrac sont généré depuis mon petit hook de l'application shaarli, que j'utilise ici : shaarli.m0le.net

Nono's Songs : Metronomy - The Look

lundi 10 février 2014 à 08:00

Les Nono's Songs n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.

Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.

Voici le clip officiel de Metronomy qui nous propose The Look


Autopsie d'une dataviz [5.1] : gagner du temps sur QGis

samedi 8 février 2014 à 12:22

Première partie d'une trilogie consacrée à un gros travail de cartographie réalisé pour Rue89Strasbourg. Au programme pour commencer : comment gagner un maximum de temps sur QGis.

Je me suis lancé il y a quelques semaines dans un projet assez costaud : réaliser une cartographie électorale d'une énorme zone, en prenant comme références plus de 9 000 communes. Pour cela, je me suis servi de deux stocks de données gratuits :

Une fois le tri fait sur les communes que je souhaitais garder pour la future visualisation, je suis passé à l'étape QGis, du nom de cet excellent logiciel de cartographie distribué sous licence GNU.

Je m'attendais à devoir faire quelques modifications pour générer un .shp réutilisable, mais beaucoup de petites choses se sont accumulées et m'ont fait perdre un maximum de temps. J'en répertorie quelques-unes, en espérant que cela puisse resservir à quelqu'un.

Le pénible chemin des vers des syntaxes identiques

Ça a été le principal pépin au début : arriver à rassembler deux fichiers parlant de la même choses, mais pas forcément de la même façon...

Utiliser des fichiers en UTF-8

La première joyeuseté fut de voir des noms de communes avec accents ressembler à du yaourt à cause d'un mauvais codage. Pour se simplifier la vie, commencez par réenregistrer les fichiers non modifiés en UTF-8, ce sera déjà ça de pris.

Harmoniser les noms entre les fichiers

Avant d'espérer faire une carte interactive que chaque tracé communal d'OSM soit rattaché aux données de data.gouv. Sauf que les noms répertoriés chez OSM ne sont pas forcément écrits de la même façon que les noms du fichier fourni par l'administration.

Plusieurs raison à cela :

Ces erreurs se détectent facilement lors de la jointure avec une base de données en .csv (je reviendrai sur la manip' plus loin) car les valeurs qui devraient s'afficher à côté des communes sont notés "NULL" dans la table d'attributs.

C'est donc que la correspondance ne s'est pas faite, et que les noms entre les fichiers sont différents.

Je n'ai pas d'autre méthode que de tout corriger, patiemment à la main, sur le fichier où se trouve l'erreur. Ce qui est évidemment fastidieux...

Chasser les doublons

Même à la fin, il restait forcément des doublons. Or, pour l'avoir constaté, QGis ne s'embête pas : il choisit au hasard l'un des éventails de valeurs d'une commune, et le duplique sur le doublon. On perd donc des informations, ce qui n'est évidemment pas l'objectif.

Du coup, en cas de doublons, il faut veiller à bien les différencier. Personnellement, j'ai ajouté dans mon fichier OSM et mon fichier administratif, le numéro de département entre parenthèses après la commune qui comptait le moins d'inscrits.

Quelques manip' bien utiles sur QGis

Nous avons maintenant deux fichiers qui parlent de la même chose de la même façon. C'est plutôt bien, mais il y a encore quelques trucs à peaufiner. Voici quelques astuces sur le logiciel QGis pour gagner encore un peu plus de temps.

Fusionner plusieurs shapefiles en un

Première étape : on a les tracés communaux de chaque département dans un .shp propre, et on aimerait tous les rassembler en un.

Il suffit d'ouvrir tous les .shp dans QGis, de les sélectionner dans la zone de gauche, puis d'aller dans > Vecteur > Outils de gestion de données > Fusionner les shapefiles en un seul.

tuto_fusion

Cliquez sur l'image pour l'agrandir

Une fois ceci fait, il ne reste plus qu'à choisir un dossier d'origine où sont rangés les .shp à fusionner, et un dossier de destination avec le nom du nouveau fichier.

En quelques secondes, le .shp nouveau est arrivé :-) !

Fusionner des entités en une seule

Le fichier d'OSM répertorie les limites communales de 2013. Seulement, il arrive que certaines de ces communes aient par le passé été fusionnées à d'autre, voire défusionnées.

Autrement dit, des données de 2009 peuvent avoir des communes en moins que celles de 2013 à cause de ces enjeux locaux.

Comment faire pour rassembler deux tracés voisins pour n'en faire plus qu'un seul ? Il faut d'abord sélectionner la couche .shp sur la zone de gauche, et la basculer en mode Edition (le bouton représentant un crayon).

Ensuite, il faut ouvrir la table d'attributs (> clic droit sur la couche .shp > Ouvrir la table d'attributs), sélectionner le premier tracé, puis le second en restant bien appuyé sur la touche Ctrl.

On peut vérifier que les deux entités ont bien été sélectionnées directement sur la carte. Elles doivent être colorées en jaune.

tuto_poly1

Cliquez sur l'image pour l'agrandir

On va alors dans > Editer > Fusionner les attributs des entités sélectionnées pour se retrouver sur les options suivantes.

tuto_poly3

Cliquez sur l'image pour l'agrandir

Dans Fusion, il ne reste plus qu'à mettre le nom de la nouvelle entité, d'appuyer sur OK, et le tour est joué.

tuto_poly4

Cliquez sur l'image pour l'agrandir

Joindre une couche .shp à un fichier .csv

On s'approche tout doucement de notre .shp final, il ne reste plus qu'à placer les données dans le couche .shp.

Pour cette manipulation, on va utiliser un fichier .csv (bien sauvegardé en UTF-8 :-)) qui va inclure une colonne de commune dont chaque nom correspond précisément à chaque nom d'entité du fichier .shp.

On ouvre dans QGis le .shp et on fait glisser le .csv dans la même zone. Il ne reste plus qu'à double cliquer sur notre couche .shp, à aller dans l'onglet Jointure, à cliquer sur la croix verte et ensuite à choisir la bonne colonne de référence.

Voici l'illustration correspondante :

tuto_jointure_1

Cliquez sur l'image pour l'agrandir

Il ne reste plus qu'à vérifier dans notre table d'attributs que tout s'est bien passé.

tuto_jointure_2

Cliquez sur l'image pour l'agrandir

¡ Vale ! Aucune encombre, on peut donc enregistrer cette couche .shp customisée en nouvelle couche .shp via > clic droit > Sauvegarder sous.

On choisit le format Esri Shapefile, et surtout on exporte le tout en UTF-8.

Transformer une colonne Texte en une colonne Nombre

Dernière joyeuseté, et non des moindres : après la jointure, le .shp contient des colonnes Texte là où il devrait y avoir des colonnes Nombre. On a beau être certains que les colonnes du .csv étaient bien formatées comme des nombres cela ne change rien.

Et un problème arrive vite : quand on trie les résultats, une valeur comme 9,25 se trouve supérieure à une valeur comme 63,47. Pas terrible... Heureusement, on peut facilement transformer sur QGis une colonne à partir d'une autre.

Pour cela, on bascule en mode Edition (icône de crayon) et > clic > Ouvrir la table des attributs. De là, on clique sur l'option Ouvrir la calculatrice de champ, en haut tout à droite.

tuto_conv_1

Cliquez sur l'image pour l'agrandir

De là, on peut créer une nouvelle colonne à partir d'une déjà présente.

Il suffit de choisir un format de colonne (rappel : un nombre avec décimales doit être formaté en real, pas en integer), de lui donner un nom et d'écrire une ligne de conversion, comme ci-après :

tuto_conv_2

Cliquez sur l'image pour l'agrandir

Dans l'exemple, on va créer une colonne "Inscrits" en transformant en nombre entier les valeurs de la colonne europ_20_1. Une fois créée, on peut trier les valeurs de cette nouvelle colonne pour vérifier qu'elles sont (enfin) bien rangées !

Pour ma part, j'ai dû à chaque colonne créée, refermer et réouvrir ma couche .shp pour avoir effectivement des conversions en nombre sur les transformations suivantes. Ça ne doit être qu'un bug, mais je préfère le signaler.

Les limites techniques

Il y a forcément des limites dans le cas décrit précédemment. Voici celles que j'ai relevées :

A suivre

Ouf, ce fut dur, mais on est enfin arrivé à un fichier shapefile rempli de données réutilisables. Au menu pour la suite : comment transformer ce fichier en cartes choroplèthes affichant plus de 9 000 zones...

Edit

Jérémie a posté un commentaire plein de bon sens, et qui mérite un grand merci et qu'on s'attarde sur une autre méthode pour gagner encore plus de temps :-) !

Le fichier OSM contient en effet des identifiants uniques, dits codes INSEE, pour chaque commune (les deux chiffres du département plus les trois de l'identifiant local), mais le fichier de data.gouv les a séparés en deux.

Heureusement, en deux coups de cuillère à pot, on va pouvoir reconstituer ces id.

Text, pas Number

Tout d'abord, Calc Office va noter les chiffres 1, 2, 3, etc... Ce qui ne nous intéresse pas, puisqu'il nous faut trois chiffres sur chaque commune (001 pour la première, 010 sur la dixième et effectivement 100 sur la centième).

tuto_id_1

Cliquez pour agrandir l'image

Comment faire pour formater tout ça avec trois chiffres ? En convertissant simplement les colonnes en Texte, et pas en Nombre.

Pour cela, il suffit juste de cliquer-glisser sur les deux colonnes en haut (département et code commune) pour en sélectionner tout le contenu.

De là, un simple Ctrl+1 (pavé numérique) permet d'afficher les options de formatage de cellule. On choisit "Text", tout en bas.

On peut alors réécrire 1 en le précédant de deux 0, puis cliquer-glisser depuis le bord inférieur droit de la cellule jusqu'au 9, comme ceci :

tuto_id_2

Cliquez sur l'image pour l'agrandir

Plus qu'à faire la même manip en faisant maintenant précéder 10 d'un seul zéro, et de faire la même glissade jusqu'à 99 :

tuto_id_3

Cliquez sur l'image pour l'agrandir

Tous nos codes sont maintenant formatés avec trois chiffres, on n'a plus qu'à réunir le département et le code pour obtenir un identifiant unique.

Pour cela, on va dans la colonne qui va accueillir la fusion, et on tape à l'intérieur de la première cellule la formule =CONCATENATE(A1;B1)

Le résultat se plaque sur le bord gauche de la cellule, ce qui prouve qu'on se trouve bien face à un texte. Plus qu'à cliquer-glisser depuis le bord inférieur droit pour obtenir des identifiants identiques à ceux du fichier OSM.

tuto_id_5

Cliquez sur l'image pour l'agrandir

Et si jamais on réalise dans QGis que la colonne identifiant de l'un des deux fichiers est un nombre au lieu d'un texte, l'astuce du calculateur de champs permettra de convertir tout ça rapido.

Cette astuce fait effectivement gagner beaucoup de temps, donc encore une fois un grand merci à Jérémie !

Gare à la suite logique !

Dans certains cas particuliers comme les fusions ou les "villages morts pour la France", la commune en question n'apparaît pas dans le fichier de data.gouv, et il peut donc y avoir un "trou" entre les codes.

Pour l'illustrer, prenons les communes A, B et C (respectivement les codes 1, 2 et 3) de 2013. Si en 2009, A était fusionnée à B, le code 2 n'apparaît pas dans le fichier.

Mais si vous êtes un peu distrait (ou à la bourre) et que vous effectuez l'astuce précédente du cliquer-glisser, le code qui suivra 001 sera 002, et non 003.

Bref, assurez-vous juste qu'il n'y ait aucun trou dans les codes de communes avant de vous lancer :-) !

Meilleures voeux ... 2.0

jeudi 6 février 2014 à 21:23

Il n'est jamais trop tard pour bien faire, et via ce trait d'humour que j'ai reçu par mail, j'ai trouvé que c’était très actuelle comme réaction face à tout ce merdier politico-religio-juridiquo-moisi qui est omniprésent ces dernières années. Trêve de blabla :

Chers amis,
Je vous ai envoyé mes vœux, mais après consultation d'un avocat, je me suis rendu compte de l'imprudence de ma formulation.
Vous souhaiter une bonne année, une bonne santé et la prospérité m’expose en effet au risque de poursuites...

Voici donc la version rectifiée de mes vœux, qui remplace la précédente et qui est en conformité avec le principe de précaution inscrit dans la Constitution.

Nouvelle formulation

Je vous prie d'accepter, sans aucune obligation implicite ou explicite de votre part, mes vœux à l'occasion du solstice d'hiver et du premier de l'an, en adéquation avec la tradition, la religion ou les valeurs existentielles de votre choix, dans le respect de la tradition, de la religion ou des valeurs existentielles des autres,
ou dans le respect de leur refus, en la circonstance, de traditions, religions ou valeurs existentielles, ou de leur droit de manifester leur indifférence aux fêtes populaires programmées

Ces vœux concernent plus particulièrement :

- la santé, ceci ne supposant de ma part aucune connaissance particulière de votre dossier médical, ni d'une quelconque volonté de m'immiscer dans le dialogue confidentiel établi avec votre médecin traitant ou votre assureur avec lequel vous auriez passé une convention obsèques ;

- la prospérité, étant entendu que j’ignore tout de la somme figurant sur votre déclaration de revenus, de votre taux d'imposition et du montant des taxes et cotisations auxquelles vous êtes assujetti ;

- le bonheur, sachant que l'appréciation de cette valeur est laissée à votre libre arbitre et qu'il n'est pas dans mon intention de vous recommander tel ou tel type de bonheur.

Nota Bene :

Le concept d'année nouvelle est ici basé, pour des raisons de commodité, sur le calendrier grégorien, qui est celui le plus couramment utilisé dans la vie quotidienne de la région à partir de laquelle ces vœux vous sont adressés.

Son emploi n'implique aucun désir de prosélytisme.

La légitimité des autres chronologies utilisées par d'autres cultures n'est absolument pas mise en cause.

Notamment :

- le fait de ne pas dater ces vœux du yawm as-sabt 1 Safar de l'an 1434 de l'Hégire (fuite du Prophète à Médine) ne constitue ni une manifestation d'islamophobie, ni une prise de position dans le conflit israëlo-palestinien ;

- le fait de ne pas dater ces vœux du 2 Teveth 5773, ne constitue ni un refus du droit d'Israël à vivre dans des frontières sûres et reconnues, ni le délit de contestation de crime contre l'humanité ;

- le fait de ne pas dater ces vœux du 3ème jour (du Chien de Métal) du 11ème mois (Daxue, Grande Neige) de l'année du Dragon d'Eau, 78ème cycle, n'implique aucune prise de position dans l'affaire dite "des frégates de Taïwan" ;

- le fait de ne pas dater ces vœux du Quintidi de la 3ème décade de Frimaire de l'an 221 de la République Française, une et indivisible, ne saurait être assimilé à une contestation de la forme républicaine des  institutions.

Enfin, l'emploi de la langue française ne sous-entend aucun jugement de valeur.Son choix tient au fait qu'elle est la seule couramment pratiquée par l'expéditeur.
Tout autre idiome a droit au respect tout comme ses locuteurs.

Clause de non responsabilité légale :

En acceptant ces vœux, vous renoncez à toute contestation postérieure.

Ces vœux ne sont pas susceptibles de rectification ou de retrait.

Ils sont librement transférables à quiconque, sans indemnités ni royalties.

Leur reproduction est autorisée.

Ils n'ont fait l'objet d'aucun dépôt légal. Ils sont valables pour une durée d'une année, à la condition d'être employés selon les règles  habituelles et à l'usage personnel du destinataire.

A l'issue de cette période, leur renouvellement n'a aucun caractère obligatoire et reste soumis à la libre décision de l’expéditeur.

Ils sont adressés sans limitation préalable liée aux notions d'âge, de genre, d'aptitude physique ou mentale, de race, d'ethnie, d'origine, de communauté revendiquée, de pratiques sexuelles, de régime alimentaire, de convictions politiques, religieuses ou philosophiques, d'appartenance syndicale,susceptibles de caractériser les destinataires.

Leurs résultats ne sont, en aucun cas, garantis et l'absence, totale comme partielle, de réalisation n'ouvre pas droit à compensation.

En cas de difficultés liées à l'interprétation des présentes, la juridiction compétente est le Tribunal habituel du domicile de l'expéditeur.

Après ce préambule je me permets de vous (ré)adresser mes vœux.

La vie est de plus en plus simple !.

NB. Le fait d'avoir choisi la police de caractère "Helvetica" ne présuppose évidemment pas de jugement de valeur sur la Suisse.

Photo

Nono's Songs : Dave Brubeck Quartet - Take Five

lundi 27 janvier 2014 à 08:00

Les Nono's Songs n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.

Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.

Voici le non clip de Dave Brubeck Quartet qui nous propose Take Five