Алгоритм перегруппировки географических c точек - PullRequest
0 голосов
/ 09 июля 2020

Я создаю приложение, используя карту, и мне нужно разместить на ней точки. Проблема в том, что когда точки находятся рядом, пользователь не видит разницы. Итак, мне нужно перегруппировать точки.

Я получаю такие 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}]

Мне просто нужен алгоритм, который поможет мне построить свой собственный код.

Спасибо за всю помощь, которую вы можете мне оказать.

1 Ответ

0 голосов
/ 09 июля 2020

Евклидово расстояние - это кратчайший путь между двумя точками и рассчитывается как

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

Просто переберите свой список точек сверху вниз, и если евклидово расстояние между любыми двумя точками меньше 20 , удалите вторую точку или сгруппируйте ее с первой, чтобы вам не пришлось обрабатывать ее снова. Затем вы можете рассчитать среднее местоположение этой группы, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...