Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP / MySQL - Finden Sie alle Artikel in einem Umkreis von 500 Metern um die tatsächlichen GPS-Koordinaten

Die Berechnung des Abstands zwischen zwei Koordinaten ist angesichts der Haversinus-Formel eigentlich gar nicht so schwierig.

SELECT 
  -- stuff here
  , ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance 
FROM 
  stuff
HAVING 
  distance < 500

Referenzierte Antwort

Notwendige Änderungen gegenüber der ursprünglichen Antwort:

  1. Die in der ursprünglichen Antwort angebotene Konstante lieferte die Werte für Meilen oder Kilometer. Ich habe die Konstante hier geändert, um mit Metern zu arbeiten.

  2. Die Konstanten wurden geändert, um Ihre Koordinaten zu verwenden. Vielleicht möchten Sie die Abfrage etwas weiter anpassen, um diese Parameter anstelle von Konstanten zu machen.

  3. Das having Der Gesichtsausdruck änderte sich ein wenig, um Ihren Wunsch nach 500 Metern widerzuspiegeln. Auch dies könnte etwas sein, das Sie parametrisieren möchten.