Vizualizace tras GPX pomocí API webové mapové aplikace

Doc. Dr. Vladimír Homola, Ph.D.

Anotace

Geoinformatické aplikace, navigační systémy a další zdroje poskytují soubory ve formátu GPX (= GPS Exchange Format). Pokud však v souboru GPX jsou pouze data týkající se polohy a času, nastává problém s identifikací trasy zaznamenané v jednotlivých souborech. Webové mapové servery, nabízející API pro budování odvozených aplikací, poskytují možnost vizualizace souboru GPX liniovým prvkem, avšak bez znázornění směru. Jednoduchá vlastní aplikace využívající API slouží ke katalogizaci většího počtu souborů GPX v poloautomatizovaném režimu.

Annotation

GPX (= GPS Exchange Format) files are provided by geoinformatics applications, navigation systems, and other resources. However, if the GPX file data are only related to the position and time, there is a problem with the identification of the route recorded in individual files. Web map servers, offering an API for building applications derived, providing the possibility to visualize GPX file as line-element, but without representation of direction. Simple custom application using API was developed for cataloguing multiple GPX files in semi-automatic mode.

1. Úvod

Úlohy, zpracovávající informace spojené s polohou na zemském povrchu, jsou dnes velmi frekventované. Obecně pracují hlavně se třemi typy objektů:

Při intenzivním používání GPS navigace (resp. GPS navigačních programů) vzniká řada jednotlivých track-logů (= záznamů absolvované trasy). Mnoho řidičů dokonce používá své GPS přístroje ani ne tak pro vlastní navigaci, ale právě pro získání záznamů tras, které pak dále zpracovává. Pak ovšem nastává problém známý z digitální fotografie: máme tisíce fotografií označených např. DSC04125 - ale z pouhého názvu nelze usoudit ani na místo, ani na čas. A z navigací máme desítky záznamů; jejich označení sice obsahuje často datum event. čas, ale odkud kam se jelo? Po půl roce je to problém. Zpětnou vizualizaci některé navigační programy umožňují, ale přístoj musí být k disposici a navíc práce s převážně malými obrazovkami příliš komfortní není. Popisovaná aplikace především vizualizuje záznam trasy, ale navíc umožňuje vytvoření textového souboru s informacemi o řadě po sobě vizualizovaných tras, který je přímo zpracovatelný programem Excel a dalšími.

Tento článek se zabývá především vizualizací tras. Níže popsaná aplikace může být po drobné úpravě použita i pro vizualizaci cest.

Geoinformatické aplikace, navigační systémy a další zdroje poskytují záznam trasy v jednoduchém formátu GPX opírajícího se o principy XML. Formát GPX je dostatečně znám, viz např. [1] nebo [2]. Pro názornost elementární výřez takového souboru:


<?ix.com/GPX/1/0">


 <trk>

   <trkseg>
      <trkpt lat="50.64061499" lon="13.82354665">
         <time>2012-10-02T10:30:15Z</time>
      </trkpt>
       ...
   </trkseg>

   <trkseg>
      <trkpt lat="50.64033663" lon="13.82351494">
         <time>2012-10-02T10:30:25Z</time>
      </trkpt>
       ...
   </trkseg>

   ......

 </trk>

</gpx> 
   

GPX soubor, jehož část je uvedena výše, byl generován jedním z navigačních programů. Obsahově jde o minimální tvar a v obdobné kvalitě ho vytváří i řada dalších - nejen navigačních - aplikací. Pokud je takových souborů více a pokud uživatel za dobré paměti nepoznamená do svých materiálů odkud, kam a přes která místa trasa vedla, je pak problém s pozdější identifikací jednotlivých tras - viz výše.

V souborech GPX bývá běžně desítky tisíc bodů trasy. Přestože jde o textový soubor, není reálné náhodným zkoumáním několika dvojic souřadnic odhadnout průběh trasy. Jednou z možností je vizualizace tras na nějakém mapovém podkladu, pohledové odečtení významných míst na trase a jejich záznam do nějakého katalogového souboru - tedy jakýsi poloautomatický režim.

