经验证,比 gdal.Warp速度更快
import rasterio
from rasterio.mask import mask
import geopandas as gpd
# 输入数据集路径
input_path = dr
# 输出数据集路径
output_path = outraster1
# 矢量数据集路径
cutline_path = "TKXJFG2022shp"
# 打开输入数据集
with rasterio.open(input_path) as src:
# 打开矢量数据集
cutline_gdf = gpd.read_file(cutline_path)
# 裁剪栅格数据
out_image, out_transform = mask(src, cutline_gdf.geometry, crop=True)
# 更新元数据信息
out_meta = src.meta.copy()
out_meta.update({
"height": out_image.shape[1],
"width": out_image.shape[2],
"transform": out_transform
})
# 保存裁剪后的栅格数据
with rasterio.open(output_path, "w", **out_meta) as dest:
dest.write(out_image)
上述代码使用了
rasterio
库中的mask
函数,该函数可以利用矢量数据集对栅格数据进行裁剪。请确保已经正确安装并导入了rasterio
和geopandas
库。使用
rasterio
库进行裁剪操作时,首先打开输入栅格数据集和矢量数据集。然后,通过调用mask
函数并传递栅格数据集和矢量数据集的几何形状,可以实现栅格数据的裁剪。最后,更新元数据信息,并使用rasterio.open
函数将裁剪后的栅格数据保存到输出路径。