sql >> Database >  >> RDS >> Mysql

MySQL opvragen voor coördinaten voor lengte- en breedtegraad die zich binnen een bepaalde straal van een kilometer bevinden

Formule sferische cosinusregel
(37 en -122 zijn de breedte- en lengtegraad van uw middelpunt van de straal)

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
    * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM myTable
HAVING distance < 50
ORDER BY distance 

Functies

  • Snelst
  • Precisie vergelijkbaar met Harvesine Formula

Haversine-formule

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 - long) * pi()/180 / 2), 2) )) as  distance
FROM myTable
HAVING distance < 50
ORDER BY distance

Functies

  • Snel
  • Robuuster voor fouten met drijvende komma

Merk op dat 3959 de straal van de aarde in mijlen is . Aardstraal in kilometers (km):6371

Meer informatie vind je hier




  1. VARCHAR- en NVARCHAR-gegevenstypen in SQL Server

  2. Natuurlijk meedoen in SQL Server

  3. Met behulp van SQL Server opgeslagen procedures van Python (pyodbc)

  4. Hoe de dichtstbijzijnde locatie te vinden met behulp van de lengte- en breedtegraad uit de SQL-database?