Est-il possible d'utiliser une API gdal pour appeler à gdal_translate
partir de code Python? Je ne parle pas simplement d'exécuter gdal_translate.exe à partir du système de fichiers, mais de l'appeler d'une manière ou d'une autre dans le code, de sorte que je n'ai pas besoin de connaître le répertoire exact dans lequel se trouve l'exécutable gdal_translate?
40
Réponses:
Depuis GDAL 2.1 (plus d’informations ici ), les utilitaires GDAL et OGR peuvent être utilisés comme fonctions de bibliothèque. Par exemple:
la source
gdal.Translate()
sont listées ici: gdal.org/python/osgeo.gdal-module.html#TranslateOptionsVoir le didacticiel de l'API GDAL .
Si vous souhaitez davantage de contrôle de sortie, tel que redimensionnement, sous-ensemble, etc., utilisez un VRT comme entrée, voici comment gdal_translate le fait en interne.
la source
Oui, vous pouvez appeler les utilitaires GDAL à partir de Python. Il y a de très petites différences dans l'approche selon que l'utilitaire est un exe à part entière ou aussi un morceau de code python. Quoi qu'il en soit, vous devez utiliser le module de sous - processus :
Vous remarquerez que j'ajoute des guillemets échappés autour de mes chemins. En effet, sous Windows, j'ai eu des problèmes avec les chemins, en particulier ceux avec des espaces ou lorsqu'un des caractères "\" crée un autre caractère échappé par accident. Donc, je conserve juste le chemin approprié dans aspec pour ainsi dire.
Si vous utilisez un des utilitaires python, faites simplement la même chose, sauf que votre fichier exe au début de la chaîne de commande du sous-processus est maintenant "C: \ python32 \ python.exe" (ou quelle que soit la version que vous avez) et que votre deuxième élément est l'utilitaire Python que vous souhaitez utiliser.
Bien entendu, vous pouvez également parcourir votre système de fichiers plutôt que d'utiliser des constantes codées en dur, mais ceci n'est qu'un exemple.
EDIT - Généraliser pour les plugins
QGIS QGIS crée / modifie un certain nombre de variables d'environnement au démarrage. Vous pouvez donc créer des variables de chemin d'accès généralisées aux bibliothèques / utilitaires GDAL à l'aide de celles-ci (voir Paramètres-> Options-> Système) au lieu des chemins codés en dur de l'exemple ci-dessus.
la source
Je le fais avec différentes commandes gdal utilisant os.system que vous pouvez utiliser pour appeler des fonctions à partir de la ligne de commande:
Il est également décrit dans la conférence 7 ici: http://www.gis.usu.edu/~chrisg/python/2009/
la source
subprocess.call
est plus sûr queos.system
.gdal.Warp()
pendant quelques heures pour obtenir correctement unePG:
source de donnéescutlineDSName
pour conduire lecutlineSQL
. (Je sais, n'est-ce pas? Quelques heures à régler quelque chose ? L'horreur! </ Kidding>). Cela a finalement fonctionné, et il semble être beaucoup plus rapide queos.system()
ousubprocess.call()
. Il est fait ~ 2 millions cutlines, donc je ne sais pas s'il est effectivement plus rapide jusqu'à un certain temps ce soir ... mais il fonctionne tout à fait exact.Voici un code rapide pour ceux qui souhaitent enregistrer des groupes d’un fichier TIF composite multibande composite dans des fichiers individuels à l’aide de GDAL Traduire en Python.
Cela pourrait être utile pour un traitement ultérieur (par exemple, en utilisant Rasterio, comme ici ).
la source