Wyświetlanie odległości między miastami - pobierać z api czy przechowywać w bazie?

2014-09-11 01:35

Rejestracja: 7 lat temu

Ostatnio: 1 tydzień temu

0

Witam. Chcę na stronie w profilu użytkownika wyświetlać odległość od jego miasta do mojego (ja przeglądam jego profil obecnie). Chciałbym się Was poradzić, jak lepiej jest zrobić w takim przypadku. Czy za każdym razem po przejściu na stronę profilu mam obliczać przez API Google tę odległość czy może lepiej gdybym miał w bazie danych tabelę z odległościami każdego miasta do wszystkich miast (czy te odległości można zdobyć z jakiejś innej strony, czy da radę wyciągnąć przez API Google'a) ? (Moja baza to MySQL)

Z góry dziękuję za pomoc.

Oto dobry przykład obliczenia odległości między miastami Polski - http://mapszoom.com/odleglosc/ - Alex Kowalski 2017-11-08 15:49

Pozostało 580 znaków

mkr
2014-09-11 07:26
mkr

Rejestracja: 5 lat temu

Ostatnio: 5 lat temu

0

Odległości mają być w linii prostej czy po drogach?

Jeżeli to pierwsze to sprawa się upraszcza do obliczania odległości pomiędzy dwoma współrzędnymi gps. Trzymasz w bazie kolumnę odpowiadającą lokalizacji gps dla każdego użytkownika. Tutaj masz jak obliczyć taką odległość: www.movable-type.co.uk/scripts/latlong.html

Sprawa się komplikuje jeżeli mają to być odległości drogowe. Wtedy masz opcje:

  • masz graf sieci drogowej (mało realne) i obliczasz najkrótszą drogę jak google - ogólnie strzelanie armatą do muchy;
  • każdorazowo korzystasz z api przy odwiedzaniu profilu, co może skutkować lagiem;
  • robisz jednorazowo tablice odległości pomiędzy lokalizacjami użytkowników w oparciu o jakieś api. W przypadku nowego użytkownika z nową lokalizacją uzupełniasz ww. tablicę. W przypadku odwiedzenia profilu wyszukujesz tylko odpowiednie odległości ze swojej tablicy. Rozmiary takiej tablicy nie muszą być duże, przykładowo załóżmy, że dla 10000 użytkowników będziesz miał 1000 unikalnych lokalizacji, wtedy rozmiary tej tablicy to 1000^2, a ilość możliwych kombinacji 500*499.

Edit: poprawiona ilość kombinacji.


edytowany 1x, ostatnio: mkr, 2014-09-11 08:36
Oto dobry przykład obliczenia odległości między miastami Polski - http://mapszoom.com/odleglosc/ - Alex Kowalski 2017-11-08 15:49

Pozostało 580 znaków

2014-09-11 08:53
Moderator

Rejestracja: 13 lat temu

Ostatnio: 6 dni temu

Lokalizacja: Stacktrace

0

Kilka opcji już wymieniono, ale jak dla mnie można to uprościc do jednorazowego wyliczenia z użyciem API i składowania wyniku w bazie. Łatwe, proste, przyjemne. Jedyne co trzeba zrobić to wykombinować jak często należy usuwać wpisy z tabeli, bo jak wiadomo trasy prejazdu mają tendencje do zmiany.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Pozostało 580 znaków

2014-09-11 15:51

Rejestracja: 7 lat temu

Ostatnio: 1 tydzień temu

0

@Koziołek właściwie nie musi być ta odległość taka dokładna. Ma być coś takiego - patrzę na ilość KM w tym profilu i "O ta dziewczyna ma do mnie 50 KM - niedaleko" - tego entuzjazmu chyba nie zepsuje różnica ok. 10 KM ;d

robisz drugiego tindera xd ;? ;D - karolinaa 2014-09-29 00:55

Pozostało 580 znaków

2014-09-11 15:53
Moderator

Rejestracja: 16 lat temu

Ostatnio: 1 minuta temu

0

Pomysł z google maps słaby. Zbanują cię raz dwa jak twój serwis zrobi się choć troszkę popularny. Pomyśl o OpenStreetMap


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2014-09-29 00:38

Rejestracja: 7 lat temu

Ostatnio: 1 tydzień temu

0

@Shalom nakierujesz na coś konkretnego do OpenStreetMap abym mógł pobrać odległości dla miast z Polski? Sprawdziłem strony ich projektu (org, pl, wiki, osm), ale znalazłem tylko pliki do pobrania z danymi dla całej planety (nie dla regionu), które chyba ważą około 30 GB, i podobno z tego można jakimś skryptem czy programem odfiltrować to co potrzeba... Nie dam rady pobrać 30 GB z moim netem... - nawet miejsca na dysku tyle nie znajde ;d

Pozostało 580 znaków

2014-09-29 10:35

Rejestracja: 7 lat temu

Ostatnio: 1 dzień temu

Lokalizacja: Dąbrowa Górnicza

0
adriano1995 napisał(a):

@Koziołek właściwie nie musi być ta odległość taka dokładna. Ma być coś takiego - patrzę na ilość KM w tym profilu i "O ta dziewczyna ma do mnie 50 KM - niedaleko" - tego entuzjazmu chyba nie zepsuje różnica ok. 10 KM ;d

to skoro niedokladnosc tego rzedu jest wystarczajaca to czemu chcesz sie bawic z mapami (ktorych zaprzeganie jest potrzebne dla duzej dokladnosci) a nie policzysz tego z wzoru na odleglosc miedzy dwoma punktami geograficznymi. wyzej masz link.

po drugie google w wersji free daje ci 100 000 zapytan na dobe. jak to ladnie bedziesz cachowal w bazie to wierz mi ze jesli serwis bedzie ci generowal 100 000 unikalnych obliczen odleglosci miedzy dwoma miastami (bo o miastach tu mowisz) to bedzie on na tyle duzy ze zarobi nawet na licnencje dla googla ktora ta ci wiekszy limit.

PS. KM to konie mechancizne , km to kilometry:P

a skad mam wziac współrzędne geograficzne wszystkich miast + miejscowosci w PL ? - adriano1995 2014-09-29 16:57
z wszeochobecnego internetu :) - szalonyfacet 2014-09-29 17:02

