美文网首页
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