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 18 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>
| tags: | ||
| - GDAL |
There was a problem hiding this comment.
Ici est-ce qu'il y aurait pas d'autres tags ? Par ex. CLI, json, ou d'autres !
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 !
| ## Gdal qu'est ce que c'est ? | ||
|
|
||
| `GDAL` est une librairie de programmes open source en C/C++ permettant de réaliser des convertion de fichier vecteur/rasteur, et des traitements raster. Cette librairie se cache derrière à peu près tous les logiciels contenant "SIG" dans leur description. Quand vous demandez à QGIS d'enregistrer votre fichier `geopackage` en `flatgeobuf` ou en `geoparquet` pour les amateur.trices de formats modernes mais étranges (perso je ne travaille plus qu'en [DuckLake](https://duckdb.org/2025/05/27/ducklake.html) Spatial pour embêter mes collègues), en réalité QGIS *demande* à GDAL de réaliser l'opération. |
There was a problem hiding this comment.
| ## Gdal qu'est ce que c'est ? | |
| `GDAL` est une librairie de programmes open source en C/C++ permettant de réaliser des convertion de fichier vecteur/rasteur, et des traitements raster. Cette librairie se cache derrière à peu près tous les logiciels contenant "SIG" dans leur description. Quand vous demandez à QGIS d'enregistrer votre fichier `geopackage` en `flatgeobuf` ou en `geoparquet` pour les amateur.trices de formats modernes mais étranges (perso je ne travaille plus qu'en [DuckLake](https://duckdb.org/2025/05/27/ducklake.html) Spatial pour embêter mes collègues), en réalité QGIS *demande* à GDAL de réaliser l'opération. | |
| ## GDAL qu'est ce que c'est ? | |
| {: .img-thumbnail-left} | |
| [`GDAL`](https://gdal.org/en/stable/) est une librairie de programmes open source en C/C++ permettant de réaliser des convertion de fichier vecteur/rasteur, et des traitements raster. Cette librairie se cache derrière à peu près tous les logiciels contenant "SIG" dans leur description. Quand vous demandez à QGIS d'enregistrer votre fichier `geopackage` en `flatgeobuf` ou en `geoparquet` pour les amateur.trices de formats modernes mais étranges (perso je ne travaille plus qu'en [DuckLake](https://duckdb.org/2025/05/27/ducklake.html) Spatial pour embêter mes collègues), en réalité QGIS *demande* à GDAL de réaliser l'opération. |
Ce serait peut-être la seule illustration de l'article 😅
|
|
||
| `GDAL` est une librairie de programmes open source en C/C++ permettant de réaliser des convertion de fichier vecteur/rasteur, et des traitements raster. Cette librairie se cache derrière à peu près tous les logiciels contenant "SIG" dans leur description. Quand vous demandez à QGIS d'enregistrer votre fichier `geopackage` en `flatgeobuf` ou en `geoparquet` pour les amateur.trices de formats modernes mais étranges (perso je ne travaille plus qu'en [DuckLake](https://duckdb.org/2025/05/27/ducklake.html) Spatial pour embêter mes collègues), en réalité QGIS *demande* à GDAL de réaliser l'opération. | ||
|
|
||
| Les anciens noms des programmes dédiés au vecteur font référence à ogr, une ancienne librairie depuis *absorbée* par GDAL. |
There was a problem hiding this comment.
| Les anciens noms des programmes dédiés au vecteur font référence à ogr, une ancienne librairie depuis *absorbée* par GDAL. | |
| Les anciens noms des programmes dédiés au vecteur font référence à `ogr`, une ancienne librairie depuis *absorbée* par GDAL. |
|
|
||
| On ne le répétera jamais assez mais sans GDAL, presque rien n'existerait dans le monde de la géomatique, qu'elle soit libre ou propriétaire. A tout ces égards, cette librairie fait partie de la sainte trinité [gdal](https://gdal.org/en/stable/)/[geos](https://libgeos.org/)/[proj](https://proj.org/en/stable/). | ||
|
|
||
| Maitriser `GDAL`, c'est être capable de remplacer des ~~interfaces graphiques~~ logiciels coutant des dizaines de milliers d'euros. |
There was a problem hiding this comment.
| Maitriser `GDAL`, c'est être capable de remplacer des ~~interfaces graphiques~~ logiciels coutant des dizaines de milliers d'euros. | |
| Maîtriser `GDAL`, c'est être capable de remplacer des ~~interfaces graphiques~~ logiciels coûtant des dizaines de milliers d'euros. |
|
|
||
| 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. |
| gdal raster convert --overwrite in.jp2 out.tif | ||
| ``` | ||
|
|
||
| Commande pour convertir un fichier in.jp2 au format geotiff en autorisant l'écrasement d'un potentiel fichier out.tif déjà existant. |
There was a problem hiding this comment.
| Commande pour convertir un fichier in.jp2 au format geotiff en autorisant l'écrasement d'un potentiel fichier out.tif déjà existant. | |
| Commande pour convertir un fichier `in.jp2` au format geotiff en autorisant l'écrasement d'un potentiel fichier `out.tif` déjà existant. |
|
|
||
| (exemple issu de la documentation officielle de GDAL) | ||
|
|
||
| On peut ainsi imaginer un pipeline qui reprojetera une couche, avant de la filtrer sur la valeur d'un de ses attributs. |
There was a problem hiding this comment.
| On peut ainsi imaginer un pipeline qui reprojetera une couche, avant de la filtrer sur la valeur d'un de ses attributs. | |
| On peut ainsi imaginer un pipeline qui reprojetera une couche, avant de la filtrer sur la valeur d'un de ses attributs : |
|
|
||
| ## l'API Python | ||
|
|
||
| Enfin, toute cette modernisation impacte evidemment les API, et celle qui nous interesse ici, l'[API Python](https://gdal.org/en/stable/programs/gdal_cli_from_python.html). |
There was a problem hiding this comment.
| Enfin, toute cette modernisation impacte evidemment les API, et celle qui nous interesse ici, l'[API Python](https://gdal.org/en/stable/programs/gdal_cli_from_python.html). | |
| Enfin, toute cette modernisation impacte évidemment les API, et celle qui nous interesse ici, l'[API Python](https://gdal.org/en/stable/programs/gdal_cli_from_python.html). |
|
|
||
| Enfin, toute cette modernisation impacte evidemment les API, et celle qui nous interesse ici, l'[API Python](https://gdal.org/en/stable/programs/gdal_cli_from_python.html). | ||
|
|
||
| On rappelle que de façon curieuse, l'api Python de GDAL s'installe et s'importe comme ceci : |
There was a problem hiding this comment.
| On rappelle que de façon curieuse, l'api Python de GDAL s'installe et s'importe comme ceci : | |
| On rappelle que de façon curieuse, l'API Python de GDAL s'installe et s'importe comme ceci : |
| 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,
| gdal.Run("vector"/"raster"/"vsi", "programme", option(s), input="in.tif", output="out.tif) | ||
| ``` | ||
|
|
||
| exemple pour importer un fichier csv dans une base Postgres (plutôt que d'utiliser `COPY` de postgres, plus fastidieux): |
There was a problem hiding this comment.
| exemple pour importer un fichier csv dans une base Postgres (plutôt que d'utiliser `COPY` de postgres, plus fastidieux): | |
| Exemple pour importer un fichier csv dans une base PostgreSQL (plutôt que d'utiliser `COPY` de postgres, plus fastidieux): |
|
🎉 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.