小编典典

如何根据shapefile屏蔽特定的数组数据

python

这是我的问题:

  • 2-d numpy数组数据表示每个网格空间的某些属性
  • shapefile作为研究区域(如城市)的行政区划。

例如:

http://i4.tietuku.com/84ea2afa5841517a.png

整个区域具有40x40的网格网络,我想提取紫色区域内的数据。换句话说,我想将管理边界之外的数据屏蔽到np.nan中。

我的早期尝试

我标记了网格编号,然后将特定的数组数据选择到np.nan中。

http://i4.tietuku.com/523df4783bea00e2.png

 value[0,:] = np.nan
 value[1,:] = np.nan
       .
       . 
       .
       .

有人可以告诉我一种更容易实现目标的方法吗?

在这里找到了
可以将栅格数据绘制到shapefile中的答案,但是数据本身没有改变。


阅读 213

收藏
2021-01-20

共1个答案

小编典典

步骤1.栅格化shapefile

创建一个可以确定坐标点是否(x, y)在该区域中的函数。有关如何将shapefile栅格化为与目标蒙版相同尺寸的数组的更多详细信息,请参见此处

def point_is_in_mask(mask, point):
    # this is just pseudocode
    return mask.contains(point)

步骤2.创建您的面具

mask = np.zeros((height, width))
value = np.zeros((height, width))
for y in range(height):
    for x in range(width):
        if not point_is_in_mask(mask, (x, y)):
            value[y][x] = np.nan
2021-01-20