GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skript:foundtime

FoundTime

Doplní čas nálezu podle nejbližšího bodu z prošlých stop v GPX souborech. Další skript VisitTime zobrazí časy přiblížení k vybranému bodu.
FoundTime je vhodný pro ty, kteří nepíší nebo nepsali časy do logů, odkud je GeoGet umí standardně importovat.
Časy nálezů se hodí pro určení pořadí nálezů v rámci jednoho dne, což je potřeba pro některé statistiky.

Autor

Automatická instalace

Nainstalovat do GeoGetu
Instalaci doplňku spustíte kliknutím na tlačítko vlevo. Následně budete v prostředí GeoGetu provedeni instalačním procesem. Pro zajištění této funkce je třeba mít na počítači již nainstalovaný a spuštěný program GeoGet .
Kliknuli jste na tlačítko a nic se nestalo? Máte opravdu spuštěný GeoGet ? Je to potřeba! Mění se Vám při přejetí přes tlačítko kurzor na ručičku? Instalační tlačítko využívá JavaScript a Flash. Váš webový prohlížeč tedy pravděpodobně nesplňuje potřebné předpoklady. Nevadí, instalaci doplňku můžete jednoduše vyvolat i prostým zkopírováním (označit text → klik pravým tlačítkem → kopírovat) následujícího odkazu do schránky: https://www.geoget.cz/doku.php/user:skript:foundtime?download

Diskuze

  • Diskuze o tomto skriptu se nachází na stránkách Geocaching.cz.

Velmi stručný popis použití

  1. Soubory GPX s prošlými stopami zkopírujte z GPS do složky v počítači.
  2. Spusťte v GeoGetu skript FoundTime. Ten se pro keše bez času nálezu pokusí najít nejbližší bod ze dne nálezu, a jeho čas doplní do databáze GeoGetu.

Velmi podrobný popis použití

Vyluštěné finálky mysterek ukládejte jako waypointy

Není to nutné, ale pokud jsou finální souřadnice daleko od výchozích a pokud nebudou uložené v databázi GeoGetu, nemůže skript FoundTime čas nálezu správně určit.
Finální waypointy můžete uložit i kdykoliv později, ale pokud je uložíte včas, budou zahrnuty do exportu do GPS.

Při hledání keší zaznamenávejte v GPS prošlou stopu

To umožňují snad všechny turistické GPS i aplikace v mobilech a PDA. Jen je to někdy potřeba zapnout. Kromě toho také bývá možno nastavit, jak často se mají body ukládat, aby vzniklé soubory nebyly zbytečně velké.

  • Garmin (např. eTrex Vista HCx)
    Umožňuje prošlé trasy pojmenovávat, ukládat a různě s nimi pracovat přímo v interní paměti přístroje. Ale kromě toho standardně ukládá na kartu prošlé trasy do denních souborů GPX - ty jsou pro skript FondTime nejvhodnější. Nastavení:
    Hlavni menu → Prosle trasy → Nastaveni → Nastaveni dat. karty → Ulozit pr. trasu na kartu
  • GCzII
    Ukládá veškerý výstup z GPS v NMEA formátu a nelze zapnout na stálo. Nastavení:
    Menu → GPS → Logging Start
  • PocketDrake
    Nastavení → GPS → Povolit záznam stopy

Vyřešené finálky multin ukládejte jako waypointy

Není to nutné, ale pokud jsou finální souřadnice daleko od výchozích a pokud nebudou uložené v databázi GeoGetu, nemůže skript FoundTime čas nálezu správně určit.
Finální waypointy můžete uložit i kdykoliv později.

Prošlé stopy zkopírujte z GPS do složky v počítači

Pro účely skriptu FoundTime jsou nejvhodnější denní prošlé trasy z GPS Garmin s názvy ve tvaru yyyymmdd.gpx. Ty lze z karty zkopírovat dvojím způsobem:

  • připojit kabelem a přepnout do režimu externího disku pomocí Hlavni menu → Nastaveni → Propojeni → USB diskova jednotka
  • nebo kartu vyjmout z GPS a vložit do čtečky v počítači.

Tip: Soubory po zkopírování do počítače z karty z GPS občas smažte. Ač se může zdát, že na kartě zbývá ještě hodně volného místa, jsou i další omezení. Garmin eTrex ukládá GPX soubory do kořenového adresáře a v závislosti na způsobu naformátování zde může být limit 256 položek! Byly zaznamenány případy, že po dosažení 255 GPX souborů (+ složka GARMIN) se další bez varování neukládaly.

Skript zpracuje i GPX soubory s jinými názvy (a obsaženým časovým úsekem), než yyyymmdd.gpx, ale musí se to nastavit v konfiguraci.

Pokud nejsou prošlé stopy ve formátu GPX, zkonvertujte je

