[Qgis-us-user] raster calculator batch processing

Paulo Raposo pauloj.raposo at gmail.com
Thu Mar 26 12:36:07 PDT 2020


Hi again Dani,

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.

Cheers,
P




import os, subprocess

def defineClippedFilename(aFileName):
    # A function for getting output filenames.
    # Given a file name, return a new name where '_clipped'
    # has been appended, with the file extension remaining
    # the same.
    filename, extension = os.path.splitext(aFileName)
    newFileName = filename + "_clipped" + extension
    return newFileName


# The filesystem path to the file you want to use as a 'cookie cutter'.
pathToMaskFile = "/home/myhome/somefolder/file.shp"

# The filesystem path to the folder containing your 180 rasters.
containingFolder = "/home/myhome/somefolder"

# A list of each of your 180 files you want clipped, as they're named
inside containingFolder.
inRasters = [
        "File001.tif",
        "File002.tif",
        "File003,tif"
        # ...etc.
]

# Loop over the list of files in inRasters, clipping by the mask, and
# creating an output file in the same folder.
for rasterFileName in inRasters:

    # Define the exact text strings for the input and output files for this
step.
    thisInRaster = os.path.join(containingFolder, rasterFileName)
    outName = defineClippedFilename(rasterFileName)
    thisOutRaster = os.path.join(containingFolder, outName)

    # Use Python string formatting to substitute-in the right input and
output paths.
    # You may need to specify a full path for the gdalwarp executable file,
if it's
    # not on your system PATH already (e.g., this is likely on Windows).
    commandString = "gdalwarp -cutline {} -crop_to_cutline {}
{}".format(pathToMaskFile, thisInRaster, thisOutRaster)

    # Make the call to the command-line gdalwarp tool
    subprocess.call(commandString, terminal=True)

    # Tell the user what's going on in terms of progress.
    print("Finished {}".format(rasterFileName))

On Tue, Mar 24, 2020 at 11:42 PM Paulo Raposo <pauloj.raposo at gmail.com>
wrote:

> Hi Dani,
>
> Michele's answer is great, and she's right that scripting is ideally
> suited to this.
>
> 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.
>
> Are you okay with or experienced with programming? If so, the GDAL
> utilities (come with QGIS) can do either case (see
> https://gis.stackexchange.com/questions/245170/reclassifying-raster-using-gdal
> or
> https://gis.stackexchange.com/questions/45053/gdalwarp-cutline-along-with-shapefile
> 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.
>
> If all that makes no sense to you, no worries :) Batch processing in the
> way Michele points to should get it done too.
>
> Cheers,
> P
>
> On Tue, Mar 24, 2020 at 4:10 PM Michele M Tobias <mmtobias at ucdavis.edu>
> wrote:
>
>> Hi Dani,
>>
>> Here’s one way to do it with QGIS:
>> https://gis.stackexchange.com/questions/318175/batch-raster-calculator
>> This might be a good case for using a programming language like R or Python
>> to do the processing.
>>
>>
>>
>> Best,
>>
>> Michele
>>
>>
>>
>> *Michele Tobias, PhD*
>>
>> Geospatial Data Specialist
>>
>> DataLab: Data Science & Informatics
>>
>> Data & Digital Scholarship
>>
>> UC Davis Library
>>
>>
>>
>> 370 Shields Library
>>
>> (530)752-7532
>>
>> mmtobias at ucdavis.edu
>>
>> ORCID: 0000-0002-2954-8710 <https://orcid.org/0000-0002-2954-8710>
>>
>>
>>
>> Pronouns: she, her, hers
>>
>>
>>
>> *From:* Qgis-us-user <qgis-us-user-bounces at lists.osgeo.org> *On Behalf
>> Of *Dani Varghese
>> *Sent:* Tuesday, March 24, 2020 3:08 AM
>> *To:* qgis-us-user at lists.osgeo.org
>> *Subject:* [Qgis-us-user] raster calculator batch processing
>>
>>
>>
>> Greetings
>>
>> 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.
>>
>>
>>
>> Thanks in advance
>>
>>
>>
>> Best
>>
>> Dani
>> _______________________________________________
>> Qgis-us-user mailing list
>> Qgis-us-user at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/qgis-us-user
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-us-user/attachments/20200326/840dbd6b/attachment.html>


More information about the Qgis-us-user mailing list