• 技术文章 >数据库 >mysql教程

    MySQL的geometry类型处理经纬度距离的方法介绍

    不言不言2019-02-01 10:09:04转载1617
    本篇文章给大家带来的内容是关于MySQL的geometry类型处理经纬度距离的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    建表

    CREATE TABLE `map` (
      `id` int(11) NOT NULL,
      `address` varchar(255) NOT NULL DEFAULT '',
      `location` geometry NOT NULL,
      PRIMARY KEY (`id`),
      SPATIAL KEY `idx_location` (`location`)
    )

    插入

    INSERT INTO map (id, address, location) VALUES (1, 'somewhere', ST_GeomFromText('POINT(121.366961 31.190049)'));
    注意必须使用 ST_GeomFromText 函数,且 POINT() 里面是:经度+空格+纬度

    查询

    1. 查看经纬度

    SELECT address, ST_AsText(location) AS location FROM map;

    2. 计算两点之间的距离

    SELECT ST_Distance_Sphere(POINT(121.590347, 31.388094),location) AS distant FROM map;
    算出来的结果,单位是米
    注意现在POINT()里面经纬度之间是逗号分隔的

    3. 查询距离小于1000m的地点,并由远及近排序

    SELECT id, address, ST_Distance_Sphere(POINT(121.590347, 31.388094),location) AS distant FROM map WHERE ST_Distance_Sphere(POINT(121.590347, 31.388094),location) < 1000 ORDER BY distant;

    以上就是MySQL的geometry类型处理经纬度距离的方法介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    上一篇:MySQL按时间统计数据的方法介绍(代码示例) 下一篇:MySQL中乐观锁和悲观锁的介绍(代码示例)
    Web大前端开发直播班

    相关文章推荐

    • MySQL归纳总结InnoDB之MVCC原理• jquery mobile是什么意思• mysql怎么替换换行符• mysql怎么增加行• mysql怎么查询第一列数据

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网