从随机坐标列表中查找外边框

时间:2011-01-13 09:48:35

标签: python geometry coordinates openlayers math

我有一个巨大的坐标列表(60 000+),我还没有找到识别外边界的方法。

坐标列表非常随机,但它们定义了一些非常具体的区域。

我应该能够通过使用OpenLayers使用该列表来绘制区域,所以它们也应该按顺序。

这似乎相对容易破解,但已证明非常具有挑战性。

这个问题的最佳方法是什么?

  • 海基

3 个答案:

答案 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/找到了一个非常好的脚本。

非常感谢所有参与者!