Pokud máte záznam z GPS v jiném formátu, než GPX 1.0 nebo 1.1, je nutno ho před zpracováním skriptem FoundTime do tohoto formátu zkonvertovat. K tomu lze využít např. program GPSBabel. Lze ho využít i pro konverzi souborů GDB (databáze Garmin GPS programu MapSource) a lze ho spouštět z dávek.

Spusťte skript FoundTime

Při prvním spuštění se skript zeptá na složku s GPX soubory a uloží si ji do konfigurace. Další možnosti konfigurace jsou popsány níže.

Skript:

  1. Zpracuje zadané keše (všechny, zobrazené nebo jen vybrané), a z toho jen:
    • nalezené
    • s datem nálezu
    • bez času nálezu (lze vypnout)
  2. Pro tyto keše:
    1. najde dle dne nálezu příslušný GPX soubor (nebo zpracuje celý adresář GPX souborů)
    2. v něm nejbližší bod ke keši resp. finálce (pokud je v databázi uložen FI waypoint)
    3. pomocí geonames.org najde časovou zónu v daném bodě
    4. UTC čas bodu pomocí timezoneconverter.com převede do místního času bodu
    5. výsledný čas doplní k datu nálezu keše do pole čas nálezu keše v databázi GeoGetu
    6. a poznamená i do tagu FoundTime (s přesností na sekundu ;-) a s časovou zónou).
  3. Na závěr zobrazí hlášení o počtu zpracovaných keší, časech zpracování a případných chybách.

U mystery a multi je trochu nesmyslné hledat nejbližší bod dle výchozích souřadnic (lze to vypnout), ale pokud jste výchozí souřadnice navštívili, může to být použitelný výsledek. Proto také lze stanovit toleranci blízkosti.

Před prvním spuštěním

Instalace

Instalace se standardně provádí z této stránky.
Všechny 3 skripty pluginu se při instalaci zařadí do skupiny FoundTime. FoundTime a VisitTime zobrazí ikony na toolbaru Plugin.

Nastavení a konfigurace

Ve Správci pluginů nastavit konfiguraci FoundTime:

Volba Výchozí
hodnota
Možné
hodnoty
Popis
SlozkaGPX cesta složka s GPX soubory s prošlými stopami, nejlépe s názvy ve tvaru FormatNazvuGPX.gpx (yyyymmdd.gpx)
toto je jediný parametr, který je musí být nastaven
pokud není nastaven, tak se skript na složku zeptá, a uloží do tohoto konfiguračního parametru
FormatNazvuGPX yyyymmdd nevyplněno - prohledají se všechny GPX soubory v adresáři
format formát názvu GPX souborů s denními úseky (např. yyyymmdd)
v syntaxi funkce FormatDateTime Pascalu
prohledá se jen soubor pro požadovaný den
Rozsah list nevyplněno - zpracují se pouze vybrané keše
list zpracují se všechny keše ze zobrazeného seznamu
ať už vznikl podle filtru nebo dalšími úpravami
global zpracují se všechny všechny keše z databáze
při každé z variant se ještě uplatní další podmínky pro výběr keše
TimeZone nevyplněno - zjišťování časové zóny a převody času se provádí přes web
timezoneid TZ dle http://en.wikipedia.org/wiki/List_of_tz_database_time_zones, např. Europe/Prague
o všech bodech se předpokládá, že jsou ze zadané časové zóny
přes web se provádí jen převod času
PC o všech bodech se předpokládá, že jsou z časové zóny aktuálně nastavené v PC
převody času se provádí funkcemi GeoGetu
GeoNamesUsername username registrované na http://www.geonames.org/login
server se používá pro zjištění časové zóny bodu
za registraci poskytuje služby z vyšší dostupností
PozadovanaBlizkost 50 číslo jen body z GPX bližší než zadaný počet metrů se budou považovat za nález keše resp. finálky
PrepisovatFoundTime 0 0 keše s časem nálezu nebo s tagem FoundTime se nevyberou ke zpracování
1 zpracují se, a dříve zapsaný čas se tak může přepsat!
PozadovatFinalky 0 0 finálky se nepožadují
1 pro zpracování multi a mystery keší musí být zadány souřadnice finálního bodu
ChybyDoTagu 0 0 chyby se neukládají (jen se zobrazí na konci běhu skriptu)
1 text chyby se uloží do tagu FoundTime

Nastavení seznamu

Pro práci s FoundTime je dobré si v seznamu keší zobrazit tag FoundTime, který skript nastavuje.
V menu Nástroje → Editor sloupců spusťte Editor sloupců, z dostupných sloupců přesuňte Kategorie tagů do pravé části a do Vlastnosti sloupce → Kategorie tagů: zadejte FoundTime (dokud tag není v databázi, není zde v nabídce).

Sloupec s tagem si zařaďte vedle sloupce Nalezená. Ujistěte se, že se v něm zobrazuje i čas. To lze případně upravit v Nástroje → Nastavení.