Mapové aplikace nabízí k využití Application Programming Interface (API) - rozhraní pro programování vlastních odvozených aplikací využívající objektové třídy a jejich vlastnosti, metody a události mapové aplikace. Pro zamýšlený účel vizualizace je zapotřebí, aby API poskytovalo možnost zadat GPX soubor, mapovou vrstvu a metodu pro vykreslení, a aby odvozená aplikace byla schopna přijmout alespoň textový popis trasy a ve stabilním tvaru ho uchovat (nejlépe v nějakém souboru).

Článek popisuje jednu z možných odvozených aplikací, která shora popsaný problém řeší.

2. API aplikace MAPY.CZ

Citujme ze stránek api4.mapy.cz  [cit.10.10.2015]:

Službu Mapy API provozuje společnost Seznam.cz, a.s., se sídlem Radlická 608/2, 150 00 Praha 5, IČ: 26168685, zapsaná v obchodním rejstříku vedeném Městským soudem v Praze, oddíl B., vložka 6493. Použití Mapy API je zcela zdarma a je možné i pro komerční účely - pro většinu činností není jeho používání nijak omezeno. Použitím Mapy API se především potvrzuje souhlas s - na internetových stránkách (URL) http://www.mapy.cz/ uvedeným - SMLUVNÍM UJEDNÁNÍM PRO SLUŽBU MAPY API.

Služba Mapy API umožňuje svým uživatelům používat některé funkce mapové aplikace, poskytované Společností na internetových stránkách (URL) http://www.mapy.cz/ (dále jen „funkce Služby“), i na vlastních webových stránkách Uživatelů a v rámci vlastních webových aplikací Uživatelů (dále jen "Odvozené aplikace") za dodržení smluvních ujednání.

Mezi nabízené funkce Služby patří např. zobrazování mapových podkladů a poskytování uživatelského rozhraní pro práci s těmito podklady (pohyb mapy, změna měřítka, apod.).

Konec citace.

Na uvedených stránkách je rovněž uvedena sice jednoduchá, ale většinou postačující dokumentace k podporovaným objektových třídám - některé detailnější informace je nutno získat nepříliš náročným experimentováním. Mnohé objasní i prostudování řady na stránkách zveřejněných příkladů.

Popisovaná aplikace pro vizualizaci využívá z uvedeného API tyto objektové třídy:

Konstruktor poslední uvedené vrstvy přijímá upřesňující parametry, především XML dokument obsahující trasu k vykreslení. Tento dokument vytváří předtím uvedená metoda createDocument na základě textového obsahu GPX souboru. Pro popisovanou vizualizaci to jsou stěžejní nástroje.

3. Analýza prostředků

Pro zamýšlený cíl jsou tedy k disposici následující prostředky:

Výsledným produktem nechť je tedy odvozená aplikace ve formě skriptů v HTML dokumentu. Ta především zobrazí podkladovou mapu a zkoumanou trasu. Musí ovšem obsahovat nástroje pro volbu GPX souboru a pro zadání údajů, které mají být po vizuální identifikaci zaznamenány.

3.1. Volba GPX souboru

Jedním z použitelných ovládacích prvků je <input type="file"> reprezentující svázanou dvojici [textové pole, tlačítko]. Tlačítko má standardní popis Procházet ... a po jeho stisknutí je uživateli předložen běžný dialog pro volbu souboru. V něm uživatel označí požadovaný soubor. Jeho úplné označení je po řádném ukončení dialogu přepsáno do textového pole, kde je dostupné jako vlastnost value ovládacího prvku.

Tento ovládací prvek je použit pro volbu GPX souboru, který se má vykreslit.

3.2. Vykreslení trasy

Vykreslení trasy zvolené podle předchozího odstavce by bylo možno zajistit okamžitě po volbě souboru uživatelem jako reakci na některou z událostí. Z praktických důvodů (např. změna volby uživatelem) je vykreslení trasy realizováno jako reakce na stisknutí samostatného tlačítka Vykreslit.

