使用rasterio.mask裁剪栅格图像时为何多出一行一列?
问题原因与解决方案
核心原因:栅格网格未严格对齐
你的猜测完全正确,问题本质就是两个栅格的像素网格没有精准对齐。具体来说:
- Raster1的
bounds是基于自身像素网格计算的边界,但NLCD(Raster2)的像素原点虽然和Raster1处于同一坐标系,却存在微小偏移,导致Raster1的边界框刚好与NLCD的额外一行/列像素产生交集。 rasterio.mask的裁剪逻辑是保留所有与边界框有重叠的像素,哪怕只是边缘接触,这就会多包含一行/列像素。
解决办法
方法1:强制匹配Raster1的栅格参数
直接复用Raster1的transform和shape,让输出栅格和Raster1完全一致,彻底避免对齐问题:
import rasterio from rasterio.warp import Resampling src = rasterio.open('Raster1.tif') # 获取Raster1的关键参数 target_transform = src.transform target_shape = src.shape target_crs = src.crs with rasterio.open('Raster2.tif') as src2: # 读取时强制对齐到Raster1的网格 aligned_data = src2.read( out_shape=(src2.count, target_shape[0], target_shape[1]), resampling=Resampling.nearest, # 分类数据推荐用最近邻采样 transform=target_transform, crs=target_crs ) # 更新输出元数据 out_meta = src2.meta.copy() out_meta.update({ 'height': target_shape[0], 'width': target_shape[1], 'transform': target_transform }) # 保存对齐后的结果 with rasterio.open('Raster3_aligned.tif', 'w', **out_meta) as dst: dst.write(aligned_data)
方法2:微调边界框排除额外像素
如果坚持用rasterio.mask,可以手动缩小边界框,确保只覆盖Raster1实际包含的NLCD像素:
import rasterio from rasterio.mask import mask from shapely.geometry import box src = rasterio.open('Raster1.tif') original_bounds = src.bounds pixel_size = src.transform[0] # 获取像素分辨率 # 给边界框各边减去半个像素,避免包含边缘的冗余像素 adjusted_bounds = ( original_bounds[0] + pixel_size/2, original_bounds[1] + pixel_size/2, original_bounds[2] - pixel_size/2, original_bounds[3] - pixel_size/2 ) geometry = box(*adjusted_bounds) with rasterio.open('Raster2.tif') as src2: cropped_data, cropped_transform = mask(src2, [geometry], crop=True) out_meta = src2.meta.copy() out_meta.update({ 'height': cropped_data.shape[1], 'width': cropped_data.shape[2], 'transform': cropped_transform }) with rasterio.open('Raster3_cropped.tif', 'w', **out_meta) as dst: dst.write(cropped_data)
补充检查项
- 先确认两个栅格的分辨率是否完全一致:用
src.res和src2.res查看,若存在细微差异(比如NLCD是30m,Raster1是30.0001m),也会引发对齐问题。 - 采样方式选择:分类数据(如NLCD)优先用
Resampling.nearest,避免改变分类值;连续数据可选用bilinear或cubic提升平滑度。
内容的提问来源于stack exchange,提问作者Vance
相关产品推荐
相关产品推荐