Pozostało 580 znaków

2014-09-29 10:53
Moderator

Rejestracja: 16 lat temu

Ostatnio: 1 minuta temu

0

@adriano1995 ty tak poważnie? Wchodzisz na http://www.openstreetmap.org/ po prawej masz guzik "eksportuj". Klikasz go, wybierasz obszar który cię interesuje i voila...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2014-09-29 16:56

Rejestracja: 7 lat temu

Ostatnio: 1 tydzień temu

0

@Shalom pobrałem tak jak napisałeś, ale nie ma tego czego chciałem (np. z woj. mazowieckiego tylko 1 gmine pokazuje...) - plik który pobrałem miał 11 KB

Pozostało 580 znaków

2014-09-29 16:59
Moderator

Rejestracja: 16 lat temu

Ostatnio: 1 minuta temu

0

To źle pobrałeś.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
chciałem pobrać teraz wybierając przy eksporcie "Polska - granica kraju" to nie pokazało przycisku "Eksportuj", tylko info że za duży obszar i nie można pobrać... - adriano1995 2014-09-29 17:04

Pozostało 580 znaków

2014-09-29 17:12

Rejestracja: 6 lat temu

Ostatnio: 2 lata temu

0

Skoro dokładność nie jest kluczowa, to olej jakiekolwiek przechowywanie odległości.

Tutaj masz web-service od googla, który zwraca współrzędne:

http://maps.google.com/maps/a[...]ddress=wiejska%201%20warszawa
https://developers.google.com/maps/documentation/geocoding/

Jeśli będziesz pobierał je tylko przy rejestracji to nie powinni Cię ubić - 2500 zapytań na dobę jest darmowe ;)

A na podstawie współrzędnych jesteś w stanie policzyć szacunkową odległość miedzy punktami.
Tu masz wzorki:

http://www.movable-type.co.uk/scripts/latlong.html


"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." Robert Heinlein.
Oto dobry przykład obliczenia odległości między miastami Polski - http://mapszoom.com/odleglosc/ - Alex Kowalski 2017-11-08 15:50

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0