Makina Blog

Le blog Makina-corpus

Réduire le poids d'un GeoJSON


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
Journées du patrimoine 2023
15/09/2023

Découvrez nos cartes dédiées aux Journées européennes du patrimoine 2023 - #1Jour1Carte

Cette année à l'occasion des Journées du patrimoine, nous vous avons concocté une collection de cartographies dédiées aux thèmes de la culture et du patrimoine. Au programme : les journées du patrimoines, les plus grands labels des villes et les jardins remarquables ! 

Voir l'article
Image
TerraVisu démo
05/07/2023

1Jour1Carte, édition Makina Corpus - Été 2023

À partir de début juillet, Makina Corpus vous invite à suivre son événement "1Jour1Carte" spécial été 2023 sur ses réseaux sociaux : Twitter, LinkedIn et Instagram.

Voir l'article
Image
Canari Météo France
05/07/2023

Météo-France et Solagro lancent un service climatique dédié au secteur agricole

Hausse des températures, sécheresses de plus en plus intenses et fréquentes, gelées printanières... Le changement climatique affecte l’agriculture quelles que soient les productions, aussi bien végétales qu’animales, et sur tout le territoire.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus