• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Miasta w pobliżu, jak to rozwiązać?

Object Storage Arubacloud
0 głosów
111 wizyt
pytanie zadane 11 lutego 2019 w SQL, bazy danych przez DanJ93 Użytkownik (860 p.)

Witam,

mam bazę miast i są ich tysiące - nazwa, szerokość geograf., długość geograf itd. i żeby znaleźć wszystkiego miasta którą są np. 100km od Barcelony trzeba liczyć sinusy,cosinusy itp. i żeby tego uniknąć chciałbym policzyć to tylko raz i w bazie przechowywać ile jest km od Barcelony do wszystkich (zapewne paruset) miejscowości w pobliżu i tak przy każdej miejscowości...
Tylko rodzi się tu pytanie, jak to rozwiązać? Bo przecież nie mogę tego utworzyć w formie BARCELONA 30km ABCDEF itd. bo zajmie mi to miliony rekordów.
Ma ktoś jakiś pomysł, jak to można przechować w bazie?
PS. może to też być na zasadzie pozycji GPS, czyli jakieś zakresy :)

 

 public function getCities()
    {
        $lat = 50.1234;
        $lng = 20.1234;
        $distance = 100;

        $result = DB::select("SELECT city, (6371 * acos(cos(radians($lat))"
        . "* cos(radians(lat)) * cos(radians(lng)"
        . " - radians($lng)) + sin(radians($lat)) * sin(radians(lat))))"
        . "AS distance FROM locations HAVING distance < $distance"
        );

        return '<pre>' . print_r($result, true) . '</pre>';
    }

 

komentarz 11 lutego 2019 przez Hunter94 Mądrala (6,290 p.)
nowe silniki baz mają wbudowane liczenie odległości z długości/szerokości geograficznych.
komentarz 11 lutego 2019 przez DanJ93 Użytkownik (860 p.)
Możesz mi to przybliżyć?
komentarz 11 lutego 2019 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
+ np. bazy danych oracle mają indeksy funkcyjne (indeksują wyrażenia), co pomaga przyśpieszyć wykonanie zapytań, gdzie wykonywane są na przykład różne wyliczenia.
1
komentarz 11 lutego 2019 przez Hunter94 Mądrala (6,290 p.)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 948 wizyt
pytanie zadane 24 sierpnia 2016 w PHP przez Abel Mądrala (5,140 p.)
+1 głos
3 odpowiedzi 188 wizyt
pytanie zadane 5 kwietnia 2021 w Algorytmy przez michal Mądrala (5,560 p.)
+1 głos
3 odpowiedzi 312 wizyt

92,543 zapytań

141,386 odpowiedzi

319,500 komentarzy

61,929 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...