<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">Hi again Dani,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">The following hopefully gives you an impression of how you can achieve this with a Python script. This is a simple case of looping (aka recursion) and doing something once for each input file. I haven't tested this, and you'd have to modify various bits of it to suit your case, but hopefully it gives you a logical impression of what you can do to get your job done.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">Cheers,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">P</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br><span style="font-family:monospace"><br>import os, subprocess<br><br>def defineClippedFilename(aFileName):<br>    # A function for getting output filenames.<br>    # Given a file name, return a new name where '_clipped'<br>    # has been appended, with the file extension remaining<br>    # the same.<br>    filename, extension = os.path.splitext(aFileName)<br>    newFileName = filename + "_clipped" + extension<br>    return newFileName<br><br><br># The filesystem path to the file you want to use as a 'cookie cutter'.<br>pathToMaskFile = "/home/myhome/somefolder/file.shp"<br><br># The filesystem path to the folder containing your 180 rasters.<br>containingFolder = "/home/myhome/somefolder"<br><br># A list of each of your 180 files you want clipped, as they're named inside containingFolder.<br>inRasters = [<br>        "File001.tif",<br>        "File002.tif",<br>        "File003,tif"<br>        # ...etc.<br>]<br><br># Loop over the list of files in inRasters, clipping by the mask, and<br># creating an output file in the same folder.<br>for rasterFileName in inRasters:<br><br>    # Define the exact text strings for the input and output files for this step.<br>    thisInRaster = os.path.join(containingFolder, rasterFileName)<br>    outName = defineClippedFilename(rasterFileName)<br>    thisOutRaster = os.path.join(containingFolder, outName)<br><br>    # Use Python string formatting to substitute-in the right input and output paths.<br>    # You may need to specify a full path for the gdalwarp executable file, if it's<br>    # not on your system PATH already (e.g., this is likely on Windows).<br>    commandString = "gdalwarp -cutline {} -crop_to_cutline {} {}".format(pathToMaskFile, thisInRaster, thisOutRaster)<br><br>    # Make the call to the command-line gdalwarp tool<br>    subprocess.call(commandString, terminal=True)<br><br>    # Tell the user what's going on in terms of progress.<br>    print("Finished {}".format(rasterFileName))</span><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 24, 2020 at 11:42 PM Paulo Raposo <<a href="mailto:pauloj.raposo@gmail.com">pauloj.raposo@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">Hi Dani,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">Michele's answer is great, and she's right that scripting is ideally suited to this.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">Do you need to extract pixels by their value, or by their location? I'm thinking that if it's by value, you can do this by making reclassified copies of each raster where any pixel that isn't of the values you want is reclassified to NoData. If by location, you have an "extract by mask" situation. <br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">Are you okay with or experienced with programming? If so, the GDAL utilities (come with QGIS) can do either case (see <a href="https://gis.stackexchange.com/questions/245170/reclassifying-raster-using-gdal" target="_blank">https://gis.stackexchange.com/questions/245170/reclassifying-raster-using-gdal</a> or <a href="https://gis.stackexchange.com/questions/45053/gdalwarp-cutline-along-with-shapefile" target="_blank">https://gis.stackexchange.com/questions/45053/gdalwarp-cutline-along-with-shapefile</a> for examples close to these two generic situations) - it would be simply a matter of looping over your 180 inputs. You could write a Python script, for example, that calls the command line once (use the subprocess package in Python) for each input file, perhaps after reading them all from the directory where you're storing them.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">If all that makes no sense to you, no worries :) Batch processing in the way Michele points to should get it done too.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">Cheers,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">P<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 24, 2020 at 4:10 PM Michele M Tobias <<a href="mailto:mmtobias@ucdavis.edu" target="_blank">mmtobias@ucdavis.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Hi Dani,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Here’s one way to do it with QGIS:
<a href="https://gis.stackexchange.com/questions/318175/batch-raster-calculator" target="_blank">
https://gis.stackexchange.com/questions/318175/batch-raster-calculator</a>  This might be a good case for using a programming language like R or Python to do the processing.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Best,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Michele<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Michele Tobias, PhD<u></u><u></u></span></b></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Geospatial Data Specialist<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">DataLab: Data Science & Informatics<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Data & Digital Scholarship<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">UC Davis Library
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">370 Shields Library<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">(530)752-7532<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><a href="mailto:mmtobias@ucdavis.edu" target="_blank"><span style="color:rgb(5,99,193)">mmtobias@ucdavis.edu</span></a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">ORCID:
</span><span style="font-size:9pt;font-family:"Noto Sans",serif;color:rgb(73,74,76);background:white none repeat scroll 0% 0%"><a href="https://orcid.org/0000-0002-2954-8710" target="_blank"><span style="color:rgb(5,99,193)">0000-0002-2954-8710</span></a>
</span><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)">Pronouns: she, her, hers<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri",sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11pt;font-family:"Calibri",sans-serif"> Qgis-us-user <<a href="mailto:qgis-us-user-bounces@lists.osgeo.org" target="_blank">qgis-us-user-bounces@lists.osgeo.org</a>>
<b>On Behalf Of </b>Dani Varghese<br>
<b>Sent:</b> Tuesday, March 24, 2020 3:08 AM<br>
<b>To:</b> <a href="mailto:qgis-us-user@lists.osgeo.org" target="_blank">qgis-us-user@lists.osgeo.org</a><br>
<b>Subject:</b> [Qgis-us-user] raster calculator batch processing<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Greetings<u></u><u></u></p>
<div>
<p class="MsoNormal">I have nearly 180 raster images (15 minutes interval- climate data) per day, and need to apply raster calculator to extract a range of pixel values. can anyone help me, how to do it with raster calculator batch processing (documents or
 steps or tutorials) or any other methods.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks in advance<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Best <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Dani<u></u><u></u></p>
</div>
</div>
</div>
</div>

_______________________________________________<br>
Qgis-us-user mailing list<br>
<a href="mailto:Qgis-us-user@lists.osgeo.org" target="_blank">Qgis-us-user@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/qgis-us-user" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-us-user</a><br>
</blockquote></div>
</blockquote></div>