如何用python判断某点被包含在一个多边形中

参考自/questions/21566610/crop-out-partial-image-using-numpy-or-scipy

判断某点是否处于某个多边形内或边界上在matlab中可以方便地用inpolygon函数达到,python的某些模块中有类似的功能。

import numpy as np

from matplotlib.path import Path

xc = np.array([219.5,284.8,340.8,363.5,342.2,308.8,236.8,214.2])

yc = np.array([284.8,220.8,203.5,252.8,328.8,386.2,382.2,328.8])

xycrop=np.vstack((xc,yc)).T #这里的vstack就是垂直叠加组合形成一个新的数组,T是转置

rnd=np.random.randn(50)*50.0+250.0

rnd=rnd.reshape(25,2)

pth=Path(xycrop,closed=False)

mask=pth.contains_points(rnd) # mask里包含了对应点是否包含在多边形中的逻辑数值

可以用rnd[mask,:]获得包含在多边形内的点,用rnd[~mask,:]获得在外面的点。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注