如何创建与点是否在多边形的numpy数组中相对应的numpy数组?

2024-04-24 10:51:02 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的尝试,但我得到了错误 "AttributeError: 'numpy.ndarray' object has no attribute 'contains'"。你知道吗

如果你们中有人能帮助我理解如何在这段代码中定义'y',这样它就是一个numpy数组,1s对应于包含指定点的多边形索引,0s对应于不包含指定点的多边形索引,我将不胜感激。你知道吗

polygonss=[]
for i in range(0, len(verts)):
    polygonc = Polygon(verts[i])
    print (polygonc)
    polygonss.append(polygonc)
print (polygonss)
p=np.array(polygonss)
print (p)
vertsf=meshinformation_fine.celltoverticesandcentroid(0)[0]
point = Point(vertsf[0])
y=np.where(p.contains(point), 0, 1)
print (y)

Tags: numpyobject错误np多边形pointattributeerrorhas
2条回答

首先,错误信息实际上是阻止你成功的原因。.ndarray object只是没有那个属性contains

它将您的问题呈现给其中一个solutions,讨论如何检查元素是否在numpy数组中。你知道吗

如果我理解正确的话,有一件事可以代替contains:

y = np.zeros(len(p))
for counter in range (0, len(p)):
    if point in p[counter]:
        y[counter] = 1 

注意:如果您为您的变量和预期输出添加示例性值,将会有所帮助。你知道吗

numpy对象数组在这里对您不是特别有用,您也可以使用列表来完成此过程

y = [p.contains(point) for p in polygonss]

但是,如果你对大量的点这样做,那么我鼓励你阅读geopandas,它使你能够对几何图形进行矢量化计算,并将它们应用于表格数据。你知道吗

相关问题 更多 >