K vykreslení je použito API mapové aplikace. Ta vykreslí trasu jako liniový prvek nad podkladovou mapovou vrstvu. Použitelnost však komplikuje skutečnost, že z tohoto zobrazení nelze rozeznat směr. Ten je pro účely katalogizace samozřejmě podstatný. Proto musí popisovaná odvozená aplikace řešit i toto - a řeší to umístěním značky např. s písmenem S (= Start) do prvního bodu trasy.

3.3. Katalogizace údajů

Po vizuální identifikaci každé jednotlivé trasy zadá uživatel údaje ke katalogizaci. Tyto údaje se připojí do průběžně vytvářeného textového souboru. Po ukončení práce jsou v tomto souboru zadané údaje k disposici pro další zpracování. Byl zvolen formát textového souboru s oddělovačem, kterým je středník. Textové údaje jsou v něm uzavřeny do uvozovek, lze jej tedy např. běžně importovat do programů typu Excel.

Pro jednoduchost popisovaná aplikace neřeší volbu názvu a umístění výstupního souboru uživatelem, ale napevno uvádí jeho úplné označení jako konstantu. Tu může případně uživatel jednoduše ve skriptu změnit. V předkládané verzi má soubor úplné označení definováno proměnnou cJmenoSouboru = "C:\HOMGPXTR.TXT".

Zápis katalogových údajů každé jednotlivé trasy se provede jako reakce na stisknutí tlačítka Zapsat. Současně se zápisem se vymaže vykreslená trasa a pokladová mapa je připravena pro vykreslení další trasy.

3.4. Katalogizované údaje

Pro katalogizaci tras jsou z hlediska uživatele důležité především informace o počátku (S = Start) a ukončení (C = Cíl), a také o důležitých místech průjezdu (X). Právě toto jsou údaje, které nejrychleji zjistí uživatel pohledem. Musí je ovšem pro potřeby katalogizace ručně zadat - pro jejich zápis má k disposici tři textová pole.

Dalšími potřebnými údaji jsou úplné označení příslušného souboru GPX a datum resp. čas pokrývající trasu. Oba údaje lze získat programově. S prvním údajem nejsou problémy, protože je dostupný v ovládacím prvku typu file (viz výše).

SS údajem o datumu a čase je to však složitější. Nelze vzít datum a čas souboru jako takového, protože ten mohl být v mezidobí změněn např. editací. GPX soubor však obsahuje (viz ukázka shora) časové údaje pro každý zaznamenaný bod. Na druhé straně je v době provádění aplikace z obsahu GPX souboru vytvořena instance objektové třídy Document a k jednotlivým elementům se tedy lze dostat velmi jednoduše voláním metody getElementsByTagName. V prezentované aplikaci se takto získá datum a čas ukončení trasy; datum a čas počátku by byl přístupný jednodušeji.

4. Funkčnost odvozené aplikace

Použití shora uvedených objektových tříd a analyzovaných nástrojů může vytvořit prostředí pro vizualizaci podle následujícího obrázku:



Obr. 1: Prostředí aplikace

Výsledkem použití aplikace je - jak shora popsáno - jednoduchý textový soubor zpracovatelný většinou navazujících programů. Tomu vyhovuje prostý textový soubor s údaji oddělenými nějakým oddělovačem, např. středníkem. Pro lepší orientaci při navazujícím zpracování se zdá, že uchované údaje o každé trase by mohly být předcházeny pořadovým číslem vizualizace.

Přijmeme-li za cíl prostředí podle obr. 1, pak

Datová šestice [číslo, soubor, datum a čas, start, cíl, průjezd] je do výstupního souboru zapsána v reakci na událost click tlačítka Zapsat, přičemž soubor se převezme z aktuálního obsahu textového pole příslušného k prvku Procházet v okamžiku události a datum a čas z otevřeného dokumentu GPX. Tento zápis do souboru může proběhnout pokaždé posloupností činností: otevření na pokračování - zápis - uzavření souboru. Vzhledem k pomalosti práce uživatele to nepředstavuje zdržení, naopak při náhodné havárii systému jsou k disposici v uzavřeném souboru doposud katalogizovaná data.

