inPath 输入影像
outPath 输出影像
times 重采样多少倍,一般下采样比较多,这里是下采样

import os
from osgeo import gdal

def resample(inPath, outPath, times):
	in_ds = gdal.Open(inPath)
	out_rows = int(in_ds.RasterYSize / times)
	out_columns = int(in_ds.RasterXSize / times)
	num_bands = in_ds.RasterCount

	gtiff_driver = gdal.GetDriverByName('GTiff')
	out_ds = gtiff_driver.Create(outPath, out_columns, out_rows, num_bands)

	out_ds.SetProjection(in_ds.GetProjection())
	geotransform = list(in_ds.GetGeoTransform())
	geotransform[1] *= times
	geotransform[5] *= times
	out_ds.SetGeoTransform(geotransform)

	data = in_ds.ReadRaster(
	    buf_xsize=out_columns, buf_ysize=out_rows)
	out_ds.WriteRaster(0, 0, out_columns, out_rows, data)
	out_ds.FlushCache()
	for i in range(num_bands):
	    out_ds.GetRasterBand(i + 1).ComputeStatistics(False)

	out_ds.BuildOverviews('average', [2, 4, 8, 16])
	del out_ds
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