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

VPS Starter Arubacloud
0 głosów
105 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ź 917 wizyt
pytanie zadane 24 sierpnia 2016 w PHP przez Abel Mądrala (5,140 p.)
+1 głos
3 odpowiedzi 187 wizyt
pytanie zadane 5 kwietnia 2021 w Algorytmy przez michal Mądrala (5,560 p.)
+1 głos
3 odpowiedzi 301 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...