Ответ 1
Вы также можете попробовать попасть в веб-службу, чтобы вычислить расстояние. Пусть кто-то еще сделает тяжелый подъем.
Я схватил базу данных почтовых индексов и их языков/широт и т.д. из этого Эта страница. Он имеет следующие поля:
ZIP, LATITUDE, LONGITUDE, CITY, STATE, COUNTY, ZIP_CLASS
Данные были в текстовом файле, но я вставил его в таблицу MySQL. Мой вопрос в том, как я могу использовать поля выше, чтобы рассчитать расстояние между двумя почтовыми индексами, которые пользователь может ввести на веб-сайт? Рабочий код в PHP будет оценен
Вы также можете попробовать попасть в веб-службу, чтобы вычислить расстояние. Пусть кто-то еще сделает тяжелый подъем.
Это майк-ответ с некоторыми аннотациями для магических чисел. Мне показалось, что для меня несколько тестовых данных:
function calc_distance($point1, $point2)
{
$radius = 3958; // Earth radius (miles)
$deg_per_rad = 57.29578; // Number of degrees/radian (for conversion)
$distance = ($radius * pi() * sqrt(
($point1['lat'] - $point2['lat'])
* ($point1['lat'] - $point2['lat'])
+ cos($point1['lat'] / $deg_per_rad) // Convert these to
* cos($point2['lat'] / $deg_per_rad) // radians for cos()
* ($point1['long'] - $point2['long'])
* ($point1['long'] - $point2['long'])
) / 180);
return $distance; // Returned using the units used for $radius.
}
Это можно сделать только с помощью математики...
function calc_distance($point1, $point2)
{
$distance = (3958 * 3.1415926 * sqrt(
($point1['lat'] - $point2['lat'])
* ($point1['lat'] - $point2['lat'])
+ cos($point1['lat'] / 57.29578)
* cos($point2['lat'] / 57.29578)
* ($point1['long'] - $point2['long'])
* ($point1['long'] - $point2['long'])
) / 180);
return $distance;
}
Ознакомьтесь с формулой здесь
Формула Гаверсина:
(Обратите внимание, что углы должны быть в радианах для перехода к триггерным функциям).
В вашей zip-таблице вам нужно захватить координаты (lat, long) для двух точек, для которых вы хотите получить расстояние.
Вы можете либо вычислить расстояние прямо в SQL, либо с помощью PHP. Оба метода описаны в этом сообщении:
Расчет в примере основан на формуле, уже обсуждавшейся в этом потоке. Он обеспечивает радиус земли в километрах и километрах, поэтому он позволит вам получить расстояние между двумя точками в обоих устройствах.
Ссылка выше отлично, потому что метод вычисления не включает никаких магических чисел, просто радиус земли!