Réduire le poids d'un GeoJSON

Présentation de plusieurs techniques pour diminuer la taille d'un GeoJSON

Le blog Makina-corpus

Présentation de plusieurs techniques pour diminuer la taille d'un GeoJSON

Le format GeoJSON est largement utilisé en webmapping. La conversion directe de données géographiques vers le GeoJSON peut produire des fichiers de taille trop importante, qui seront longs à charger et à exploiter. Plusieurs techniques permettent de réduire le poids de ces fichiers.

Ce billet de blog prendra l'exemple des régions dans OpenStreetMap, pouvant être téléchargée dans les exports d'OpenStreetMap France.

Fichier GeoJSON initial

Le fichier téléchargé est au format shapefile. La conversion de ces données au format GeoJSON produit un fichier de 44,7 Mo : c'est beaucoup trop important pour le web.

Les opérations d'allègement dépendront de l'usage souhaité des données. Le cas fictif traité ici est de présenter une vision globale de la France et d'avoir comme attribut le code de la région (pour une jointure éventuelle).

Simplification géométrique

La première étape est de simplifier la géométrie des régions, dont la résolution est beaucoup trop importante pour ce que l'on souhaite faire. Un bon outil pour cela est mapshaper : l'interface web est très réactive et la simplification est topologique, c'est à dire qu'elle ne crée pas de vides entre deux polygones par exemple.

Dans notre exemple, une simplification à 0,5% (c'est à dire une division par 200 du nombre de points) permet d'obtenir un fichier de 214 ko : c'est déjà bien mieux ! L'image suivante présente les contours des régions avant et après simplification : le résultat obtenu est suffisant pour l'échelle à laquelle la carte sera affichée.

Suppression des décimales inutiles

En observant le GeoJSON obtenu, on remarque que la précision des coordonnées est beaucoup trop importante : une latitude est par exemple notée 44.304137114679435, soit 15 décimales. Une règle de conversion approximative est de considérer qu'un degré équivaut à 100km : 15 décimales correspond donc à une précision de 10-10 m, soit le rayon d'un atome.

Deux décimales sont satisfaisantes dans notre cas, puisque la précision sera d'environ 1 km. On peut utiliser ogr2ogr pour cela :

ogr2ogr -f "GeoJSON" -lco COORDINATE_PRECISION=2 initial.json simplifié.shp

Le fichier obtenu ne pèse plus que 98 ko.

Conserver uniquement les attributs utiles

Supprimer les colonnes inutiles permet d'alléger encore un peu le fichier : seule une colonne NOM est supprimé dans notre cas et le nouveau fichier pèse 97 ko. Le gain est faible ici mais est souvent bien plus important, sur des tables à plusieurs dizaines de colonnes.

Aller plus loin

La taille du nouveau fichier est 460 fois plus faible qu'initialement, et 97 ko ne posent pas de problème à être transférés. Les données sont suffisantes et ces étapes de simplification sont effectuées rapidement.

D'autres possibilités permettraient de réduire encore la taille, par exemple :

  • la minification du JSON pour supprimer les espaces et les retours à la ligne
  • l'utilisation du TopoJSON ou d'un format binaire
  • la compression gzip sur le serveur

Actualités en lien

Image
#30DayMapChallenge 2021
13/01/2022

Retour sur le #30DayMapChallenge 2021

Si vous êtes friands de cartes et utilisateur de Twitter, vous n'avez pas manqué en novembre 2021 de voir passer ce tag sur le réseau social #30DayMapChallenge et l'émulation que cela a suscité dans la communauté des cartographes 🗺️ !

 

Voir l'article
Image
Déformation de la carte selon modèle de terrain et ombrage. Vue avec Mabox GL JS 2, non libre. MapLibre GL supportera bientôt cette même fonctionnalité.
06/01/2022

Optimisation de tuiles de MNT RGB pour ombrage dynamique avec Mapbox GL / MapLibre GL

L’ombrage dynamique et l'élévation du terrain utilisent des tuiles raster dans un encodage spécifique. Ces tuiles ont le défaut d’être assez lourdes. Ici nous étudions une solution qui permet de réduire de 60 % ce volume.

Voir l'article
Image
TerraObs_demo
30/11/2021

Avec TerraObs redynamisez l'activité commerciale de votre centre-ville !

Découvrez TerraObs, une application de visualisation de l’immobilier commercial de votre centre-ville en temps réel.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus