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:
In this recipe, we'll take two overlapping images and give them the same extents.
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.
The only step in QGIS is to run the newly created processing command. To do this, we need to perform the following steps:
processing
module:import processing
processing.runalg("script:unifyextentandresolution","/qgis_data/rasters/Image2.tif;/qgis_data/rasters/Image1.tif",-9999,"/qgis_data/rasters",True)
Image1_unified.tif Image2_unfied.tif
The following screenshot shows the common extent for the rasters, by setting the transparency of Image1_unified.tif
to the pixel 0,0,0
:
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.