5. Forma a struktura odvozené aplikace

Formou odvozené aplikace pro vizualizaci je soubor ve zcela běžném formátu HTML obsahující sekce skriptů.

Struktura tohoto souboru může být následující:

       <html>
       
          <head>
             ...
             <script>
             </script>
          </head>
          
          <body>
             ...
             <div>
             </div>
             <script>
             </script>
          </body>
          
       </html>
   

6. Popis odvozené aplikace

6.1. Záhlaví dokumentu

Záhlaví dokumentu je klasické, kromě běžných konstrukcí obsahuje dva tagy <script> zpřístupňující knihovnu API a na globální úrovni popisy proměnných a funkcí. Může být následující:

   <head>
   
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
      <meta http-equiv="Content-Language" content="cs">
      <meta name="Author" content="Vladimír Homola + MAPY.CZ">
      <meta name="Description" content="Vizualizace pomocí API webové mapové aplikace serveru mapy.cz">
      <meta name="Keywords" content="Vizualizace, GPX, Programování, API, JavaScript">

      <title>Vizualizace GPX záznamů pomocí api4.mapy.cz</title>
      
      <script type="text/javascript" src="http://api4.mapy.cz/loader.js"></script>
      <script type="script type="text/javascript">Loader.load();</script>
   
      <style (*)> ... </style>
      
   </head>
   

Případně uvedené styly označené (*) mohou být použity pro formátování odstavců těla dokumentu.

6.2. Tělo dokumentu

I tělo dokumentu je klasické. První odstavec obsahuje potřebné ovládací prvky. Na závěr je umístěn oddíl, jehož id je důležitý pro odkaz na místo vložení mapy mapovou aplikací. Tělo může mít následující strukturu:

   <body id="VykresleniGpxTras">
   
         <p>
            <input type="file" id="flSoubor" name="flSoubor" size="35" style="height: 25">  
            <input type="text" id="txDatum" name="txDatum" size="25" style="height: 25">  
            <input type="button" id="tlVykresli" value="Vykreslit ..." onclick="VykresliTrasu()" style="width: 80; height: 25">  
            S:<input type="text" id="txStart" name="txStart" size="8">  
            C:<input type="text" id="txCil" name="txCil" size="8">  
            X:<input type="text" id="txPres" name="txPres" size="8">  
            <input type="button" id="tlZapis" name="tlZapis" value="Zapsat ..." onclick="ZapisDoSouboru()" style="width: 80; height: 25">
            <input type="button" id="tlReset" name="tlReset" value="Reset ..." onclick="ResetVrstvy()" style="width: 80; height: 25">
         </p>

      <div id="PodkladMapa"></div>
      
      <script (**)> </script>
        
   </body>
     

Skripty označené (**) jsou spolu s komentáři obsahem níže uvedené samostatné kapitoly 7.

7. Použité skripty

7.1. Proměnné a objekty na globální úrovni

V úvodní části jsou deklarovány "konstanty" použité např. při zpracování výstupního souboru. Rovněž je napevno uvedena úplná cesta k němu. Pro jednoduchost není výstupní soubor zadáván dynamicky, jádro článku je jinde. Úvodní část rovněž deklaruje globální proměnné.

Identifikátory se autor snažil volit tak, aby text skriptu byl pokud možno samodokumentující.

      <script language="jscript">
   
      /* Globální konstanty */

      var cJmenoVystupu = "C:\HOMGPXTR.TXT";
      
      var cUvoz = "\"";
      
      var ForReading = 1;
      var ForWriting = 2;
      var ForAppending = 8;
      var OverwriteFile = true;

      var TristateUseDefault = -2
      var TristateTrue = -1;                  /* Unicode */
      var TristateFalse = 0;                  /* ASCII */
      var TristateMixed = -2;


      /* Globální proměnné */

      var StredZobrazení;
      var MapaW;
      var OvladaniMysi;
      var SynchroMapySoknem;
      var VrstvaZnacek;
      var VrstvaVolbyTypu;
      var NovaVrstvaGPX;

      var NactenyTextGPX;                     /* Globální předávání textů */
      var CisloTrasyGPX;                      /* Globálně dostupné číslo posledního bodu */
      var DatumCasSouboru;                    /* Globálně předávané datum */
         

