Как сгруппировать близкие адреса?

Мне нужно сгруппировать адреса с учетом их расстояний. Допустим, у меня есть список из 8 адресов. 5 в Нью-Йорке и 3 в Нью-Джерси. Из этих 5 в Нью-Йорке 3 находятся недалеко от МЕТ и 2 - от ВТЦ. Эти трое в Нью-Джерси составили бы одну группу, те, кто был близок к МЕТ, — другую, а также те, кто был близок к ВТЦ.

Я хотел бы отправить этот список адресов и получить наиболее близкие друг к другу, сгруппированные. Есть ли какой-либо API от Google Maps или Bing Maps, который мог бы это сделать? Если нет, у вас есть какие-либо предложения о том, как решить эту проблему?

В приведенном ниже вопросе упоминается множество способов расчета расстояния, но мне интересно, есть ли что-то уже созданное (и доступное) от этих крупных компаний. Я не хотел бы пересчитывать каждый адрес в списке каждый раз, когда добавляется новый.

Как сгруппировать точки широты/долготы, которые «близки» друг к другу?

Кроме того, есть еще одна проблема, которая не была затронута в вышеупомянутом вопросе... Один адрес может быть близким к группе и нескольким другим группам. Например:

введите здесь описание изображения

В этом примере я выделил как минимум 4 группы. B образует одну «близкую группу» с A/C, а также с C/F, A/E/G и E/F/D/H. Поэтому я также хотел бы знать эти переменные. К какой группе адрес ближе, или хотя бы я думал об ограничении групп по количеству участников. В моем примере, используя мой предложенный подход, B будет частью либо КРАСНОЙ, либо ЧЕРНОЙ группы.

РЕДАКТИРОВАТЬ: Кто бы ни проголосовал за вопрос, не могли бы вы объяснить, почему? Что можно улучшить? Что не так просто понять? Спасибо.


person eestein    schedule 15.05.2015    source источник
comment
en.wikipedia.org/wiki/Cluster_analysis   -  person AakashM    schedule 15.05.2015
comment
@AakashM Спасибо, я смотрю на это   -  person eestein    schedule 15.05.2015
comment
Этот вопрос достаточно широк. Если вы ищете алгоритм, который будет реализован, возможно, сайт Programers.se открыт для этого вопроса, но сначала проверьте их метаданные и справку.   -  person rene    schedule 18.05.2015
comment
@rene Спасибо, но я не согласен. Вопрос кажется довольно конкретным для меня (конечно). У меня есть конкретная проблема (группировка близких адресов), на которую я не знаю ответа. И я даже получил здесь несколько хороших предложений, таких как кластерный анализ и друг, который удалил свой ответ.   -  person eestein    schedule 18.05.2015
comment
Конечно, я только пытаюсь объяснить вам отрицательные голоса, как вы и просили в мете.   -  person rene    schedule 18.05.2015
comment
@rene Я понимаю и уважаю твою точку зрения. Но я не думаю, что это широко. Но я ценю ваше время.   -  person eestein    schedule 18.05.2015
comment
@Phpdevpad все в порядке. Когда я смогу заставить программное обеспечение работать, я сообщу о результатах. :)   -  person eestein    schedule 18.05.2015
comment
Для StackOverflow этот вопрос является широким. Это потому, что вопрос концептуальный. Кажется, это не дает конкретных ответов на вопросы программирования. Вы даже не указали язык программирования. Я согласен, что, вероятно, было бы лучше на программистах или, возможно, на КС.   -  person SunSparc    schedule 20.05.2015


Ответы (1)


Вы можете попробовать quadkey и использовать его, сначала посещая близлежащие точки, подобно кривой заполнения пространства. Рассматривайте точки как двоичный файл и чередуйте его. Рассматривайте индекс как число с основанием 4. Затем рассортируйте числа.

person Gigamegs    schedule 15.05.2015
comment
Эй, спасибо за ваш ответ. Можно немного подробнее? Что вы подразумеваете под: рассматривать точки как двоичный файл и чередовать его. ты потерял меня там. Еще раз спасибо. - person eestein; 18.05.2015
comment
Преобразуйте координату в двоичную и чередуйте ее. Обычно двоичное число представляет собой нечто квадратичное!? - person Gigamegs; 18.05.2015
comment
Хорошо! Спасибо за это. Я добавлю это к своим исследованиям. Я обновлю эту тему своим решением, как только решу его :) Спасибо! - person eestein; 18.05.2015