20 recettes ogr2ogr à garder sous le coude

Convertir, reprojeter, filtrer, découper, fusionner, encoder : les commandes GDAL dont on a besoin toutes les semaines.

ogr2ogr est l'outil en ligne de commande de GDAL pour les données vecteur. Il lit et écrit plus de 80 formats, reprojette, filtre et transforme, le tout en une commande. Voici les recettes qui couvrent l'essentiel des besoins quotidiens. Il est installé avec QGIS (dans l'invite « OSGeo4W Shell » sous Windows).

Explorer avant de convertir

# 1. Lister les couches d'un fichier
ogrinfo donnees.gpkg

# 2. Résumé d'une couche : nombre d'entités, emprise, SCR, champs
ogrinfo -so donnees.gpkg communes

# 3. Afficher les 3 premières entités
ogrinfo donnees.gpkg communes -q -limit 3

Convertir des formats

# 4. Shapefile → GeoPackage
ogr2ogr -f GPKG sortie.gpkg entree.shp

# 5. GeoPackage → GeoJSON (6 décimales suffisent : ~10 cm)
ogr2ogr -f GeoJSON sortie.geojson entree.gpkg -t_srs EPSG:4326 -lco COORDINATE_PRECISION=6

# 6. Toutes les couches d'un dossier de shapefiles dans un seul GeoPackage
ogr2ogr -f GPKG tout.gpkg dossier_shp/

# 7. Ajouter une couche à un GeoPackage existant
ogr2ogr -f GPKG -update -append base.gpkg nouvelle.shp -nln routes

Systèmes de coordonnées

# 8. Reprojeter en Lambert 93
ogr2ogr -t_srs EPSG:2154 l93.gpkg wgs84.gpkg

# 9. Déclarer un SCR manquant (sans transformer)
ogr2ogr -a_srs EPSG:2154 corrige.gpkg sans_prj.shp

# 10. Déclarer la source ET reprojeter
ogr2ogr -s_srs EPSG:27572 -t_srs EPSG:2154 l93.gpkg vieux_lambert2.shp

-a_srs affecte un système, -t_srs transforme les coordonnées. Utiliser -t_srs sur une couche dont le système est faux décale toutes vos données.

Filtrer

# 11. Filtre attributaire
ogr2ogr grandes.gpkg communes.gpkg -where "population > 50000"

# 12. Filtre spatial par emprise (xmin ymin xmax ymax, dans le SCR de la couche)
ogr2ogr extrait.gpkg france.gpkg -spat 840000 6510000 860000 6530000

# 13. Découper selon un polygone
ogr2ogr decoupe.gpkg routes.gpkg -clipsrc commune.gpkg

# 14. Garder seulement certains champs
ogr2ogr leger.gpkg communes.gpkg -select "nom,code_insee,population"

Notre outil Emprise génère directement l'argument -spat.

Transformer avec SQL

# 15. Renommer et calculer des champs
ogr2ogr sortie.gpkg communes.gpkg -sql \
  "SELECT nom AS commune, population, ST_Area(geom)/1e6 AS surface_km2 FROM communes" -dialect SQLite

# 16. Fusionner (dissoudre) par département
ogr2ogr departements.gpkg communes.gpkg -dialect SQLite -sql \
  "SELECT code_dep, SUM(population) AS pop, ST_Union(geom) AS geom FROM communes GROUP BY code_dep"

# 17. Zone tampon de 50 m
ogr2ogr tampons.gpkg arrets.gpkg -dialect SQLite -sql "SELECT *, ST_Buffer(geom, 50) AS geom FROM arrets"

Géométries

# 18. Forcer un type (ex. tout en MultiPolygon pour un Shapefile homogène)
ogr2ogr -nlt MULTIPOLYGON sortie.shp entree.gpkg

# 19. Corriger les géométries invalides (GDAL ≥ 3.8)
ogr2ogr -makevalid propre.gpkg sale.gpkg

# 20. Simplifier (tolérance en unités du SCR, ici 5 m)
ogr2ogr -simplify 5 simple.gpkg detaille.gpkg

Encodage et CSV

# Lire un vieux shapefile en Windows-1252 et écrire en UTF-8
ogr2ogr --config SHAPE_ENCODING CP1252 sortie.gpkg vieux.shp

# CSV avec colonnes lon/lat → points
ogr2ogr -f GPKG points.gpkg stations.csv -oo X_POSSIBLE_NAMES=lon -oo Y_POSSIBLE_NAMES=lat -a_srs EPSG:4326

# Couche → CSV avec la géométrie en WKT
ogr2ogr -f CSV export.csv couche.gpkg -lco GEOMETRY=AS_WKT

Pas de GDAL sous la main ? Notre visionneuse SIG convertit aussi entre GeoJSON, Shapefile et GeoPackage avec reprojection, directement dans le navigateur.

Démonstration : le générateur de commandes

Composez votre commande : elle se construit en direct, avec l'explication de chaque option.