मैं अजगर और QGIS 2.0 का उपयोग कर रहा हूं। मैं एक बहुभुज सुविधा द्वारा एक फ़ोल्डर में रेखापुंज को क्लिप करने की कोशिश कर रहा हूं। यह मेरे लिए पहली बार है (चलो कहते हैं) "PyQGIS", मुझे पहले चापलूसी के लिए इस्तेमाल किया गया था। वैसे भी, मुझे काम करने के लिए मेरी सरल स्क्रिप्ट नहीं मिलती है, किसी भी सुझाव की बहुत सराहना की जाएगी!
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()
नीचे मैंने अब तक किए गए सुधार किए हैं, हालांकि स्क्रिप्ट को काम करने के लिए नहीं मिल रहा है, लेकिन मुझे लगता है कि मैं करीब हो सकता हूं ...
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)
मुझे लगता है कि "गदल" कमांड में कुछ गड़बड़ हो सकती है, क्योंकि "प्रिंट" फ़ंक्शन अपना काम उचित तरीके से करता है, लेकिन आउटपुट में कोई फ़ाइल नहीं लिखी जाती है, न ही मुझे कोई त्रुटि मिलती है। वैसे, यह मुश्किल है कि गदल कोडिंग पर एक आसान दस्तावेजीकरण किया जाए ...
CLIP
में cmd
अभिव्यक्ति समस्या है। यदि आप एक स्ट्रिंग में एक चर डालते हैं, तो यह पढ़ा नहीं जाता है। इसके बजाय, आप चर के साथ स्ट्रिंग को संक्षिप्त करेंगे।
print(cmd)
स्थान के साथ रेखापुंज पथों की जाँच करें os.system(cmd)
। आपका outRaster
चर सही नहीं है।