Geokuk - tvorba vlastních ikon

Z GeoWiki
Přejít na: navigace, hledání

Obsah

Ikony v Geokuku

Program geokuk je vcelku univerzální program pro zobrazování bodů nad mapou. Zobrazované body mohou být libovolné, jejich počet není nijak omezen a uživatel má tedy možnost doplnit zobrazení vlastních bodů a přizpůsobit si již připravené zobrazení. Každý bod může být zobrazen jako ikona složená z různých vrstev, které se vzájemně překrývají a tvoří tak výsledný obraz ikony.

Program má trochu zvláštní terminologii, ale v základu je pochopitelná. Základem je kešoid, což je jakási zobecněná keš. Zobecněná proto, že se vůbec nemusí jednat o kěš jako takovou, ale v podstatě o jakýsi souhrnný typ bodz. Jeho zajímavou vlastností je to, že může se může dál dělit na další podtypy waypoint. Pojem waypoint je v porovnání s geocachingem opět trochu rozšířen. Jako příklad uveďme:

  • kešoid keš s tapy tradiční, multy, mystery, ..., ale také dodatečné waypointy parkovistě, finalový bod, stage of multicache, ...
  • kešoid waymark může obsahovat dynamicky se měnící (rozšiřující se) typy, namátkou fontány, triangulační body, porály, sakrální stavby, ...
  • kešoid Český geodetický bod obsahuje například typy Trigonometrický bod centrální, Trigonometrický bod přidružený, Zhušťovací bod centrální, Zhušťovací bod přidružený, Bod základního tíhového pole, Bod ZGS (základní geodynamické síť) a Základní nivelační bod.

Sada

Sada obsahuje množinu ikon, které mohou být v programu zobrazovány zároveň. Každá sada má své jméno, implicitní sada se jmenuje Standard. Uživatelé si mohu vytvářet vlastní sady nebo mohu dopkňovat, měnit, či odstraňovat ikony ve standardní sadě, aniž by přitom museli zasahovat do programu. Seznam sad najdeme v menu Ikony a můžeme sady přepínat. V daném okamžiku je aktivní právě jedna sada. Můžeme mít v třeba ve standardní sadě například ikony dle vzoru GS a v druhé třeba špendlíky. A do obou sad můžeme doplnit zastávky MHD se svými ikonami. Každá sada může mít přiřazenu ikonu sady, ta se objeví takké v menu, standardní sada má znak Groundspeaku, protože ikony v ní jsou z gc.com přejaté.

Adresářová struktura

Program pro kreslení ikon používá adresářovou strukturu, která začíná v místě zadaném v menu Soubor / Umístění souborů v položkách

  • Složka s mými vlastními rozšiřujícími obrázky
  • Složka s rozšiřujícími obrázky jiných geokolegů
  • A také složka zabudovaná uvnitř programu geokuk

K tomu, aby byly příslušné funkce opravdu využity, je nutné u každé položky ještě zaškrtout volbu Aktivní. Zde zadaným bodům říkejme Kořen, takže kořeny mohou být až tři. Adresáře v těchto třech kořenech se však logicky sloučí do jednoho. Pokud je stejný soubor ve více kořenech, bere se v úvahu ten specifičtější.

Lze si to představit tak, jakobychom přes sebe nakopírovali složky a soubory s geogetu, přes to překopírovali rozšiřující obrázky a přes to vlastní obrázky s tím, že bychom stejnojmenné soubory nechali přepsat. My však nic kopírovat nebudeme, Geokuk se bude chovat, jako by se už stalo.

V každém z kořenů je vždy adresář map (nekdy třeba budou i další), který dál obsahuje pro každou sadu ikon další adresář. Budeme-li vyvíjet vlastní sadu, nazvěme pro další příklady adresář s naší sadou Vyvoj, jméno adresáře je jménem sady se pak zobrazí v menu Ikony.

+ kořen
   + map
      + Vyvoj
         + skloX
         + skloY
         - skla.txt obsahuje ... seznam podadresaru sklo*, které definují překrývající se vrstvy pro
                                 vlastní vykreslování ikon
         - groups.properties ... obsahuje definici typ!=texovy popis. (pocet pismen typu je dulezity?)
         - iconOfSada.png (???k cemu???)
      + Dalsi sada

Adresáře s definicí skla

Představme si, že všechny vrstvy obrázků ikon nejdříve nalepíme na několik skel a nakonec ta skla naskládáme přes sebe. Každému sklu odpovídá jeden adresář se jménem skla. Pořadí skel určuje soubor skla.txt nacházející se přímo v adresáři sady vedle adresářů skel. A jak z příkladu dole vidíme, můžeme jednou nakreslené sklo použít i vícekrát. Suffixe za jménem sklad v soubru je z důvodů optimalizace. Jsou tyto možnosti:

