在 Rasterio 中 - 当仿射对象分开时如何平铺表示地理参考图像的数组?
In Rasterio - how to tile an array representing a geo-referenced image when the Affine object is separate?
我正在尝试平铺大图像(.img 格式,但可能是 geotiff),但是我已经使用 rasterio mask 裁剪了图像,其中 returns 一个蒙版数组和一个单独的仿射对象。
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
分割成固定大小的图块。我看过 rasterio 窗口阅读和写作,但这似乎依赖于具有 image.affine
属性的图像,以免丢失地理参考。
是否可以平铺掩码数组,并为每个平铺生成新的仿射?
我想你正在寻找 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_image
和 tile_affine
您就拥有了将其写入新文件所需的所有部分。
我正在尝试平铺大图像(.img 格式,但可能是 geotiff),但是我已经使用 rasterio mask 裁剪了图像,其中 returns 一个蒙版数组和一个单独的仿射对象。
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
分割成固定大小的图块。我看过 rasterio 窗口阅读和写作,但这似乎依赖于具有 image.affine
属性的图像,以免丢失地理参考。
是否可以平铺掩码数组,并为每个平铺生成新的仿射?
我想你正在寻找 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_image
和 tile_affine
您就拥有了将其写入新文件所需的所有部分。