Jelikož skript pracuje jen s nalezenými kešemi, je vhodné použít standardní filtr Found (pomocí toolbaru Filtr).

Skript DeleteFoundTime pro smazání falešných časů nálezů

Prohlédněte časy nálezů keší ve sloupci Nalezená. I když jste časy do logů na http://www.geocaching.com nepsali, mohou se u některých keší objevit. Buď jste nějaký čas přeci jen do textu logu napsali - pak je to v pořádku. Nebo jste log dodatečně editovali, v logu se objevilo něco jako This entry was edited by PiTeam on Tuesday, 28 September 2010 at 12:23:25. a GeoGet to bez rozpaků naimportoval do času nálezu. Pak to v pořádku není a pro opravu, resp. smazání takového času z databáze GoeGetu slouží pomocný skript DeleteFoundTime.

Nemá žádnou konfiguraci a pracuje nad aktuálně zobrazeným seznamem.
Spustí se z menu Pluginy → FoundTime → DeleteFoundTime.
Smaže čas nálezu, pokud je stejný, jako záznam o editaci nálezového logu ve tvaru This entry was edited by PiTeam on Tuesday, 28 September 2010 at 12:23:25.. Datum nálezu ponechá.

Složka s GPX soubory s prošlými stopami

Připravte si kdekoliv na disku složku, do které shromáždíte GPX soubory s prošlými stopami. Nejen z posledního výletu, ale za celou vaši historii. Prohledejte všechny disky na všech svých počítačích. Hledejte i soubory gdb a zkonvertujete je na GPX pomocí GPSBabel. Při konverzi nastavte filtr, který odfiltruje Routes a Waypoints a ponechá jen Tracks. Složku nastavte do konfiguračního parametru SlozkaGPX.

Skript VisitTime pro zobrazení časů přiblížení k vybranému bodu

Bonusový skript, 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 GPX souboru nanejvýš jednu v zadané toleranci).
Skript používá konfiguraci skriptu FoundTime, zejména SlozkaGPX a PozadovanaBlizkost.
Předpokládá, že v seznamu keší v okně GeoGetu je vybrána jedna keš.
Výsledky zobrazí v okně s hlášením.

Technické poznámky

Terminologická poznámka

Track, tracklog, prošlá trasa, stopa a prošlá stopa - to všechno jsou synonyma.
Garmin se snaží používat prošlá trasa, ale občas mu do toho pronikne stopa.
Aby se to ostřeji odlišilo od trasa (route), používám zde prošlá stopa.
Ono se to moc neliší, jen body v prošlých stopách mají méně atributů. V minimální variantě jen souřadnice, obvykle mají čas, mohou mít i výšku, ale nemají název, ikonu apod. V GPX apod. souborech jsou uloženy od tras odděleně.

Problém zjištění místního času z GPX

Předpokládám, že datum do logů na http://www.geocaching.com se píše podle data v místním čase 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.org/export/web-services.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.timezoneconverter.com/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 jednom 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.

Skript nyní podporuje dle konfigurace i variantu, že prohledává všechny soubory v zadaném adresáři bez ohledu na název souboru. Nejdříve si však spočítá, jaký byl UTC čas na začátku a konce dne nálezu v místním čase. Ani to není triviální, někdy někde mají dny 23 nebo 25 hodin 8-o. Používá k tomu výše zmíněné metody.

Prohledávání GPX souborů

Skript používá pro parsování GPX souborů Msxml2.DOMDocument.6.0 dle Volání COM/OLE objektů.
XPath dotaz jsem doplnil o 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 8-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.de/LatitudeLongitudeBoundingCoordinates (Jan Philip Matuschek). Lze tak prohledávat velké GPX (třeba sloučené za celý rok).

Knihovny

Plugin obsahuje 4 unity:

TimeConversions Hledání časové zóny v daném bodě, převod času mezi zónami, převod do a z několika textových formátů.
TrackLogParser V daném GPX souboru s tracklogem najde nejbližší záznam podle několika možných kritérií.
SaveConfig Uložení změny konfiguračního parametru do souboru *.config.pas.
GeoLocation Hledání omezujících souřadnic k zadanému bodu na kouli a kruhu kolem něj.

Stažení

:!: Stáhnout aktuální verzi: foundtime-1.0.2.gip

Seznam dostupných verzí

FilenameLast modified
foundtime-1.0.2.gip (15.05 KiB, 6y ago, 703 downloads)2011/11/04 00:00

Seznam změn

1.0.2 (2011/11/04)

  • Instalátor vytváří skupinu FoundTime a zapíná ikony na toolbaru
  • Oprava skriptu DeleteFoundTime (přepočet AM/PM časů)

1.0.0 (2011/02/15) (počet stažení: 202)

  • Úvodní verze
user/skript/foundtime.txt · Last modified: 2011/12/22 00:00 (external edit)