Вы можете использовать приближение followig (поскольку 1 миля намного меньше радиуса Земли), чтобы вычислить расстояния от вашей базы:
dx = cos(phi_base) * (theta - theta_base)
dy = phi - phi_base
dist = sqrt(dx*dx+dy*dy)
с: phi
= широтой и theta
= долгота
Результат в единицах 60 морских миль, если theta
и phi
указаны в градусах.Результаты будут совершенно неверными для точек, которые имеют широту, которая сильно отличается от вашей базовой широты, но это не имеет значения, если вы просто хотите знать, какие точки находятся в 1 миле от вашей базы.
ДляДля большинства языков программирования вам нужно преобразовать phi_base
в радианы (умножить на pi / 180), чтобы использовать его для cos()
.
(Внимание: вы должны проявлять особую осторожность, если ваша базовая долгота очень близка к 180 ° или -180 °, но, вероятно, это не так :-)
Используйте рассчитанные расстоянияв качестве ключа сортировки для сортировки ваших очков.
Если вам нужно быть более точным (например, если вы хотите знать все точки, которые находятся примерно в 2000 милях от вашего дома), чем вы должны использовать формулу для Great Circle Distance для вычисления точного расстояния двух точек на сфере.