Вычисление расстояния между почтовыми индексами в PHP

Python и pymongo

Поиск объектов между двумя датами в Python с pymongo в коллекции posts (на основе учебника ):

from_date = datetime.datetime(2010, 12, 31, 12, 30, 30, 125000)
to_date = datetime.datetime(2011, 12, 31, 12, 30, 30, 125000)

for post in posts.find({"date": {"$gte": from_date, "$lt": to_date}}):
    print(post)

Где {"$gte": from_date, "$lt": to_date} указывает диапазон в терминах типов datetime.datetime.

23
задан Click Upvote 2 January 2009 в 20:52
поделиться

4 ответа

Можно также попытаться поразить веб-сервис к calc расстояние. Позвольте кому-то еще сделать тяжелый подъем.

https://www.zipcodeapi.com/API#distance

6
ответ дан brendan 29 November 2019 в 01:52
поделиться

Это - ответ микрофона с некоторыми аннотациями для эти магические числа . Это, казалось, хорошо работало для меня для некоторые данные тестирования :

function calc_distance($point1, $point2)
{
    $radius      = 3958;      // Earth's 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.
}
24
ответ дан 2 revs, 2 users 95% 29 November 2019 в 01:52
поделиться

Это может быть сделано только с математикой...

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;
}
7
ответ дан Greg 29 November 2019 в 01:52
поделиться

Проверьте формулу Хаверсайна для расчета расстояний большого круга между двумя точками. Еще несколько образцов можно найти здесь

Формула Хаверсин:

  • R = радиус Земли (средний радиус = 6 371 км)
  • Δlat = lat2- lat1
  • Δlong = long2- long1
  • a = sin² (∆lat / 2) + cos (lat1) .cos (lat2) .sin² (Δlong / 2)
  • ] c = 2.atan2 (√a, √ (1-a))
  • d = Rc

(обратите внимание, что углы должны быть в радианах, чтобы перейти к тригональные функции).

6
ответ дан Paul Dixon 29 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: