我需要为测试目的创建一组(大)空间多边形。是否有算法可以创建一个保持在边界包络内的随机形状的多边形?我正在使用OGC简单的东西,所以创建知名文本的例程是最有用的,选择的语言是C#,但它并不重要。
答案 0 :(得分:1)
你的边界信封是什么形状的?如果它是一个矩形,则将随机多边形生成为[0,1] x [0,1]内的点列表,并缩放到矩形的大小。
如果信封不是矩形,事情会变得有点棘手。在这种情况下,您可以简单地通过在单位正方形内生成点并拒绝位于单位正方形部分中的任何位置而不会缩放到您选择的边界包络来获得最佳性能。
HTH
标记
补充
如果您只想要凸多边形,则可以使用凸包算法之一。由于您似乎不仅需要凸多边形,因此您可以使用圆形扫描。
但是你可能会发现沿着平行于x轴或y轴的直线扫描更简单。假设x轴。
这将生成凸多边形和非凸多边形,但非凸性将是相当有限的形式。没有入口或曲折。
另一种想法
为了避免边缘交叉并避免在单位正方形内生成随机点后进行圆形扫描,您可以:
在我的头顶,这似乎工作正常
答案 1 :(得分:1)
他们真的需要随机,还是真正的WKT呢?因为如果愿意,只需转到http://koordinates.com/并下载几个图层。
答案 2 :(得分:1)
在这里,您可以找到两个如何生成随机凸多边形的示例。它们都是Java,但应该很容易将它们重写为C#:
另一种可能的方法,基于生成一组随机点并采用Delaunay曲面细分。
通常,生成适当的随机多边形的问题并非无足轻重。