我想查询一个MySQL数据库(版本5.7.15)以从一些坐标(40.7542,-73.9961,在我的情况)中检索300米内的所有位置:MySQL查询中两个Spacial Points之间的距离(以米为单位)
SELECT *
FROM location
WHERE st_distance_sphere(latlng, POINT(40.7542, -73.9961)) <= 300
ST_Distance_Sphere(G1,G2 [,半径])
返回mimimum球面距离在球体上的两点之间和/或 多点,在米中,或者如果任何几何参数 为NULL或空,则为NULL。
不幸的是,查询还返回是远离POINT超过300米的点(40.7542,-73.9961),如:
- POINT(40.7501,-73.9949)(〜470米现实生活)
- POINT(40.7498,-73.9937)(〜在现实生活中530米)在POINT
点必须通过这种方式设置'POINT(LNG,LAT)' '选择st_distance_sphere(POINT(-73.9949,40.7501),点(-73.9961 ,40.7542))' 给我们466.9696023582369 - 与预期的一样 –
@MituhaSergey但为什么查询返回的距离大于300? – grim
,因为您使用的是不正确的POINT。 例如'选择st_distance_sphere(POINT(40.7501,-73.9949),POINT(40.7542,-73.9961))' 将返回183.3146597410617 <= 300。 只使用正确的位置ARGS POINT(LNG,LAT),LNG作为第一个arg,lat - 作为第二个 –