Bienvenu.e à bord de l'ADMIN-EXPRESS 1/2

Direction GeoJson via KNIME®. Bref, un article en 2 parties pour spécialiste mais qui peut vous intéresser, sur le déroulé.
Préface
J'ai pas trouvé mieux comme titre. Comment je me suis lancé dans un truc que je pensais simple et divertissant pour finalement me rendre compte que c'est un bourbier...J'ai un autre article comme ça en attente sur les normes colorimétriques qui me font dire mais pourquoi ???. En fait, c'est simple, j'avais besoin pour un affichage web des contours des communes de France au format GeoJson. Le format est courant sur le web, son intégration naturelle avec JavaScript en fait le format de prédilection pour les applis en ligne, même si sont utilisation devient pénible au dessus d'un certains poids de fichiers (j'ai lu 500Kio, cela me parait peu, mais on stocke déjà beaucoup de chose dans 500Kio de fichier plat !!!).
Donc me voilà parti, sur le web, à la recherche d'un fichier tout fait, mon coté paresseux. Et donc je suis tombé sur le site de Grégoire David (https://france-geojson.gregoiredavid.fr/), chouette ! merci du travail ! Ah flûte, mes nouvelles communes ne sont pas présentes....Petit tour sur le Github, pas de mise à jour depuis 7 ans...Re-flûte...Bon pas grave, je vais sur le site de l'ADEME (https://data-interne.ademe.fr/applications/cartes-geojson), chouette du GeoJson...sauf pour les communes (ou alors je n'ai pas trouvé).
Rhâaa, le monde se ligue contre moi, je ne renonce pas face à ce complot qui vise à me faire râler...Las de parcourir le web (dîtes moi dans les commentaires si un site tout fait existe, histoire de bien m'enfoncer dans mon désespoir..). Je vais donc sortir QGIS 3.44 du bois, lui charger les couches de l'admin express, faire un clic-droit, exporter en GeoJson, et paf, fin de l'histoire....y'en a marre maintenant...
Bin non, quand j'ai voulu mettre mes communes en fond carto, le fichier était trop lourd, ça s'affiche, mais c'est lent, c'est leeennnt...Rogntudjuu de Rogntudjuu . Oui, j'ai réduit les décimales, oui, j'ai lancé des simplifications, mais tout faire à la main c'est chiant.
Donc voilà comment je me suis dit que j'allais me lancer dans un nouveau france-geojson à jour avec pour objectif d'avoir des fichiers à jour, les plus légers possibles. Et pour ceux qui ont lu d'autres articles, ce que je fais pour moi, je le fais pour vous, comment je vais partager tout ça...
Le choix de la source
Donc partons de l'excellent IGN et de l'ADMIN-EXPRESS puisque c'est la référence. Direction https://geoservices.ign.fr/adminexpress, sur le site on retrouve plusieurs formats et type d'admin-express, je cite l'IGN :
OK, donc partons de ces 3 sources :
- ADMIN-EXPRESS COG
- ADMIN-EXPRESS CARTO
- ADMIN-EXPRESS CARTO PE (il y a aussi un CARTO PLUS, mais je n'ai pas vu de différence avec PE ?)
Il y a une vraie différence de taille est de simplification entre ces livraisons. Mon objectif est la légèreté, je vais donc partir sur du CARTO PE...Sauf que j'aurais (et d'autres) peut être besoin un jour d'une grande échelle. Faudrait que je fasse les 2 ! Bof, facile, je vais faire les 3 !! Comme ça, y'a du choix...(1er piège!)
Bon y'a plein de couches dans les livraisons, Bon allez, je prends que les communes, c'est celle qui le plus besoin d'être alléger..., oui mais c'est bien d'avoir les départements, et le régions, sur le site de Gregoire David, il a découpé en région et département, et c'est bien pratique...Que nenni, je vais faire Région, Département, Epci (2eme piège), Commune
La simplification et légèreté
Donc, je résume, 3 sources avec 4 couches, je suis déjà à 3x4 = 12 couches à générer. 9a va, je verrais ça plus tard, genre dans le modeleur QGIS ou en Python... Pour l'instant, il faut que je trouve à simplifier et alléger les couches.
C'est parti pour les tests dans QGIS... Et là j'avoue ma déception, la simplification des contours en gardant la topologie n'est pas simple (v.generalize mais avant v.clean....). Je regarde donc du coté du github de Gregoire David, où il indique utilisé mapshaper en ligne de commande. Dont acte, alons-y pour mapshaper.
Mapshaper
https://github.com/mbloch/mapshaper est un outil en Javascript (node.js) qui permet transformer, filtrer, simplifier... des couches SIG en shp, GeoJson,TopoJson, csv (y'a un piège ici aussi). Un simple :
mapshaper counties.shp -simplify 10% -o out.shp
vous simplifie la couche et la vie. On notera que mapshaper utilises une simplification de Visvalingam-Whyatt par défaut. On peut forcer l'algorithme de Douglas-Peucker mais comme tout le monde le sait Douglas-Peucker est plus rapide mais peut créer des formes moins lisses, alors que Visvalingam-Whyatt produit généralement des simplifications plus esthétiques mais plus coûteuses en calcul. Le choix par défaut est donc très bien.
Une simplification à 10% signifie que seuls 10% des points sont conservés, donc 90% d'éliminer... On va donc tester une simplification à 25% pour que ce soit significatif (et comme france-geojson de Gregoire David) et une extrême à 5 %.
Là un tableau des comparaisons s'impose : quels poids, comment réduire ?
La comparaison se fait sur la couche des communes, que j'ai extraite et sauvegarder seule pour avoir le poids sans les autres fichiers. Le traitement QGIS visait aussi à réduire les données attributaire. Malgré cela il y a des résultats que je ne m'explique et je n'ai pas essayer 50 traitements différents pour savoir lequel était le mieux...
| Provenance | GPKG originel | QGIS GeoJson |
Mapshaper 25% |
Mapshaper 5% |
|---|---|---|---|---|
| ADMIN-EXPRESS-COG_4-0__GPKG_WGS84G_FRA_2025-01-01 | 456.3 | 613.2 | 142.3 | 35.8 |
| ADMIN-EXPRESS-COG-CARTO_4-0__GPKG_WGS84G_FRA_2025-01-01 | 164.2 | 164.5 | 41.4 | 15.3 |
| ADMIN-EXPRESS-COG-CARTO-PE_4-0__GPKG_WGS84G_FRA_2025-01-01 | 23.3 | 24 | 11.6 | 9.4 |
| ADMIN-EXPRESS-COG-CARTOPLUS_4-0__GPKG_LAMB93_FXX_2025-01-01 | 23.8 | 25.7 | flemme | flemme |
Visuellement, mapshaper fait bien le taff, rapidement, seul souci, il ne lit pas le gpkg directement, j'ai donc fait des shapes (beurk) pour faire les tests. Ceci me fait dire que je devrais générer les GeoJson des gpkg de base. Donc je partirai des GeoJson pour simplifier...
Restes que faut que je réfléchisse au nombre de couches et comment les ranger. Quand on y pense : 3 sources de données, 4 couches, et ce serait bien de générer la France entière, Les régions et les départements...Non mais attends, ça fait 3sourcesx4couchesx3traitementsx18regions = 648 fichiers ! + pour les départements 3x3x4x101 = 3636 fichiers !! + 4 pour la France entière = 4288 fichiers à générer (env. j'ai pas regardé réellement), gloups...
Pensons à une arborescence pour se fixer les idées et ranger ces fichiers, voici mon x-ieme jet, qui pour résumer à partir des 3 fichiers sources, je crée 3 répertoires de simplification dans lesquels je crée 3 répertoires France, Région, Département pour y créer des répertoires par département pour y ranger les fichiers, simple, basique.
Bon c'est un choix, j'aurais pu mette les simplifications avant les sources etc. Et vous me direz, à raison, mais pourquoi faire autant, simplifie qu'une source, directement les fichiers region, departement, commune, les gens feront le tri avec un filtre et la sauvegarde qui va bien ! Non, car je ne suis pas comme ça, je suis généreux et désintéresser, et super modeste, je veux que vous ayez le choix et pas trop de travail et puis cela me fait un super exercice pour apprendre. Je me suis un peu enflammé, y'a trop de choix, je le sais, c'est pourquoi je lancerai peut-être un sondage ou une façon de savoir ce que les personnes utilisent réellement.
Donc pensons automatisation de ces générations de fichiers.
L'automatisation
Là où je pensais utiliser le modeleur QGIS, je me dis qu'il faut voir plus grand, j'ai donc penser python, commencer à générer des listes, des écritures de répertoires, voir comment inclure Mapshaper....Et puis je me suis souvenu qu'arriver à mon âge avancé, je ne savais toujours pas me servir de KNIME dont tout le monde parle (enfin pas tout le monde, c'est vrai). Voilà donc un exercice plutôt intéressant pour se faire les dents, il paraît que c'est facile.
Knime
KNIME est donc un logiciel no-code (ou presque) d'analyse, transformation, restitution, automatisation de données, etc, en glisser-déposer, avec 300 outils, il est open-source (avec une version entreprise), et à + de 300 outils pour bricoler vos datas. Bref, cerise sur la data, il y a des outils SIG, développé par Havard, excusé du peu, donc il mérite que l'on s'y intéresse. Il fallait un successeur au GeoKettle et autre Talend (que je n'ai jamais compris), cela semble être lui. Je vous laisse lire l'article sur datacamp qui très complet.
Je n'ai pas regardé du coté de KNOWAGE LI, qui a des fonctions de visualisation data GIS plutôt intéressante, mais je ne connais le coté data préparation. mais point de vue installation, il faut un serveur, une base de données...bref, plus lourd à tester
Bref, KNIME est gratuit pour moi, facile à installer et semble bien achalandé.
Le post commence à être long, je vous invite à lire la suite sur l'article suivant. A tout de suite.
