zoukankan      html  css  js  c++  java
  • mysql通过经纬度查询400公里范围内的小区

    mysql距离计算,单位m,以及排序
    lng 经度 lat 纬度
    一般地图上显示的坐标顺序为,纬度在前(范围-90~90),经度在后(范围-180~180)
    传入参数 纬度 40.0497810000 经度 116.3424590000
    /*传入的参数为  纬度 纬度 经度 ASC升序由近至远 DESC 降序 由远到近 */

    SELECT
    id,
    name,
    address,
    ROUND(
    6378.138 * 2 * ASIN(
    SQRT(
    POW(
    SIN(
    (
    40.0497810000 * PI() / 180 - lat * PI() / 180
    ) / 2
    ),
    2
    ) + COS(40.0497810000 * PI() / 180) * COS(lat * PI() / 180) * POW(
    SIN(
    (
    116.3424590000 * PI() / 180 - lng * PI() / 180
    ) / 2
    ),
    2
    )
    )
    ) * 1000
    ) AS 距离
    FROM
    oc_district
    HAVING
    距离 < 400000
    ORDER BY
    距离 ASC

    至此,我们就能清楚的查看到纬度 40.0497810000 经度 116.3424590000 距离    小区表中的每个小区到传入地点的距离(单位 m)

    方法二:通过MySQL的POIN方法

    st_distance 计算的结果单位是度,需要乘111195(地球半径6371000*PI/180)是将值转化为米。

    sql:
    SELECT *, (st_distance (point (lon,lat),point (116.3424590000,40.0497810000))*111195/1000 )as juli FROM customer ORDER BY juli ASC
  • 相关阅读:
    26 Oracle数据库——分页
    25 PLSQL图形化操作
    24 数据库练习——简单练习
    23 SQL语言——视图 VIEW
    22 SQL语言——索引 index
    21 SQL语言——序列
    20 表结构的增删改
    19 Oracle外键约束
    18 SQL语言——约束
    17 SQL语言——子查询与关键字in
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/10979817.html
Copyright © 2011-2022 走看看