Suite

Boucler les couches raster dans un dossier avec PyQGIS ?


Je cherche à appliquer un masque à un certain nombre de rasters dans PyQGIS. (mis à jour mais ne fonctionne toujours pas)

import processing rstr = "/Users/rasterfilepath/" shp = "/Users/shapefile.shp" outputDir = "/Users/output/" pour lyr dans rstr : processing.runandload("gdalogr:cliprasterbymasklayer", rstr, shp, " aucun", False, False, "", outputDir + lyr + ".tif")

Qu'est-ce que je fais mal?


Il y a quelques choses à noter :

  1. Dans votre algorithme, vous utilisezrstr(le chemin des rasters) comme entrée au lieu des rasters réels que vous avez définis commelyre.
  2. Cela dépend probablement de la Traitement de la version du plug-in mais en v2.10.2, l'algorithmegdalogr:cliprasterbymasklayernécessite 7 paramètres (vous avez mentionné 6). Vous pouvez le vérifier en utilisant la console Python :

    traitement d'importation processing.alghelp("gdalogr:cliprasterbymasklayer") >>>ALGORITHME : raster de découpage par couche de masque INPUT  MASQUER  PAS DE DONNÉES  ALPHA_BANDE  GARDER_RÉSOLUTION  SUPPLÉMENTAIRE  PRODUCTION 
  3. Enfin, vous pouvez utiliser le code suivant pour parcourir les rasters dans un dossier spécifié. J'aime utiliser le globe module pour rechercher des types spécifiques de fichiers ainsi que définir le répertoire actuel avec os.chdir au chemin contenant les fichiers :

    import glob, os, processing rstr = "/Users/rasterfilepath//" shp = "/Users//shapefile.shp" outputDir = "/Users/output//" os.chdir(rstr) # Définit le répertoire actuel sur votre chemin du fichier raster pour lyr dans glob.glob("*.tif") : processing.runandload("gdalogr:cliprasterbymasklayer", lyr, shp, 'none', False, False,", outputDir + lyr)

J'espère que cela t'aides!


Voici la soluce :

Pour boucler le dossier pour découper par lots des rasters par polygone à l'aide de python et de QGIS ?