【发布时间】:2021-02-19 16:50:27
【问题描述】:
我有一些相对较大的 GeoTiff 文件(10980 x 10980 像素),它们都对应于相同的地理区域(并且具有相同的坐标参考系),并且我有大量的多边形(100,000+)对应土地包裹,我想从每个图像文件中提取与每个多边形对应的像素。目前,我这样做的方式是使用 shapely Polygons 和 rasterio.mask.mask 函数,如下所示:
for filename in image_files:
with rasterio.open(filename) as src:
for shape in shapes:
data, _ = rasterio.mask.mask(src, [shape], crop=True)
这在经验上相当缓慢。如果我预先计算了掩码索引,那么我只需要读取每个图像的整个数据一次,然后使用预先计算的索引来提取每个多边形的相关像素(我不需要它们在正确的 2-维度配置,我只需要值),这非常快。但我不知道是否有快速获取这些像素索引的方法。我知道我可以使用 rasterio 的 raster_geometry_mask 函数来获取整个图像大小的掩码,然后使用 numpy 来获取多边形内元素的索引,但是这样就不必要地构造一个 10980 x 10980 数组每个多边形来制作蒙版,这非常非常慢。
【问题讨论】:
标签: python gis raster rasterio