Python : réparer des géométries GeoJSON invalides
Python : réparer des géométries GeoJSON invalides
Objectif
À la fin, vous aurez reproduit cette étape de bout en bout sur un cas test.
Avant de commencer
- Python 3.10+ et environnement virtuel.
- Dépendances installées pour le script de l’article.
- Un dossier entrée/sortie clairement séparé.
Pas à pas
- Installer
shapelycompatible avec ton environnement. - Lire chaque géométrie du GeoJSON.
- Appliquer
make_valid(oubuffer(0)fallback). - Rejeter les géométries vides/invalides persistantes.
- Exporter un GeoJSON nettoyé.
À copier-coller
import json
from shapely.geometry import shape, mapping
from shapely.validation import make_valid
with open('input.geojson', 'r', encoding='utf-8') as f:
gj = json.load(f)
fixed = []
for ft in gj['features']:
geom = shape(ft['geometry'])
geom = make_valid(geom)
if not geom.is_valid:
geom = geom.buffer(0)
if geom.is_empty:
continue
ft['geometry'] = mapping(geom)
fixed.append(ft)
with open('fixed.geojson', 'w', encoding='utf-8') as f:
json.dump({'type': 'FeatureCollection', 'features': fixed}, f)
Vérifier que ça marche
- Le script s’exécute sans exception.
- Les fichiers de sortie sont bien créés.
- Le résultat est cohérent sur un petit lot test.
En cas de problème
- Relancer dans un environnement virtuel propre.
- Vérifier chemins d’entrée/sortie et permissions.