У меня есть база данных точек широты / долготы, отправленных пользователями, и я пытаюсь сгруппировать «близкие» точки вместе. «Близость» относительно, но пока кажется, что она составляет ~ 500 футов.
Сначала казалось, что я могу просто группировать по строкам, которые имеют одинаковую широту / долготу для первых трех десятичных знаков (примерно прямоугольник 300x300, понимая, что он меняется по мере удаления от экватора).
Однако этого метода, похоже, совсем не хватает. «Близость» не может существенно отличаться от расстояния, которое представляет каждый десятичный знак. При этом не учитывается, что два местоположения могут иметь разные цифры в третьем (или любом) десятичном разряде, но все же находиться в пределах расстояния, которое представляет это место (33.1239
и 33.1240
).
Я также обдумывал ситуацию, когда точка A и точка C находятся «близко» к точке B (но не друг к другу) - должны ли они быть сгруппированы вместе? Если да, то что происходит, когда точка D находится «близко» к точке C (и нет других точек) - следует ли ее также сгруппировать. Конечно, я должен определить желаемое поведение, но как это реализовать?
Может ли кто-нибудь указать мне в правильном направлении, как это можно сделать и какие различные методы / подходы можно использовать?
Мне кажется, что я упускаю что-то очевидное.
В настоящее время данные представляют собой базу данных MySQL, используемую приложением PHP; однако я открыт для других методов хранения, если они играют ключевую роль в достижении этой цели. здесь.