Rasterio Geotiff协调翻译

时间:2016-10-08 18:21:24

标签: python gdal geotiff rasterio

我有一些geotiff文件,但坐标略有偏差。我想使用rasterio的API(或其他python geo API,如pygdal)来几何转换(移位)图像。例如,如何移动图像的坐标' north'以一个像素宽度。

当使用像qgis这样的工具显示时,图像应该完全相同,但向上移动几个像素。

1 个答案:

答案 0 :(得分:1)

修改geotiff的地理配准是一项非常简单的任务。我将展示如何使用gdal python模块来完成它。首先,您应该查看GDAL data model,特别关注' 仿射地理转换'。

我会假设您的光栅没有倾斜或旋转,因此您的地理转换看起来像

gt = (X_topleft, X_resolution, 0, Y_topleft, 0, Y_resolution)

使用此地理转换,栅格坐标(0,0)的左上角位于(X_topleft, Y_topleft)

要移动栅格位置,您需要更改X_topleftY_topleft

import gdal

# open dataset with update permission
ds = gdal.Open('myraster.tif', gdal.GA_Update)
# get the geotransform as a tuple of 6
gt = ds.GetGeoTransform()
# unpack geotransform into variables
x_tl, x_res, dx_dy, y_tl, dy_dx, y_res = gt

# compute shift of 1 pixel RIGHT in X direction
shift_x = 1 * x_res
# compute shift of 2 pixels UP in Y direction
# y_res likely negative, because Y decreases with increasing Y index
shift_y = -2 * y_res

# make new geotransform
gt_update = (x_tl + shift_x, x_res, dx_dy, y_tl + shift_y, dy_dx, y_res)
# assign new geotransform to raster
ds.SetGeoTransform(gt_update)
# ensure changes are committed
ds.FlushCache()
ds = None