sql >> Database teknologi >  >> RDS >> Mysql

ST_Distance_Sphere i mysql giver ikke nøjagtig afstand mellem to steder

ST_DISTANCE_SPHERE kræver, at punkter udtrykkes som POINT(longitude, latitude) , du har dem omvendt i din kode

set @lat1 = 38.898556;
set @lon1 = -77.037852;
set @lat2 = 38.897147;
set @lon2 = -77.043934;
SET @pt1 = point(@lon1, @lat1);
SET @pt2 = point(@lon2, @lat2);
SELECT ST_Distance_Sphere(@pt1, @pt2)/1000,
  lat_lng_distance(@lat1,@lon1,@lat2,@lon2);

+-------------------------------------+-------------------------------------------+
| ST_Distance_Sphere(@pt1, @pt2)/1000 | lat_lng_distance(@lat1,@lon1,@lat2,@lon2) |
+-------------------------------------+-------------------------------------------+
|                   0.549154584458455 |                        0.5496311783790588 |
+-------------------------------------+-------------------------------------------+

Dette giver et resultat, der er meget tættere på den værdi, som din funktion returnerer.



  1. Forståelse af PDO-forberedte erklæringer og bindende parametre

  2. Sådan gør du:Rangering af søgeresultater

  3. mysql - Sammenlign værdier fra strenge for dato=n med dato=n-1

  4. En guide til PGpool - tip og observationer:del tre