美文网首页
Mysql计算两点之间距离原生支持方法

Mysql计算两点之间距离原生支持方法

作者: fourn熊能 | 来源:发表于2019-03-14 16:13 被阅读0次

    5.6版本提供了原生的距离计算函数支持,下面是文档翻译:

    • [ST_Distance(g1, g2)]

    返回g1和g2之间的距离。如果其中任何一个点为NULL或者空,则返回NULL

    如果中间或结尾的结果产生了 NaN 或者复数,将会触发ER_GIS_INVALID_DATA错误

    mysql> SET @g1 = Point(1,1);
    mysql> SET @g2 = Point(2,2);
    mysql> SELECT ST_Distance(@g1, @g2);
    +-----------------------+
    | ST_Distance(@g1, @g2) |
    +-----------------------+
    |    1.4142135623730951 |
    +-----------------------+
    

    ST_Distance() 和 Distance() 是相同的,计算结果为平面上两点距离


    下面是使用 ST_Distance_Sphere 的示例,来自于 5.7 版本,用于计算球面距离

    StationInfo::query()
               ->selectRaw('*,ST_Distance_Sphere(point(StationLng, StationLat),point(?, ?)) as distance', [
                   $deviceLng,
                   $deviceLat,
               ])
    
    StationInfo::query()
               ->whereRaw('ST_Distance_Sphere(point(StationLng, StationLat),point(?, ?)) <= ?', [
                   $deviceLng,
                   $deviceLat,
                   $maxDistance
               ])
    

    相关文章

      网友评论

          本文标题:Mysql计算两点之间距离原生支持方法

          本文链接:https://www.haomeiwen.com/subject/ilccmqtx.html