add(article): Principes et fonctionnement de la nouvelle CLI GDAL. Enfin. #1441
add(article): Principes et fonctionnement de la nouvelle CLI GDAL. Enfin. #1441thomas-szczurek wants to merge 20 commits intogeotribu:masterfrom
Conversation
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
thomas-szczurek
left a comment
There was a problem hiding this comment.
Suppression d'une blague hors contecte 6 mois après
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Merci ! En soit, je me le suis bien dis pour les images, mais est-ce bien sage d'illustrer des lignes de commande par des screenshots de lignes de commande ? |
Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
thomas-szczurek
left a comment
There was a problem hiding this comment.
Tags ajoutés et phrase compliquée racourcie
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
|
Allez zou, c'est parti pour la @geotribu/relecture ! ℹ️ Aux relecteur/ices Merci d'utiliser autant que possible le mode Suggestion de la review : https://docs.github.com/fr/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#starting-a-review C'est vraiment IMPORTANT pour le confort de l'auteur/ice 🙏 |
There was a problem hiding this comment.
Après un long silence, une petite review principalement sur quelques coquilles et de la forme,
est-ce bien sage d'illustrer des lignes de commande par des screenshots de lignes de commande ?
Sage comme une image ?
C'est vrai qu'illustrer une CLI, bon voilà... C'est bien aussi comme ça avec les nombreux exemples fournis :)
Merci @thomas-szczurek !
|
|
||
| Maitriser `GDAL`, c'est être capable de remplacer des ~~interfaces graphiques~~ logiciels coutant des dizaines de milliers d'euros. | ||
|
|
||
| Cependant, historiquement les programmes `GDAL` étaient ... comment dire ... peut normés entre eux, par exemple `gdal_translate` (le programme servant aux conversions raster) demandait ses fichiers d'entrée / sortie dans cet ordre : in -> out alors qu'`ogr2ogr` (le programme servant aux conversions vecteur) lui demandait : out -> in. De plus les plus gros programmes, ceux qui "faisaient tout" on été supprimés et remplacés par des équivalents plus spécifiques. |
There was a problem hiding this comment.
| Cependant, historiquement les programmes `GDAL` étaient ... comment dire ... peut normés entre eux, par exemple `gdal_translate` (le programme servant aux conversions raster) demandait ses fichiers d'entrée / sortie dans cet ordre : in -> out alors qu'`ogr2ogr` (le programme servant aux conversions vecteur) lui demandait : out -> in. De plus les plus gros programmes, ceux qui "faisaient tout" on été supprimés et remplacés par des équivalents plus spécifiques. | |
| Cependant, historiquement les programmes `GDAL` étaient... comment dire... peu normés entre eux, par exemple `gdal_translate` (le programme servant aux conversions raster) demandait ses fichiers d'entrée / sortie dans cet ordre : in -> out alors qu'`ogr2ogr` (le programme servant aux conversions vecteur) lui demandait : out -> in. De plus les plus gros programmes, ceux qui "faisaient tout" ont été supprimés et remplacés par des équivalents plus spécifiques. |
There was a problem hiding this comment.
on été supprimés et remplacés par des équivalents plus spécifiques.
A reformuler car prête à confusion avec la phrase suivante qui dit qu'ils sont toujours dispos
| Ensuite, c'est simple, ils s'appellent comme ceci : | ||
|
|
||
| ```python | ||
| gdal.Run("vector"/"raster"/"vsi", "programme", option(s), input="in.tif", output="out.tif) |
There was a problem hiding this comment.
| gdal.Run("vector"/"raster"/"vsi", "programme", option(s), input="in.tif", output="out.tif) | |
| gdal.Run("vector", "programme", option(s), input="in.tif", output="out.tif") | |
| gdal.Run("raster", "programme", option(s), input="in.tif", output="out.tif") | |
| gdal.Run("vsi", "programme", option(s), input="in.tif", output="out.tif") |
Au début j'ai buggué, j'ai cru que c'était une nouvelle syntaxe python 3.17...
Peut-être plus simple à comprendre, je sais pas, à voir aussi si besoin de changer les extensions, vector notamment,
|
Merci Guilhem pour la relecture. Est-ce qu'on demanderait pas à @rouault ce qu'il pense de ce contenu :) ? |
rouault
left a comment
There was a problem hiding this comment.
Merci pour cette intro à la nouvelle interface en ligne de commande!
A voir si vous voulez le mentionnez, mais au cas où, ça fera l'objet d'un atelier dédié de 4h (en anglais) lors de la conférence FOSS4G-Europe 2026 : https://talks.osgeo.org/foss4g-europe-2026-workshops/talk/PR7HNK/ .
|
|
||
| Maitriser `GDAL`, c'est être capable de remplacer des ~~interfaces graphiques~~ logiciels coutant des dizaines de milliers d'euros. | ||
|
|
||
| Cependant, historiquement les programmes `GDAL` étaient ... comment dire ... peut normés entre eux, par exemple `gdal_translate` (le programme servant aux conversions raster) demandait ses fichiers d'entrée / sortie dans cet ordre : in -> out alors qu'`ogr2ogr` (le programme servant aux conversions vecteur) lui demandait : out -> in. De plus les plus gros programmes, ceux qui "faisaient tout" on été supprimés et remplacés par des équivalents plus spécifiques. |
There was a problem hiding this comment.
on été supprimés et remplacés par des équivalents plus spécifiques.
A reformuler car prête à confusion avec la phrase suivante qui dit qu'ils sont toujours dispos
| gdal vector convert --append in.shp PG:"dbname='my_db' user='me' password='admin123' schemas='my_schema'" | ||
| ``` | ||
|
|
||
| Une différence par rapport à l'ancienne CLI est l'obligation de l'utilisation de l'option `append`, même pour créer une table non existante. |
There was a problem hiding this comment.
On a du corrigé ça depuis la 3.11, car --append non nécessaire avec 3.12 quand la table n'existe pas.
| On peut s'en servir pour créer des [Cloud Optimized Geotiff](https://guide.cloudnativegeo.org/cloud-optimized-geotiffs/intro.html). Voir cet [article de geotribu par Nicolas Rochard](https://geotribu.fr/articles/2025/2025-02-11_bonnes-pratiques-generation-raster-cog-avec-gdal/) pour les options qui sont utilisées par la région Hauts de France. | ||
|
|
||
| ```sh | ||
| gdal raster convert --ouput-format=COG -co COMPRESS=ZSTD -co BIGTIFF=IF_NEEDED in.tif out.tif |
There was a problem hiding this comment.
BIGTIFF=IF_NEEDED est la valeur par défaut et manque d'un 2ème trait d'union devant -co
| gdal raster convert --ouput-format=COG -co COMPRESS=ZSTD -co BIGTIFF=IF_NEEDED in.tif out.tif | |
| gdal raster convert --ouput-format=COG --co COMPRESS=ZSTD in.tif out.tif |
|
|
||
| Chaque programme `GDAL` est implémenté sous forme d'instances de la classe `osgeo.gdal.Algorithm`, qu'on appelle en utilisant la méthode `osgeo.gdal.Run()` ou plutôt `gdal.Run()` si on a importé `GDAL` comme dans l'exemple ci-dessus. | ||
|
|
||
| Ensuite, c'est simple, ils s'appellent comme ceci : |
There was a problem hiding this comment.
la syntaxe gdal.alg.x.y(...) ajoutée GDAL 3.12 (cf https://gdal.org/en/stable/programs/gdal_cli_from_python.html#gdal-alg-module) est encore plus sympa, et bénéficie de docstring avec les paramètres disponibles et donc d'auto-complétion/suggestion dans votre IDE favori
Dans la doc de GDAL 3.13, on a osé pour illustrer les pipelines complexes. Cf https://gdal.org/en/latest/programs/gdal_pipeline.html#programs/gdal_pipeline-5 ( généré grace à https://github.com/geographika/gdalgviz ) |
Ne reste plus que les commentaires nécessitant modification du corps de texte en lui mêmê Co-authored-by: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Co-authored-by: Even Rouault <even.rouault@spatialys.com> Signed-off-by: thomas-szczurek <121474664+thomas-szczurek@users.noreply.github.com>
|
@thomas-szczurek Il va te falloir changer la date et donc renommer le fichier. Quand souhaites-tu publier l'article ? Sachant que demain il y a la partie 1 sur Mapproxy et la partie 2 en fin de mois. Sauf si tu es pressé, je te conseillerais plutôt d'attendre jusqu'au 12 mai pour éviter qu'il soit pris en sandwich entre 2 Mapproxy ou dans la huitaine de ponts de mai, mais inclus dans la prochaine RDP. Dis-nous ! |
|
@thomas-szczurek j'avais oublié d'éditer la description de ta PR avec notre modèle. Je te laisse cocher ce qui est te va bien :). |
…-szczurek Signed-off-by: Julien <1596222+Guts@users.noreply.github.com>
|
🎉 Le site de prévisualisation pour cette PR a été généré et est disponible sous ce lien. |

add(article): Principes et fonctionnement de la nouvelle CLI GDAL. Enfin.
ℹ️ Message automatique à lire et remplir ⬇️
Important
Rappel : votre contribution doit émaner de votre originalité, et non découler d'un copier / coller issu d'un prompt.
Liens importants
Ressources
Pour info, voici quelques extraits de notre guide de contribution :
📢 Diffusion
Une fois l'article publié, il sera alors temps de le diffuser. Il sera automatiquement intégré au flux RSS et à la newsletter.
Mais la publication sur les réseaux sociaux est manuelle.
Nous avons des comptes officiels sur ces réseaux sociaux :
Facebook - inactifX/Twitter- inactifMerci d'indiquer en commentaire tes comptes à utiliser pour être cité/e dans les messages et de cocher ci-après la "stratégie" de diffusion qui te convient pour chaque réseau.
BlueSky
LinkedIn
Mastodon