pic*_*olo 1 python geometry list
考虑到过去在stackoverflow中提供了解决方案,我要求python代码计算带有(x,y)坐标列表的多边形区域,这似乎有点奇怪.但是,我发现所提供的所有解决方案都对给定的(x,y)坐标列表的顺序很敏感.例如,使用下面的代码查找多边形的区域:
def area(p):
return 0.5 * abs(sum(x0*y1 - x1*y0
for ((x0, y0), (x1, y1)) in segments(p)))
def segments(p):
return zip(p, p[1:] + [p[0]])
coordinates1 = [(0.5,0.5), (1.5,0.5), (0.5,1.5), (1.5,1.5)]
coordinates2 = [(0.5,0.5), (1.5,0.5), (1.5,1.5), (0.5,1.5)]
print "coordinates1", area(coordinates1)
print "coordinates2", area(coordinates2)
Run Code Online (Sandbox Code Playgroud)
这回来了
coordinates1 0.0
coordinates2 1.0 #This is the correct area
Run Code Online (Sandbox Code Playgroud)
对于同一组坐标但具有不同的顺序.我如何纠正这个问题,以便获得非交叉全多边形的区域,其中包含我想要制作成非交叉多边形的随机(x,y)坐标列表?
编辑:我现在意识到可以存在来自一组坐标的多个非交叉多边形.基本上我使用scipy.spatial.Voronoi来创建Voronoi单元格,并且我希望在将坐标提供给scipy Voronoi函数后计算单元格的面积 - 遗憾的是,函数并不总是按照顺序输出坐标将允许我计算正确的面积.