Hi there guys!!!
Let’s suppose we want to determine the extent of a raster file and we want to use GDAL and Python. How can we do that?
Let’s start importing GDAL:
from osgeo import gdal
Then we need t0 open the raster file:
gdalSrc = gdal.Open('/foo/bar/filename')
To finish getting what we need, let’s get our affine transform coefficients with the following:
upx, xres, xskew, upy, yskew, yres = gdalSrc.GetGeotransform()
Where upx is the upper pixel x, xres is the pixel width and xskew is the shear in the x direction as we can see in the following picture (https://en.wikipedia.org/wiki/Affine_transformation):
Let’s go forward. The variable upy is the upper pixel y, yres is the pixel height and yskew is the shear in the y direction as we can see in the following picture (https://en.wikipedia.org/wiki/Affine_transformation):
Understanting the variables we can use the documentation obtained at http://www.gdal.org/gdal_datamodel.html to get the following relationship:
Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2) Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)
Where GT(2) is the xskew and GT(4) is the yskew.
With all of this together, we can make the following code snippet to accomplish our mission:
from osgeo import gdal, ogr gdalSrc = gdal.Open('/foo/bar/filename') upx, xres, xskew, upy, yskew, yres = gdalSrc.GetGeotransform() cols = gdalSrc.RasterXSize rows = gdalSrc.RasterYSize ulx = upx + 0*xres + 0*xskew uly = upy + 0*yskew + 0*yres llx = upx + 0*xres + rows*xskew lly = upy + 0*yskew + rows*yres lrx = upx + cols*xres + rows*xskew lry = upy + cols*yskew + rows*yres urx = upx + cols*xres + 0*xskew ury = upy + cols*yskew + 0*yres
I hope this can be useful to you guys.