আমি পাইথন এবং কিউজিআইএস ২.০ ব্যবহার করছি। আমি একটি বহুভুক্ত বৈশিষ্ট্য দ্বারা ফোল্ডারে রাস্টারদের ক্লিপ দেওয়ার চেষ্টা করছি। এটি আমার জন্য প্রথমবার (যাক বলে নেওয়া যাক) "পাইকিউজিআইএস" ব্যবহার করার আগে, আমি তো আরকেপি করার আগে ব্যবহৃত হয়েছিলাম। যাইহোক, আমি আমার সাধারণ স্ক্রিপ্টটি কাজ করতে পাই না, কোনও পরামর্শই খুব প্রশংসা হবে!
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)
আমি মনে করি "gdal" কমান্ডে কিছু ভুল হতে পারে, যেমন "মুদ্রণ" ফাংশনটি তার কাজটি প্রপ্রেস করে, কিন্তু আউটপুটে কোনও ফাইল লেখা হয় না, তবুও আমি কোনও ত্রুটি পাই না। যাইহোক, জিডিএল কোডিংয়ের জন্য একটি সহজ ডকুমেন্টেশন পছন্দ করা শক্ত ছিল ...
CLIP
মধ্যে cmd
অভিব্যক্তি সমস্যা। আপনি যদি কোনও স্ট্রিংয়ে ভেরিয়েবল রাখেন তবে এটি পড়ে না। পরিবর্তে, আপনি ভেরিয়েবলের সাথে স্ট্রিংটি সংযুক্ত করতে পারেন।
print(cmd)
জায়গায় রাস্টার পাথ পরীক্ষা করুন os.system(cmd)
। আপনার outRaster
পরিবর্তনশীল সঠিক নয়।