Přejít na obsah


Fotka

FoundTime - doplní čas nálezu podle nejbližšího bodu z prošlých stop v GPX souborech


  • Pokud chcete vložit odpověď, přihlašte se
16 odpovědí na toto téma

#1 mpistora

mpistora

    Advanced Member

  • Members
  • PipPipPip
  • 245 příspěvků(y)

Publikováno 25 leden 2011 - 20:55

EDIT:
Aktuální verze FoundTime i s popisem je na http://geoget.ararat...kript:foundtime

V diskusi GeoGet a GgStat - pořadí nálezů se ukázalo, že je dobré mít v databázi GeoGetu časy nálezů. To se běžně řeší tak, že se napíšou na začátek logu a GeoGet je odtud při importu získá.
Co však mají dělat ti, co časy nelogovali, nelogují, nebo dokonce logovat nechtějí?

Motto:

MaFa napsal:
Jinak já občas časy doplňuju podle trasy zaznamenané v navigaci.


Pokusil jsem se zautomatizovat tuto ideu a napsal jsem skript FoundTime pro GeoGet, který metodou geotaggingu prohledá GPX soubory s prošlými stopami, najde v nich nejbližší bod ke keši ze dne nálezu a jeho čas doplní k datu nálezu do databáze GeoGetu.

Na první pohled jednoduché, ale záhy se objevilo několik problémů.

Předpokládám totiž, že kačer je zodpovědný a vždy používá kalendář a hodiny nastavené přesně dle platné legislativy v místě nálezu keše. Ovšem do tracklogů v GPX souborech se ukládá časový údaj zásadně v čase UTC. Pokud chceme z takového záznamu zjistit jaký byl v daném bodě místní čas, musíme zjistit:
1) jaká tam (tehdy) byla časová zóna
2) jaká ta zóna má (tehdy měla) vlastnosti, resp. posun oproti UTC (včetně případného letního času)
Jelikož časové zóny mají hranice často na hranicích států a definice vlastností časových zón se občas mění (i definice států a jejich hranic) nejde o nějaký triviální výpočet, resp. je k němu potřeba velké množství dat. Například až nejnovější GPS Garmin (Oregon) obsahují (aktuální) mapu časových zón a umí automaticky přepočítávat na místní čas.
Databáze časových zón http://www.twinsun.com/tz/tz-link.htm sice existuje ve formě knihovny pro Deplhi, ale pro nějaké o hodně modernější než je v GeoGetu.
Složitější úloha s mapou hranice časových zón by možná šla pojmout jako nějaké polygony, ale nejjednodušší je použít webové služby.

Nenašel jsem ovšem žádnou, která by pro zadané GPS souřadnice a (minulý) UTC čas vrátila (tehdejší) místní datum a čas.
Na http://www.geonames....s.html#timezone jsem našel službu pro přepočet souřadnic na časovou zónu (je hned vedle služby, kterou používá skript Elevation). Jen teoretický problém je, že pracuje s aktuálními hranicemi.
Na druhou operaci jsem nenašel webovou službu, ale jen stránku http://www.timezonec...cgi-bin/tzc.tzc, která převádí i starší časové údaje mezi velkou nabídkou časových zón.

Druhý problém je, zda lze spolehnout na segmentaci prošlých stop tak, jak je vytváří Garmin. Zda body z „jednoho dne“ jsou v jednoum souboru a jak je vlastně ten „jeden den“ definován. Zdá se, že nikoliv dle UTC času, ale podle místního času (dle nastavení GPS). To je pro naše účely vhodné. Ale nevím, zda na to lze spolehnout. Nezkoušel někdo poblíž půlnoci a poblíž hranice časového pásma (a speciálně mezinárodní datové hranice) přaskakovat tam a zpět (ze dne do dne) a pozorovat, jak se mu ukládají stopy do GPX?

Sestavil jsem skript, který:
* Zpracuje zadané keše (dle konfigurace všechny, nebo jen vybrané), a z toho jen:
- nalezené
- s datem nálezu
- bez času nálezu (lze vypnout)
* Pro tyto keše:
- najde dle dne nálezu příslušný GPX soubor
- v něm nejbližší bod ke keši resp. finálce
- pomocí geonames.org najde časovou zónu v daném bodě
- UTC čas bodu pomocí timezoneconverter.com převede do zjištěné zóny bodu
- výsledný čas doplní do času nálezu keše
- a poznamená i do tagu FoundTime (s přesností ne sekundu ;) a s časovou zónou).

