基于rasterio 给出裁剪自定义大小的遥感影像代码,如将一张10000*10000的影像裁剪成512*512且overlap为0.1的影像。
时间: 2024-03-06 13:46:31 浏览: 20
以下是基于rasterio的裁剪自定义大小的遥感影像代码:
``` python
import rasterio
from rasterio.windows import Window
# 打开遥感影像
with rasterio.open("path/to/image.tif") as src:
count = src.count
height = src.height
width = src.width
transform = src.transform
crs = src.crs
# 定义裁剪大小
crop_size = 512
overlap = int(crop_size * 0.1)
# 计算裁剪后影像的行列数
rows = (height - overlap) // (crop_size - overlap)
cols = (width - overlap) // (crop_size - overlap)
# 循环裁剪影像
for i in range(rows):
for j in range(cols):
# 计算裁剪的起始点坐标
x = j * (crop_size - overlap)
y = i * (crop_size - overlap)
# 定义裁剪窗口
window = Window(x, y, crop_size, crop_size)
# 读取裁剪窗口内的影像数据
crop = src.read(window=window)
# 构建裁剪影像的元数据
meta = src.meta.copy()
meta.update({
'height': crop_size,
'width': crop_size,
'transform': rasterio.windows.transform(window, transform)})
# 保存裁剪影像
with rasterio.open(f"crop_{i}_{j}.tif", 'w', **meta) as dst:
dst.write(crop)
```
此代码将遥感影像分割为指定大小的小块,并在块之间重叠一定数量的像素。您可以根据需要调整裁剪大小和重叠数量。