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

Geotrek et OpenS­treet­Map : Mise en place d’une passe­relle pour une connais­sance du terri­toire enri­chie

08/09/2025

Dans l’uni­vers des logi­ciels open-source, les plus belles inno­va­tions naissent souvent de la rencontre entre des commu­nau­tés qui partagent les mêmes valeurs. Aujour­d’hui, nous célé­brons une avan­cée majeure pour Geotrek : la créa­tion d’une passe­relle avec OpenS­treet­Map (OSM), la plus grande base de données carto­gra­phique colla­bo­ra­tive au monde. Plus qu’une simple fonc­tion­na­lité, ce projet est le fruit d’un travail d’in­gé­nie­rie et de recherche appro­fondi.
Voir l'article
Image
Logo d'illustration pour la passerelle entre OSM et Geotrek

Instal­ler Geotrek : avec ou sans segmen­ta­tion dyna­mique ?

08/09/2025

Geotrek-admin propose deux modes de fonc­tion­ne­ment pour gérer les objets liés aux tronçons : avec ou sans segmen­ta­tion dyna­mique. Ce choix a un impact impor­tant sur la manière dont sont stockées et gérées les données, et sur les possi­bi­li­tés d’édi­tion, de cohé­rence topo­lo­gique et d’in­ter­opé­ra­bi­lité avec d’autres systèmes. Dans cet article, on vous explique ce qu’est la segmen­ta­tion dyna­mique ainsi que le réfé­ren­ce­ment linéaire, ses avan­tages, ses limites, et dans quels cas il est perti­nent (ou non) de les utili­ser.
Voir l'article
Image
Réseau de tronçons dans Geotrek

Makina Corpus spon­so­rise State of the Map 2025

05/06/2025

Du 13 au 15 juin 2025 à Tours, Makina Corpus a le plai­sir d’an­non­cer sa parti­ci­pa­tion à State of the Map 2025 et d’ap­por­ter son soutien à l’évé­ne­ment de la commu­nauté OpenS­treet­Map en le spon­so­ri­sant.
Voir l'article
Image
State of the Map Tours

Inscription à la newsletter

Nous vous avons convaincus