Mehr

Durchlaufen von Rasterebenen im Ordner mit PyQGIS?


Ich möchte eine Maske auf eine Reihe von Rastern in PyQGIS anwenden. (aktualisiert aber immer noch nicht)

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

Was mache ich falsch?


Es gibt ein paar Dinge zu beachten:

  1. In Ihrem Algorithmus verwenden Sierstr(der Pfad der Raster) als Eingabe anstelle der tatsächlichen Raster, die Sie als definiert habenlyr.
  2. Dies hängt wahrscheinlich von der Plugin-Version verarbeiten aber in v2.10.2 ist der Algorithmusgdalogr:cliprasterbymasklayererfordert 7 Parameter (Sie haben 6 erwähnt). Sie können dies mithilfe der Python-Konsole überprüfen:

    import processing processing.alghelp("gdalogr:cliprasterbymasklayer") >>>ALGORITHMUS: Clipraster nach Maskenebene INPUT  MASKE  KEINE DATEN  ALPHA_BAND  KEEP_RESOLUTION  EXTRA  AUSGANG 
  3. Schließlich können Sie den folgenden Code verwenden, um Raster in einem angegebenen Ordner zu durchlaufen. Ich benutze die gerne Globus Modul, um nach bestimmten Dateitypen zu suchen und gleichzeitig das aktuelle Verzeichnis mit festzulegen os.chdir zum Pfad mit den Dateien:

    import glob, os, processing rstr = "/Users/rasterfilepath//" shp = "/Users//shapefile.shp" outputDir = "/Users/output//" os.chdir(rstr) # Setzt das aktuelle Verzeichnis auf dein rasterfilepath für lyr in glob.glob("*.tif"): processing.runandload("gdalogr:cliprasterbymasklayer", lyr, shp, 'none', False, False,", outputDir + lyr)

Hoffe das hilft!


Hier ist die Lösung:

Zum Schleifen von Ordnern zum Stapeln von Rastern nach Polygonen mit Python und QGIS?


Schau das Video: QGIS Python PyQGIS - Dissolve (Oktober 2021).