我有一个卫星图像栅格文件和一个Shapefile,该文件由几个离散的多边形组成。我想从栅格文件中为每个这些多边形分别提取(或遮罩)Numpy图像阵列。
当前,我使用Fiona导入Shapefile并创建多边形列表。一次使用 all 面罩屏蔽栅格文件没有问题。但是,当我尝试使用列表中的单个多边形时,出现错误:“ 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数组?
谢谢!
答案 0 :(得分:0)
您必须确保shapefile和栅格图像具有相同的crs: 尝试打印它们。