GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skript:foundtime

Differences

This shows you the differences between two versions of the page.


Previous revision
user:skript:foundtime [2011/11/09 21:19] mpistora
Line 1: Line 1:
-====== FoundTime ====== 
-Doplní čas nálezu podle nejbližšího bodu z prošlých stop v GPX souborech. Další skript [[#skript_visittime_pro_zobrazeni_casu_priblizeni_k_vybranemu_bodu|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é [[user:skript:ggstat|statistiky]]. 
- 
-===== Autor ===== 
-  * **[[http://www.geocaching.cz/profile.php?lookup=9140|mpistora]]** / **[[http://www.geocaching.com/profile/?u=PiTeam|PiTeam]]** 
- 
-===== Automatická instalace ===== 
-~~GEOGET_INSTALL~~ 
- 
-===== Diskuze ===== 
-  * Diskuze o tomto skriptu se nachází na stránkách [[http://www.geocaching.cz/forum/viewthread.php?forum_id=20&thread_id=17453|Geocaching.cz]]. 
- 
-===== Velmi stručný popis použití ===== 
-  - Soubory GPX s prošlými stopami zkopírujte z GPS do složky v počítači. 
-  - 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.\\ 
-[[user:menu:waypointy|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é. 
-  * **[[http://www.garmin.com|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// 
-  * **[[http://www.nicque.com/PQz/GCz.htm|GCzII]]**\\ Ukládá veškerý výstup z GPS v NMEA formátu a nelze zapnout na stálo. Nastavení:\\ //Menu -> GPS -> Logging Start// 
-  * **[[http://pocketdrake.cz|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.\\ 
-[[user:menu:waypointy|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ž [[http://www.topografix.com/gpx.asp|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 [[http://www.gpsbabel.org/|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 [[#nastaveni_a_konfigurace|níže]]. 
- 
-Skript: 
-  - 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) 
-  - Pro tyto keše: 
-    - najde dle dne nálezu příslušný GPX soubor (nebo zpracuje celý adresář GPX souborů) 
-    - v něm nejbližší bod ke keši resp. finálce (pokud je v databázi uložen FI waypoint) 
-    - pomocí [[http://www.geonames.org/export/web-services.html#timezone|geonames.org]] najde časovou zónu v daném bodě 
-    - UTC čas bodu pomocí [[http://www.geonames.org/export/web-services.html#timezone|timezoneconverter.com]] převede do místního času bodu 
-    - výsledný čas doplní k datu nálezu keše do pole čas nálezu keše v databázi GeoGetu 
-    - a poznamená i do tagu FoundTime (s přesností na sekundu ;-) a s časovou zónou). 
-  - 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 [[#automaticka_instalace|této stránky]].\\ 
-Všechny 3 skripty pluginu se při instalaci zařadí do skupiny FoundTime. FoundTime a VisitTime zobrazí ikony na [[user:menu:toolbary#Plugin|toolbaru Plugin]]. 
- 
-==== Nastavení a konfigurace ==== 
-Ve [[user:menu:pluginy:spravce_pluginu|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 [[:user:menu|menu]] //Nástroje -> Editor sloupců// spusťte [[user:menu:nastroje#editor_sloupcu|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 -> [[user:menu:nastroje:nastaveni|Nastavení]]//. 
- 
-Jelikož skript pracuje jen s nalezenými kešemi, je vhodné použít standardní filtr **Found** (pomocí [[user:menu:toolbary#Plugin|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í [[http://www.gpsbabel.org/|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 [[http://cs.wikipedia.org/wiki/Coordinated_Universal_Time|UTC]]. Pokud chceme z takového záznamu zjistit, jaký byl v daném bodě místní čas, musíme zjistit: 
-  - jaká tam (tehdy) byla časová zóna 
-  - 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 [[user:skript:elevation|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ů [[http://msdn.microsoft.com/en-us/library/ms766487(v=VS.85).aspx|Msxml2.DOMDocument.6.0]] dle [[user:skripty:com|Volání COM/OLE objektů]].\\ 
-[[http://www.w3.org/TR/xpath/|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 [[user:skripty:unit|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. | 
- 
-/* ===== Poznámky, známé problémy ===== */ 
- 
-===== Stažení ===== 
-<box round 95% #DEE7EC> 
-:!: Stáhnout aktuální verzi: ~~DOWNLOAD foundtime-*.gip highest~~ 
-</box> 
- 
-==== Seznam dostupných verzí ==== 
-{{filelist>foundtime:*.gip&style=table&tableheader=1&tableshowdate=1&sort=mtime&limit=1}} 
- 
-===== 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 
- 
-/* Seznam tagů. Tagy můžete stránce přidělit buď ručně na následující řádce, nebo pomocí zatržítek v zápatí editačního okna */ 
-{{tag>skript ggp gpx}} 
  
user/skript/foundtime.txt · Last modified: 2021/12/11 15:40 by mikrom