• 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ć?

0 głosów
56 wizyt
pytanie zadane 11 lutego w SQL, bazy danych przez DanJ93 Początkujący (360 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 przez Hunter94 Gaduła (4,900 p.)
nowe silniki baz mają wbudowane liczenie odległości z długości/szerokości geograficznych.
komentarz 11 lutego przez DanJ93 Początkujący (360 p.)
Możesz mi to przybliżyć?
komentarz 11 lutego przez Arkadiusz Sikorski Pasjonat (19,100 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 przez Hunter94 Gaduła (4,900 p.)

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

Podobne pytania

0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 24 sierpnia 2016 w PHP, Symfony, Zend przez Abel Mądrala (5,180 p.)
0 głosów
0 odpowiedzi 36 wizyt
0 głosów
1 odpowiedź 155 wizyt
pytanie zadane 12 kwietnia w SQL, bazy danych przez Zawoj11 Nowicjusz (190 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

62,318 zapytań

108,452 odpowiedzi

226,402 komentarzy

35,113 pasjonatów

Przeglądających: 237
Pasjonatów: 7 Gości: 230

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...