Friday, July 8, 2011

How to convert Google Maps to GPX file

The best tool to do that is the bookmarklet GMapToGPX. But after recent (June 2011) changes in Google Maps,  it stopped to work with maps created as "My Places" (aka "My Maps"). Until the author updates the bookmarklet (I hope it will be possible with the new Google Maps), there is a simple workaround (I found it here):

  • Take a link of your map from the Google Maps web site. This link is either directly available under a small "chain" image (works in Google Chrome browser but not in my Firefox), or in the text of email created by the "send" image (works in all browser I have tried)...
  • ...and add to it: "&output=kml". Then convert, as with GMapToGPX before, the resulting KML file to a GPX file using an excellent GPSVisualizer.
The created KML file may have (usually has) some (formatting) HTML tags in its waypoint description fields. The GPSVisualizer converts correctly these tags into formally correct GPX file. For example, changing all "<" characters to sequences of "&lt;". But very often these HTML formatting tags are not recognized by the software using such GPX file (e.g. Maverick map software on Android), and are displayed as normal text which does not look correct. Therefore, I am using a small Perl script that first removes these tags from the KML file and only after that I fill the updated KML file into GPSVisualizer. The script "update-kml.pl"can be downloaded from here and one can use it this way:
perl update-kml.pl < input.kml > output.kml

Upravena sablona pro exportovani z GeoGetu

GeoGet je databaze vybranych geokesi, pripadne s pridanymi souradnicemi dalsich waypointu, nejcasteji se jedna o finalni souradnice vylustenych mysterek. Aby se tyto souradnice dostaly do vaseho GPS, je nutno je exportovat do GPX souboru a ten pak nahrat do GPS (nechme ted stranou trochu slozitejsi moznost s tzv. POI soubory).

GeoGet nabizi nekolik moznosti, jak ma vysledny GPX soubor vypadat a co v nem vsechno ma byt. Kazda z moznosti je trochu jina, ale dokumentace je (aspon v dobe psani tohoto prispevku) miziva. Nejlepe je tedy si to vyzkouset nebo se podivat primo do sablon (scriptu) GeoGetu, Sablony pro export jsou textove soubory v adresari "...kde-je-instalovan-vas-GeoGet\data\script\export\". Sablony jsou prehledne, dobre napsane, ale je treba trochu rozumnet programovani, aby se lepe chapaly.

Patrne nejbeznejsi volba je export "PocketQuery GPX". Ta vytvori GPX soubor se vsemi geokesemi a jejich waypointy ve stejnem formatu jako jsou PocketQuery primo z geocaching.com. Tento soubor je plne kompatibilni a vas GPS (pouzivam Oregon) s nim nema problemy. Az na to, ze ty waypointy nemaji vsechny informace, ktere by mohly mit. Tedy lepe receno, vytvoreny GPX soubor tyto informace ma, ale jsou na miste, kde je vas Oregon bude ignorovat. Proto jsem si vytvoril mirne upravenou sablonu.

Sablona je k dispozici zde; jmenuje se mygpxpq.gge.pas. Stahnete-li si ji, ulozte ji do vyse zmineneho adresare "...\data\script\export\". Kdyz pak v GeoGetu zacnete exportovat (nejrychleji pomoci Ctrl-E), objevi se vam ve volbach i ta nova:


A ted to hlavni - v cem se tato sablona lisi od te puvodni:

  • V exportu samotnych geokesi nejsou zadne zmeny. Menit neco tam by znamenalo menit format predepsany Groundspeakem.
  • Hlavni zmena je v popisu waypointu. V puvodni sablone se tento popis uklada do vystupniho policka "cmt", ktere ale Oregon ignoruje. Proto nova sablona popis waypointu dava do policka "desc" (kam puvodni sablona dava jen jmeno waypointu).
  • Popis se jeste lisi podle toho, jaky waypoint to je. Pokud jde o finalni waypoint (napr. finalni souradnice vylustene mysterky), nova sablona dava do popisu puvodni hint z geocache. Pro ostatni waypointy tam dava text, ktery byl zapsan do kolonky "Cmt":

 

  • Pouzivani hintu do popisu je diskutabilni, protoze ve vystupu natvrdo prepise to, co jste mozna sami zapsali v GeoGetu do "Cmt" kolonky. V obrazku nahore je text "u stromu" totozny s hintem, takze se nic nestane, kdybyste ale sem byli byvali zapsali neco vic nebo neco jineho, do vystupniho GPX by to neprislo. Jak rikaji Anglicane, take it or leave it (nebo pripadneji: zmente si sablonku; nejlepe by asi bylo porovnavat v ni hint s "Cmt" textem a podle toho tam dat to ci ono; mozna to nekdy napravim).
  • Pozor take na to, ze Oregon pouzije z pole "desc" jen prvnich 49 znaku, zbytek ignoruje. Na hinty to obvykle staci, ale nemusi. Jine reseni, ktere toto omezeni ma daleko volnejsi (dovolujici vice nez 100 znaku pro popis), je vytvaret waypointy jako body POI (ale o tom snad jindy).
  • Nova sablona take finalnim waypointum prirazuje specificky symbol, zeleny spendlik:
  •  A konecne jsem z waypointu odstranil vystupni pole "url" a "urlname", aby soubor byl kratsi - nikde jsem nevidel, ze by je Oregon pouzival. Rad to ale vratim zpatky, najdu-li pro tato pole vyuziti (v sablone tato cast zustala, jen je ted pouhou poznamkou).

Friday, March 4, 2011

Filtrovani v programu GeoGet


Program GeoGet (vase osobni databaze geokesi na vasem pocitaci) je dobry, ma mnoho funkci - ale zaroven je, podle meho nazoru, uzivatelsky nestandardni, nekdy az zavadejici. Je to samozrejme otazka zvyku. Hodila by se lepsi dokumentace - pak by mozna uzivatelska privetivost byla dostatecna.

