sql >> Databáze >  >> NoSQL >> MongoDB

Špatný výpočet vzdálenosti s MongoDB

MongoDB předpokládá, že souřadnice jsou v (long, lat) formát. Pokud spočítáte vzdálenosti ručně pomocí Great-circle distance, uvidíte, co se děje:

> from math import acos, sin, cos, radians
>
> long_x, lat_x = [radians(y) for y in [52.473266, 13.45494]]
> long_y, lat_y = [radians(y) for y in [52.497309, 13.39385]]
>
> acos(sin(lat_x) * sin(lat_y) + cos(lat_x) * cos(lat_y) * cos(long_x - long_y)) * 6371.0
7.27362435031

Google bere souřadnice v (lat, long) formátu, takže pokud poskytnete stejný vstup, bude interpretace Google vypadat následovně:

> acos(sin(long_x) * sin(long_y) + cos(long_x) * cos(long_y) * cos(lat_x - lat_y)) * 6371.0
4.92535867182



  1. Jak zastavit sestavení Runaway Index v MongoDB

  2. Importujte data csv jako pole v mongodb pomocí mongoimport

  3. Jak implementovat has_many :prostřednictvím vztahů s Mongoidem a mongodb?

  4. Připojení MongoDB k Ruby pomocí certifikátů s vlastním podpisem pro SSL