栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

查找两个纬度/经度点之间距离的最快方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查找两个纬度/经度点之间距离的最快方法

  • 使用表

    Point
    Geometry
    数据类型的值创建点
    MyISAM
    。从Mysql 5.7.5开始,表现在
    InnoDB
    还支持
    SPATIAL
    索引。

  • SPATIAL
    在这些点上创建索引

  • 使用

    MBRContains()
    查找值:

    SELECt  *

    FROM table
    WHERe MBRContains(LineFromText(CONCAt(
    ‘(‘
    , @lon + 10 / ( 111.1 / cos(RADIANS(@lon)))
    , ‘ ‘
    , @lat + 10 / 111.1
    , ‘,’
    , @lon - 10 / ( 111.1 / cos(RADIANS(@lat)))
    , ‘ ‘
    , @lat - 10 / 111.1
    , ‘)’ )
    ,mypoint)


MySQL 5.1
以上:

    SELECt  *    FROM    table    WHERe   MBRContains         (         LineString      (      Point (   @lon + 10 / ( 111.1 / COS(RADIANS(@lat))),   @lat + 10 / 111.1 ),      Point (   @lon - 10 / ( 111.1 / COS(RADIANS(@lat))),   @lat - 10 / 111.1 )       ),         mypoint         )

这将在框中近似选择所有点

(@lat +/- 10 km, @lon +/- 10km)

实际上,这不是一个盒子,而是一个球形矩形:球体的经度和纬度绑定段。这可能与 弗朗兹·约瑟夫(Franz Joseph Land)
上的普通矩形不同,但在大多数人居住的地方都非常接近矩形。

  • 应用其他过滤以选择圆内的所有内容(而不是正方形)

  • 可能应用其他精细过滤以解决大圆距离(对于大距离)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369209.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号