[英]Overlap error using Rasterio mask in Python
我有一个卫星图像栅格文件和一个由几个离散多边形组成的Shapefile。 我想从栅格文件中为每个这些多边形分别提取(或遮罩)Numpy图像阵列。
目前,我使用Fiona导入Shapefile并创建多边形列表。 我可以一次使用所有多边形屏蔽栅格文件。 但是,当我尝试使用列表中的单个多边形时,出现错误:“ ValueError:输入形状不与栅格重叠。” 尽管先前获得了成功的结果,并且两个文件都使用相同的CRS。
import rasterio
import shapefile
import fiona
import numpy as np
with fiona.open("test.shp", "r") as shapefile:
features = [feature["geometry"] for feature in shapefile]
features = [x for x in features if x is not None]
这有效:
with rasterio.open('sat_img_B01.jp2') as src:
out_image, out_transform = rasterio.mask.mask(src, features,
crop=True)
这不起作用(WindowError:窗口不相交,ValueError:输入形状不与栅格重叠):
index = 0
with rasterio.open('sat_img_B01.jp2') as src:
out_image, out_transform = rasterio.mask.mask(src, [features[index]], crop=True)
我想我缺少基本的东西! 是否有一种优雅的方法可以从光栅图像中提取列表“特征”中的每个多边形作为单独的图像文件/ numpy数组?
谢谢!!
您必须确保shapefile和栅格图像都具有相同的crs:尝试打印它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.