После поиска довольно долго я не смог обнаружить или написать правильный запрос mysql для функции, которая оценивает уникальность (или близость) точки GPS. Это включает оценку широты и долготы в той же строке базы данных.Поиск двух близких идентичных значений mysql
База дороги имеет строки для roadid, широчайшие и LNG.
Проблема заключается в том, что API, который я использую, не всегда возвращает ровно такое же значение, как и предыдущие вызовы, я предполагаю, что они интерполированы. Тем не менее это означает, что ответ может быть «35.000000, 40.000000», а в следующий раз «35.000008, 39.999992».
Я хочу написать функцию PHP, которая будет передана объекту базы данных, широте, долготе и толерантности. Допуск должен применяться как к точкам широты и долготы, так и к любым точкам в «области допуска».
Он должен возвращать либо true (нет соответствующих результатов на основе допуска и заданного значения lat/long) ИЛИ он должен вернуть объект ответа mysql для обработки и дальнейшей оценки неединственных точек (точек).
Вот что я до сих пор:
private function checkunique($db, $lat, $lng, $tolerance = 0)
{
//check database for lat/lng
$response = $db->query("SELECT roadid FROM roads WHERE lat = " . $lat . " AND lng = " . $lng);
if($response->num_rows == 0)
{
//unique
return true;
}
else
{
//duplicate or duplicate within tolerance found.
$response = $response->fetch_object();
return $response;
}
}
Я предполагаю, что единственное, что мне действительно нужно, это правильное заявление MySQL, но я мечения это в PHP тоже.
Вы используете DECIMAL или тип данных FLOAT? – Strawberry
Значения FLOAT. – user1917232