繁体   English   中英

在Python中使用Rasterio遮罩的重叠错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM