sql >> Databáze >  >> RDS >> Mysql

PHP / MySQL - Najděte všechny položky v okruhu 500 metrů od skutečných souřadnic GPS

Vypočítat vzdálenost mezi dvěma souřadnicemi není ve skutečnosti tak obtížné, když vezmeme v úvahu vzorec Havrsine.

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

Odkaz na odkaz

Nezbytné změny oproti původní odpovědi:

  1. Konstanta nabízená v původní odpovědi poskytla hodnoty pro míle nebo kilometry. Zde jsem změnil konstantu pro práci s měřiči.

  2. Konstanty se změnily, aby používaly vaše souřadnice. Možná budete chtít upravit dotaz o něco dále, aby se tyto parametry vytvořily namísto konstant.

  3. having výraz se trochu změnil, aby odrážel vaši touhu po 500 metrech. Opět to může být něco, co budete chtít parametrizovat.




  1. selectionArgs v SQLiteQueryBuilder nefunguje s celočíselnými hodnotami ve sloupcích

  2. SQL Server Transakční replikace interní

  3. SQLite JSON_EACH()

  4. utf8 při importu do mysql zkomolený