多边形到二进制掩码

Polygon to binary mask

我使用 shapely.geometry 制作了一个多边形,然后将其放入 geopandas 数据框中。 我制作了一个与多边形区域大小相同的数组

我怎样才能把这个多边形变成一个二元掩码,这样我也可以把我的数组塑造成一个多边形?

感谢您的宝贵时间。

我明白了。不是最有效的方法,但它奏效了。

首先,我在网格上制作了一个蒙版,对不在多边形中的数据设置了 False(使用包含方法)。 其次,我将数组乘以该掩码,然后将 0 作为 NaN。

这是我的代码示例:

# g is anarray with flatten x y coordinates
g = np.stack([
        xi.flatten(),
        yi.flatten(),]) 

# Function to check if in polygon, return bool
def func1d(row, args):
    return args.contains(Point(row[1], row[0]))

# Take mask array and apply along axis, poly is the polygon that we want to use
mask = np.apply_along_axis(func1d, 1, g, args=poly)
g[:,2] = g[:,2]*mask
g[g==0]=[np.NaN] # get 0 be nans (should be a better way to do this but was ok here)
output = g[~np.isnan(g).any(axis=1)] # filter to only save the polygon data