假设我有一个带点a,b,c,d的多边形
sample = Polygon(((10, 10), (10, 20), (20, 10), (20, 20)))
有人能告诉我如何找到它的邻居而不是斜对面的点。在例子中,如果我在(10,10)中,我需要得到(10,20)和(20,10)不得(20,20)。任何帮助将不胜感激。
答案 0 :(得分:1)
来自shapely
documentation:
Polygon构造函数有两个位置参数。第一个是(x,y [,z])点元组的有序序列,并且被处理,与LinearRing情况完全相同。
此外,多边形边界不能自相交 因此,点的邻居是多边形定义之前和之后的点。
通过外部和内部属性访问组件环。
list(polygon.exterior.coords)
返回:
[(10, 10), (10, 20), (20, 10), (20, 20)]
角点的邻居是它之前和之后的点;我们需要以循环方式处理这个点列表:
def get_two_neighbors(point, polygon):
"""retrieve the two neighboring points of point in the polygon
:point: a tuple representing a point of the polygon
:polygon: a shapely Polygon
return: a tuple of the two points immediately neighbors of point
"""
points = list(polygon.exterior.coords)
ndx = points.index(point)
two_neighbors = points[(ndx-1)%len(points)], points[(ndx+1)%len(points)]
return two_neighbors
在参考示例中:
sample = Polygon(((10, 10), (10, 20), (20, 10), (20, 20)))
get_neighbors((10, 10), polygon)
返回:
((20, 20), (10, 20))