Sto usando Python e QGIS 2.0. Sto cercando di ritagliare i raster in una cartella con una funzione poligonale. È la prima volta che uso (diciamo) "PyQGIS", prima ero abituato ad arcipare. Comunque, non riesco a far funzionare la mia semplice sceneggiatura, qualsiasi suggerimento sarebbe molto apprezzato!
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()
Di seguito sono riportati i miglioramenti che ho fatto da ora, non facendo funzionare la sceneggiatura, ma penso che potrei avvicinarmi ...
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)
Penso che potrebbe esserci qualcosa di sbagliato nel comando "gdal", poiché la funzione "stampa" fa il suo lavoro correttamente, ma nessun file viene scritto nell'output, né ricevo alcun errore. A proposito, è stato difficile affezionare una semplice documentazione sulla codifica gdal ...
CLIP
nella cmd
espressione è il problema. Se si inserisce una variabile in una stringa, non viene letta. Invece, si concatenerebbe la stringa con la variabile.
print(cmd)
al posto di os.system(cmd)
. La tua outRaster
variabile non è corretta