查找两个几乎相同的值 mysql


Finding two near identical values mysql

在搜索了相当长一段时间后,我无法为评估GPS点唯一性(或接近唯一性)的函数发现或编写正确的mysql查询。这包括同一数据库行中的纬度和经度评估。

数据库道路有道路、纬度液化天然气行。

问题是我使用的 API 并不总是返回与以前的调用完全相同的值,我假设它们是内插的。尽管如此,这意味着响应可能是"35.000000, 40.000000",下次可能是"35.000008, 39.999992"。

我想编写一个 PHP 函数,该函数将传递数据库对象、纬度、经度和容差。容差应同时应用于纬度和经度点,以便找到"公差区域"内的任何点。

它应该返回

true(没有基于公差和纬度/经度给定的匹配结果),或者它应该返回 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 中标记它。

基本上,你只需要这个:

SELECT ...
...
WHERE $lat BETWEEN (lat - $tolerance AND lat + $tolerance)

WHERE (abs(lat - $lat) <= $tolerance)