Funkce ObsahSouboru pomocí instance třídy FileSystemObject předá jako svůj výsledek obsah souboru jako textový řetězec:

      /* Obsah textového souboru */
      function ObsahSouboru(JmSoub)
      {
         var Soub;
         var Text;
         var fso = new ActiveXObject("Scripting.FileSystemObject");
         Soub = fso.OpenTextFile(JmSoub, ForReading);
         Text = Soub.ReadAll();
         Soub.Close();
         return (Text);
      }
   

Podprogram ZapisDoSouboru zpracuje jednak textová data z ovládacích prvků, jednak data z globálních proměnných. Zkompletuje řádek výstupního textového souboru v požadovaném formátu a zapíše ho na pokračování do souboru:


      /* Výstup do textového souboru */
      function ZapisDoSouboru()
      {
         var FSO = new ActiveXObject("Scripting.FileSystemObject");
         var FLE = FSO.GetFile(cJmenoVystupu);
         var TXS = FLE.OpenAsTextStream(ForAppending,TristateUseDefault);
         var TXT = "";
         CisloTrasyGPX = CisloTrasyGPX + 1;
         TXT = TXT + cUvoz + flSoubor.value + cUvoz + ";";
         TXT = TXT + cUvoz + txStart.value + cUvoz + ";";
         TXT = TXT + cUvoz + txCil.value + cUvoz + ";";
         TXT = TXT + cUvoz + txPres.value + cUvoz;
         TXT = CisloTrasyGPX + ";" + TXT;
         TXS.WriteLine(TXT);
         TXS.Close();
         ResetVrstvy();
      }
  
      </script>
   

Podprogram VykresliTrasu je volán událostí click tlačítka Vykreslit. Načte text GPX ze souboru do proměnné a volá stěžejní funkci VykresliTrasuDoMapy (viz níže):

      /* Po striknutí tlačítka Vykreslit ... */ 
      function VykresliTrasu() 
      { 
         Obsah = ObsahSouboru(flSoubor.value);
         if (!Obsah) { return alert("Vložte do textového pole obsah GPX souboru"); }
         VykresliTrasuDoMapy (Obsah, MapaW, VrstvaZnacek); 
         txDatum.value = DatumCasSouboru;    
      }
   

7.2. Funkce pracující přímo s API

Funkce realizují propojení s API mapové aplikace.

