Autor Zpráva
igid26
Profil
Zdravím,
Potreboval by som vypočítať vzdialenosť medzi miestami a ich GPS súradnicami. Ide o web, ktorý je robený formou článkov o zaujímavých cestovateľských miestach. Každý článok má v pätičke zobrazené podobné (relevantné) články, ktoré sú zobrazované podľa rovnakého mesta. Ja potrebujem pri každom článku zobraziť vzdialenosť medzi aktuálnym článkom a tými podobnými článkami na základe GPS polohy.

Príklad:
Aktuálny článok (Poloha: Bratislava)

Podobné články:
Článok 1 (Poloha: Pezinok) vzdialenosť: 21 km
Článok 2 (Poloha: Senec) vzdialenosť: 33 km
Článok 3 (Poloha: Trnava) vzdialenosť: 56 km

Ten výpočet vzdialenosti musí byť počítaní po ceste a nie vzdušnou čiarou. Momentálne na tento výpočet používam službu Google Maps Distance Matrix. Distance Matrix dokáže vypočítať vzdialenosť medzi dvoma miestami, ale problém je v limitoch tejto služby pri bezplatnej verzii. Táto funkcia mi často nefunguje, pretože vyhadzuje: You have exceeded your daily request quota for this API. Teda, že bola prekročená denná kvóta. Návštevnosť webu je cca 30 unikátnych návštev denne a tých podobných článkov je tam 6. Takže 6 x 30 = 180 a limit by mal byť 2500 dotazov.

Môj dotaz teda znie, dá sa to vypočítať nejakým iným spôsobom?

Vopred ďakujem za odpovede
Alphard
Profil
Ty vzdálenosti by bylo rozumný ukládat a ne hledat pro každého návštěvníka znovu.
Do budoucna počet kombinací sice dost rychle poroste, ale zatím by to mělo být v pohodě.
M4n
Profil *
Pro tuto úroveň návštěvnosti nebude limit Google API problém. Měl bych jen pochybnosti, jestli vůbec někoho zajímá dojezdová vzdálenost — je to už dost nejednoznačný údaj, závislý na zvolené trase, ochotě platit mýto a tak dál. Geografická vzdálenost často úplně stačí.

V souvislosti s tím jenom pozor, že Země je koule a geografická poloha je dána ve stupních, takže Pythagorova věta tady nefunguje. Šikovný trik je ukládat polohu v databázi jako POINT a vzdálenost počítat pomocí ST_Distance_Sphere.
igid26
Profil
Alphard - asi bude naozaj najrozumnejšie to uložiť. Ono to nie je v pohode, pretože mi neustále vyhadzuje prekročený limit a tým pádom to nefunguje.
M4n - myslím si, že dojazdová vzdialenosť je v tomto prípade nutná. Tie podobné články sú zobrazované podľa mesta a krajov. Testoval som aj geografickú vzdialenosť a v niektorých prípadoch je ten rozdiel medzi dojazdovou a geografickou vzdialenosťou viac ako 100 km.

Každopádne ďakujem za rady.
Tomášeek
Profil
igid26:
Také bych se přikláněl k uvádění vzdáleností vzdušnou čarou. Nevím, o jaká místa se jedná (hrady, parky, muzea, ...?), ale uvedenou vzdálenost budu vnímat jako nejkratší možnou, protože cest může k cíli vést mnoho. Zbytečně od návštěvy dalších míst odrazuješ.

Jinak co se týče Alphardova návrhu, tím "v pohodě" myslel ukládání možných kombinací. Osobně bych to takhle neřešil a šel cestou placené Matrix API. Tisíc dodatečných dotazů stojí půl dolaru, což je nějakých 11 korun, ročně asi 4.000 Kč, pokud bych uvažoval platbu každý den, což není nezbytné. To není nic dramatického. Ale jak říkám, hodnoty, které ukazuješ, jsou z principu nesmyslné a zbytečně jen komplikuješ jinak vcelku jednoduchou informaci. Trasu si stejně každý bude hledat (v mapě, v navigaci) a reálnou vzdálenost jednotlivých nabídnutých variant uvidí.
_es
Profil
Tomášeek:
Osobně bych to takhle neřešil a šel cestou placené Matrix API. Tisíc dodatečných dotazů stojí půl dolaru, což je nějakých 11 korun, ročně asi 4.000 Kč,
Platiť toľko len za to, že mi to znovu odošle, čo už bolo vyrátané, len preto, že je správca stránky lenivý spraviť ukladanie už vyrátaných hodnôt... Najmä keď ide len o akýsi doplňujúci zaujímavý údaj a nie o niečo podstatné.

igid26:
Ide o blízke miesta, či aj vzdialené zahraničie?
Možno by bolo vhodné okrem vzdialenosti „po ceste“ dať aj vzdialenosť vzdušnou čiarou.
Návštevník tak môže získať lepšiu predstavu o vzájomnej vzdialenosti.
Čo keď by návštevník chcel ísť nie po ceste, ale vlakom, alebo loďou, lietadlom...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0