Chvili mi trvalo, nez jsem se naucil pouzivat filtrovani tak, jak jsem potreboval. Mozna to porad nedelam tim nejlepsim zpusobem, ale aspon to funguje, jak chci :-)

Nejdrive trochu terminologie: GeoGet rika "seznam" (anglicky "list") tomu, co je prave zobrazeno na obrazovce. Pokud v takovem seznamu nejake polozky ubirate nebo pridavate, tak se to deje jen na obrazovce, nikoliv v databazi geokesi (pro vymazani z databaze jsou v GeoGetu jine funkce). Nejcastejsi zpusob (krome rucniho ubirani nebo pridavani radek), jak seznam vytvorit, je uzit nejaky "filter". Pozor ovsem na to, ze prostym vyberem filtru, se seznam na obrazovce nezmeni. To musite udelat rucne (bud stisknout "load" - je na nekolika mistech) nebo, casteji, stisknout klavesu F5. Tak se na obrazovce zobrazi jen ty kese, ktere odpovidaji prave vybranemu filtru.

Pak jeste GeoGet pouziva termin "tag", coz je libovolna poznamka, kterou muzete priradit k jedne nebo vice kesim. Nektere poznamky si vytvorite sami (treba poznamku "tohle je kes, kterou jsem navstivil s manzelkou"), nektere poznamky (tagy) jsou v GeoGetu uz predpripravene (takze je staci jen vybrat). Na priklad: vytvorim nejdrive novou kategorii tagu "Navstiveno spolu" a pak vytvorim dve hodnoty (dva tagy) v teto kategorii: "s manzelkou" a "s milenkou". Tagy jsou vhodne kriterium pro filtrovani - budu moci, napriklad, vybrat jen ty kese, ktere jsem jeste nenavstivil ani s manzelkou ani s milenkou.

"So far so good..." Komplikace nastanou, kdyz chceme kombinovat vice filtru, a navic, kdyz nektere filtry jsou zavisle na nekolika "tagach". Chceme treba rici "Zobraz vsechno, co odpovida filtru A, ale co zaroven neodpovida filtru B ani C". To neni teoreticka kombinace, to je ta, kterou pravidelne potrebuji. Zde je, co mam a co bych rad:

  • Jde mi o kese v Praze.
  • Chci vsechny typy krome eventu.
  • Ale u mysterek chci jen ty, co mam vyresene anebo ty, ktere jsem oznacil tagem v kategorii "Stage" s hodnotu "PreFinal". Jinymi slovy, vyresim-li mysterku se vsim vsudy a mam jeji finalni souradnice, nepotrebuji k ni pridavat zadny muj osobni tag, protoze staci, kdyz k ni pridam finalni waypoint (volba "add waypoint"). GeoGet mi uz vetsinou sam spravne nabidne waypoint typu "Final location" se jmenem "Final" a prefixem "FI". Kdyz ale jeste potrebuji nekam zajit a neco k mysterce jeste zjistit, pridam ("edit tags") k takove mysterce muj osobni tag "PreFinal" me kategorie "Stage".
  • A u multi-kesi chci jen ty, ktere mam take otagovany kategorii "Stage" s hodnotou "PreFinal" - tak oznacuji ty multinky, ktere mam v umyslu navstivit (zrejme proto, ze jsem jich uz cast nasbiral drive).

Vytvorim si nekolik filtru - ktere pak budu "skladat" dohromady, abych dostal seznam podle mych predstav. Filtry se vytvareji jednou provzdy - nemusim je delat znovu a znovu pokazde, co importuji nove kese do GeoGetu. Prvi pojmenuji "Prague - to load to GPS". Vyberu tam vsechno z Prahy:




Pak si vytvorim filter "Prague - remove unresolved". Tam definuji jen mysterky - a to pouze ty, ktere nemaji "Your final waypoint" a ktere nemaji tag "Stage" s hodnotou "PreFinal":





Konecne si vytvorim filter "Prague - remove rest of multi", kde budou multi-cache, u kterych nemam tag "PreFinal" (a tedy mne jeste nezajimaji):





Mam-li vsechny filtry, zbyva mi je nez zkombinovat do vysledneho seznamu. Toto kombinovani musim delat pokazde, kdyz chci takovy seznam. Nenasel jsem zpusob, jak si kombinaci uchovat do nejakeho "kombinovaneho filtru" (mozna tady je to misto, ktere jsem z GeoGetu jeste uplne nepochopil). Takze udelam tohle:


  • Nastavim filter "Prague - to load to GPS" a stisku F5. Tim mam na obrazovce seznam vsech (mnou dosud nenalezenych) kesi v Praze (na obrazku dole je cislo 986, ktere rika, kolik ma tento seznam polozek):


  • Nyni nastavim filter "Prague - remove unresolved" a nestisknu klavesu F5, ale naopak kliknu na ikonku filtru (trychtyre) s cervenym minusem, coz znamena "odeber ze zobrazeneho seznamu polozky, ktere definuje prave zvoleny filter". Vsimnete si, ze se delka listu zmensila, list ma ted jen 660 polozek:


  • Nakonec odstranim jeste multi-kese, ktere nemam ve stavu "PreFinal". Vyberu filter "Prague - remove rest of multi" a opet stiknu jen trychtyrek s cervenym minusem. Dostavam seznam s 489 polozkami:


Ten seznam obsahuje presne to, co chci - a mohu jit exportovat do formatu GPX. Tech je take vice - a nenasel jsem je nikde zdokumentovany. Takze o nich snad priste. Ted si jen pamatuji, ze exportuji do formatu "Pocket Query GPX", ktery muj Oregon rozezna.