J'utilise python et QGIS 2.0. J'essaie de découper les rasters dans un dossier par une entité polygonale. C'est la première fois que j'utilise (disons) "PyQGIS", j'étais habitué à arcpy avant. Quoi qu'il en soit, je ne fais pas fonctionner mon script simple, toute suggestion serait très appréciée!
import qgis.core, qgis,utils
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
QgsApplication.initQgis()
CLIP= "C:/Users/unim/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/study_area_foscagno.shp"
INPUT_FOLDER="C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/LE71930282000259EDC00"
OUTPUT= "C:/Users/unim/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/foscagno_pyqgis/"
for RASTER in INPUT_FOLDER.tif
do
echo "Processing $RASTER"
gdalwarp -q -cutline CLIP -crop_to_cutline -of GTiff RASTER OUTPUT+ "clip_"+ RASTER
done
QgsApplication.exitQgis()
Vous trouverez ci-dessous les améliorations que j'ai apportées depuis maintenant, sans que le script fonctionne, mais je pense que je vais peut-être me rapprocher ...
import qgis.core, qgis.utils, os, fnmatch
from osgeo import gdal
CLIP= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/study_area_foscagno.shp"
INPUT_FOLDER= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/LE71930282000259EDC00/DNs2Reflectance_LE71930282000259EDC00"
OUTPUT= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/Cloud_mask_AltaValtellina/clip_2_foscagno"
def findRasters (path, filter):
for root, dirs, files in os.walk(path):
for file in fnmatch.filter(files, filter):
yield os.path.join (root, file)
for raster in findRasters (INPUT_FOLDER, '*.tif'):
print (raster)
outRaster = OUTPUT + '/clip_' + raster
cmd = 'gdalwarp -dstnodata 0 -q -cutline CLIP -crop_to_cutline %s %s' % (raster, outRaster)
os.system (cmd)
Je pense qu'il pourrait y avoir quelque chose de mal dans la commande "gdal", car la fonction "print" fait son travail correctement, mais aucun fichier n'est écrit dans la sortie, ni je ne reçois aucune erreur. Au fait, il a été difficile de fonder une documentation facile sur le codage gdal ...
CLIP
dans l' cmd
expression est le problème. Si vous mettez une variable dans une chaîne, elle n'est pas lue. Au lieu de cela, vous concaténeriez la chaîne avec la variable.
print(cmd)
à la place de os.system(cmd)
. Votre outRaster
variable n'est pas correcte.