У меня около 15000 координат. Я хочу рассчитать, какие из них находятся на расстоянии 100 метров друг от друга. Сейчас я использую код ниже для расчета расстояния. Это занимает много времени, когда у меня столько координат.
Есть ли способ повысить производительность? Возможно, отфильтровав координаты, которые находятся на расстоянии нескольких сотен метров, а затем более точно рассчитайте расстояние с помощью функции ниже.
$earthRadius = 6371000;
// convert from degrees to radians
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
$lonDelta = $lonTo - $lonFrom;
$a = pow(cos($latTo) * sin($lonDelta), 2) + pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
$b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);
$angle = atan2(sqrt($a), $b);
return $angle * $earthRadius;
Задача ещё не решена.
Других решений пока нет …