【问题标题】:How to select closest gps coordinate from database?如何从数据库中选择最近的 gps 坐标?
【发布时间】:2014-05-09 16:13:43
【问题描述】:

我在 mysql 数据库 my_db 中有表 GPS_tbl。在GPS_tbl 中有四列1)uid2)latitude3)longitude4)regid。在2)latitude3)longitude 列中latitudelongitude 的不同值已经存储为浮点数,现在我想要的是当用户通过POST() 发送他/她的gps coordinates in terms of latitude and longitude 时将这些用户发送的坐标与已经存储的坐标进行比较列中的坐标2)latitude3)longitude 和列中的坐标2)latitude3)longitude 最接近用户发送的坐标选择regid 反对它。请有人在php 中帮助我如何做到这一点。

这就是用户发送他/她的 GPS 坐标的方式。

    $lati = $_POST['lati'];
    $longi = $_POST['longi'];
    $float_value_of_lati = floatval($lati);
    $float_value_of_longi = floatval($longi);

这是GPS_tbl

+--------------+------------+-------------+-------------+
|     uid      | latitude   | longitude   |   regid     |
+--------------+------------+-------------+-------------+
|      1       |  73.3433   |  18.5223    |APA91W-ClDoS |
|              |            |             |             |
+--- ----------+------------+-------------+-------------+
|      2       |  43.3433   |  24.5523    |BON91W-ClDoS |
|              |            |             |             |
+--- ----------+------------+-------------+-------------+
|      3       |  55.3433   |  37.5323    |WCD71P-ClDoS |
|              |            |             |             |
+--- ----------+------------+-------------+-------------+

【问题讨论】:

    标签: php mysql gps coordinates


    【解决方案1】:

    我不会向您解释如何连接到 MySQL 服务器、获取数据库实例以及运行 SQL 查询。有很多教程。我会帮你查询的。为此,我们将使用 勾股定理。这不是最好的方法,因为地球并不平坦,但我认为它会起作用(但不是在太平洋中部,我们从 -180º 到 180º 的地方)

        "SELECT uid,regid, sqrt(latitude-".$users_latitude.")+sqrt(longitude-".user_longitude.") AS SQRT_DIST 
    FROM GPS_tbl ORDER BY SQRT_DIST LIMIT 1;
    

    这就是您获得最近点的方式。

    注意返回的距离是距离^2。

    【讨论】:

    • 我正在尝试申请,但它给了我错误你能纠正这个查询中的错误吗? $result = mysql_query("SELECT regid sqrt(lati-$lati)+sqrt(longi-$longi) AS SQRT_DIST FROM gps ORDER BY SQRT_DIST limit 1");
    • 嗨。我认为查询没问题,您只需更改变量的名称,使其与您拥有的变量匹配。 "sqrt(lati-$lati)" : ¿你的专栏不是叫 latidute 吗?小心你给事物起的名字。错误日志也会很有用。
    【解决方案2】:

    http://www.geodatasource.com/developers/php请查看这样的教程来计算用户发送的坐标和存储的坐标之间的距离。计算距离后,对结果集进行排序以得到最近的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-17
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      相关资源
      最近更新 更多