Funkce InitGlobalVars inicializuje globální data. Nejprve nastaví inicializační střed mapy (lze změnit na jakýkoliv oblíbený v rámci ČR), chování myši, vrstvu pro značky a ovládací prvky pro volbu typu zobrazeného mapového podkladu. Pak vytvoří novou instanci výstupu mapové aplikace a propojí ji s oddílem definovaným v těle dokumentu (metoda Get Element knihovny JAK). Umožní používat všechny tři základní vrstvy pro zobrazení mapy, aktuální učiní základní mapové zobrazení. Na závěr přidá požadované ovládání. Funkce vytvoří rovněž prázdný výstupní soubor metodou CreateTextFile objektu FileSystemObject. Tato metoda případný existující soubor přepíše bez dotazu k uživateli. Pozdější případné zápisy do něj už tedy mohou být na pokračování a bez kontroly existence.

      /* Inicializace globálních proměnných */
      function InitGlobalVars() 
      {
         var FSO = new ActiveXObject("Scripting.FileSystemObject");
         var TXS = FSO.CreateTextFile(cJmenoVystupu, OverwriteFile);
         TXS.Close();
         
         StredZobrazení = SMap.Coords.fromWGS84(14.400307, 50.071853);
         MapaW = new SMap(JAK.gel("PodkladMapa"), StredZobrazení, 8);

         OvladaniMysi = new SMap.Control.Mouse(SMap.MOUSE_PAN | SMap.MOUSE_WHEEL | SMap.MOUSE_ZOOM);
         SynchroMapySoknem = new SMap.Control.Sync({ bottomSpace: 15 });
         VrstvaZnacek = new SMap.Layer.Marker();
         VrstvaVolbyTypu = new SMap.Control.Layer();

         MapaW.addDefaultLayer(SMap.DEF_BASE).enable();
         MapaW.addDefaultLayer(SMap.DEF_OPHOTO);
         MapaW.addDefaultLayer(SMap.DEF_TURIST);

         MapaW.addDefaultControls();
         MapaW.addDefaultContextMenu();
         MapaW.addControl(OvladaniMysi);
         MapaW.addControl(SynchroMapySoknem);
         MapaW.addLayer(VrstvaZnacek);

         VrstvaZnacek.enable();

         VrstvaVolbyTypu.addDefaultLayer(SMap.DEF_BASE);
         VrstvaVolbyTypu.addDefaultLayer(SMap.DEF_OPHOTO);
         VrstvaVolbyTypu.addDefaultLayer(SMap.DEF_TURIST);

         MapaW.addControl(VrstvaVolbyTypu, { left: "0px", top: "0px" });
         
         NactenyTextGPX = "";
         CisloTrasyGPX = 0;
         DatumCasSouboru = "???";       
      }
   

Pomocná funkce ResetVrstvy odebere z mapové kompozice vrstvy vytvořené pro vizualizaci daného GPX souboru. Je volána po zápisu uživatelem zadaných dat do výstupního souboru nebo stisknutím tlačítka Reset.

      /* Po striknutí tlačítka Reset ... */  
      function ResetVrstvy() 
      {
         VrstvaZnacek.removeAll();
         MapaW.removeLayer(NovaVrstvaGPX);
         DatumCasSouboru = "???";
         flSoubor.value = "";
         txDatum.value = "";
         txStart.value = "";
         txCil.value = "";
         txPres.value = "";
      }
   

Stěžejní je funkce nazvaná VykresliTrasuDoMapy (volaná dříve uvedenou funkcí VykresliTrasu). V ní se především vytvoří na základě výstupu z GPS dodaného jako parametr dokument XML, poté vrstva tento dokument vizualizující, a zjistí se souřadnice počátečního bodu trasy a datum a čas posledního bodu trasy. Na tomto základě se zpracují příslušné mapové elementy.

      /* Přidání nové vrstvy s obsahem výstupu GPS do mapy */    
      function VykresliTrasuDoMapy(qObsahGPX, qMapa, qZnacky) 
      {
         if (!qObsahGPX) { return alert("Text GPX souboru je prázdný."); }
         
         var DokumentXML = JAK.XML.createDocument(qObsahGPX);

         NovaVrstvaGPX = new SMap.Layer.GPX(DokumentXML, null, { maxPoints: 5000, colors: ["red"] });
         qMapa.addLayer(NovaVrstvaGPX);
         NovaVrstvaGPX.enable();
         NovaVrstvaGPX.fit();
         
         DatumCasSouboru = "???";
         
         var PrvniTrackGPX = NovaVrstvaGPX._tracks[0];
         var SouradnicePrvnihoBoduGPX = PrvniTrackGPX._coords[0];

         var tracks = NovaVrstvaGPX._xmlDoc.getElementsByTagName("trk");

         for (var i = 0; i < tracks.length; i ++ )
           {
             var segments = tracks[i].getElementsByTagName("trkseg");
             for (var j = 0; j < segments.length; j ++ )
               {
                 var pts = segments[j].getElementsByTagName("trkpt");
                 for (var k = 0; k < pts.length; k ++ )
                   {
                      var tims = pts[k].getElementsByTagName("time");
                      for (var l = 0; l < tims.length; l ++ )
                         {
                            var tim = tims[l];
                            DatumCasSouboru = JAK.XML.textContent(tim);
                         }
                   }
               }
           }

         var SouradniceWGS = SouradnicePrvnihoBoduGPX.toWGS84();
         var VolbyObrazku = {src:SMap.CONFIG.img+"/marker/drop-blue.png"}
         var VolbyPopisku = {position:"absolute", left:"0px", top:"2px", textAlign:"center", width:"22px", color:"white"}

         var DivZnacky = JAK.mel("div")
         var VolbyZnacky = {url:DivZnacky};
         var DivPopisku = JAK.mel("div", {}, VolbyPopisku);
         var Obrazek = JAK.mel("img", VolbyObrazku);
         var Znacka = new SMap.Marker(SouradnicePrvnihoBoduGPX, null, VolbyZnacky);

         DivPopisku.innerHTML = "S";
         DivZnacky.appendChild(Obrazek);
         DivZnacky.appendChild(DivPopisku);
         qZnacky.addMarker(Znacka);                  
      }

      </script>
        
   </body>
   
