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

PHP MySQL získá umístění v okruhu uživatele z GPS

Výpočet vzdálenosti je dost výpočetně drahý, jak řekli jiní. Vracení obrovských datových sad také není příliš dobrý nápad – zvláště s ohledem na to, že PHP není z hlediska výkonu tak skvělé.

Použil bych heuristiku, jako je aproximace vzdálenosti jednoduchým sčítáním a odečítáním.

Stačí prohledat db s incidenty v tomto rozsahu (ve skutečnosti čtverec, spíše než kruh), a pak na nich můžete pracovat s PHP.

UPRAVIT :Zde je alternativa; aproximace, která je mnohem méně výpočetně nákladná:

Přibližná vzdálenost v mílích:

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 53.0 * (lon2 - lon1) 

Přesnost tohoto výpočtu přibližné vzdálenosti můžete zlepšit přidáním matematické funkce kosinus:

Vylepšená přibližná vzdálenost v mílích:

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3) 

Zdroj:http://www.meridianworlddata.com/Distance-Calculation.asp

UPRAVIT 2 :Provedl jsem spoustu testů s náhodně generovanými datovými sadami.

  • Rozdíl v přesnosti těchto 3 algoritmů je minimální, zejména na krátké vzdálenosti.
  • Nejpomalejší algoritmus (ten s celou řadou spouštěcích funkcí) je 4x pomalejší než ostatní dva.

Rozhodně se to nevyplatí. Stačí použít přibližnou hodnotu.

Kód je zde:http://pastebin.org/424186



  1. Přehled parametrů připojení PostgreSQL 13 libpq sslpassword

  2. Jak spočítat počet výskytů znaku v hodnotě varchar Oracle?

  3. data načtená z databáze SQLitE se neukládají v modelové třídě ArrayList android

  4. chyba běhu:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver