I'm trying to resample a GeoTIFF file to match another raster layer using python GDAL package. Most of the ways I found online is to use gdalwarp resample data from the command line. Is there a way to get cell resolution inside of python script and do the resample process inside of the python script? Maybe things like:
disout.SetGeoTransform(diskin.GetGeoTransform())
Answer
I found that the easiest way is to create a new raster file with dimensions equal to the reference file, SetGeoTransofrm and SetProjection of the new raster file to match the reference file then re-project the file and output, sample code shown below:
from osgeo import gdal, gdalconst
inputfile = #Path to input file
input = gdal.Open(inputfile, gdalconst.GA_ReadOnly)
inputProj = input.GetProjection()
inputTrans = input.GetGeoTransform()
referencefile = #Path to reference file
reference = gdal.Open(referencefile, gdalconst.GAReadOnly)
referenceProj = reference.GetProjection()
referenceTrans = reference.GetGeoTransform()
bandreference = reference.GetRasterBand(1)
x = reference.RasterXSize
y = reference.RasterYSize
outputfile = #Path to output file
driver= gdal.GetDriverByName('GTiff')
output = driver.Create(outputfile,x,y,1,bandreference.DataType)
output.SetGeoTransform(referenceTrans)
output.SetProjection(referenceProj)
gdal.ReprojectImage(input,output,inputProj,referenceProj,gdalconst.GRA_Bilinear)
del output
No comments:
Post a Comment