我有两个光栅(xarray dataarray),地理位置稍有不匹配,raster1的像素与raster2的多个像素重叠。我试图对raster2中的重叠像素进行一些计算。下面的代码生成一个示例:
import xarray as xr
LC_val = [[4, 4, 3, 4],
[3, 3, 3, 6],
[3, 3, 3, 9]]
VI_val = [[ 10, 20, 30, 40],
[ 50, 60, 70, 80],
[ 90, 100, 110, 120]]
x_lc = [-1974345., -1974315., -1974285., -1974255.]
y_lc = [3754475., 3754445., 3754415.]
x_vi = [-1974371.7598, -1974341.7598, -1974311.7598, -1974281.7598]
y_vi = [3754465.3842, 3754435.3842, 3754405.3842]
raster1 = xr.DataArray(LC_val,dims=('y','x'),coords={'x': x_lc,'y': y_lc})
raster2 = xr.DataArray(VI_val,dims=('y','x'),coords={'x': x_vi,'y': y_vi})
如果我们把它们画在一起,看起来像:
例如,让我们聚焦图中的像素A。它与光栅2的四个像素重叠(其中三个可见,一个不可见)。我想取这四个像素的加权平均值,并将其分配给具有类似于raster1中像素A的坐标的新光栅。权重基于每个像素(光栅2中的像素1-4)与光栅1中的像素A重叠的分数
根据我目前的搜索,有几种方法可以做到这一点:
在每个像素上创建一个for循环。这不是一个好方法,因为我有数百万像素
将raster1转换为meshgrid多边形,并使用rasterio等包执行分区统计。我不确定这是否是一种有效的方法,因为我们正在处理数百万个多边形
有更好的方法吗?请注意,每个光栅有数百万像素,范围和尺寸不同。然而,像素大小(30米)和投影系统是相似的
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