VSE
vykreslit na sklo všechny waypointy
MYS
vykreslit na sklo jen waypointy kešoidu, na jehož aspoň jednom waypontu je myš

Ve standardní sadě má soubor tento obsah:

skloNormal.VSE
skloZvyrazneni.MYS
skloNormal.MYS

Na nejspodnějším skle jsou vykresleny všehny obrázky. Pak se vykreslí žluté kruhy na mešoidu, nad nimž je myš. Tím se však ikonky waypointů překryjí. Musíme je tedy vykreslit znovu, ale tentokrát jen ty, nad kterými je myš, aby to netrvalo tak dlouho.

Vrstvy

Každý adresář s definicí skla obsahuje další podadresáře vrstev. Z každé vrstvy se na sklo vykresluje právě jeden obrázekreprezentovaným jedním souborem. Vrstvy se zpracovávají dle abecedního pořadí a obrázky na sklo postupně vykreslují a překrývají. Vždy se vykreslí všechny vrstvy jednoho waypointu, pak všechny vrstvy dalšího waypointu atd. A to je právě rozdíl vrstev od skel. Pokud jsou tedy waypinty blízko sebe, tak ten později vykreslený waypoint částečně překrývá waypoint vykreslený dříve. Jméno vrstvy může být libovolné, je ale vhodné, začínalo číslicí, řazení je pak jasné na první pohled.

Soubory s obrázky

Uvnitř adresáře jsou soubory s obrázky. Obrázky mou být jako

  • Skutečně obrázky v různých formátech (JPG, PNG, GIF, BMP) s podporou průhlednosti.
  • Soubory s příponou 'properties, který popisuje algoritmus, jakým způsobem se obrázek nakreslí nebo jak se modifikuje obrázek již vykreslený be spodnějších vrstvách.

Obrázky definované v properties

Jsou to (skoro) obyčejné textové soubory, na každém řádku je jedna definice vlastnosti. Vlastnost, která nemá být použita není v souboru vůbec definována.

width=NN ...... šířka ikony
height=NN ..... výška ikony
class=cz.geokuk.api.mapicon.XXXXX ... tvar vykreslení plochy s ikonou
                            XXXXX = OvalRdaver (kružnice/elipsa)
                                    RoundRectDrawer (čtverec/obdélník se zaoblenými rohy)
                                    StdArchivDrawer (???)
                                    GrayDrawer (???)
                                    (nějaké další???)
fill=RRR,GGG,BBB ... RGB složky barvy pro vyplnění vykreslené plochy,
                     složky jsou v dekadickém tvaru oddělené čárkou
lineWidth=NN ....... šířka čáry ohraničující vykreslenou plochu (0=bez čáry)

Class je Java třída, která provádí vykreslování. Musí implementovat dané rozhraní, musíte implementovat settery pro nastavení propert ze souboru a metodu, která provede kreslení do již vykreslené ikony z dřívějších vrstev. Pokud umíte programovat v Javě, můžete si vytvořit vlastní vykreslovače, tře ba změnšovat ikony pro micra a zvětšovat pro large. Pouze musíte vědět jak se to dělá, pokud o to bude mít někdo zájem, nechť napíše autorovi a ten dokumentaci vyplodí.

Soubory s ikonami mají pevně daný formát jména (před příponou). Jeho vysvětlení je dál v textu.

Princip zobrazování ikon

Je vhodné, aby horní vrstvy byly v takovém formátu, který podporuje průhlednost, aby v některých místech mohly být vidět vrstvy spodní. Autor opět zavedl svou vlastní terminologii, kde vrstvě s nějakou sledovanou vlastností přisoudil jméno Gen (v některém dialogu je pro zmatení použil pojem Fenotyp???) a hodnotám, které může vrstva (vlastnost) nabývat dal jméno Alela. Příklad:

  • gen velikost keše má alely mikro, small, regular, ...
  • gen typ waypointu může mít alely keš, waymark, ...

Seznam genů (tedy sledovaných vlastností a tedy i vrstev) je ohraničený a každému genu je přiřazena konkrétní vrstva daného čísla. Číslo zároveň udává počet znaků, které musí mít pojmenování všech alel tohoto genu. Skládáním jmena alel za sebe pak vzniká cesta a jméno souboru, z nějž se načítají ikony.

Terminologi Gen a Alela byla zvolena ze dvou důvodů:

  1. Autor se v program už ztrácel v pojmech jako vlastnost, property, atribut, které mohu znamenat plno jiných věcí.
  2. Paralela s genetikou zde je. Waypoint jako takový má nějaké geny (velikost, typ, terén ...) a u každého jedince se gen vyskytuje v nějaké alele. Množina všech

alel určitého jedince pak tvoří fenotyp. Správný seznam genů a jejich alel najdete v menu Ikony/Ladění ikon". Zde uvedený seznam berte jako orientační. Pokud stisknete checkbox "Zobrazit vše", uvidíte přehled všech genů a alel, pro které je možné připravit ikony. Poku zaškrtunt checkbox není, vidíten jen ty, ke kterým ikony máte.