Skript má několik konfiguračních parametrů, zejména adresář s GPX.
U mystery a multi je trochu nesmyslné hledat dle výchozích souřadnic (lze to vypnout), ale pokud jste výchozí bod navštívili, může to být použitelný výsledek. Proto také lze stanovit toleranci blízkosti.
Kromě použití jednodenních GPX souborů, lze zvolit prohledávání všech GPX souborů v adresáři.
Nedávno server geonames.org zavedl nové dostupnější služby pro registrované uživatele (na http://www.geonames.org/login). To lze také zadat do konfigurace.

Zatím jsem se nezabýval automatickou instalací a skript dávám zájemcům k otestování jako přílohu zip v tomto příspěvku. Připomínky jsou vítány. :)
Jsem si vědom, že zejména pokročilí uživatelé GeoGetu píší časy do logu, takže tento skript nepotřebují.
Proto jsem jako bonus sestavil skript VisitTime, který pro vybranou keš projde všechny GPX soubory v daném adresáři a vypíše všechny „návštěvy“ tohoto bodu (z každého souboru nanejvýš jednu v zadané toleranci).
Další bonusový skript DeleteFoundTime smaže čas nálezu pokud je stejný jako zaznam o editaci logu ve tvaru např. „This entry was edited by PiTeam on Tuesday, 28 September 2010 at 12:23:25.“, což GeoGet bez rozpaků importuje do času nálezu.

Součástí jsou 4 unity:
Jedna parsuje a prohledává GPX tracklogy.
Druhá provádí převody časů mezi zónami a zjišťuje zónu bodu.
Třetí umožňuje skriptu zapisovat do jeho konfigurace.
Čtvrtá pro stanovení ohraničujícího boxu pro zadané souřadnice a vzdálenost.
  • 0

#2 VasaM

VasaM

    VasaM

  • Members
  • PipPipPip
  • 855 příspěvků(y)

Publikováno 28 leden 2011 - 22:34

Skripty vypadají zajímavě, bohužel ho nevyužiji, protože jsem se naučil si časy zapisovat, ale i přesto přeji hodně úspěchů.
  • 0
Mapy pro přístroje Garmin: http://www.garmin.vasam.cz (GitHub)

#3 montardo

montardo

    Member

  • Members
  • PipPip
  • 17 příspěvků(y)

Publikováno 28 leden 2011 - 23:07

Tenhle plugin vypadá jako velice dobrý pomocník, tak jsem to hned chtěla vyzkoušet. Nějak se mi ho ale nedaří rozchodit. Mám soubor keší s už vyplněnými přibližnými časy v Geodetu a chtěla jsem zkusit s pomocí pluginu a uloženého GPX logu cesty zpřesnit časy. GPX trasa mi na mapě sedí hezky, takže odchylky by měli být minimální. Timezone jsem vyplnila - Europa/Prague GeonamesUserName - prázdné PozadovanaBlizkost - už jsem zkoušela až 500 Prepisovat - 1 Plugin se rozjede, ale nakonec vypíše: Zjištěn a uložen čas nálezu: 0, Nefunguje mi ani DeleteFoundTime. Ještě jsem zkoušela si v Geogetu ručně vytvořit tag FoundTime a změnit v nastavení skriptu ChybyDoTagu=1, ale nic mi to do Tagu nezapíše. Jako poslední možnost, co mě napadla, jsem se zaregistrovala na Geonames a nechala pak Timezone prázdné ale nepomohlo to. Kde může být chyba?
  • 0

#4 sobikovi

sobikovi

    Advanced Member

  • Members
  • PipPipPip
  • 7 957 příspěvků(y)

Publikováno 28 leden 2011 - 23:33

Celé tohle udělátko má jednu zásadní slabinu... po update nalezených keší z gc.com se logy přepíší a můžeš začít znovu. Jediná správná cesta je zapsat časy nálezu do logu na gc.com...
  • 0

#5 h0--

h0--

    Advanced Member

  • Members
  • PipPipPip
  • 2 141 příspěvků(y)

Publikováno 28 leden 2011 - 23:46

Pockej, geoget vazne prepise pri importu myfinds ty casy, co sem si do nej rucne ulozil?
  • 0

Lovím zážitky a zakládám body. | https://openstreetmap.cz/

 

#6 mpistora

mpistora

    Advanced Member

  • Members
  • PipPipPip
  • 245 příspěvků(y)

Publikováno 28 leden 2011 - 23:57

montardo napsal/a:Kde může být chyba?

Chyba může být leckde:
- žádná keš neprojde výběrem
pokud projde, zobrazí se v okně GeoGet pracuje... její název a datum, pokud se najde vhodný bod, přepíše se to na blízkost, pak zónu a nalezený datum a čas
probíhalo to?

- GPX soubory jsou jiné než jsem čekal
jsou z Garmina?
nešlo by jeden malý dát sem jako přílohu nebo mi poslat mailem?

- chyba při parsování nebo dalším zpracování
ta by se ale měla nějak zobrazit


Europa/Prague sice správně nebylo (má být Europe/Prague), ale fatálně to nevadí, jen se nepřepočte čas z UTC.

Prosím o kopii celého závěrečného výpisu a díky za beta test. ;)
  • 0

#7 sobikovi

sobikovi

    Advanced Member

  • Members
  • PipPipPip
  • 7 957 příspěvků(y)

Publikováno 29 leden 2011 - 0:04

honny napsal/a:
Pockej, geoget vazne prepise pri importu myfinds ty casy, co sem si do nej rucne ulozil?

