2

我正在尝试平铺一个大图像(.img 格式,但可能是 geotiff),但是我已经使用rasterio mask裁剪了图像,它返回一个蒙版数组和一个单独的 Affine 对象。

from rasterio import mask
import fiona

image = rasterio.open(image_path)
with fiona.open(shapefile_path, 'r') as shapefile:
    cropping_polygon = [polygon['geometry'] for polygon in shapefile]

smaller_image, smaller_image_affine = mask.mask(image, cropping_polygon, crop=True)

现在我想将它们smaller_image分成固定大小的图块。我看过光栅窗口读写,但这似乎依赖于具有image.affine属性的图像,以免丢失地理参考。

是否可以平铺蒙版数组,并为每个平铺生成一个新的仿射?

4

1 回答 1

2

我想你正在寻找rasterio.windows.transform.

tile_window = rasterio.windows.Window(0, 0, 256, 256)
tile_affine = rasterio.windows.transform(tile_window, smaller_image_affine)
tile_image = smaller_image[(slice(None),) + tile_window.toslices()]

然后,tile_imagetile_affine就拥有了将其写入新文件所需的所有部分。

于 2017-10-18T03:45:10.760 回答