sql >> Databasteknik >  >> RDS >> Mysql

PHP / MySQL - Hitta alla objekt inom 500 meters radie från faktiska gps-koordinater

Att beräkna avståndet mellan två koordinater är faktiskt inte så svårt med tanke på haversinformeln.

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

Refererat svar

Nödvändiga ändringar från det ursprungliga svaret:

  1. Den konstant som erbjuds i det ursprungliga svaret gav värdena för miles eller kilometer. Jag har ändrat konstanten här till att fungera med mätare.

  2. Konstanterna har ändrats för att använda dina koordinater. Du kanske vill anpassa frågan lite längre för att göra dessa parametrar istället för konstanter.

  3. having uttrycket ändrades lite för att spegla din önskan om 500 meter. Återigen, detta kan vara något du vill parametrera.




  1. Mysql. Beställ platser och gå med i listor slumpmässigt

  2. Tabell Datum kolumn jämförelse med en genererad datumlista - MYSQL

  3. Få alla tabellnamn för en viss databas genom SQL-fråga?

  4. Oracle NULLIF() funktion