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

Dotazování MySQL na souřadnice zeměpisné šířky a délky, které jsou v daném okruhu mil

Sférický vzorec kosinového zákona
(37 a -122 jsou zeměpisná šířka a délka středu vašeho poloměru)

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 

Funkce

  • Nejrychlejší
  • Přesnost podobná Harvesine Formula

Haversine vzorec

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

Funkce

  • Rychlý
  • Odolnější vůči chybám s pohyblivou řádovou čárkou

Všimněte si, že 3959 je poloměr Země v mílích . Poloměr Země v kilometrech (km):6371

Další informace naleznete zde




  1. MySql Connector 6.8.2 RC, Entity Framework 6 a Code First

  2. Vnitřní spojení 2 tabulek se stejnými názvy sloupců

  3. Najít sloupce vrácené funkcí s hodnotou tabulky (příklady T-SQL)

  4. AKTUALIZOVÁNO:Chyba způsobuje, že Microsoft Office 365 Build 2105 přerušuje přístupové aplikace