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
.
Можно также попытаться поразить веб-сервис к calc расстояние. Позвольте кому-то еще сделать тяжелый подъем.
Это - ответ микрофона с некоторыми аннотациями для эти магические числа . Это, казалось, хорошо работало для меня для некоторые данные тестирования :
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.
}
Это может быть сделано только с математикой...
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;
}
Проверьте формулу Хаверсайна для расчета расстояний большого круга между двумя точками. Еще несколько образцов можно найти здесь
Формула Хаверсин:
(обратите внимание, что углы должны быть в радианах, чтобы перейти к тригональные функции).