Creating a common extent for rasters

If you are trying to compare two raster images, it is important that they have the same extent and resolution. Most software packages won't even allow you to attempt to compare images if they don't have the same extent. Sometimes, you have images that overlap but do not share a common extent and/or are of different resolutions. The following illustration is an example of this scenario:

Creating a common extent for rasters

In this recipe, we'll take two overlapping images and give them the same extents.

Getting ready

You can download two overlapping images from https://geospatialpython.googlecode.com/svn/overlap.zip.

Unzip the images and place them in your /qgis_data/rasters directory.

You will also need to download the following processing script from:

https://geospatialpython.googlecode.com/svn/unify_extents.zip

Unzip the contents and place the scripts in your .qgis2processingscripts directory, found within your user directory. For example, on a Windows 64-bit machine, the directory will be C:Users<username>.qgis2processingscripts, replacing <username> with your username.

Make sure you restart QGIS. This script is a modified version of the one created by Yury Ryabov on his blog at http://ssrebelious.blogspot.com/2014/01/unifying-extent-and-resolution-of.html.

The original script used a confirmation dialog that required user interaction. The modified script adheres to the Processing Toolbox programming conventions and allows you to use it programmatically as well.

How to do it...

The only step in QGIS is to run the newly created processing command. To do this, we need to perform the following steps:

  1. Start QGIS.
  2. From the Plugins menu, select Python Console.
  3. Import the processing module:
    import processing
    
  4. Run the newly added processing algorithm, specifying the algorithm name, path to the two images, an optional no data value, an output directory for the unified images, and a Boolean flag to load the images into QGIS:
    processing.runalg("script:unifyextentandresolution","/qgis_data/rasters/Image2.tif;/qgis_data/rasters/Image1.tif",-9999,"/qgis_data/rasters",True)
    
  5. In the QGIS table of contents, verify that you have two images named:
    Image1_unified.tif
    Image2_unfied.tif
    

How it works...

The following screenshot shows the common extent for the rasters, by setting the transparency of Image1_unified.tif to the pixel 0,0,0:

How it works...

If you don't use the transparency setting, you will see that both images fill the non-overlapping areas with no data within the minimum bounding box of both extents. The no data values, specified as -9999, will be ignored by other processing algorithms.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset