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

2019-03-14  本文已影响0人  fourn熊能

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

返回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
           ])
上一篇下一篇

猜你喜欢

热点阅读