</html>
   

Závěr textu HTML tvoří obvyklé tagy pro ukončení skriptu, těla a celého dokumentu.


      </script>
        
   </body>
   
</html>
   

8. Výsledná data

Data ve formě uspořádaných šestic [číslo, soubor, datum a čas, start, cíl, průjezd]  jsou ukládána do textového souboru. Jeho příklad je následující:

1;"D:\AUTOITI\IGOGPX\GPXUNQ\T 15-11-02.GPX";"2015-11-02T10:23:13Z";"Most";"Teplice";"Bílina"
2;"D:\AUTOITI\IGOGPX\GPXUNQ\T 15-11-02.GPX";"2015-11-02T10:50:40Z";"Teplice";"Most";"Bílina"
3;"D:\AUTOITI\IGOGPX\GPXUNQ\T 16-01-14.GPX";"2016-01-14T11:39:19Z";"Přerov";"VŠB";"Lipník, Hranice, Příbor"
4;"D:\AUTOITI\IGOGPX\GPXUNQ\T 16-03-28.GPX";"2016-03-28T10:11:52Z";"Rokoska";"Břevnov";"Letná, Hradčany"
5;"D:\AUTOITI\IGOGPX\GPXUNQ\T 16-03-30.GPX";"2016-03-30T08:16:19Z";"Paskov";"Karolinka";"Místek, Frýdlant, Frenštát, Soláň"
   

Tato data lze přímo do aktivního listu importovat aplikací Excel tak, že vznikne oblast např.

 


Obr. 2: Importovaná generovaná data

a to buď "ručně" pomocí nabídek prostředí aplikace Excel, nebo automatizovaně voláním podprogramu vytvořeného např. jako makro. V hořejší ukázce dat v sešitu je rovněž ukázka možného využití, a to pro přípravu .BAT souboru, který přejmenuje GPX soubory na jména trasy rozumně popisující.

9. Ke stažení

Shora popsaný soubor HTM lze stáhnout z adresy uvedené zde. Po stažení a rozbalení lze HTM přímo použít pouze tehdy, má-li uživatel oprávnění k vytváření a rušení souborů v root adresáři disku C. Pokud ne, musí změnit hodnotu cJmenoVystupu (dle 7.1.) úplného označení výsledného souboru na takové umístění, ke kterému práva má.

Literatura

[1] GPX: the GPS Exchange Format. [online]. [cit.10.6.2016]. Dostupné z: http://www.topografix.com/gpx.asp.

[2] GPS eXchange Format [online]. Wikipedia: [cit.10.6.2016]. Dostupné z: http://en.wikipedia.org/wiki/GPX_(data_transfer).

[3] HEROUT, Pavel: Java a XML. České Budějovice: Kopp nakladatelství, 2007. ISBN 978-80-7232-307-4.

 

 

Rev. 6 / 2016