Лучше всего разделить все ваши точки на более мелкие наборы на основе координат широты и долготы, просто наложив 10x10 или 100x100 me sh на область, из которой вы захватили точки.
Один раз готово, у вас будет около нескольких тысяч или точек в каждой ячейке me sh, что можно обрабатывать традиционными методами.
Разделение на me sh будет линейным O (N), где N - это количество точек, и сортировка каждой ячейки не займет много времени по сравнению с применением алгоритмов кластеризации ко всему набору данных.