A common remote sensing operation is to get the raster data value at a specified coordinate. In this recipe, we'll query the data value in the center of the image. It so happens that the raster layer will calculate the center coordinate of its extent for you.
As with many recipes in this chapter, we will again use the SatImage raster, which is available at https://geospatialpython.googlecode.com/files/SatImage.zip.
Place this raster in your /qgis_data/rasters
directory.
We will load the layer, get the center coordinate, and then query the value. To do this, we need to perform the following steps:
rasterLyr = QgsRasterLayer("/qgis_data/rasters/satimage.tif", "Sat Image") rasterLyr.isValid()
QgsRectangle extent
object, which will return a tuple with the x and y values:c = rasterLyr.extent().center()
identify()
method:qry = rasterLyr.dataProvider().identify(c, QgsRaster.IdentifyFormatValue)
qry.isValid()
qry.results()
{1: 17.0, 2: 66.0, 3: 56.0}
This recipe is short compared to others, however, we have touched upon several portions of the PyQGIS raster API. First start with a raster layer and get the extents; we then calculate the center and create a point at the center coordinates, and lastly we query the raster at that point. If we were to perform this same, seemingly simple operation using the Python API of the underlying GDAL library, which does the work, this example would have be approximately seven times longer.