这是我的尝试,但出现错误
"AttributeError: 'numpy.ndarray' object has no attribute 'contains'"
。
如果有任何人可以帮助我理解如何在这段代码中定义'y'
,使其成为一个numpy数组,其1对应于包含指定点的多边形的索引,而0对应于包含指定点的多边形。不包含指定点的多边形,我将不胜感激。
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)
答案 0 :(得分:1)
numpy对象数组在这里对您不是特别有用,您也可以使用列表理解来完成该过程
y = [p.contains(point) for p in polygonss]
但是,如果您要在大量点上执行此操作,那么我建议您阅读geopandas,它可以使您对几何图形进行矢量化计算并将其应用于表格数据。
答案 1 :(得分:0)
首先,错误消息实际上是使您无法成功的原因。 .ndarray object
只是没有该属性contains
将您的问题提交给其中一个solutions,讨论如何检查元素是否在numpy数组中。
如果我理解正确的话,那行后面的内容就是可以代替它工作的东西:
y = np.zeros(len(p))
for counter in range (0, len(p)):
if point in p[counter]:
y[counter] = 1
注意:如果您要为变量和示例性预期输出添加示例性值,这将有所帮助。