我想查詢一個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 - 作爲第二個 –