Ano. Pokud je v logu něco jako čas, přepíše hodnotu tímto a pokud to tam není, tak to nastavuje na 00:00...
  • 0

#8 fremen.cz

fremen.cz

    Advanced Member

  • Members
  • PipPipPip
  • 2 681 příspěvků(y)

Publikováno 29 leden 2011 - 0:13

co to pak doplnit přes geocache_visits.txt? ;)
  • 0

Merida s ještěrkou, nohy, MHD, vlak + Dakota 20 + většinou "geobáglík"
* Až budu mít víc odlovů jak příspěvků, znamená to, že jsem bez práce nebo v důchodu *
Obsah keší JE většinou tragický
- Endorphins are released during climbing which can cause severe dependence on the sport -


#9 mpistora

mpistora

    Advanced Member

  • Members
  • PipPipPip
  • 245 příspěvků(y)

Publikováno 29 leden 2011 - 0:23

sobikovi napsal/a:

honny napsal/a:
Pockej, geoget vazne prepise pri importu myfinds ty casy, co sem si do nej rucne ulozil?

Ano. Pokud je v logu něco jako čas, přepíše hodnotu tímto a pokud to tam není, tak to nastavuje na 00:00...

Podle mých pozorování se honny nemusí ničeho obávat a funguje to dobře.
GeoGet použije čas z nálezového logu jen pokud je v databázi čas 00:00.
Takže jedině půlnoc je zapovězená ;)
  • 0

#10 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14 508 příspěvků(y)

Publikováno 29 leden 2011 - 7:59

presne tak. casy se pri importu doplnuji jen tehdy, kdyz tam zadne nejsou.
  • 0

#11 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14 508 příspěvků(y)

Publikováno 29 leden 2011 - 9:46

Zkontrolovano, a import HTML listingu cas nalezu nezmeni.
  • 0

#12 sobikovi

sobikovi

    Advanced Member

  • Members
  • PipPipPip
  • 7 957 příspěvků(y)

Publikováno 29 leden 2011 - 9:50

HaLuMa napsal/a:
Zkontrolovano, a import HTML listingu cas nalezu nezmeni.

Ano, ověřil jsem si to, nevím jak se mi to včera povedlo. Proto jsem svůj předchozí příspěvek smazal. B)
  • 0

#13 mpistora

mpistora

    Advanced Member

  • Members
  • PipPipPip
  • 245 příspěvků(y)

Publikováno 29 leden 2011 - 13:08

fremen.cz napsal/a:
co to pak doplnit přes geocache_visits.txt? ;)

Jo to by šlo.
Ale gc.com není tak dokonalý jako GeoGet s FoundTime. ;)
Kromě toho že časové pásmo nepočítá dle místa keše, ale jen z předvolby v profilu, tak neumí aktualizovat staré logy, ale jen vkládat nové.
Takže by se rázem zdvojnásobil počet nálezů. :o
Ale třeba by se to někomu hodilo.
  • 0

#14 montardo

montardo

    Member

  • Members
  • PipPip
  • 17 příspěvků(y)

Publikováno 01 únor 2011 - 18:09

Uděluji mpistorovi 1* za pomoc při rozchození tohohle skriptu i pro moji méně chytrou GPS od Holuxu. :)
  • 0

#15 mpistora

mpistora

    Advanced Member

  • Members
  • PipPipPip
  • 245 příspěvků(y)

Publikováno 06 únor 2011 - 19:09

Ukázalo se, že problém byl v domalovaných:o bodech, které byly bez času. Zodolnil jsem skript, aby ho to nerozházelo.

Když už jsem byl v úpravách XPath dotazu, doplnil jsem i předběžnou filtraci dle časoprostorového kvádru - tedy jak omezujících časů, tak i omezujících souřadnic. S omezením souřadnic je problém okolo pólů (ze čtverců tam jsou trojúhelníky :o) a poblíž 180. poledníku.
Je to pravda trochu teoretický problém, protože na pólech (zatím) žádné keše nejsou.
Použil jsem algoritmus dle http://janmatuschek....dingCoordinates (Jan Philip Matuschek).
Lze tak nyní rychleji prohledávat velké GPX (třeba sloučené za celý rok).

Aktuální verze skriptu je v příloze prvního příspěvku.
  • 0

#16 h0--

h0--

    Advanced Member

  • Members
  • PipPipPip
  • 2 141 příspěvků(y)

Publikováno 06 únor 2011 - 20:44

Musím to vyzkoušet, myšlenka je super. :)
  • 0

Lovím zážitky a zakládám body. | https://openstreetmap.cz/

 

#17 mpistora

mpistora

    Advanced Member

  • Members
  • PipPipPip
  • 245 příspěvků(y)

Publikováno 16 únor 2011 - 1:54

Aktuální verze FoundTime i s popisem a automatickým instalátorem je na
http://geoget.ararat...kript:foundtime

  • 0




0 uživatel(ů) prochází toto téma

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

Reklama