协调多边形点

时间:2011-11-14 18:58:04

标签: algorithm google-maps gis polygon

我有一大套坐标,包括:

59.284 18.42
59.401 18.078
58.894 17.854
59.277 18.742
59.219 18.186
59.472 18.108

纬度坐标的分辨率为0.001,经度为0.002。

每个点都与一个矩形区域相关联。对于点(x,y),该区域的纬度侧范围从x到x + 0.01,经度为y到y + 0.02。

每个点都与1到10之间的值相关联。

我想要做的是以多边形的形式将相邻区域组合在一起。多边形将定义构成其外边界的线,如果它是形状上的圆环,则还需要定义内边界。

是否有任何算法或工具可以帮助我这样做?

我可以用python,csharp,java或c ++编程。

感谢您的帮助,

巴里

4 个答案:

答案 0 :(得分:1)

对于与值1到10相关联的每组坐标

  1. 将坐标缩放为整数值(乘以1000)以避免浮点比较
  2. 将坐标转换为矩形多边形
  3. 'union'这些多边形(使用ClipperBoost GeometryBoost Polygon)合并相邻的多边形

答案 1 :(得分:0)

我不知道你的整个问题的答案,但我建议将你的坐标缩放1000,以便在可能的情况下处理整数。为了测试邻接,你需要进行精确的算术和比较,否则你必须进行所有比较才能“足够接近”(epsilon值)。

答案 2 :(得分:0)

您可以根据自己的需要调整contour finding algorithm。在线提供了大量文章和几个程序。

article in a CFD forum中的答案#11总结了一种方法如下:

  

(1)假设你有一个可以绘制直线段的绘图包。 (2)在要绘制的域上构建一个带有(x,y)坐标的精细网格。 (3)通过计算函数或者可能插值一些离散近似来评估每个节点处的功能。 (4)选择要绘制的coutour级别列表。 (5)对于网格的每个矩形:(a)找到角上的最大和最小函数值。 (b)忽略最大值和最小值范围之外的轮廓水平。 (c)对于每个可接受的轮廓和每个边,找到轮廓水平和连接角落处的功能值的直线的交点的坐标值。 (d)绘制连接坐标的线段具有相等的轮廓值。

注意,答案#6-#10简要介绍如何使用gri,PGPLOT,matlab和Plotmtv进行等高线绘图。

答案 3 :(得分:0)