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

Forespørger på MySQL for bredde- og længdegradskoordinater, der er inden for en given mils radius

Sfærisk lov for cosinusformel
(37 og -122 er bredde- og længdegraden af ​​dit radiuscenter)

SELECT id, ( 3959 * acos( cos( radianer(37) ) * cos( radianer( lat ) ) * cos( radianer( lang ) - radianer(-122) ) + sin( radianer(37) ) * sin(radianer(lat)) ) ) SOM afstand FRA minTabelHAR afstand <50ORDER BY distance  

Funktioner

  • Hurtigste
  • Nøjagtighed svarende til Harvesine Formula

Haversine-formel

SELECT id, 3959 * 2 * ASIN(SQRT(POWER(SIN((37 - abs(lat)) * pi()/180 / 2), 2) + COS(37 * pi()/ 180 ) * COS(abs(lat) * pi()/180) * POWER(SIN((-122 - lang) * pi()/180 / 2), 2) )) som afstandFRA minTabel DER HAR afstand <50ORDER BY distance

Funktioner

  • Hurtig
  • Mere robust over for flydende kommafejl

Bemærk, at 3959 er jordens radius i miles . Jordens radius i kilometer (km):6371

Du kan finde flere oplysninger her




  1. Få århundredet fra en dato i PostgreSQL

  2. SQL-forespørgselskonstruktion - adskil data i en kolonne i to kolonner

  3. Hvordan erstatter man ikke-numeriske tegn i MySQL?

  4. At få id'et for en række, jeg opdaterede i SQL Server