GenČíslo vrstvyMožné alelyIkonový kód
Typ waypointu0Alely nejsou pevně stanoveny
Postavení1Nevykresluje se.0
Hlavní bod kešoidu - vždy právě jeden.h
Vedlejší body kešoidu. Žádný nebo více.v
Druh kešoidu2Nevykresluje se.00
Kešgc
Waymark, kromě Českých geodetických bodůwm
České geodetické body (speciální Waymark)gb
Obecný waypoint (může mít i dodatečné waypointy, ale nejspíš mít nebude).wp
Vztah3Nehledáno a tudíž nemohlo být nalezenohnf
Nalezenofnd
Moje vlastníown
Neexistující, tedy vůbec nezaloženo, (vyskytuje se jen českých geodetických bodů, u kterých existuje databáze)not
Stav4Aktivníactv
Disabledsbl
Archivovanáarch
Velikost5Nevykresluje se00000
Micromicro
Smallsmall
Regularregul
Largelarge
Hugehugex
Nespecifikovánanspec
Nazaškrtnutanchec
Výlet6Nevímenevime
Lovímelovime
Ignorujemeignoru
Postavení k myši7Myš není nad waypoitem z kešenomouse
Myš je nad jiným waypointm z kešemousean
Myš je nad tímto waypointemmouseon
Vybranost8Nevybraný, čili normálnínoselect
Vybranýselected
Vyluštěnost9Mysterka, multina či jiná nevyluštěnánevyluste
Keš je vyluštěna, to znamená, že existuje finální waypoint nebo je to keš tradiční.vylusteno
Zdroj10Importované z PQ či jiného zdrojepqimported
Ručně přidanéhandedited
TerényNevykresluje seter0
Terény 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5ter10, ter15, ter20, ...
ObtížnostNevykresluje sedif0
Obtížnosti 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5dif10, dif15, dif20, ...ccc

Tvorba jmen souborů s ikonami

Jméno souboru s ikonou je poskládáno z jednotlivých jmen alel (hodnoty uvedené v posledním sloupci v tabulce) a v případě potřeby je možné doplnit ještě některé další vlastnosti.

Priorita

Jména souborů jsou složena ze jmen jednotlivých alel, jména se oddělují podtržítkem. Protože úroveň 0 nemá žádný znak, musí jméno souboru začínat podtržítkem.

Pokud by mohlo vyhovovat v jedné vrstvě více souborů, může být ke jménu doplněna ještě priorita ve tvaru _pN, kde N je číslo priority. v tom případě bude použita ikona s vyšším číslem priority. Pokud priorita není určena, má hodnotu 5.

Umístění ikon

Za normálních okolností se ikona umisťuje střenem na zadané souřadnice. Pomocí dalších parametrů ve jméně souboru s ikonou je možné ikonu pozicovat jinak.

  • x3 - X na pozici tři, Y na střed
  • y14 - X na střed, , Y na pozici 14.
  • x8_y20 - X na pozici 8 a Y na pozici 20.


Jednoduchý příklad definice vlastní sady

Protože mám k dispozici GPX soubor se stanicemi pražské MHD, rozhodl jsem se je zobrazit. Zadal jsem si tedy kořenový adresář a v nem vytvořil strukturu map/MHD a v něm vytvořil textový soubor skla.txt obsahující řádky

skloNormal.VSE
skloZvyrazneni.MYS
skloNormal.MYS

(Netuším, co znamenají ty přípony, ale opsal jsem to z jakési dokumentace od autora ???)

Pak jsem vytvořil adresáře skloNormal a skloZvyrazneni (v adresáři MHD) a další soubor groups.properties. Do tohoto souboru jsem zapsal jediný řádek

mh!=MHD

kterým jsem definoval nový typ kešoidu. V adresáři skloNormal\2ctverce jsem vytvořil soubor _mh_actv_nomouse_p7_h16_v16.properties s následujícím obsahem:

class=cz.geokuk.api.mapicon.RoundRectDrawer
width=16
height=16
fill=255,255,255

Tím jsem definoval velikost zobrazených ikon. V adresáři skloNormal\5typy jsem vytvořil soubory s ikonami jednotlivých typů zastavek:

mh!Bus.png
mh!MetroA.png
mh!MetroB.png
mh!MetroC.png
mh!Tram.png

Pak už zbývá jen do gpx souborů pro každou zastávku správně uvést

 <type>mh</type>
 <sym>Bus</sym>
 resp. příslušný symbol dopravního prostředku

A na mapě se zastávky objevily. Definice se nijak nedotkne zobrazení dalších bodů, protože ty zůstávají zobrazeny implicitním způsobem. Jen jsem doplnil nové body.