ign2map : du site à la carte en 7 étapes#
Date de publication initiale : 15 Février 2021
Mots-clés : bash | IGN | Leaflet | sed | awk
Intro#
A la surprise de tous, l'IGN annonçait l'ouverture de ses données fin 2020 pour une libération au 1er Janvier 2021.
Après des mois à attendre la refonte de l'espace professionnel, nous étions nombreux à penser que cette dynamique d'ouverture allait s'accompagner du lancement d'une plateforme ergonomique de téléchargement des données mais que nenni! Les liens ont continué à s'accumuler sur une page unique.
Dans ce contexte, on s’interrogeait en coulisses sur une manière de rendre cette masse d'informations plus lisible par tous .
How it started#
Le 18 Janvier dans les coulisses de GéoTribu
La solution proposée par Julien ne paraissait pas trop complexe à mettre en oeuvre mais pour corser le tout on a décidé :
- De travailler en Bash
- De se répartir les tâches de la manière suivante :
Et c'est parti pour une aventure en 7 étapes !
1. Scraping du site de l'IGN#
Le scraping est une technique qui permet de récupérer le contenu d'une page web en vue de le réutiliser (voir aussi cet article ou celui-ci).
On a donc scrapé le site de l'IGN pour en extraire tous les liens qui s'y trouvaient (ftp, https et http) et on les a ensuite stockés dans un fichier texte.
Solutions utilisées :
1 2 |
|
2. Extraction des fichiers par département, région et pour la France#
Une fois tous les liens extraits, on a :
- lu notre fichier texte pour ne conserver que les liens possédant un identifiant par exemple pour les départements : D001, D976,...
- exporté le résultat dans des fichiers csv séparés pour chacun des identifiants en prenant le soin d'ajouter une colonne avec l'identifiant.
Cette étape a été répétée pour les régions et pour la France.
1 |
|
3. Nettoyage des liens (format, doublons)#
Comme on peut le voir sur la capture précédente, il y a de nombreux doublons liés notamment à la structure de la page html puisque l'IGN affiche le lien complet sur sa page :
1 |
|
On a donc utilisé :
- sort pour trier les liens et ne conserver qu'un seul lien unique.
- grep pour ne garder que les liens ayant une extension .7z (extension utilisée par l'IGN pour compresser ses fichiers).
1 |
|
En sortie, on obtient un fichier csv propre par découpage géographique.
4. Mise en forme des données avant jointure#
Les liens étant proprement organisés, nous avons ensuite généré un fichier csv par produit IGN (BDORTHO, BDFORET,...) en réalisant également une transposition par identifiant géographique afin de faciliter la jointure prévue après.
5. Création des topojson#
Mapshaper a été utilisé pour créer les fichiers topojson en s'appuyant notamment sur la donnée ADMIN EXPRESS de l'IGN. Ces fichiers topojson utilisés par la suite comme des modèles ne sont générés qu'une seule fois.
A noter la donnée ADMIN EXPRESS n'intègre pas les collectivités d'outre mer (COM). On a donc du compléter ce manque en utilisant le fichier suivant disponible sur Data.gouv.fr : Découpage administratif des COM St Martin et St Barthélemy "Format Admin-Express" mis à disposition par R. Maziere.
6. Jointure avec les topojson#
L'étape de la jointure en bash a sans aucun doute été l'étape la plus prise de tête. Pour faire simple on a utilisé sed pour remplacer l'identifiant géographique de notre topojson source par notre identifiant géographique et les liens associés. En sortie, les nouveaux fichiers topojson ont ensuite été placés dans un répertoire utilisé par la page html de la carte.
7. Création automatique du fichier index.html#
Pour cette dernière étape, l'idée était de pouvoir générer automatiquement la page html pour être plus réactif en cas d'évolution des données libérées par l'IGN.
Après avoir écrit une première mouture de la page html, on a ensuite converti cette page en un modèle en introduisant des variables liées notamment à l'appel des fichiers topojson et à la configuration des popups. Une fois le template prêt, on s'est attaché à remplacer ces variables en utilisant une nouvelle fois sed pour générer de manière dynamique la page index.html.
Lire des topojson avec Leaflet
Dans Leaflet, il est possible de lire des fichiers topojson en utilisant l'extension leaflet-omnivore.
La publication#
On doit avouer :
- que le couvre-feu, nous a un peu aidé car il ne nous aura fallu que 15 jours pour arriver au résultat publié et quelques jours de plus pour mettre tout ça au propre.
- qu'on ne s'attendait pas à un tel retentissement (Quelques chiffres : plus de 40000 vues sur twitter, plus de 700 clics sur le lien du tweet, 250 likes et plus de 110 retweets).
Bravo et merci pour cette initiative, on valide 🙏 https://t.co/sKvEY8SPix
— IGN France (@IGNFrance) 1 février 2021
La suite#
Un autre article sera publié dans les prochains jours pour vous expliquer la partie sur l'automatisation et le déploiement depuis Github. Restez connectés à GeoTribu (LinkedIn - RSS - Twitter) .
Suite : automatiser l'exécution et le déploiement
Auteurs#
Florian Boret#
Géomaticien/cartographe, je suis arrivé dans le monde de la géomatique en suivant un cursus « professionnalisant » (BTS Géomètre-Topographe, Licence pro GGAT, Master SIGAT). J’ai ensuite travaillé dans un bureau d’études spécialisé dans la production de données d’occupation du sol et puis pour des raisons personnelles je me suis expatrié quelques années au Sénégal où je me suis lancé comme géomaticien indépendant (DATA\WAX).
Depuis mon retour en France, je suis en charge du SIG de la communauté de communes du Pays de Lunel.
En dehors de ces expériences, j'ai aussi régulièrement initié de petits projets personnels iGeo-Topo, GIS-Blog.fr, osm2igeo, osm2igeotopo. Aujourd'hui, c’est avec plaisir que j’interviens également comme contributeur de GeoTribu.
Julien Moura#
Géographe "sigiste" de formation, j'ai d'abord travaillé sur différentes thématiques et types de structures : la gestion des déchets en milieu urbain à Madagascar, le foncier d'intérêt général auprès de l'EPF de La Réunion, l'organisation et la résilience urbaine face aux risques naturels à Lima pour l'IRD.
C'est en m'intéressant à la gouvernance et à l'ouverture des données géographiques que je travaille à Isogeo quelques années. L'occasion d'asseoir mes compétences en développement et gestion de produit informatique. En 2020, je deviens indépendant (In Geo Veritas) puis rejoins les rangs d'Oslandia.
Féru des dynamiques de contributions, je participe activement à Geotribu depuis fin 2011 et, comme ça me manquait trop, j'ai décidé de lancer sa renaissance en 2020.
Commentaires
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.Propulsé par Isso.