我有一个巨大的坐标列表(60 000+),我还没有找到识别外边界的方法。
坐标列表非常随机,但它们定义了一些非常具体的区域。
我应该能够通过使用OpenLayers使用该列表来绘制区域,所以它们也应该按顺序。
这似乎相对容易破解,但已证明非常具有挑战性。
这个问题的最佳方法是什么?
答案 0 :(得分:4)
您在寻找convex hull吗?
答案 1 :(得分:1)
如果你只想要边界框,那就很容易了:
min_x = MAX_INT;
min_y = MAX_INT;
max_x = MIN_INT;
max_y = MIN_INT;
for p in points:
if p.x < min_x then min_x = p.x;
if p.y < min_y then min_y = p.y;
if p.x > max_x then max_x = p.x;
if p.y > max_y then max_y = p.x;
如果您的平台上没有简单的等效MAX_INT和MIN_INT,只需选择列表中的第一个。它可能不那么“漂亮”的代码,但它也可能更快,无意义的数量。
当然,如果您的数据以某种显着的方式进行排序,那么您可以做一些比迭代超过60k项目和执行240k比较更聪明的事情。 (请记住,为此目的以某种显着的方式订购60k点可能不会为此付出代价。)
答案 2 :(得分:1)
凸壳是我一直在寻找的主题。我从http://code.activestate.com/recipes/66527-finding-the-convex-hull-of-a-set-of-2d-points/找到了一个非常好的脚本。
非常感谢所有参与者!