【问题标题】:Algorithm to regroup geographic points重新组合地理点的算法
【发布时间】:2020-07-15 16:25:50
【问题描述】:

我正在使用地图创建应用程序,并且必须在其上放置点。问题是当点在附近时,用户看不到差异。所以,我需要重新组合点。

我收到这样的 JSON:

[{"id": "1", "x": 253, "y": 144}, 
{"id": "2", "x": 142, "y": 355}, 
{"id": "3", "x": 175, "y": 330}, 
{"id": "4", "x": 140, "y": 5}, 
{"id": "5", "x": 307, "y": 306}, 
{"id": "6", "x": 233, "y": 304}, 
{"id": "7", "x": 212, "y": 163}, 
{"id": "8", "x": 202, "y": 163}, 
{"id": "9", "x": 204, "y": 171}]

我需要重新组合点,最大点相差 20 像素,坐标与所有其他点的平均值相同。 处理这样的 JSON:

[{"id": ["1"], "x": 253, "y": 144}, 
{"id": ["2"], "x": 142, "y": 355}, 
{"id": ["3"], "x": 175, "y": 330}, 
{"id": ["4"], "x": 140, "y": 5}, 
{"id": ["5"], "x": 307, "y": 306}, 
{"id": ["6"], "x": 233, "y": 304}, 
{"id": ["7","8","9"], "x": 206, "y": 165}]

我只需要一个算法来帮助我构建自己的代码。

感谢您给予我的所有帮助。

【问题讨论】:

  • 圆点是什么意思?你的递归函数是如何工作的?您需要详细说明。
  • 我的测试只是失败了,所以我不想麻烦你。圆点是 A 靠近 B B 靠近 C C 靠近 A
  • 如何定义两点的差异?什么是“20px 差异”?
  • 我做了一个条件:item1.id != item2.id && (item1.x >= item2.x-radius && item1.x = item2.y-radius && item1.y
  • x 和 y 位置以像素数为单位

标签: algorithm geographic-distance


【解决方案1】:

欧几里得距离是两点之间的最短路径,计算方式为

sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2))

只需从上到下遍历您的点列表,如果任意两点之间的欧几里得距离小于 20,则删除第二个点或将其与第一个点分组,这样您就不必处理再说一遍。然后,您可以根据需要计算该组的平均位置。

【讨论】:

  • 解决方案非常简单。
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
相关资源
最近更新 更多