SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
ˇCesk´e vysok´e uˇcen´ı technick´e v Praze
Fakulta stavebn´ı
SVG a XSL transformace vyuˇziteln´e
v kartografii
BAKAL´AˇRSK´A PR´ACE
Praha, 2011 Autor: Filip Zavadil
ˇCesk´e vysok´e uˇcen´ı technick´e v Praze
Fakulta stavebn´ı
BAKAL´AˇRSK´A PR´ACE
SVG a XSL transformace vyuˇziteln´e
v kartografii
SVG and XSL transformations used
in cartography
Vedouc´ı pr´ace: Ing. Jiˇr´ı Cajthaml, Ph.D.
Praha, 2011 Autor: Filip Zavadil
i
CESKE VYSOKE UCENi TECHNICKE vPRAZE
Fakulta stavebni
Thakurova 7, 166 29 Praha 6
, 'V ,
ZADANI BAKALARSKE PRAcE
studijni program:Q~<?~~:z:i~~~~~<?g~~f.i.~
studijni obor: Geoinformatika
akademicky rok: 2010/2011
Jmeno a pfijmeni studenta: Zavadil....C.m.....£ ....m.....:...:..c :.~.cc............................ _ ..........................................................................................................................................................................................................................................................
Zadavajici katedra:
Nazev bakalarske prace:
Nazev bakalarske prace
v anglickem jazyce
~yQ.~..?f~!:!~~~~f'?~~~~~~~!~!t.:1..~.y~~~'?~~f.i.i.
SVG and XSL transformations used in cartography
Ramcov}' obsah bakalarske prace: ~<?pi.~!~:z:~~I~~t.:1.ip~it.:1.~i.pyp'?~it.~~<?y~~~f.i.~y~~~~j~j~_'? __ _
yYy<?j~:~~!!l~!!~~~t.:1.~~~<?y~~t.:1.LY~~<?E<?Y~~E~~t.~'?y~f'?~y:P~!~~~~~!!l~!!~t.:1.a.:j~!:<.?fM!:~j~~<?
....p<?~P~.I??:~...t.~~~~<?!<?gi.~:....~!~~~j.t.:1.~~~~.~..P~~~.~....~~~.~..y~~<?y~a.:P<?Pi.~~..j~~a.:5y'Q.~..~.~!:..~~~f'?~~~!!!l~ ..
_ !:<.!~~~j~<?~~~i!~It.:1.~y.~~'?g~~~i.:y~~~<?~~!!l~~!~jt.~y~<?~~y!!lLpf..!~!~~Y:
Datum zadani bakalarske prace: 16.2.2011 Termin odevzdani: 13.5.2011
(vyplr1te posledni den vYuky
pi'islusneho semestru)
Pokud student neodevzdal bakalarskou praci v urcenem terminu, tuto skutecnost predem pisemne
zduvodnil a omluva byla dekanem umana, stanovi dekan studentovi nahradni termin odevzdani
bakalarske prace. Pokud se vsak student radne neomluvil nebo omluva nebyla dekanem uznana, muze
si student zapsat bakalarskou praci podruhe. Studentovi, ktery pri opakovanem zapisu bakalarskou
praci neodevzdal v urcenem terminu a tuto skutecnost rarlne neomluvil nebo omluva nebyla dekanem
umana, se ukoncuje studium podle § 56 zakona 0 VS c. 11111998. (SZR CVUT cl. 21, odst. 4)
Student bere na vedomi, i e je povinen vypracovat bakalarskou praci samostatne, bez cizi pomoci,
s vyjimkou poskytnurych konzultaci. Seznam pouiite literatury, jinych pramenu a jmen konzultantu je
tfeba uvest v balmldfskt!praci. ~
······~~d~::[b~i~;;.:,~········ ···············~~d~~~i·~······
Zadani bakalarske prace prevzal dne: ---.-~~S:-~.- - ....
.../-~..............................
student
Formular nutno vyhotovit ve 3 yYtiscich - Ix katedra, Ix student, Ix studijni odd. (zasle katedra)
Nejpozdeji do konce 2. rydne ryuky v semestru odesIe katedra 1 kopii zadani BP na studijni oddeleni
a provede zapis udaju rykajicich se BP do databaze KOS.
BP zadava katedra nejpozdeji 1. ryden semestru, v nemz rna student BP zapsanou.
(Smernice dekana pro realizaci studijnich programu a SZZ na FSv CVUT cl. 5, odst. 7)
Prohl´aˇsen´ı
Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci na t´ema
”
SVG a XSL transformace vyuˇziteln´e
v kartografii“ vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em
seznamu.
V Praze dne
podpis
Abstrakt
V t´eto pr´aci se pojedn´av´a o z´akladech zobrazov´an´ı poˇc´ıtaˇcov´e grafiky. Jsou zde
shrnuty z´akladn´ı vlastnosti rastrov´e a vektorov´e reprezentace obrazov´ych dat. D´ale se
pr´ace podrobnˇe vˇenuje ˇsk´alovateln´emu vektorov´emu grafick´emu form´atu SVG. Jsou zde
pops´any z´akladn´ı prvky a vlastnosti tvoˇr´ıc´ı SVG dokument. D´ale je pojedn´ano o
”
sty-
lov´ych“ jazyc´ıch (CSS, XSL), kter´e je vhodn´e spolu s SVG vyuˇz´ıvat.
Praktick´a uk´azka je celistv´ym spojen´ım poznatk˚u o SVG. Je zde demonstrov´ano
pouˇzit´ı rozliˇsn´ych prvk˚u tohoto jazyka, kter´y je v t´eto pr´aci konfrontov´an s kartografi´ı.
Kl´ıˇcov´a slova
grafika, vektor, rastr, SVG, XML, CSS, XSL, XPath, JavaScript
Abstract
This thesis shows the basics of computer graphics. There is a summary of key
properties of raster and vector image data. The main emphasis is on Scalable Vector
Graphics which is explained in detail. In addition, styling languages (like CSS, XSL) are
also covered thanks to a close relationship with SVG.
A sample study demonstrates the application of various SVG elements into practice
and its confrontation with cartography.
Key Words
graphics, vector, raster, SVG, XML, CSS, XSL, XPath, JavaScript
Obsah
1 ´Uvod 1
2 V´yvoj pˇred SVG 3
2.1 Poˇc´ıtaˇcov´a grafika obecnˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Geometrick´e z´aklady . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 V´yvoj technologi´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Vektorov´a a rastrov´a grafika . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Vektorov´a reprezentace . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Rastrov´a reprezentace . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 V´yhody a nev´yhody . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Vznik a v´yvoj grafick´ych form´at˚u . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Form´aty vektorov´e grafiky . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.2 Form´aty rastrov´e grafiky . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 ´Uvod do XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.1 Syntaxe XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.2 XML dialekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.3 XML pˇridruˇzen´e technologie . . . . . . . . . . . . . . . . . . . . . . 11
3 Form´at SVG 12
3.1 Verze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Kompatibilita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Hlaviˇcka SVG dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.1 Element defs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.2 Barevn´e pˇrechody . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 SVG elementy z´akladn´ıch geometrick´ych prvk˚u . . . . . . . . . . . . . . . 16
3.4.1 Element line (´useˇcka) . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.2 Element rectangle (obd´eln´ık) . . . . . . . . . . . . . . . . . . . . . 17
3.4.3 Element circle (kruˇznice) . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.4 Element ellipse (elipsa) . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.5 Element polyline (lomen´a ˇc´ara) . . . . . . . . . . . . . . . . . . . 18
3.4.6 Element polygon (mnoho´uheln´ık) . . . . . . . . . . . . . . . . . . . 18
3.5 Element path (kˇrivka) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.6 Textov´e ˇretˇezce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.6.1 Element text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.6.2 Element tspan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.6.3 Element textPath . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.7 Instrukce pro vykreslov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
iii
3.7.1 Vlastnosti atributu stroke . . . . . . . . . . . . . . . . . . . . . . . 22
3.7.2 Vlastnosti atributu fill . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7.3 Atributy opacity,display,visibility . . . . . . . . . . . . . . . 24
3.7.4 Barevn´e modely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.8 Souˇradnicov´y syst´em a jeho transformace . . . . . . . . . . . . . . . . . . . 26
3.8.1 Atribut transform . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.9 Rastr v SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.9.1 Element image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.9.2 Element filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.10 Atributov´a data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.11 Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Stylov´e jazyky 33
4.1 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.1 Hlaviˇcka XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.2 Element xsl:value-of . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.3 XPath v´yrazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.4 Podm´ıneˇcn´e zpracov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.5 Cykly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.6 Promˇenn´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.7 Dalˇs´ı pouˇzit´e prvky . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5 Aplikace do praxe 41
5.1 Zdroj dat a zp˚usob exportu do XML/SVG . . . . . . . . . . . . . . . . . . . 41
5.1.1 Program shp2svg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Popis aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.1 XML datov´a ˇc´ast . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2.2 Stylov´a ˇc´ast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 Popis jednotliv´ych aplikac´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.1 Evropa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3.2 ˇCesk´a republika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3.3 Pl´an kampusu ˇCVUT v Dejvic´ıch . . . . . . . . . . . . . . . . . . . 47
5.3.4 Pl´an mˇesta Pelhˇrimov . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4 Kartografick´e prvky v SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4.1 Vizualizace liniov´ych znaˇcek . . . . . . . . . . . . . . . . . . . . . . 48
5.4.2 Vizualizace are´alov´ych znaˇcek . . . . . . . . . . . . . . . . . . . . . 51
5.4.3 Vizualizace bodov´ych prvk˚u . . . . . . . . . . . . . . . . . . . . . . 51
5.5 SVG v HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.6 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6 Z´avˇer 54
Literatura 55
Rejstˇr´ık 56
A Evropa I
iv
B ˇCesk´a republika II
C Pl´an kampusu ˇCVUT Praha III
D Pl´an mˇesta Pelhˇrimov IV
v
Seznam obr´azk˚u
2.1 ˇCasov´a osa vybran´ych kl´ıˇcov´ych moment˚u . . . . . . . . . . . . . . . . . . 4
2.2 Popis b´ezierovy kˇrivky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Zn´azornˇen´ı odliˇsn´eho zp˚usobu z´aznamu obrazov´ych informac´ı . . . . . . . . 5
2.4 Ikony vybran´ych grafick´ych form´at˚u a editor˚u . . . . . . . . . . . . . . . . 8
2.5 Uk´azka struktury dokumentu IBM GML . . . . . . . . . . . . . . . . . . . 8
2.6 Popis nejjednoduˇsˇs´ıho XML dokumentu . . . . . . . . . . . . . . . . . . . 9
2.7 XML dokument popisuj´ıc´ı geobod . . . . . . . . . . . . . . . . . . . . . . . 10
2.8 Stromov´a struktura XML elementu . . . . . . . . . . . . . . . . . . . . . . 10
3.1 Nˇekter´a z ofici´aln´ıch log form´atu SVG . . . . . . . . . . . . . . . . . . . . 12
3.2 Pod´ıl pouˇz´ıvan´ych internetov´ych prohl´ıˇzeˇc˚u ve svˇetˇe v lednu 2011 . . . . . 13
3.3 Element path a pˇr´ıkazy M, L pro vykreslov´an´ı ´useˇcek . . . . . . . . . . . . 18
3.4 Element path a pˇr´ıkazy H, V pro vodorovn´e a svisl´e ´useˇcky . . . . . . . . . 19
3.5 Element path a pˇr´ıkazy C,S pro kubickou B´ezierovu kˇrivku . . . . . . . . . 19
3.6 Element path a pˇr´ıkaz arc pro eliptickou v´yseˇc . . . . . . . . . . . . . . . 20
3.7 Pˇrehled z´akladn´ıch atribut˚u pro pr´aci s textem . . . . . . . . . . . . . . . . 21
3.8 Pˇrehled souˇradnicov´eho syst´emu a d´elkov´ych jednotek . . . . . . . . . . . . 26
3.9 Uk´azka pouˇzit´ı rastrov´ych obrazov´ych dat . . . . . . . . . . . . . . . . . . 28
3.10 Praktick´e vyuˇzit´ı filtr˚u pro symbol informaˇcn´ıch center . . . . . . . . . . . 31
4.1 Princip XSL transformac´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Pˇrehled vstupn´ıch a v´ystupn´ıch souboru XSL transformac´ı . . . . . . . . . 36
5.1 Kartogram Evropa, HDP na obyvatele . . . . . . . . . . . . . . . . . . . . 45
5.2 Uk´azka kartografick´ych prvk˚u na mapˇe ˇCR . . . . . . . . . . . . . . . . . . 47
5.3 Uk´azka nˇekter´ych symbol˚u vytvoˇren´ych v SVG . . . . . . . . . . . . . . . 52
5.4 Uk´azka autorsk´e funkce v jazyce Javascript . . . . . . . . . . . . . . . . . . 53
5.5 Struktura adres´aˇr˚u na dom´enˇe http://svg.filipzava.cz . . . . . . . . . 53
vi
Kapitola 1. ´Uvod 1
Kapitola 1
´Uvod
V dneˇsn´ı dobˇe se drtiv´a vˇetˇsina kartografick´ych prac´ı prov´ad´ı v digit´aln´ı formˇe na
poˇc´ıtaˇc´ıch a tato skuteˇcnost s sebou nese probl´em, jak grafick´a data ukl´adat. Rastrov´y
model jako nosiˇc nen´ı vhodn´y, jelikoˇz nezachov´av´a geometrick´e vyj´adˇren´ı objekt˚u. Proto
je vyuˇz´ıv´an vektorov´y form´at, kter´ych je dnes velk´e mnoˇzstv´ı. Vˇetˇsina vektorov´ych gra-
fick´ych a kartografick´ych editor˚u vyuˇz´ıv´a vlastn´ı form´at, kter´y je v´ıce ˇci m´enˇe otevˇren´y.
Tato pr´ace popisuje nejzn´amˇejˇs´ı a nejpouˇz´ıvanˇejˇs´ı rastrov´e i vektorov´e form´aty s detailn´ım
zamˇeˇren´ım na form´at SVG (Scalable Vector Graphics). Hlavn´ım d˚uvodem pro v´ybˇer
SVG je jeho otevˇrenost a tedy nez´avislost na propriet´arn´ıch aplikac´ıch nebo platform´ach.
Mezi dalˇs´ı klady SVG patˇr´ı jeho jednoznaˇcn´a kompatibilita s internetov´ym prostˇred´ım,
zp˚usoben´a pouˇzit´ım stejn´ych technologi´ı. V pr˚ubˇehu pr´ace, kdy jsou popisov´any jednotliv´e
prvky SVG jazyka, je uv´adˇen jejich vztah a pˇr´ıpadn´e vyuˇzit´ı pro kartografick´e ´uˇcely.
Jak jiˇz bylo ˇreˇceno v ´uvodn´ı kapitole, pr´ace se zab´yv´a obecnou problematikou
poˇc´ıtaˇcov´e grafiky. Jsou zde tak´e uvedeny hlavn´ı softwarov´e firmy a jejich vliv na v´yvoj
grafick´ych form´at˚u. Jelikoˇz form´at SVG je dialektem znaˇckovac´ıho jazyka XML, je v pr´aci
uveden tak´e ´uvod do XML popisuj´ıc´ı jeho v´yvoj, z´akladn´ı charakteristiky a zp˚usoby
pouˇzit´ı. D˚uleˇzit´e je tak´e sezn´amen´ı s ˇcasto vyuˇz´ıvan´ymi pojmy.
Druh´a kapitola je vˇenov´ana jazyku SVG. Popis je doprov´azen autorsk´ymi n´azorn´ymi
obr´azky s uveden´ym zdrojov´ym k´odem a vizualizac´ı. Kr´atce je zm´ınˇeno o v´yvojov´ych
verz´ıch a jejich kompatibilitˇe s dneˇsn´ımi internetov´ymi prohl´ıˇzeˇci. N´asleduje popis vˇsech
geometrick´ych prvk˚u, jejich zp˚usobu z´apisu a z´akladn´ıch vlastnost´ı. Vˇzdy je u kaˇzd´eho
uveden tak´e v´yznam pro kartografick´e ´uˇcely. D˚uleˇzitou souˇc´ast´ı je styl vykreslov´an´ı prvk˚u
(barva a tlouˇst’ka tahu, styl v´yplnˇe atd.). Neopom´ıjen´ym prvkem je z´apis textov´eho ˇretˇezce
a nastaven´ı jeho vlastnost´ı. I kdyˇz je SVG vektorov´y form´at je schopen ukl´adat rastrov´a
data a prov´adˇet s nimi r˚uzn´e efekty pomoc´ı definovan´ych filtr˚u. D´ıky XML z´aklad˚um je
zde nab´ıdnuta moˇznost ukl´adat i jin´e neˇz obrazov´e informace. Tato skuteˇcnost nahr´av´a
pouˇzit´ı SVG jako jednoduch´y GIS form´at. Moˇzn´y je tak´e z´apis metadat.
Pro urˇcen´ı zp˚usobu vykreslen´ı je vhodn´e pouˇz´ıt takzvan´e stylov´e soubory. Jedn´a se
o dokumenty, kde jsou nastaveny pravidla zobrazen´ı SVG geometrick´ych prvk˚u. Mezi dva
nejvyuˇz´ıvanˇejˇs´ı patˇr´ı CSS a XSL, kdy kaˇzd´y se hod´ı k trochu jin´emu ´uˇcelu. V pr´aci jsou
uvedeny z´aklady tˇechto stylov´ych jazyk˚u, doplnˇen´e o pˇr´ıklady pouˇzit´ı.
Filip Zavadil 13. kvˇetna 2011
Kapitola 1. ´Uvod 2
Nejlepˇs´ı cestou jak porozumˇet dan´e problematice je praktick´e vytvoˇren´ı SVG apli-
kace. Protoˇze je SVG navrˇzeno pro web, m˚uˇze b´yt aplikace interaktivn´ı. Pouˇzit´ım dalˇs´ıch
technologi´ı (JavaScript) je dod´ana i dynamiˇcnost. V posledn´ı kapitole jsou mimo jin´e
uvedeny zp˚usoby z´ısk´an´ı ˇci exportu dat do SVG form´atu.
Jednotliv´e poznatky zjiˇstˇen´e v pr˚ubˇehu pr´ace a celkov´e shrnut´ı je uvedeno na sa-
motn´y z´avˇer pr´ace.
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 3
Kapitola 2
V´yvoj pˇred SVG
2.1 Poˇc´ıtaˇcov´a grafika obecnˇe
2.1.1 Geometrick´e z´aklady
Geometrick´e z´aklady uˇz´ıvan´e poˇc´ıtaˇcov´ym zpracov´an´ım grafick´ych dat se datuj´ı uˇz
300-250 pˇr.n.l., kdy se jim vˇenoval ˇreck´y matematik a geometr Euklides ve sv´ych spisech.
Filippo Brunelleschi (1377-1446) objevil line´arn´ı perspektivu, tedy prvn´ı vizualizaci 3D
prostoru. Ren´e Descartes (1596-1650) je jeden ze zakladatel˚u analytick´e geometrie, za-
vedl tak´e kart´ezsk´y syst´em souˇradnic a t´ım z´aklady pro popis objekt˚u v 2D prostoru.
James Joseph Sylvester (1814-1897) popsal maticovou notaci, vyuˇz´ıvanou v informatice
pro geometrick´e transformace. Pierre B´ezier zavedl popis b´ezierovy kˇrivky vyuˇz´ıvan´y ve
vektorov´ych grafick´ych form´atech.
2.1.2 V´yvoj technologi´ı
Od doby, kdy se zaˇcaly v´ypoˇcetn´ı technologie rozˇsiˇrovat, zaznamenala oblast poˇc´ı-
taˇcov´eho zpracov´an´ı grafick´ych dat velk´y pokrok. V roce 1897 byla nˇemeck´ym fyzikem
Karlem Ferdinandem vynalezena katodov´a trubice, kter´a dala vznik televiz´ım a CRT
monitor˚um. Tato skuteˇcnost spolu s vyn´alezem tranzistoru v roce 1947 v Bellov´ych labo-
ratoˇr´ıch dala z´aklad pro rozvoj poˇc´ıtaˇcov´e grafiky. Mezi dalˇs´ı v´yznamn´e miln´ıky patˇr´ı
zaveden´ı pojmu poˇc´ıtaˇcov´a grafika (William Fetter, 1964). O rok pozdˇeji pˇrich´az´ı na
svˇet tzv. Bresenham˚uv algoritmus, kter´y popisuje vykreslov´an´ı ˇcar do rastrov´eho pole
(pouˇzit´ı v nynˇejˇs´ıch rastrov´ych monitorech) [Sho00]. Firma Apple Computer v roce 1977
pˇredstavuje prvn´ı barevn´y grafick´y mikropoˇc´ıtaˇc Apple II. V 80. letech se pˇredstavuje
ˇrada poˇc´ıtaˇc˚u Apple Macintosh s grafick´ym uˇzivatelsk´ym rozhran´ım (GUI) a poˇc´ıtaˇcovou
myˇs´ı. Od 90. let, kdy pˇrich´az´ı Bill Gates s operaˇcn´ım syst´emem Windows 3.0, se osobn´ı
poˇc´ıtaˇce masivnˇe rozˇsiˇruj´ı do pracoviˇst’ a dom´acnost´ı.
Dalˇs´ım mezn´ıkem pro poˇc´ıtaˇcovou grafiku byl v´yvoj internetu. V roce 1969 byla
sestavena prvn´ı experiment´aln´ı s´ıt’ ARPANET a o ˇctyˇri roky pozdˇeji vyvstaly ´uvahy
vedouc´ı k nynˇejˇs´ımu protokolu TCP/IP. V roce 1987 je do s´ıtˇe pˇripojeno 27 000 stanic a
vznik´a pojem internet. Roku 1992 je ofici´alnˇe pˇripojena ˇCesk´a republika a ˇCVUT v Praze.
Zhruba o 2 roky pozdˇeji se internet komercializuje a t´ım doch´az´ı k masov´emu n´ar˚ustu
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 4
uˇzivatel˚u. Po roce 2005 je zaznamen´ana miliarda uˇzivatel˚u. St´ale v´ıce se prosazuje on-line
obsah i v oblasti kartografie. Vznikaj´ı nov´e grafick´e form´aty zamˇeˇren´e pˇr´ımo pro internet.
geometrické
základy
(Euklides)
první použití
perspektivního
zobrazení
(Fillipo Brunelleschi)
počátky analytické
geometrie
(René Descartes)
3.st.př.n.l.
15.století
17.století
18.století
19.století
20.století
21.století
vynález tranzistoru
vynález katodové
trubice
(Karl Ferdinand)
bézierova křivka
(Pierre Bézier)
maticový zápis
(James J. Sylvester)
počátek děrných štítků
(Bouchon, Falcon, Jacquard)
6.st.př.n.l.
Pythagorova věta
(Pythagoras)
první verze SVG
matematické základy
vývoj software & hardware
Obr´azek 2.1: ˇCasov´a osa vybran´ych kl´ıˇcov´ych moment˚u
2.2 Vektorov´a a rastrov´a grafika
2.2.1 Vektorov´a reprezentace
Vektorov´a grafika m´a z´aklady v analytick´e geometrii. Ukl´adaj´ı se parametry geo-
metrick´ych tˇeles, jejich poloha, popˇr. v´yplˇn. Francouzsk´y matematik a konstrukt´er Pierre
B´ezier popsal kˇrivku pomoc´ı ˇctyˇr bod˚u. Jedn´a se o krajn´ı body a tzv. body kotevn´ı
a kontroln´ı viz. obr.ˇc. 2.2. Krajn´ımi a kotevn´ımi body kˇrivka proch´az´ı a pomoc´ı kont-
roln´ıch bod˚u (teˇcny kˇrivky) lze urˇcovat jej´ı zakˇriven´ı. Skl´ad´an´ım tˇechto kˇrivek lze popsat
libovoln´y zakˇriven´y tvar. Sloˇzitˇejˇs´ı v´ykres je sloˇzen z primitivn´ıch tvar˚u tzv. objekt˚u.
Napˇr´ıklad jednoduch´a kresba snˇehul´aka je pops´ana pomoc´ı tˇr´ı kruˇznic, kde jsou uloˇzeny
jen hodnoty polomˇeru a souˇradnice stˇred˚u kruˇznic. Je zjevn´e, ˇze takto popsan´a kresba
nebude n´aroˇcn´a na pamˇet’ poˇc´ıtaˇce a datov´a velikost souboru bude minim´aln´ı. Jelikoˇz jsou
data pops´ana matematicky, nedoch´az´ı pˇri zvˇetˇsen´ı v´ykresu k poklesu kvality. Protoˇze se
jednotliv´e kresby ukl´adaj´ı jako objekty (bod, ´useˇcka, polygon, kˇrivka atd.), mohou se
jednoduˇse prov´adˇet modifikace (napˇr. zvˇetˇsen´ı polomˇeru kruˇznice, translace, atd.), aniˇz
by to mˇelo vliv na ostatn´ı objekty. Tato struktura je vhodn´a k uloˇzen´ı dat m´enˇe tvarovˇe
rozmanit´ych. Vyuˇz´ıv´a se pˇri tvorbˇe firemn´ıch log, sch´ematick´ych obr´azk˚u a diagram˚u,
technick´ych v´ykres˚u (CAD) a animac´ı. D´ıky sv´e mal´e datovˇe objemov´e n´aroˇcnosti je
vektorov´a grafika vhodn´a pro internet, kde se st´ale v´ıce prosazuje.
koncový bod
počáteční bod
kotevní body
kontrolní body
Obr´azek 2.2: Popis b´ezierovy kˇrivky
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 5
2.2.2 Rastrov´a reprezentace
Rastrov´y (ˇcasto t´eˇz bitmapov´y) zp˚usob popisu obrazov´ych informac´ı ukl´ad´a infor-
mace o jednotliv´ych prvc´ıch um´ıstˇen´ych na mˇr´ıˇzce. Mˇr´ıˇzka (rastr) m˚uˇze b´yt sloˇzena
z r˚uzn´ych tvar˚u (troj´uheln´ık, obd´eln´ık, ˇsesti´uheln´ık), avˇsak nejˇcastˇeji je tvoˇrena ˇctverci
tzv. pixely. Kaˇzd´y prvek mˇr´ıˇzky nese urˇcitou hodnotu (nejˇcastˇeji se jedn´a o hodnotu
barvy). Pamˇet’ov´a z´atˇeˇz bude logicky silnˇe z´avisl´a na rozmˇeru v´ysledn´eho obr´azku. Rastrov´y
popis v´yˇse uveden´e kresby snˇehul´aka bude tedy n´aroˇcnˇejˇs´ı. Kruˇznice bude reprezentov´ana
vyplnˇen´ymi pixely a jejich poˇcet bude z´aleˇzet na obrazov´em rozliˇsen´ı. Aby se kruˇznice
jevila realisticky a nebyla
”
kostrbat´a“, je nutn´e volit vˇetˇs´ı rozliˇsen´ı, ˇc´ımˇz ale dojde i
ke zvˇetˇsen´ı datov´e velikosti souboru na pamˇet’ov´em m´ediu. Fotografie jsou typick´ym
pˇredstavitelem rastrov´e grafiky, protoˇze obsahuj´ı velk´y poˇcet rozmanit´ych a tud´ıˇz tˇeˇzko
matematicky popsateln´ych tvar˚u. V tomto pˇr´ıpadˇe je vektorov´y model nevhodn´y. Tak´e
metoda sbˇeru dat (osv´ıcen´ı CMOS ˇcipu fotoapar´atu) zaznamen´av´a skuteˇcnost do mˇr´ıˇzky
a nepopisuje ji matematicky. Nad bitmapov´ymi obr´azky lze s v´yhodou aplikovat spoustu
filtr˚u a efekt˚u.
2.2.3 V´yhody a nev´yhody
Nelze obecnˇe ˇr´ıci, jak´y zp˚usob je v´yhodnˇejˇs´ı. Vˇzdy z´aleˇz´ı na rozsahu a rozmani-
tosti kresby, zadan´emu ´uˇcelu a zp˚usobu sbˇeru dat. Pro zn´azornˇen´ı technick´ych v´ykres˚u je
vhodn´y vektorov´y model. Pro v´ykresy, kter´e se maj´ı bl´ıˇzit realitˇe je zase vhodnˇejˇs´ı rastrov´y
model. S nads´azkou si lze pˇrestavit, ˇze Pablo Picasso by pro sv´e kubistick´e malby zvolil
vektorov´y form´at a Claude Monet v obdob´ı impresionismu by pouˇzil vhodnˇejˇs´ı rastrov´y
form´at. V oboru geod´ezie a kartografie jsou vyuˇz´ıv´any oba typy dat. Napˇr. produktem fo-
togrammetrie a d´alkov´eho pr˚uzkumu Zemˇe je rastrov´y obsah. Naopak grafick´e zpracov´an´ı
geodetick´eho mˇeˇren´ı je vektorov´y v´ykres. Vizu´aln´ı rozd´ıly obou zp˚usob˚u jsou zobrazeny
na obr. 2.3
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
S(x,y)
r
Obr´azek 2.3: Zn´azornˇen´ı odliˇsn´eho zp˚usobu z´aznamu obrazov´ych informac´ı
2.3 Vznik a v´yvoj grafick´ych form´at˚u
Informace jsou na pamˇet’ov´ych medi´ıch ukl´ad´ana v bitech a tvoˇr´ı posloupnost jedniˇcek
a nul. Form´at souboru sdˇeluje procesoru, jak danou posloupnost rozk´odovat (ˇcten´ı) nebo
zak´odovat (z´apis). Pro reprezentaci grafick´ych dat bylo vytvoˇreno mnoho form´at˚u pro
vektorov´a i rastrov´a data.
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 6
2.3.1 Form´aty vektorov´e grafiky
Kaˇzd´y v´yznamnˇejˇs´ı v´yrobce softwaru pro zpracov´an´ı vektorov´e grafiky si vytv´aˇr´ı
vlastn´ı v´ymˇenn´y form´at, kter´y pr˚ubˇeˇznˇe inovuje a doplˇnuje. Vznikaj´ı tak probl´emy se
zpˇetnou kompatibilitou a nezˇr´ıdka je tato skuteˇcnost ˇreˇsena vyd´an´ım nov´eho form´atu.
M´enˇe ˇcast´ym jevem je vz´ajemn´a kompatibilita mezi aplikacemi. Hlavnˇe tv˚urci pro-
priet´arn´ıho softwaru vyv´ıjej´ı a bedlivˇe si stˇreˇz´ı vlastn´ı uzavˇren´y form´at (tato pr´ace po-
jedn´av´a o otevˇren´em form´atu). Vektorov´e grafick´e form´aty lze dle [Tiˇs07] rozdˇelit na tyto
skupiny:
V´yznamnˇejˇs´ı souborov´e form´aty urˇcen´e pro 2D grafiku a CAD
• CDR je sloˇzitˇejˇs´ı propriet´arn´ı form´at vyv´ıjen´y spoleˇcnost´ı Corel Corporation, je
vyuˇz´ıvan´y v softwaru CorelDRAW. Mezi jeho odvozeniny patˇr´ı: CDX, CDT, CMX.
Form´at podporuje v´ıcestr´ankov´y dokument.
• AI nativn´ı form´at aplikace Adobe Illustrator je velmi podobn´y form´atu PDF. Pod-
poruje vrstvy, ale nepodporuje v´ıcestr´ankov´y dokument ani animace.
• DXF (Drawing eXchange Format) je textov´y form´at vyvinut´y spoleˇcnost´ı Auto-
Desk. Tento form´at podporuje vˇetˇsina CAD syst´em˚u. Jeho bin´arn´ı podoba m´a
pˇr´ıponu DXB.
• DWG (DraWinG) je dalˇs´ım CAD/CAM form´atem spoleˇcnosti AutoDesk. Umoˇzˇnuje
ukl´adat 2D i 3D data.
• DGN (DesiGN) je nativn´ı form´at CAD programu MicroStation od Bentley Systems.
• SHP (SHaPefile) je p˚uvodn´ı bin´arn´ı form´at softwaru ESRI ArcMap. Popisuje geo-
metrick´e prvky (point, line, polygon) a se soubory typu SHX a DBF tvoˇr´ı geoda-
tab´azi. Jedn´a se o nejrozˇs´ıˇrenˇejˇs´ı form´at pro GIS aplikace.
• OCD je intern´ı form´at kartografick´eho softwaru OCAD.
Form´aty urˇcen´e pro tisk a metaform´aty
• PS (PostScript) je jeden z v´ymˇenn´ych tiskov´ych form´at˚u vyvinut´y spoleˇcnost´ı Adobe
Systems (1985). Jde o popis dokumentu pomoc´ı programovac´ıho jazyka.
• EPS (Encapsulated PostScript) je odvozenina PS form´atu urˇcen´a pro popis obr´azku.
• PDF (Portable Document Format), navrˇzen´y spoleˇcnost´ı Adobe je na platformˇe
nez´avisl´y v´ymˇenn´y form´at zaloˇzen´y na jazyce PostScript a v souˇcasn´e dobˇe velmi
rozˇs´ıˇren. Form´at je schopen n´est i rastrov´a obrazov´a data a metadata aplikac´ı,
ve kter´ych byl vytvoˇren. Zejm´ena produkty firmy Adobe jsou schopn´e si v tomto
form´atu uchovat i nastaven´ı, vrstvy nebo objekty vyuˇziteln´e pro pozdˇejˇs´ı editaci.
• WMF, EMF (Windows MetaFile, Enhanced Windows MetaFile) je vyv´ıjen´y spoleˇc-
nost´ı Microsoft pro operaˇcn´ı syst´em MS Windows. Ukl´ad´a geometrick´e objekty i
vybran´e pˇr´ıkazy.
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 7
• SWF (Shockwave Flash) je propriet´arn´ı multimedi´aln´ı form´at obsahuj´ıc´ı nejen vek-
torov´e prvky. Byl vyv´ıjen spoleˇcnost´ı Macromedia (nyn´ı Adobe Labs), kter´a tak´e
vyd´av´a editor Adobe Flash. I pˇres svou nesvobodu je silnˇe rozˇs´ıˇren na webov´em
prostˇred´ı a je konkurentem otevˇren´eho form´atu SVG.
Grafick´e vektorov´e form´aty zaloˇzen´e na XML technologii
• SVG (Scalable Vector Language) je pˇredmˇetem t´eto pr´ace. Bliˇzˇs´ı sezn´amen´ı od
kapitoly 3. W3C standardem se stal v roce 1999.
• VML (Vector Markup Language) je form´at starˇs´ı neˇz SVG, kter´y se ale pˇr´ıliˇs ne-
prosadil. Jeho pˇr´ıpony jsou .htm nebo .html. W3C Standard v roce 1998.
• PGML (Precision Graphics Markup Language) je dalˇs´ı pˇredch˚udce SVG v dneˇsn´ı
dobˇe jiˇz nevyuˇz´ıvan´y. W3C Standardem se stal v roce 1998.
2.3.2 Form´aty rastrov´e grafiky
Rastrov´e form´aty se od sebe rozliˇsuj´ı pouˇzit´ymi kompresn´ımi algoritmy (LZW,
JPEG, RLE, Huffmanovo k´odov´an´ı).
Nejbˇeˇznˇejˇs´ı rastrov´e form´aty
• PNG (Portable Network Graphics) je n´astupce GIFu. Pouˇz´ıv´a bezztr´atovou kom-
presi a jeho prvn´ı verze vyˇsla v roce 1996 (Standard W3C). Jelikoˇz podporuje
transparentn´ı pozad´ı je hojnˇe pouˇz´ıvan´y v internetov´em prostˇred´ı.
• JPEG (Joint Photographic Experts Group) je ztr´atov´y komprimaˇcn´ı algoritmus a
tak´e form´at souboru. Je vhodn´y k pouˇzit´ı u obr´azk˚u, kde se nevyskytuj´ı ostr´e hrany
(narozd´ıl od form´atu PNG). Je klasick´ym v´ystupem digit´aln´ıch fotoapar´at˚u.
• BMP (Microsoft Windows Bitmap), jeho prvn´ı verze byla pˇredstavena v roce 1988.
Obr´azky jsou ukl´ad´any po jednotliv´ych pixelech a proto je souborov´a velikost znaˇcnˇe
vˇetˇs´ı neˇz u pˇredchoz´ıch form´at˚u.
• TIFF (Tag Image File Format) pouˇz´ıv´a libovolnou dostupnou kompresi a je schopen
ukl´adat v´ıcestr´ankov´e dokumenty. Vznikl jako vstupn´ı form´at pro scannery a faxov´e
pˇr´ıstroje. Jeho varianta GeoTIFF umoˇzˇnuje nosit tak´e prostorov´a data.
• GIF (Graphics Interchange Format) vyuˇz´ıv´a bezztr´atovou kompresi LZW84. Kv˚uli
tomuto komprimaˇcn´ımu algoritmu, kter´y byl patentovˇe chr´anˇen, je nahrazen form´atem
PNG. Je ovˇsem schopen animace, proto byl dˇr´ıve hojnˇe vyuˇz´ıv´an na internetu v re-
klamn´ıch bannerech.
Form´aty rastrov´ych editor˚u
• PSD je nativn´ı form´at aplikace Adobe Photoshop. Je schopen ukl´adat metadata
jako vrstvy, kan´aly, cesty, nastaven´ı pr˚uhlednosti atd.
• XCF je p˚uvodn´ı form´at freewarov´eho programu GIMP (GNU Image Manipulation
Program). Uchov´av´a podobn´e informace jako pˇredchoz´ı PSD.
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 8
Obr´azek 2.4: Ikony vybran´ych grafick´ych form´at˚u a editor˚u
2.4 ´Uvod do XML
Pˇri v´yvoji v´ypoˇcetn´ı technologie vyvstal probl´em jak stroji sdˇelit v´yznam jednot-
liv´ych ˇc´ast´ı textu a jak je v textu oznaˇcovat. Za analogovou formu lze povaˇzovat ruˇcn´ı
vpisov´an´ı pozn´amek mezi autor˚uv text tˇreba pro potˇreby form´atov´an´ı obsahu pro tisk.
Pr´avˇe zde byl inspirov´an v´yvoj tzv. znaˇckovac´ıch jazyk˚u. Obsah dokumentu t´ım z´ıskal
hierarchickou strukturu a mohl b´yt pouˇzit k v´ıce ´uˇcel˚um. Tak´e mohl b´yt jednoduˇseji
transformov´an pro jin´a zaˇr´ızen´ı a st´aval se tedy kompatibiln´ım prostˇredkem mezi syst´emy.
Jelikoˇz je pˇredmˇetem t´eto pr´ace form´at SVG, kter´y je odvozen z jazyka XML s pevn´ym
DTD, budou v t´eto kapitole pops´any z´akladn´ı principy a syntaxe jazyka XML.
IBM GML lze povaˇzovat za prvn´ı znaˇckovac´ı jazyk. Vytvoˇren byl v 60-t´ych le-
tech minul´eho stolet´ı v IBM laboratoˇr´ı. Za jeho v´yvojem st´ali p´anov´e Charles Goldfarb,
Edward Mosher a Raymond Lorie1
. V´ysledn´y dokument byl ASCII text s hierarchick´ym
popisem obsahu. Pˇr´ıklad jeho z´apisu je na uk´azce ˇc. 2.5.
:h1.Kapitola 1: Uvod
:p.Znacka uvozujici odstavec
:oil
:li.prvni polozka seznamu
:li.druha polozka seznamu
:eol.
:p.Nazvy tagu jsou dodnes vyuzivany.
Obr´azek 2.5: Uk´azka struktury dokumentu IBM GML
Dalˇs´ım produktem zaloˇzen´ym na GML je znaˇckovac´ı jazyk SGML (Standard
Generalized Markup Language) vyvinut´y jako univerz´aln´ı jazyk pro v´ymˇenu informac´ı
mezi poˇc´ıtaˇci, kter´y umoˇzˇnoval definici vlastn´ıch znaˇcek. Byl pˇrijat jako ISO norma (8879)
v roce 1986. Instrukce pro oznaˇcen´ı obsahu jsou vloˇzeny mezi tzv. ˇr´ıd´ıc´ı znaky (ostr´e
z´avorky
”
<,>“). Poprv´e byl pouˇzit DTD (Document Type Definition), kde jsou uvedeny
definice dostupn´ych element˚u (znaˇcek). Jelikoˇz se jedn´a o bezkontextov´y jazyk2
, jednotliv´e
elementy se nemohou pˇrekr´yvat, ale mohou se vnoˇrovat. Rozˇs´ıˇren´ı tohoto jazyka pomohlo
americk´e ministerstvo obrany, kter´e poˇzadovalo od dodavatel˚u dokumentaci pr´avˇe v tomto
form´atu [Kos00]. Jazyk SGML byl pˇr´ıliˇs komplexn´ı (umoˇzˇnoval nejen definici vlastn´ıch
znaˇcek, ale i urˇcen´ı oddˇelovaˇc˚u tˇechto znaˇcek) a to ho inhibovalo v praktick´em vyuˇzit´ı.
1
V souvislosti s GML je zaj´ımav´a zkratka utvoˇren´a z poˇc´ateˇcn´ıch p´ısmen pˇr´ıjmen´ı autor˚u.
2
Form´aln´ı jazyk vyuˇz´ıvan´y pˇredevˇs´ım pro programov´an´ı. Umoˇzˇnuje sjednocen´ı, substituci, iteraci,
morfismus, ale ne pr˚unik ani rozd´ıl.
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 9
Jako jedna z nejzn´amˇejˇs´ıch odvozenin je znaˇckovac´ı jazyk HTML (HyperText Markup
Language) dodnes vyuˇz´ıvan´y jako nositel obsahu pro webov´e prostˇred´ı. HTML m´a pevnˇe
definovan´e DTD, kter´e bylo s kaˇzdou novou verz´ı m´ırnˇe odliˇsn´e. Tato skuteˇcnost vedla
k tomu, ˇze se potenci´al HTML vyˇcerpal.
XML (Extensible Markup Language) je rozˇsiˇriteln´y znaˇckovac´ı jazyk, kter´y si jako
podmnoˇzina jazyka SGML zachov´av´a definici vlastn´ıch DTD, ale oddˇelovaˇce znak˚u a
speci´aln´ı znaky jsou pevnˇe urˇcen´e. Tak´e syntaxe jazyka mus´ı dodrˇzovat pˇr´ısnˇejˇs´ı pravidla
neˇz jazyk SGML. Verze XML 1.0 byla dokonˇcena v roce 1998 a nyn´ı je vyd´ana jej´ı 5. revize.
Verze XML 1.1 byla pˇredstavena v roce 2006 a nyn´ı je ve druh´e revizi. Obˇe verze se mezi
sebou m´ırnˇe liˇs´ı v poˇzadavc´ıch na pouˇzit´e znaky v n´azvech element˚u a atribut˚u. Verze
1.0 dovoluje pouˇzit´ı znak˚u obsaˇzen´ych v Unicode 2.0. Form´at XML by mˇel b´yt nositelem
”
ˇcist´ych“ informac´ı, tedy oddˇelen´ych od prvk˚u urˇcuj´ıc´ıch vzhled v´ysledn´eho dokumentu.
K tomu ´uˇcelu jsou urˇceny stylov´e jazyky viz. kapitola 4. Asi nezn´amˇejˇs´ı z nich je CSS
(Cascade Style Sheet, kask´adov´e styly), kter´e definuj´ı vzhled webov´ych str´anek a jsou
tak´e vyuˇz´ıv´any u form´atu SVG. Dalˇs´ım, avˇsak sloˇzitˇejˇs´ım jazykem, je XSL (eXtensible
Style Language), kter´y se vyuˇz´ıv´a pˇri takzvan´ych XSL transformac´ıch (XSLT) pro ´upravu
a transformace dokumentu. XSLT bude tak´e pˇredmˇetem t´eto pr´ace v podkapitole 4.2.
Jak jiˇz bylo ˇreˇceno v´yˇse, form´at XML striktnˇe dodrˇzuje pravidla z´apisu. Pro kontrolu
slouˇz´ı program naz´yvan´y parser . Tento program kontroluje spr´avnost dokumentu a odhal´ı
chyby, kter´e by mohly b´yt pˇr´ıˇcinou probl´em˚u. Implicitnˇe ho obsahuj´ı dneˇsn´ı internetov´e
prohl´ıˇzeˇce.
2.4.1 Syntaxe XML
Pro lepˇs´ı orientaci v k´odu SVG je vhodn´e zn´at XML syntaxi a pravidla jeho z´apisu,
kter´a mus´ı b´yt narozd´ıl od HTML striktnˇe dodrˇzov´ana. XML dokument je sestaven z ob-
jekt˚u naz´yvan´ych elementy . Element je nositelem samotn´e informace i jej´ıho oznaˇcen´ı.
Kaˇzd´y element se skl´ad´a z tag˚u , kter´e jsou uzavˇreny do ostr´ych z´avorek (tj. mezi znaky
‘<’ a ‘>’). Cel´y element se skl´ad´a z poˇc´ateˇcn´ıho tagu, obsahu elementu a koncov´eho tagu,
kter´y je uvozen znakem ‘/’ (pro odliˇsen´ı od poˇc´ateˇcn´ıho). Jednotliv´e ˇc´asti nejjednoduˇsˇs´ıho
XML dokumentu, kter´y obsahuje pouze jeden element, jsou pops´any na obr. 2.6. ˇCasto
< titul > SVG a jeho využití v kartografii </ titul >
XML element
obsah elementu
počáteční tag řídící znak
ukončovací znak koncového tagu
název tagu
Obr´azek 2.6: Popis nejjednoduˇsˇs´ıho XML dokumentu
nastane situace, kdy element nenese ˇz´adn´y obsah, ale jeho v´yskyt m˚uˇze m´ıt vliv tˇreba na
form´atov´an´ı. Zp˚usoby, jak takov´y element napsat jsou tyto:
<titul> </titul> - prost´e vynech´an´ı obsahu je v souladu s pravidly
<br/> - pouˇz´ıv´a se v XHTML pro ukonˇcen´ı ˇr´adky (break line)
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 10
<text kodovani="utf-8"/> - pr´azdn´y element, obsahuj´ıc´ı pouze atribut, se tak´e ˇcasto
vyuˇz´ıv´a
V posledn´ı uk´azce se vyskytuje atribut, kter´y se zapisuje do poˇc´ateˇcn´ıho tagu. Je
to nositel informace o dan´em tagu. Kaˇzd´y atribut se skl´ad´a z n´azvu a hodnoty, kter´a
je uzavˇrena do uvozovek. V uk´azce 2.7 jsou hodnoty souˇradnic bodu v souˇradnicov´em
syst´emu S-JTSK. Zvolen´y souˇradnicov´y syst´em i ˇc´ıslo bodu jsou ukl´ad´any jako atributy.
Zp˚usob z´apisu koment´aˇre: <!-- text koment´aˇre je parserem ignorov´an -->.
<bod cislo="4001">
<souradnice system="EPSG:5221">
744903.16 , 1040716.70
</souradnice>
</bod>
Obr´azek 2.7: XML dokument popisuj´ıc´ı geobod
bod
ELEMENT
system
ATRIBUT
souradnice
ELEMENT
ID
ATRIBUT
popis
ELEMENT
jazyk
ATRIBUT
kořenový element
předek
odstavec
ELEMENT
potomek
sourozenec
<bod ID=4001>
<souradnice system=”EPSG:9221”>
744903.16 , 1040716.70
</souradnice>
<popis jazyk=”cz”>
<odstavec>
Makovice kostela ...
</odstavec>
</popis>
</bod>
Obr´azek 2.8: Stromov´a struktura XML elementu
2.4.2 XML dialekty
Jazyk˚u odvozen´ych z XML je opravdu mnoho3
, zde budou uvedeny ty nejvyuˇz´ıvanˇejˇs´ı
z nich a ty, kter´e maj´ı nˇeco spoleˇcn´eho s oborem geod´ezie a kartografie.
• XHTML (XML HyperText Markup Language)
Znaˇckovac´ı jazyk nahrazuj´ıc´ı HTML (SGML) je postaven na XML z´akladech. Je
pˇr´ısnˇejˇs´ı na syntaxi a umoˇzˇnuje definici vlastn´ıch sad znaˇcek. Jeho pouˇzit´ı se do-
poruˇcuje spoleˇcnˇe s CSS (Cascade Style Sheet).
• DocBook
Odvozenina XML urˇcen´a pro psan´ı nejen technick´e dokumentace. Pouˇz´ıv´a se tak´e
3
http://en.wikipedia.org/wiki/List_of_XML_markup_languages
Filip Zavadil 13. kvˇetna 2011
Kapitola 2. V´yvoj pˇred SVG 11
pro psan´ı knih, prezentac´ı, ˇcl´ank˚u atd. Obsah lze snadno (podle ˇsablon) transfor-
movat pro r˚uzn´e ´uˇcely pouˇzit´ı.
• MathML (Mathematical Markup Language)
Matematick´y znaˇckovac´ı jazyk popisuje matematick´e vztahy a vzoreˇcky. Je tak´e
uloˇzen logick´y smysl v´yrazu. MathML podporuj´ı kancel´aˇrsk´e bal´ıky MS Office,
OpenOffice, matematick´y software Mathematica a webov´e prohl´ıˇzeˇce.
• SVG (Scalable Vector Graphics)
ˇSk´alovateln´y vektorov´y form´at urˇcen´y nejen pro internet. O jeho v´yhod´ach, zp˚usobech
pouˇzit´ı a praktick´ych uk´azk´ach pojedn´av´a kapitola 3.
• KML (Keyhole Markup Language)
Form´at KML4
je standardem Open Geospatial Consortium (OGC5
) a nositelem geo-
grafick´ych dat. Vyuˇz´ıvaj´ı ji Google aplikace (Earth, Maps, SketchUp). D´ıky standar-
dizaci se vyuˇz´ıv´a i v GIS aplikac´ıch. Souˇradnice jsou v syst´emu WGS-84 a voliteln´a
v´yˇska je v syst´emu EGM96.
• GML (Geographic Markup Language)
Form´at ukl´ad´a geografick´e prvky jako geometrii (Point, LineString, Polygon), pouˇzit´y
referenˇcn´ı syst´em, topologii, ˇcas, pouˇzit´e jednotky mˇeˇren´ı, observace atd. Form´at je
tak´e vyv´ıjen a udrˇzov´an konsorciem OGC.
• GeoRSS
Geografick´y form´at urˇcen´y pro RSS ˇcteˇcky, tzv.
”
Web feed“ sluˇzby. Nov´e zpr´avy
mohou tak n´est i geografickou lokalizaci. GeoRSS je tak´e projektem organizace OGC.
• GPX (GPS eXchange Format)
Do tohoto form´atu jsou ukl´ad´any data nˇekter´ych GPS pˇrij´ımaˇc˚u (Garmin) a popisuj´ı
trasy.
2.4.3 XML pˇridruˇzen´e technologie
XML dokumenty mohou b´yt mezi sebou prov´az´any pouˇzit´ım technologie odkaz˚u.
Jazyky XPath, XPointer a XLink nab´ızej´ı vˇetˇs´ı moˇznosti adresov´an´ı neˇz pˇr´ıkaz
<a href="http://svg.filipzava.cz" > SVG </a> vyuˇz´ıvan´y v HTML. Tyto jazyky
tak´e definuje a standardizuje konzorcium W3C. Aplikace, kter´a bude shrnuj´ıc´ım v´ysledkem
t´eto pr´ace, bude vyuˇz´ıvat i tyto moduly jazyka XML. V´ıce o jazyku XPath v 4.2.3.
• XLink
• XPointer
• XPath
XML Path Language se pouˇz´ıv´a pro prohled´av´an´ı XML dokumentu, kter´y je repre-
zentov´an stromovou hierarchi´ı. Jednotliv´e elementy tvoˇr´ı uzly, po kter´ych je snadn´e
se s XPath pohybovat. Pouˇz´ıvaj´ı se pojmy jako pˇredek a potomek.
4
http://code.google.com/intl/cs/apis/kml/documentation/kmlreference.html
5
http://www.opengeospatial.org/
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 12
Kapitola 3
Form´at SVG
3.1 Verze
Vektorov´y form´at SVG je vyv´ıjen od roku 1998. Uˇz od prvopoˇc´atku byl koncipov´an,
aby se stal internetov´ym standardem. Ve v´yvojov´em t´ymu zasedali z´astupci v´yznamn´ych
firem (Adobe, Corel, Macromedia, Sun, Microsoft, Hewlett-Packard, Apple, IBM). Je-
den z rozhodn´ych okamˇzik˚u nastal v z´aˇr´ı 2001, kdy verze SVG 1.0 z´ıskala doporuˇcen´ı od
konsorcia W3 (pˇredstupeˇn standardizace). Standardizov´an byl form´at SVG 1.0 v dubnu
2000. O nˇekolik mˇes´ıc˚u pozdˇeji (leden 2001), vyˇsla verze 1.1, kter´a bere v potaz expanzi
internetu na rozv´ıjej´ıc´ı se mobiln´ı zaˇr´ızen´ı. Pro vz´ajemnou kompatibilitu mezi tˇemito
zaˇr´ızen´ımi bylo SVG rozvˇetveno na form´at pro mobiln´ı zaˇr´ızen´ı SVGB (SVG Basic) a od-
vozeninu SVGT (SVG Tiny) pro mobiln´ı telefony (nezahrnuje pr˚uhlednost, CSS styly nebo
gradient). V dobˇe psan´ı t´eto publikace se verze nach´azela ve st´adiu SVG 1.2 a je oˇcek´av´ano
vypuˇstˇen´ı SVG 2.0. V dneˇsn´ı dobˇe nab´ıraj´ı na trhu sv˚uj pod´ıl tablety, kter´e sv´ym doty-
kov´ym displayem umoˇzˇnuj´ı pˇrirozenˇejˇs´ı ovl´ad´an´ı aplikac´ı, tedy i vyuˇzit´ı interaktivity SVG.
V tˇechto zaˇr´ızen´ı je vˇetˇsinou zabudov´ana podpora form´atu SVG Full [Eis02].
Obr´azek 3.1: Nˇekter´a z ofici´aln´ıch log form´atu SVG
3.2 Kompatibilita
V poˇc´ateˇcn´ıch letech byl SVG form´at podporov´an v´yznamnou spoleˇcnost´ı Adobe,
kter´a se nejsp´ıˇs d´ıky tomuto form´atu chtˇela st´at konkurentem flash form´atu od Macrome-
dia. Pro zobrazov´an´ı SVG v prohl´ıˇzeˇc´ıch, kter´e v t´e dobˇe nemˇely nativn´ı podporu tohoto
form´atu, byl vyuˇz´ıv´an plugin Adobe SVG Viewer. Jeho v´yvoj byl vˇsak ukonˇcen v roce
2009 (vzr˚ustaj´ıc´ı nativn´ı podpora prohl´ıˇzeˇc˚u).
Mozilla Firefox zavedla plnou podporu SVG 1.1 ve sv´em j´adru Gecko v roce 2005.
Opera m´a plnou podporu SVG Tiny 1.1 od verze 8. Prohl´ıˇzeˇce zaloˇzen´e na WebKit
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 13
(Google Chrome, Apple Safari) ˇc´asteˇcnˇe podporuj´ı SVG 1.1 od roku 2006. Zat´ım
celosvˇetovˇe nejv´ıce rozˇs´ıˇren´y prohl´ıˇzeˇc Internet Explorer od Microsoftu zavedl nativn´ı
podporu teprve v roce 2011 ve verzi IE9.
Internet
Explorer
Mozilla
Firefox
Google
Chrome
Safari
Opera Ostatní
prohlížeče
43.6%
29.0%
13.9%
6.2%
2.7%
4.6%
Obr´azek 3.2: Pod´ıl pouˇz´ıvan´ych internetov´ych
prohl´ıˇzeˇc˚u ve svˇetˇe v lednu 2011
3.3 Hlaviˇcka SVG dokumentu
Tak jako spr´avnˇe formovan´y XML dokument by i SVG obr´azek mˇel obsahovat
hlaviˇcku. V t´eto ˇc´asti jsou uvedeny povinn´e prvky jako (procesn´ı instrukce, definice typu
dokumentu) a koˇrenov´y element svg.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
... obsah ...
</svg>
procesní instrukce společné pro
všechny xml dokumenty
definice typu dokumentu
1.interní, 2. externí zdroj
kořenový element,
uvedená verze SVG a
zdroj jmenného prostoru,
všechny ostatní elementy musí
být mezi těmito tagy
Je vhodn´e pouˇz´ıt i nepovinn´e elementy pro oznaˇcen´ı obsahu, tzv. metadat (viz. 3.11)
informuj´ıc´ıch o autorovi, form´atu a zdroji dat. O z´apisu dalˇs´ıch element˚u ve vztahu ke
kartografii je pojedn´ano v 5.4.
3.3.1 Element defs
Do elementu defs lze zapsat ˇc´asti k´odu, kter´e mohou b´yt v dokumentu nˇekolikr´at
pouˇzity. Jedn´a se zejm´ena o definov´an´ı barev, barevn´ych pˇrechod˚u, vzor˚u atd. T´ımto
zp˚usobem lze tak´e pˇred´avat ˇc´ast k´odu. Tato skuteˇcnost se hod´ı tak´e u rozm´ıst’ov´an´ı
kartografick´ych znaˇcek, kdy samotn´y k´od je uveden pouze jednou a n´aslednˇe se jen
um´ıst’uje na zadan´e souˇradnice. To vede k ´uspoˇre datov´eho objemu dokumentu a pˇrisp´ıv´a
k pˇrehlednosti k´odu.
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 14
• atribut id
Pro oznaˇcen´ı objektu slouˇz´ı atribut id, jehoˇz hodnota by v dokumentu mˇela b´yt
unik´atn´ı, aby nedoˇslo ke kolizi. Podle tohoto oznaˇcen´ı lze prvek kdykoliv zavolat a
inicializovat jeho vykreslen´ı. Identifik´ator lze zapsat ke kaˇzd´emu elementu geomet-
rick´ych tvar˚u, textov´e sloˇzce nebo rastrov´emu obr´azku.
• element use
Pro vykreslen´ı symbolu v urˇcit´e ˇc´asti dokumentu je pouˇzit element use s atributy
v podobˇe souˇradnic (x,y) a odkazu k symbolu xlink:href, jehoˇz hodnota je id
symbolu uvozen´e znakem ‘#’.
<defs>
<path id="trojuhelnik" stroke="blue" fill="red"
d="M-10,10 L0,-10 L10,10 L-10,10" />
</defs>
...
<use x="40" y="40" xlink:href="#trojuhelnik" />
40
40 +
+
-
-
• element symbol
Mezi tagy s n´azvem symbol se zapisuje k´od objekt˚u urˇcen´ych pro v´ıcen´asobn´e
pouˇzit´ı. Lze zapsat libovoln´y element geometrick´ych tvar˚u a textu. Ke kaˇzd´emu
symbolu je nutn´e tak´e pˇridat atribut id, kter´y vede k jednoznaˇcn´e identifikaci sym-
bolu. Atribut overflow (nastaven´y na visible) zajiˇst’uje vykreslen´ı cel´eho prvku.
Objekt je zaps´an relativn´ımi souˇradnicemi, proto je vhodn´e tˇeˇziˇstˇe objektu um´ıstit
na poˇc´atek soustavy souˇradnic. T´ımto zp˚usobem lze vytv´aˇret a pouˇz´ıvat kartogra-
fick´e znaˇcky. Podobn´eho v´ysledku lze dos´ahnout pouˇzit´ım identifik´atoru pro skupinu
: <g id="znacka" > ... obsah znaˇcky ... </g>
<defs>
<symbol id=”znacka” overflow=”visible”>
<rect x="-20" y="-20" width="40" height="40"
r="20" fill="#A2DFF4" stroke="black"
stroke-width="2" rx="5"/>
</symbol>
</defs>
...
<use x="40" y="40" xlink:href="#znacka" />
40
40
T[0,0]
• element marker
Pro tvary element˚u line, polyline, polygon a path je k dispozici nastaven´ı
poˇc´ateˇcn´ı, stˇredn´ı nebo koncov´e znaˇcky pomoc´ı elementu marker. Typick´e pouˇzit´ı
je zn´azornˇen´ı smˇeru ˇsipkou. Atributy, kter´e lze vyuˇz´ıt pro form´atov´an´ı jsou:
- id - identifik´ator, povinn´y parametr
- refX, refY - souˇradnice referenˇcn´ıho bodu
- markerUnits - definice souˇradnicov´eho syst´emu hodnoty: strokeWidth, user-
SpaceOnUse
- markerWidth, markerHeight - velikost znaˇcky v z´avislosti na SS
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 15
- orient - nastaven´ı orientace znaˇcek, hodnota ‘auto’ natoˇc´ı znaˇcku automaticky
dle teˇcny ke zvolen´emu bodu, lze tak´e zadat ´uhel pootoˇcen´ı
<defs>
<marker id="sipka" refX="0" refY="0"
markerUnits="strokeWidth"
orient="auto" overflow="visible">
<polygon points="-5,-5 -5,5 5,0 -5,-5" fill="green" />
</marker>
<marker id="bod" refX="0" refY="0"
markerUnits="strokeWidth"
overflow="visible"/>
<circle cx="0" cy="0" r="2" />
</marker>
</defs>
...
<path d="M20,70 L50,20 80,60 150,30 180,40" stroke="green"
marker-end="url(#sipka)" marker-mid="url(#bod)" />
Obsah tohoto elementu tvoˇr´ı samotn´y objekt urˇcen´y k vykreslen´ı. Pro pouˇzit´ı znaˇcky
slouˇz´ı atributy:
- marker-start poˇc´ateˇcn´ı znaˇcka
- marker-mid znaˇcka lomov´ych bod˚u
- marker-end znaˇcka koncov´eho bodu
Hodnota je odkaz na danou znaˇcku ve tvaru "url(#adresa)".
3.3.2 Barevn´e pˇrechody
Plynul´y pˇrestup jedn´e barvy do druh´e se naz´yv´a
”
barevn´y pˇrechod“ (gradient).
SVG nem´a ˇz´adn´y gradient nastaven´y a uˇzivatel si mus´ı definovat vlastn´ı. Samotn´a defi-
nice je um´ıstˇena do hlaviˇcky dokumentu v elementu defs. Existuj´ı dva druhy barevn´ych
pˇrechod˚u: line´arn´ı a radi´aln´ı pˇrechod.
• element linearGradient
Pˇrechod je nutn´e pojmenovat atributem id. N´asleduj´ı atributy x1,y1,x2,y2 ud´avaj´ı
(v procentech) smˇer pˇr´ımky, podle kter´e je barevn´y pˇrechod veden. Obsahem ele-
mentu linearGradient jsou barevn´e body <stop>, kter´e maj´ı nastaven odstup
(offset), barvu v atributu (style) hodnotou (stop-color) nebo nepr˚uhlednost
(stop-opacity).
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 16
<defs>
<linearGradient id="modro_cervena"
x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:blue; stop-opacity:1"/>
<stop offset="100%" style="stop-color:red; stop-opacity:1"/>
</linearGradient>
</defs>
...
<rect width="400" height="50" r="20" fill="url(#modro_cervena)"/>
0% 100%
• element radialGradient
Podobn´e atributy jako line´arn´ı pˇrechod m´a i element radialGradient. Je ale na-
staven atributy cx,cy (souˇradnice stˇredu) a fx,fy, kter´e po os´ach posunuj´ı barevn´e
body.
<defs>
<radialGradient id="modro_cervena" cx="50%" cy="50%"
r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:blue; stop-opacity:1"/>
<stop offset="100%" style="stop-color:red; stop-opacity:1"/>
</radialGradient>
</defs>
...
<rect width="200" height="200" fill="url(#modro_cervena)"/>
0%
100%
fy
fx
C
0%
100%
0% 100%
0%
100%
fy
fx
C =100%
=0%
Barevn´e pˇrechody lze pouˇz´ıt jako barvu v´yplnˇe (fill), barvu tahu (stroke) nebo barvu
textu. Na definovan´y gradient je odk´az´ano pouˇzit´ım jeho identifik´atoru:
fill="url(#prechod)";
Mezi dalˇs´ı prvky, kter´e se zapisuj´ı do hlaviˇcky defs patˇr´ı typografick´e definice. Tyto
prvky nejsou v kartografii pˇr´ıliˇs pouˇz´ıvan´e, proto tak´e nebudou podrobnˇeji zmiˇnov´any.
3.4 SVG elementy z´akladn´ıch geometrick´ych prvk˚u
Jako u vˇetˇsiny form´at˚u a editor˚u vektorov´e grafiky je v´ysledn´y obr´azek sloˇzen ze
z´akladn´ıch prvk˚u jako jsou obd´eln´ıky, kruˇznice, kˇrivky nebo ´useˇcky. Tyto prvky jsou mate-
maticky pops´any dle parametr˚u nutn´ych k jejich sestrojen´ı. V n´asleduj´ıc´ıch podkapitol´ach
jsou pops´any tzv.
”
SVG primitiva“. Je tak´e uvedena jejich kartografick´a hodnota (zp˚usob
jejich vyuˇzit´ı pro z´akres map). Stylov´a sloˇzka (barva a tlouˇst’ka ˇc´ary, barva v´yplnˇe atd.)
je ˇreˇsena v kapitole 4.
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 17
3.4.1 Element line (´useˇcka)
<line x1="10" y1="10" x2="70" y2 ="30"/>
[0;0]
[10;10]
[70;30]
p1
p2
x
y
Jeden z nejjednoduˇsˇs´ıch tvar˚u je ´useˇcka. Je
pops´ana pouze poˇc´ateˇcn´ım (x1,y1) a kon-
cov´ym bodem (x2,y2). V kartografii tento
tvar s´am o sobˇe nenach´az´ı velk´eho uplatnˇen´ı,
je ale vyuˇz´ıv´an jako z´akladn´ı prvek kˇrivek,
kde tvoˇr´ı spojnici mezi lomov´ymi body. Pr-
vek je ˇcasto zastupov´an elementem path.
3.4.2 Element rectangle (obd´eln´ık)
<rectangle x="20" y="10"
width="30" height="20"/>
[0;0]
[20;10] p
x
y
height
width = 30
= 20
Obd´eln´ık je tvoˇren elementem rectangle.
Pro sestrojen´ı jsou ud´any souˇradnice seve-
roz´apadn´ıho rohu (x,y) a ˇs´ıˇrka s v´yˇskou
tˇelesa (width,height). V mapˇe m˚uˇze
b´yt tento prvek pouˇzit u z´akresu budov
obd´eln´ıkov´eho tvaru. Ve vˇetˇsinˇe pˇr´ıpadech by
vˇsak musel b´yt pootoˇcen. V aplikaci tvoˇr´ı ta-
bulky.
3.4.3 Element circle (kruˇznice)
<circle cx="30" cy="20" r="10" />
[0;0]
[30;20]
c
x
y
r=10
Dalˇs´ı lehce popsateln´y tvar je kruˇznice.
Mezi jej´ı parametry patˇr´ı souˇradnice stˇredu
(cx,cy) a polomˇer (r). V kartografii se
vyuˇz´ıv´a nejsp´ıˇse jako kruh (s vyplnˇen´ım)
pˇri znaˇcen´ı bodov´ych prvk˚u (napˇr. bodov´a
vrstva obc´ı). K tomuto ´uˇcelu je tak´e element
pouˇzit v aplikaci.
3.4.4 Element ellipse (elipsa)
<ellipse cx="30" cy="20"
rx="20" ry="10" />
[0;0]
[30;20]
c
x
y
ry
rx = 20
= 10
Podobn´y element jako pˇredch´azej´ıc´ı kruˇznice
je ellipse. Je zˇrejm´e, ˇze kruˇznice je zvl´aˇstn´ı
pˇr´ıpad elipsy (stejn´e poloosy). V mapˇe m˚uˇze
b´yt pouˇzit k podobn´ym ´uˇcel˚um jako kruh.
Oproti circle je pˇrid´an attribut (rx,ry),
coˇz jsou d´elky poloos. Tento element se
v aplikaci nenal´ez´a.
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 18
3.4.5 Element polyline (lomen´a ˇc´ara)
<polyline points=" 0,0 20,10 30,20
50,10 60,30" />
x
y
[0;0] p1
[20;10]
p2
[30;20]
p3
[50;10]p4
[60;30]
p5
Lomen´a ˇc´ara je sloˇzena z ´useˇcek a je pops´ana
pomoc´ı lomov´ych bod˚u v atributu points.
Form´at z´apisu obsahuje vˇzdy p´ary souˇradnic
(x, y) oddˇelen´ych ˇc´arkou. V kartografii m˚uˇze
b´yt vyuˇzit ke zn´azornˇen´ı lini´ı jako jsou komu-
nikace, vodn´ı toky, ˇzeleznice atd. V aplikaci
je tento prvek pouˇzit u liniov´ych prvk˚u.
3.4.6 Element polygon (mnoho´uheln´ık)
<polygon points="30,0 50,10 30,15
20,30 20,10" />
[0;0]
p1
p2
p3
p4
p5
x
y
Jedn´ım z prvk˚u pro vykreslov´an´ı
mnoho´uheln´ık˚u je element polygon. Je
reprezentov´an posloupnost´ı p´ar˚u souˇradnic,
stejnˇe jako element polyline v atributu
points. Tento objekt je vhodn´y pro are´alov´e
(ploˇsn´e) znaˇcky, jako lesy, vodn´ı plochy,
budovy atd.
3.5 Element path (kˇrivka)
Trochu sloˇzitˇejˇs´ım a z´aroveˇn obecnˇejˇs´ım popisem geometrick´eho prvku je kˇrivka
(path). Pomoc´ı tohoto elementu je moˇzn´e popsat v´yˇse uveden´e tvary, ovˇsem ve sloˇzitˇejˇs´ı
a datovˇe objemnˇejˇs´ı formˇe. Tento prvek vyuˇz´ıv´a tvz. virtu´aln´ıho pera, kter´e se ˇr´ıd´ı pˇr´ıkazy
uveden´ymi v atributu s n´azvem d (data). Za pˇr´ıkazy n´asleduj´ı p´ary souˇradnic pro ud´an´ı
pozice. Pokud je pˇr´ıkaz velk´ym p´ısmenem, ud´av´a absolutn´ı souˇradnice, pokud je zaps´an
mal´ym p´ısmenem, souˇradnice jsou ch´ap´any jako relativn´ı (pˇr´ır˚ustky k pˇredchoz´ımu bodu).
Dostupn´e pˇr´ıkazy pro element path:
• M (move) - virtu´aln´ı pero je pˇresunuto na danou pozici, aniˇz by byla kreslena ˇc´ara
• L (line) - z pˇredchoz´ıho bodu je vedena ´useˇcka na souˇradnice uveden´e za t´ımto
pˇr´ıkazem
<path d="M10,10 L90,40" />
[0;0]
[10;10]
[90;40]
p1
p2
x
y
<path d="M30,0 l20,10 L30,15
l-10,15 L20,10 Z" />
[0;0]
p1
p2
p3
p4
p5
x
y
Obr´azek 3.3: Element path a pˇr´ıkazy M, L pro vykreslov´an´ı ´useˇcek
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 19
Jak lze odvodit z obr´azku, t´ımto zp˚usobem lze nahradit elementy line, polyline,
rectangle, polygon, circle a ellipse, (kresba mapy by ˇsla prov´est za pouˇzit´ı
pouze toho typu elementu, ovˇsem datov´a objemov´a n´aroˇcnost a pˇrehlednost by
znaˇcnˇe utrpˇela). Na obr´azku vpravo jsou pouˇzity absolutn´ı i relativn´ı souˇradnice.
• H (horizontal line) - vodorovn´a ˇc´ara, nen´ı zad´av´ana y-ov´a souˇradnice
• V (vertical line) - svisl´a ˇc´ara, nen´ı zad´av´ana x-ov´a souˇradnice, z´apis tvaru obd´eln´ıku
ˇci ˇctverce je t´ımto zp˚usobem sice kratˇs´ı, ale m´enˇe pˇrehledn´y pro editaci
<path d="M20,10 H50 V30 H20 V10" />
[0;0]
[20;10]
x
y
[50;10]
[20;30] [50;30]
<path d="M20,10 h30 v20 h-30 v-20" />
Zápis absolutními souřadnicemi:
Analogický zápis s relativními souřadnicemi:
Obr´azek 3.4: Element path a pˇr´ıkazy H, V pro vodorovn´e a svisl´e ´useˇcky
• C (curve) - n´astroj pro vykreslov´an´ı kubick´e B´ezierovy kˇrivky
• S (smooth curve) - n´astroj pro vykreslov´an´ı kubick´e B´ezierovy kˇrivky s hladk´ym
napojen´ım, tento typ elementu path je vhodn´y pro vykreslen´ı zaoblen´ych spojit´ych
<path d="M20,30
C10,20 40,20 30,30" />
[0;0] x
y
[20;30]
[30;30]
[10;20] [40;20]
[0;0] x
y
[20;30] [30;30]
[10;20] [40;20]
[40;30]
[50;40]
<path d="M2 0,30
C10,20 40,20 30,30
S50,40 40,30" />
Obr´azek 3.5: Element path a pˇr´ıkazy C,S pro kubickou B´ezierovu kˇrivku
kˇrivek, parabol a hyperbol, vyuˇz´ıv´a kotevn´ı body a urˇcen´ı teˇcen ˇr´ıd´ıc´ımi body,
sloˇzitˇejˇs´ı tvary jsou utvoˇreny spojen´ım v´ıce kubick´ych B´ezierov´ych kˇrivek formou
hladk´eho napojov´an´ı
• Q (quadratic B´eziere curve) - sestrojen´ı kvadratick´e B´ezierovy kˇrivky
• T (smooth quadratic B´eziere curve) - sestrojen´ı kvadratick´e B´ezierovy kˇrivky
s hladk´ym napojen´ım, kvadratick´e B´ezierovy kˇrivky nejsou ve vektorov´ych editorech
bˇeˇznˇe vyuˇz´ıv´any, pro uspokojivou aproximaci vyhovuj´ı kubick´e B´ez. kˇrivky
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 20
<path d="M10,10 A30,20 0 0,0 50,40 Z" />
[0;0] x
y
[10;10]
[50;40]
30
20
A
30,
20
0
0,
0
50,
40
hlavní polosa
vedlejší polosa
rotace (stupně)
kratší/delší výseč (0/1)
orientace výseče (0/1)
x - koncový bod
y - koncový bod
Obr´azek 3.6: Element path a pˇr´ıkaz arc pro eliptickou v´yseˇc
• A (elliptical arc) - eliptick´y oblouk, prvek m´a sice sloˇzitˇejˇs´ı z´apis, ale mohl by b´yt
vyuˇz´ıv´an pro tvorbu diagram˚u
• Z (close path) - pˇr´ıkaz pro oznaˇcen´ı konce kˇrivky
3.6 Textov´e ˇretˇezce
Jedn´ım ze stˇeˇzejn´ıch prvk˚u vektorov´ych grafick´ych form´at˚u je moˇznost implemen-
tace textov´ych ˇretˇezc˚u. Ani form´at SVG nez˚ust´av´a v tomto ohledu pozadu a umoˇzˇnuje
ˇsirok´e moˇznosti nastaven´ı jeho vykreslen´ı. Tak´e v oboru kartografie je tento prvek hojnˇe
pouˇz´ıv´an zejm´ena v popisc´ıch ulic, m´ıstn´ıch n´azv˚u atd. Zde nach´az´ı uplatnˇen´ı veden´ı
textu po kˇrivce.
3.6.1 Element text
• x,y - souˇradnice bodu, na kter´y je um´ıstˇen´e poˇc´ateˇcn´ı ´uˇcaˇr´ı textu, pˇrid´an´ım atribut˚u
dx, dy lze tato pozice jeˇstˇe
”
doladit“
• font-size - velikost p´ısma dle jednotek uveden´ych v 3.8
• font-family - rodina p´ısem (serif, sans-serif, cursive, monospace atd.)
• font-style - styl p´ısma (normal, italic, oblique)
• font-variant - kapit´alky (normal, small-caps)
• font-weight - nastaven´ı tuˇcnosti p´ısma (normal, bold, [100-900])
• font-stretch - vodorovn´e roztaˇzen´ı p´ısma
• letter-spacing, kerning - nastaven´ı mezery mezi p´ısmeny
• word-spacing - mezery mezi slovy
• text-decoration - dekorace textu (none, underline, overline, line-through, blink)
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 21
• rotate - otoˇcen´ı kaˇzd´eho p´ısmene o zadan´y ´uhel ve stupn´ıch
• textLength - ˇs´ıˇrka, na kterou m´a text rozt´ahnout
• lengthAdjust - zp˚usob jak´ym m´a text vyplnit zadanou ˇs´ıˇrku (spacing, spacingAn-
dGlyphs)
Lorem ipsum
L o r e m i p s u m
L o r e m i p s u m
1
5
10
L o r e m i p s u m
Lorem ipsum Lorem ipsum Lorem ipsumLorem ipsum
L
o
re
m
ip
s
u
m
Lorem ipsum LOREM IPSUM
Lorem ipsum Lorem ipsumLorem ipsumLorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum
font-family
letter-spacing
text-decoration
rotate
text-stretch
font-variant
font-size
font-style
text-length
Lorem ipsum Lorem ipsum Lorem ipsum
font-weight
Obr´azek 3.7: Pˇrehled z´akladn´ıch atribut˚u pro pr´aci s textem
3.6.2 Element tspan
Uvnitˇr elementu text lze pouˇz´ıt prvek tspan pro
”
jemnˇejˇs´ı“ pˇrizp˚usoben´ı ˇc´ast´ı
textu. S v´yhodou lze tak´e vyuˇz´ıt relativn´ıch souˇradnic. K dispozici jsou stejn´e atributy
jako u elementu text.
<text font-weight="bold" font-size="30" fill="black"> Lorem ipsum no laoreet nostrum eum.
<tspan dy="15" fill="red"> Etiam euismod efficiantur id sed. </tspan>
<tspan dy="40" dx="-800" font-style="italic">Ius ea intellegat mnesarchum.</tspan>
<tspan dy="30" rotate="10" fill="none" stroke="blue">
Ea dicta legimus pri, mea fabellas assentior curo.</tspan>
</text>
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 22
3.6.3 Element textPath
V kartografii uˇz´ıvan´y zp˚usob psan´ı textu pod´el kˇrivky lze v SVG zapsat elemen-
tem textPath. Kˇrivka, kter´a nahrazuje ´uˇcaˇr´ı p´ısma, je definov´ana v hlaviˇcce dokumentu
v ˇc´asti defs. Zm´ınˇen´a kˇrivka mus´ı tak´e obsahovat identifik´ator, dle kter´eho je jedno-
znaˇcnˇe urˇcena. ˇC´ast textPath mus´ı b´yt um´ıstˇena mezi tagy <text>,</text>, kde b´yv´a
nastaveno form´atov´an´ı textu. Element textPath m˚uˇze obsahovat atributy:
- xlink:href(#id) - povinn´y atribut, adresa kˇrivky
- startOffset - odsazen´ı zaˇc´atku textu od zaˇc´atku kˇrivky
<defs>
<path id="tah" d="M40,70 C0,110 40,150 70,80 S250,20 300,80"/>
</defs>
<text fill="black" font-family="cursive">
<textPath xlink:href="#tah">
Text vedený po křivce využitelný pro popis linií.
</textPath>
</text>
Text
vedený po
křivce využitelný pro popi
slinií.
3.7 Instrukce pro vykreslov´an´ı
Pro spr´avn´e vykreslen´ı nestaˇc´ı pouze uv´est geometrickou podstatu objekt˚u, ale sdˇelit
parseru, jak´ym zp˚usobem se m´a prvek vykreslit (viditelnost ˇcar polygon˚u). Lze tak´e na-
stavovat pravidla napojov´an´ı hran.
3.7.1 Vlastnosti atributu stroke
Vlastnosti tahu se vztahuj´ı ke vˇsem element˚um uveden´ych v 3.4. Tedy jak k ploˇsn´ym
objekt˚um, tak i k lini´ım a text˚um.
• stroke
Samotn´y atribut stroke slouˇz´ı k urˇcen´ı barvy tahu. Jeho hodnoty mohou nab´yvat
barev dle 3.7.4.
• stroke-width
Tento atribut nastavuje tlouˇst’ku ˇc´ary. Hodnotou je ˇc´ıslo s jednotkou uvedenou na
obr. 3.8. Pokud je tlouˇst’ka ˇc´ary neud´ana, je pouˇzita implicitn´ı hodnota (1px). Je
to ˇcasto vyuˇz´ıvan´y atribut. M˚uˇze b´yt dynamicky nastavov´an v z´avislosti k mˇeˇr´ıtku.
V kartografick´em zobrazen´ı je takto nastavena tlouˇst’ka lini´ı (zn´azorˇnuj´ıc´ı jejich
kvalitu).
1px 2px 6px5px4px3px
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 23
• stroke-linecap
Tento typ urˇcuje jak´ym zp˚usobem m´a b´yt tah ukonˇcen. Hodnoty nab´yvaj´ı tvar˚u:
butt, round, square.
butt round square
• stroke-linejoin
Pro urˇcen´ı tvaru napojen´ı jsou k dispozici tyto hodnoty: miter, round, bevel. Pˇri
zobrazov´an´ı v mapˇe lze pouˇz´ıt r˚uzn´e hodnoty, v z´avislosti na zobrazovan´em prvku.
Napˇr´ıklad pro vykreslen´ı vodn´ıch tok˚u je vhodn´e pouˇz´ıt hodnotu round, ale pro
vyobrazen´ı pr˚ubˇehu hranic hodnoty miter.
miter round bevel
• stroke-miterlimit
Nastaven´ı
”
ˇspiˇcatosti“ lze prov´est jen pro objekty s stroke-linejoin="miter".
Hodnota je zad´ana ˇc´ıslem. V kartografii nen´ı zobrazov´an´ı
”
ostr´eho“ napojov´an´ı
ˇz´adouc´ı a u prvk˚u s vysokou frakt´aln´ı dimenz´ı by mˇelo ruˇsiv´y efekt.
3 2 7 6
• stroke-dasharray
Pro vykreslen´ı pˇreruˇsovan´e ˇc´ary je vyuˇz´ıv´an atribut stroke-dasharray urˇcuj´ıc´ı
vzd´alenost jednotliv´ych ˇcar a mezer. Do hodnot lze zapsat vektor libovoln´e veli-
kosti, podle kter´eho se kresl´ı ˇc´ary nebo pr´azdn´e mezery. Tento zp˚usob lze vyuˇz´ıt
v kartografii pˇri z´akresu osy ˇzeleznice.
stroke-dasharray=”20 10” stroke-dasharray=”20 10 5”
20 10 20 10 5 20 10 520 10
• stroke-dashoffset
Tato ˇc´ast urˇcuje, v jak´em bodu se m´a zaˇc´ıt s vykreslov´an´ım.
stroke-dashoffset=”40”20 10 20 10
40
• stroke-opacity
Nepr˚uhlednost tahu je zad´ana ˇc´ıslem v intervalu < 0, 1 >.
1 0.8 0.6 0.4 0.2
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 24
3.7.2 Vlastnosti atributu fill
• fill
Barva v´yplnˇe je nastavena v tomto atributu.
• fill-rule
Pravidlo v´yplnˇe nab´yv´a hodnot: nonzero, evenodd
nonzero evenodd
• fill-opacity
Nastaven´ı nepr˚uhlednosti je nastaveno hodnotami v intervalu < 0, 1 >.
1 0.8 0.6 0.4 0.2
3.7.3 Atributy opacity,display,visibility
• opacity
Nastaven´ı nepr˚uhlednosti cel´eho objektu nebo skupiny objekt˚u vˇcetnˇe tahu, v´yplnˇe
a textu je moˇzn´e nastavit atributem stroke, jehoˇz hodnoty jsou z intervalu
< 0, 1 >. Pro odliˇsen´ı nepr˚uhlednosti tahu nebo v´yplnˇe lze samostatnˇe nastavit
stroke-opacity ˇci fill-opacity.
1 0.8 0.6 0.4 0.2
• display
inline, block, list-item, run-in, compact, marker, table, inline-table, table-row-group,
table-header-group, table-footer-group, table-row, table-column-group, tabel-column,
table-cell, table-caption, none
Objekty mohou b´yt tak´e vyjmuty ze zobrazovan´ı (hodnota
”
none“), i kdyˇz se v do-
kumentu vyskytuj´ı. T´eto skuteˇcnosti lze vyuˇz´ıt pˇri vyp´ın´an´ı vrstev. Stejn´eho efektu
lze dos´ahnout nastaven´ım atributu opacity na hodnotu 1, avˇsak pokud je pro tento
objekt nastavena interaktivita, z˚ust´av´a na rozd´ıl od atributu display="none" za-
chov´ana.
• visibility
visible,hidden,collaspse
3.7.4 Barevn´e modely
Zp˚usob˚u jak do atribut˚u fill, stroke a podobn´ych zapsat urˇcitou barvu je nˇekolik.
Liˇs´ı se pouˇzit´ym barevn´ym modelem a z´apisem. Kromˇe bˇeˇznˇe zn´am´ych barev obsahuje i
ty m´enˇe zn´am´e.
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 25
• Color names jsou barvy pojmenov´any anglick´ymi n´azvy. Je to nejsnadnˇejˇs´ı a
ˇclovˇeku nejsrozumitelnˇejˇs´ı forma z´apisu. Pˇr´ıklad pouˇzit´ı pro v´yplˇn
”
lososovou“ barvou: fill="salmon".
aquamarine coral
indianredlimegreen
gold
mistyrose moccasin
lightskyblue
• RBG je nejpouˇz´ıvanˇejˇs´ı barevn´y model, kde v´ysledn´a barva vznikne aditivn´ım
m´ıˇsen´ım tˇr´ı barevn´ych sloˇzek (ˇcerven´a, zelen´a, modr´a). Tento model je pouˇz´ıvan´y
v monitorech a projektorech. Hodnota R,G,B kan´al˚u je zapsan´a 8-bitov´ymi cel´ymi
ˇc´ısly v intervalu < 0, 255 >. Hodnoty lze odeˇc´ıst na barevn´e krychli. Z´apis je pro-
veden jako RGB() funkce se tˇremi ˇc´ıseln´ymi hodnotami: fill="RGB(240,32,12)".
Moˇzn´y je tak´e hexadecim´aln´ı z´apis (HEX), sestaven´y ze tˇr´ı dvojic alfanumerick´ych
znak˚u uvozen´ych znakem ‘#’ (fill="#F0200C").
rgb(0,0,0)rgb(255,255,255) rgb(255,0,0)
rgb(0,255,0)
rgb(0,0,255)
rgb(255,0,255) rgb(0,255,255)rgb(255,255,0)
• RGBa m´a obdobn´y z´apis jako pˇredchoz´ı RGB model, kde ˇctvrt´y parametr nasta-
vuje alpha kan´al (nepr˚uhlednost). Pˇr´ıklad pouˇzit´ı:
fill="RGBa(255,0,255,0.4)", kde α-kan´al je reprezentov´an hodnotou typu float
v intervalu < 0, 1 >.
• HSL (Hue Saturation Lightness) urˇcuje barvu dle barevn´eho kruhu, sytosti a odst´ınu.
- Hue je ´uhel (ve stupn´ıch) na barevn´em kruhu. < 0, 360 > [ve stupn´ıch]
- Saturation (sytost) barev je nastavena procenty. (100% - nejsytˇejˇs´ı barvy)
- Lightness (svˇetlost) je ud´ana tak´e procenty. (100% odpov´ıd´a b´ıl´e barvˇe, 0%
ˇcern´e barvˇe)
Tohoto modelu lze vyuˇz´ıt pˇri tvorbˇe kartogramu, kdy svˇetlost barvy (lightness)
´uzem´ı je nastavena dle hodnot z tabulky. V dobˇe psan´ı pr´ace tento model bohuˇzel
jeˇstˇe nepodporovaly vˇsechny prohl´ıˇzeˇce.
Pˇr´ıklad z´apisu: fill="HSL(130,80%,30%)".
• HSLa je obdoba modelu HSL, kde je jako ˇctvrt´y parametr hodnota α-kan´alu.
0°
180°
90°270°
HSL(90,100%,70%) HSL(300,70%,50%)
HSL(210,60%,80%) HSL(350,70%,90%)
HSL(50,100%,90%)
HSLa(300,70%,50%,0.7) HSLa(350,70%,90%,0.4)
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 26
3.8 Souˇradnicov´y syst´em a jeho transformace
Scalable Vector Graphics ˇcesky znamen´a
”
ˇsk´alovateln´a vektorov´a grafika“ a proto
tak´e form´at SVG nab´ız´ı r˚uzn´e typy transformac´ı. K jejich popisu se bude vhodn´e nejprve
sezn´amit se souˇradnicov´ym syst´emem, jak ho ch´ape SVG. V z´avislosti se zaˇzit´ymi kon-
vencemi v poˇc´ıtaˇcov´e grafice a zobrazovac´ıch zaˇr´ızen´ıch byl zvolen souˇradnicov´y syst´em
s poˇc´atkem v severoz´apadn´ım rohu.
1
2
3
4
5
6
7
[5;4]
0 x
y
1 2 3 4 5 6 8 9 10
používané délkové jednotky:
(pixels) pixely (implicitní hodnota)
(points) body
(centimeters) centimetry
(milimetres) milimetry
(inches) palce
(current font size) velikost aktuálního fontu
(x-height) velikost písmene x
(pica) [: pajka :], 1 pica = 12 points
(percent) procenta vůči zobrazované oblasti
px
pt
cm
mm
in
em
ex
pc
%
Obr´azek 3.8: Pˇrehled souˇradnicov´eho syst´emu a d´elkov´ych jednotek
3.8.1 Atribut transform
Do vˇetˇsiny element˚u, poˇc´ınaje t´ım koˇrenov´ym <svg>, lze zapsat atribut transform,
se kter´ym je moˇzno prov´adˇet transformace souˇradnic. Tento fakt nahr´av´a pouˇzit´ı SVG ke
kartografick´ym ´uˇcel˚um, kde se transformace vyuˇz´ıvaj´ı velmi ˇcasto. K dispozici je nˇekolik
typ˚u: translace, rotace nebo zkosen´ı. Vˇsechny tyto typy lze zahrnout do jednoho prvku
pomoc´ı transformaˇcn´ı matice.
• translate (translace)
transform="translate(20,10)"
x
y
x’
y’
20
10
Pro posun objekt˚u lze pouˇz´ıt funkci
translate. Jej´ı argumenty jsou
souˇradnice bodu, na kter´y m´a b´yt
poˇc´atek transformovan´e soustavy
um´ıstˇen. Lze vyuˇz´ıt pro pozicov´an´ı
symbol˚u, kter´e jsou zaps´any v m´ıstn´ı
soustavˇe.
• rotate (rotace)
transform="rotate(30)"
x
y
x’
y’
Pootoˇcen´ı poˇc´atku SS se prov´ad´ı funkc´ı
rotate(). ´Uhel je zad´av´an ve stupn´ıch
a m˚uˇze nab´yvat z´aporn´ych hodnot
(protismˇer hodinov´ych ruˇciˇcek). Jedn´a
se tak´e o ˇcasto pouˇz´ıvanou transfor-
maci, napˇr. pootoˇcen´ı textu v n´azvech
ulic.
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 27
• skew (zeˇsikmen´ı)
transform="skewX(-50)"
x
y
x’
y’
-50°
Funkce m´a dva tvary z´apisu, skewX()
pro zkreslen´ı na ose X a skewY()
pro zkreslen´ı na ose y. V obou
pˇr´ıpadech jako argument vstupuj´ı
stupnˇe vych´ylen´ı zvolen´e osy od osy
p˚uvodn´ı. V kartografii nenach´az´ı pˇr´ım´e
uplatnˇen´ı.
• scale (mˇeˇr´ıtko)
transform="scale(2,0.5)"
x
y
x’
y’
Vhodn´a a uˇziteˇcn´a funkce scale()
urˇcuje zvˇetˇsen´ı nebo zmenˇsen´ı ob-
jekt˚u. Promˇenn´a je bezrozmˇern´a jed-
notka a urˇcuje n´asobek, kter´ym se
souˇradnicov´y syst´em n´asob´ı. Funkce
je pˇret´ıˇzen´a, lze tedy zad´avat jak je-
den argument pro zmˇenu mˇeˇr´ıtka obou
os, nebo dva argumenty pro kaˇzdou
osu zvl´aˇst’. Zmˇena mˇeˇr´ıtka je vztaˇzena
nejen na geometrii, ale i na styl vy-
kreslov´an´ı. V aplikaci je tato funkce
vyuˇz´ıv´ana mimo jin´e i k
”
zoomov´an´ı“.
• matrix (transformaˇcn´ı matice)
Pro obecn´y popis je vhodn´y z´apis pomoc´ı transformaˇcn´ı matice. Pro kaˇzd´y v´yˇse
zm´ınˇen´y prvek existuje i varianta zapsan´a pomoc´ı funkce matrix(). N´asoben´ım
matic lze dos´ahnout kombinaci jednotliv´ych transformaˇcn´ıch ˇcinitel˚u (transformace
prob´ıh´a ve stejn´em poˇrad´ı jako n´asoben´ı matic). Aby se matice mohly n´asobit a
byly ˇctvercov´eho typu, je jako posledn´ı ˇr´adek pˇrid´an vektor (0,0,1). V kartografii
se transformaˇcn´ı matice vyuˇz´ıvaj´ı zejm´ena pro georeferencov´an´ı.
transform="matrix(a,b,c,d,e,f)"
1 0 tx
0 1 ty
0 0 1
sx 0 0
0 sy 0
0 0 1
matrix(1,0,0,1,tx,ty)
translate(tx,ty)
translace
matrix(sx,0,0,sy,0,0)
scale(sx,sy)
měřítko
cos(α) -sin(α) 0
sin(α) cos(α) 0
0 0 1
matrix(cos(α),sin(α),-sin(α),cos(α),0,0)
rotate(α)
rotace
1 tan(α) 0
0 1 0
0 0 1
1 0 0
tan(α) 1 0
0 0 1
matrix(1,tan(α),0,1,0,0)
skewY(α)
zešikmení dle osy ‚y‘
matrix(1,0,tan(α),1,0,0)
skewX(α)
zešikmení dle osy ‚x‘
a c e
b d f
0 0 1
obecná
tranformační
matice
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 28
3.9 Rastr v SVG
Jak jiˇz bylo zm´ınˇeno dˇr´ıve, SVG umoˇzˇnuje nejen vkl´adat a ukl´adat rastrovou grafiku,
ale nab´ız´ı i moˇznosti editace typu transformace nebo aplikaci pˇreddefinovan´ych filtr˚u.
Jelikoˇz se i v modern´ıch digit´aln´ıch kartografick´ych prac´ıch poˇc´ıt´a s rastrov´ym vyj´adˇren´ım
(v podobˇe ortofotomap nebo st´ınovan´eho reli´efu), nalezne i rastrov´y form´at sv´e uplatnˇen´ı.
3.9.1 Element image
Vloˇzen´ı obr´azku elementem image je provedeno obdobn´ym zp˚usobem jako v HTML.
Lze vyuˇz´ıt tyto z´akladn´ı atributy:
- x,y - souˇradnice, na kter´e bude um´ıstˇen prav´y horn´ı roh obr´azku
- width,height - velikost vkl´adan´eho obr´azku
- xlink:href - absolutn´ı/relativn´ı cesta k obr´azku
Pro vloˇzen´ı obr´azku pˇr´ımo do dokumentu lze vyuˇz´ıt k´odov´an´ı Base64 (pˇrevod
bin´arn´ıch dat na znaky ASCII). Rastrov´y obr´azek v bin´arn´ı formˇe lze po pˇrek´odov´an´ı na
ACSII vloˇzit do dokumentu t´ımto zp˚usobem: xlink:href="data:image/jpeg;base64,
...", kde m´ısto teˇcek je dosazen samotn´y k´od. Rastrov´y objekt lze transformovat atribu-
tem transform, kde jsou k dispozici vˇsechny typy transformac´ı. Tohoto faktu lze vyuˇz´ıt
tˇreba pˇri georeferencov´an´ı rastrov´eho podkladu mapy.
<image x="40" y="50" width="512" height="512"
xlink:href="Lenna.bmp" />
<circle cy="160" cx="160" r="130"
fill="red" opacity="0.3"/>
<circle cy="160" cx="440" r="130"
fill="green" opacity="0.3"/>
<circle cy="160" cx="305" r="130"
fill="blue" opacity="0.3"/>
Obr´azek 3.9: Uk´azka pouˇzit´ı rastrov´ych obrazov´ych dat
3.9.2 Element filter
Na SVG objekty lze aplikovat rastrov´e filtry zn´am´e z editor˚u jako jsou Adobe Photo-
shop, Gimp atd. D˚uvod proˇc na vektorovou grafiku pouˇz´ıvat rastrov´e filtry je jednoduch´y.
Rastrov´a reprezentace sloˇzit´ych, rozmanit´ych a ˇclenit´ych obrazov´ych dat je v´yhodnˇejˇs´ı na
v´ypoˇcet i na vykreslen´ı. Je d˚uleˇzit´e zm´ınit, ˇze ˇsk´alov´an´ı (zmˇena mˇeˇr´ıtka) nem´a na v´ysledn´e
vyobrazen´ı vliv (v podobˇe ztr´aty kvality), jelikoˇz doch´az´ı k nov´emu v´ypoˇctu prvk˚u pro
kaˇzdou hladinu. I kdyˇz pˇr´ıliˇsn´e zdoben´ı prvk˚u v mapˇe m´a ruˇsiv´y r´az, s drobn´ymi a
rozv´aˇzn´ymi efekty lze pˇrispˇet ke zdokonalen´ı vizu´aln´ı i informaˇcn´ı hodnoty v´ysledn´e pr´ace.
Filtry se daj´ı aplikovat nejen na geometrick´e tvary a texty, ale i na rastrov´e obr´azky.
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 29
Element filter (zapsan´y v hlaviˇcce v ˇc´asti defs) slouˇz´ı jako kontejner pro z´apis
posloupnosti efekt˚u. Obsahuje jedin´y atribut id slouˇz´ıc´ı jako identifik´ator. K pouˇzit´ı exis-
tuje mnoho element´arn´ıch filtr˚u, ze kter´ych lze dos´ahnout k´yˇzen´eho v´ysledku. Pˇrehled
z´akladn´ıch filtr˚u1
:
• feBlend
Nastaven´ı zp˚usobu prol´ın´an´ı obraz˚u. K dispozici jsou tyto prol´ınac´ı reˇzimy: Normal,
Multiply, Screen, Darken, Lighten. Jedn´a se o v´ypoˇcet nov´e barevn´e hodnoty ˇc´ast´ı
obr´azk˚u, kter´e se pˇrekr´yvaj´ı. Pro kartografick´e ´uˇcely nen´ı tento filtr vyuˇz´ıv´an.
• feColorMatrix
Jednou z moˇznost´ı jak ovlivnit barevnost cel´eho v´ysledn´eho obrazu je pouˇzit´ı tohoto
filtru. Barevnou matic´ı lze upravovat jas, transparentnost nebo posouvat barevn´e
spektrum. Je moˇzno pouˇz´ıt nˇekolik typ˚u nastaven´ı:
- matrix (obecn´a barevn´a matice),
- saturate (´uprava jasu, kdy hodnoty leˇz´ı v intervalu < 0, 1 >),
- hueRotate (barevn´e spektrum, hodnoty stupnˇe na barevn´em kruhu z model˚u
HSL nebo HSV),
- luminanceToAlpha (transparentnost je nastavena podle jasu bodu, bez hod-
noty)
• feComponentTransfer
V grafick´ych editorech je vyuˇz´ıv´an histogram jasu, kter´y umoˇzˇnuje dle kˇrivky na-
stavit pomˇer jasu a kontrastu. Histogram je moˇzn´e upravovat pro kan´aly RGBA
zapisovan´e feFuncR, feFuncG, feFuncB a feFuncA. Z´apis vztah˚u do r˚uzn´ych kan´al˚u
atributem type s parametry:
- identity - je pouˇzita p˚uvodn´ı kompozitn´ı barva
- table - podle hodnot v atributu tableValues je provedena line´arn´ı interpolace
kˇrivky
- discrete - kˇrivka sestavena z diskr´etn´ıch hodnot z parametr˚u atributu tableValues
- linear - kˇrivka nahrazena pˇr´ımkou, kter´a je urˇcena atributy slope (sklon ve
stupn´ıch) a intercept (posun na svisl´e ose)
- gamma - kˇrivka urˇcena hodnotou amplitudy (atribut apmlitude), exponentu
(exponent) a svisl´ym posunem (offset)
• feComposite, feMerge
R˚uzn´e reˇzimy sluˇcov´an´ı rastr˚u dle algoritmu Porter-Duff.
• feConvolveMatrix
V´ypoˇcet hodnoty pixelu v z´avislosti k sousedn´ım prvk˚um a parametry matice. Ma-
tice (kernel) postupnˇe proch´az´ı obrazem a pˇrepoˇc´ıt´av´a hodnoty. Matice obsahuje
m×n prvk˚u. V´ysledek je ovlivnˇen velikost´ı kernelu a jeho parametry. T´ımto filtrem
je moˇzn´e prov´adˇet ´ulohy typu rozostˇren´ı, zostˇren´ı, detekce hran atd. Zn´am´a je apli-
kace na data z´ıskan´a d´alkov´ym pr˚uzkumem Zemˇe. Na stejn´em principu je stavˇena
ˇrada dalˇs´ıch bitmapov´ych operac´ı. Matice je urˇcena z´akladn´ımi atributy:
1
´upln´y pˇrehled filtr˚u na http://www.w3.org/TR/SVG11/filters.html
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 30
- order - rozmˇer matice
- kernelMatrix - po ˇr´adc´ıch zaps´any prvky matice
- bias - konstanta, kter´a je pˇriˇctena k v´ysledn´e hodnotˇe pixelu
- edgeMode - pravidla pro poˇc´ıt´an´ı krajn´ıch pixel˚u, kdy sousedn´ı prvky neexis-
tuj´ı, parametry: duplicate (duplikace okrajov´ych bod˚u), wrap (jsou pouˇzity
hodnoty z protilehl´eho konce bitmapy), none (pouˇzity nulov´e hodnoty)
- kernelUnitLength - velikost buˇnky matice, implicitnˇe je rovna jednomu pixelu
- preserveAlpha - zachov´an´ı transparentnosti nastaven´ım atributu na
”
true“
• feGaussianBlur
Velmi vyuˇz´ıvan´ym filtrem je gaussovsk´e rozostˇren´ı. Je to forma aplikace kernelu
o urˇcit´ych parametrech. Atributem stdDeviation je nastavena standardn´ı odchylka
tedy
”
velikost“ rozostˇren´ı. Moˇzn´e je nastaven´ı odchylky pro kaˇzdou osu. Zaj´ımav´e
je pouˇzit´ı tohoto filtru pro liniov´e prvky (napˇr. odliˇsen´ı cyklotras od turistick´ych),
kdy vzr˚ust´a ˇcitelnost mapy.
• feTile
Vyplnˇen´ı objektu vzorkem (rastr/vektor). Obsahuje atributy x, y, width, height
(um´ıstˇen´ı a velikost vzorku) a pro extern´ı vzorky atribut xlink:href.
• feFlood
Vyplnˇen´ı vzorku barvou. Analogie atributu fill i pro rastrov´a data. Nab´ız´ı i
moˇznost nastaven´ı pr˚uhlednosti. Obsahuje atributy flood-color (barva v´yplnˇe)
a flood-opacity (nepr˚uhlednost v intervalu < 0, 1 >).
• feTurbulence
Pˇrid´an´ım ˇsumu takzvanou Perlin funkc´ı lze dos´ahnout vzniku textury jako jsou
oblaka ˇci mramor. Zvolen´y typ lze urˇcit atributy:
- type - hodnotou fractalNoise je generov´an ˇsum a hodnotou turbulence
v´ıˇren´ı
- baseFrequency - frekvence ˇsumov´e funkce m˚uˇze b´yt pro kaˇzdou osu odliˇsn´a
- numOctaves - poˇcet period
- seed - startovn´ı ˇc´ıslo gener´atoru n´ahodn´eho ˇsumu
• feDisplacementMap
Filtr zajiˇstuj´ıc´ı deformace obrazu.
• feImage
N´astroj pro vloˇzen´ı extern´ıho grafick´eho souboru. Obdobn´y z´apis jako SVG element
image (cesta k souboru atributem xlink:href). Nab´ız´ı i moˇznost vloˇzit dalˇs´ı SVG
obr´azek.
• feMorphology
Prov´ad´ı zes´ılen´ı (ztuˇcnˇen´ı) nebo ztenˇcen´ı prvku. Nastaven´ı je provedeno atributy:
operator (parametr erode pro z´uˇzen´ı a diletate pro ztuˇcnˇen´ı) a radius urˇcuje
jejich rozsah (velikost).
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 31
• feOffset
Posun prvku v ose x, y. Atributy dx,dy pro zad´an´ı posunu. Filtr nahraditeln´y
atributem transform="translate(dx,dy)".
• feSpecularLighting feDiffuseLighting
Filtry vyuˇz´ıvaj´ıc´ı Phong˚uv osvˇetlovac´ı model zejm´ena pro re´aln´e vykreslen´ı 3D gra-
fiky.
• feDistantLight, fePointLight, feSpotLight
Druhy osvˇetlen´ı (smˇerov´e, bodov´e, reflektor).
<defs>
<filter id="stin">
<feGaussianBlur stdDeviation="5" />
<feOffset dx="7" dy="7"/>
</filter>
</defs>
...
<rect filter="url(#stin)" x="10" y="330" rx="10"
width="200" height="200" fill="black" />
<rect x="10" y="330" rx="10" width="200" height="200"
fill="#4FA0BA" stroke="black" stroke-width="2"/>
<text filter="url(#stin)" font-style="serif" x="75" y="515" font-weight="bold"
font-size="250" opacity="0.8" fill="black"> i </text>
<text font-style="serif" x="75" y="515" font-weight="bold" font-size="250"
fill="white"> i </text>
Obr´azek 3.10: Praktick´e vyuˇzit´ı filtr˚u pro symbol informaˇcn´ıch center
3.10 Atributov´a data
V geografick´ych informaˇcn´ıch syst´emech (GIS) jsou obsahov´e informace geogra-
ficky urˇceny. Vˇetˇsinou se jedn´a o soubor popisuj´ıc´ı geometrickou sloˇzku a dalˇs´ı popi-
suj´ıc´ı atributov´a data. Ta jsou vˇetˇsinou v urˇcit´em datab´azov´em syst´emu. Jelikoˇz byl
form´at XML p˚uvodnˇe urˇcen jako nositel informac´ı, je v´ıce neˇz vhodn´e pouˇz´ıt tento form´at
k uloˇzen´ı atributov´ych dat. Ke kaˇzd´emu SVG elementu lze zapsat libovoln´y atribut.
Pˇr´ıklad z´apisu n´azvu komunikace: <path typ="d´alnice" d="..."/>. Pˇridan´e atributy,
kter´e se nez´uˇcastˇnuj´ı vykreslov´an´ı, je vhodn´e definovat v DTD, ˇc´ımˇz bude zaruˇcena bez-
chybovost dokumentu.
3.11 Metadata
Metadata lze interpretovat jako
”
data o datech“. Popisuj´ı informace obsaˇzen´e v do-
kumentu. Je to bˇeˇzn´y prvek, kter´y je pouˇz´ıv´an pro pops´an´ı obsahu. Jedn´a se zejm´ena
o p˚uvod obsahu, rok jeho vzniku, ´udaje o autorovi nebo platnosti dat. V GIS syst´emech
jsou popisov´any geometrick´e i atributov´e prvky. Jedn´a se o popis a urˇcen´ı souˇradn´eho
syst´emu, zp˚usobu poˇr´ızen´ı dat, informace o zhotoviteli atd. Jedn´ım z nejvhodnˇejˇs´ım a
z´aroveˇn nejpouˇz´ıvanˇejˇs´ım form´atem pro z´apis metadat je pr´avˇe XML se svou hierarchickou
Filip Zavadil 13. kvˇetna 2011
Kapitola 3. Form´at SVG 32
strukturou. Proto data obsaˇzen´a v SVG form´atu nemus´ı b´yt pouh´a obrazov´a data, ale mo-
hou n´est i informaci o referenˇcn´ım syst´emu. Tyto informace jsou zapisov´any do elementu
metadata. N´asleduj´ıc´ı k´od je pˇrevzat ze str´anek W3C.org2
a popisuje pouˇzit´ı definovan´eho
geografick´eho syst´emu souˇradnic podle k´odu EPSG. V uk´azce je vyuˇzit model pro z´apis
metadat RDF (Resource Description Framework).
<metadata>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:crs="http://www.ogc.org/crs"
xmlns:svg="http://www.w3.org/2000/svg">
<rdf:Description rdf:about="">
<!-- In case of a well-known Coordinate Reference System
an ’Identifier’ is enough to describe the CRS -->
<crs:CoordinateReferenceSystem svg:transform="rotate(-90) scale(2,2)">
<crs:Identifier>
<crs:code>4326</crs:code>
<crs:codeSpace>EPSG</crs:codeSpace>
<crs:edition>5.2</crs:edition>
</crs:Identifier>
</crs:CoordinateReferenceSystem>
</rdf:Description>
</rdf:RDF>
</metadata>
2
http://www.w3.org/TR/SVG/coords.html#GeographicCoordinates
Filip Zavadil 13. kvˇetna 2011
Kapitola 4. Stylov´e jazyky 33
Kapitola 4
Stylov´e jazyky
XML jako form´at je nositelem obsahu, kter´y by mˇel b´yt oddˇelen od formy, aby v nˇem
obsaˇzen´e informace mohly b´yt prezentov´any v´ıce zp˚usoby. Napˇr´ıklad jin´y v´ystup bude
urˇcen pro tisk, jin´y pro internet nebo grafickou vizualizaci. Metodu jak toho dos´ahnout
poskytuj´ı stylov´e jazyky CSS (Cascade Style Sheets) a XSL (XML Style Language). Tyto
jazyky jsou samozˇrejmˇe dostupn´e i pro XML dialekty SVG nevyj´ımaje.
4.1 CSS
Kask´adov´e styly jsou zn´amy jiˇz delˇs´ı dobu ve spojen´ı s HTML, kde se trvale us´ıdlily.
Nyn´ı se o v´yvoj star´a W3C a v dobˇe psan´ı t´eto pr´ace se pracuje na verzi CSS31
. Vlast-
nosti a chov´an´ı element˚u se definuj´ı ve stylov´em souboru, kter´y m˚uˇze b´yt intern´ı (souˇc´ast
dokumentu) nebo extern´ı (samostatn´y soubor). Jednoduch´a uk´azka CSS jazyka bude
pˇredvedena na pˇr´ıkladu 2.7.
bod font-size: 20pt;
text-align: center;
font-weight: bold;
color: red;
N´azv˚um element˚u bod a souradnice se v CSS ˇr´ık´a selektory. Ty urˇcuj´ı k jak´ym
element˚um se budou uveden´e vlastnosti vztahovat. Pˇrehled nejd˚uleˇzitˇejˇs´ıch selektor˚u je
uveden v tabulce 4.1. Vztahu rodiˇc — potomek, lze s v´yhodou pouˇz´ıt i pˇri stylov´an´ı
SVG. Zdrojov´y soubor s koncovkou ‘.svg’ m˚uˇze n´est pouze geometrick´e vyj´adˇren´ı, pˇriˇcemˇz
instrukce pro vykreslov´an´ı mohou b´yt uvedeny v jin´e ˇc´asti dokumentu nebo i v jin´em
souboru. D´ale lze ty sam´e prvky rozliˇsovat pomoc´ı tˇr´ıd (class) nebo identifik´atoru (id).
Tato skuteˇcnost je velice v´yhodn´a pro kartografick´e ´uˇcely. Kdy doch´az´ı k zohlednˇen´ı
kvalitativn´ıch prvk˚u (ˇs´ıˇrka vodn´ıho toku). Definov´an´ım CSS stylov´eho souboru lze utvoˇrit
jazyk mapy, kter´y m˚uˇze b´yt jednoduˇse upraven nebo nahrazen, aniˇz by to mˇelo vliv na
polohovou spr´avnost. Dokonce lze tento styl i dynamicky mˇenit (pouˇzit´ım JavaScriptu).
Mezi prvky, kter´e by mohly b´yt vyuˇzity pro kartografick´e ´uˇcely patˇr´ı:
1
http://www.w3.org/Style/CSS/
Filip Zavadil 13. kvˇetna 2011
Kapitola 4. Stylov´e jazyky 34
• barva
Umoˇzˇnuje nastaven´ı barvy do atribut˚u stroke a fill. K dispozici jsou barevn´e
modely uveden´e v 3.7.4.
• definice tahu
Vykreslen´ı tahu lze v CSS upravit pouˇzit´ım atribut˚u jako stroke-width,
stroke-linejoin, stroke-dasharray
• styl popisu
Velikost p´ısma, jeho typ a styl lze CSS nastavit pouˇzit´ım selektor˚u font-weight,
font-family, font-style
Zp˚usob˚u jak pouˇz´ıt CSS stylov´an´ı je nˇekolik. Jedn´ım z nich je pouˇzit´ı v dokumentu
internˇe. Pokud je CSS definov´an externˇe, je nutn´e v dokumentu urˇcit url CSS souboru
t´ımto zp˚usobem:
<?xml-stylesheet href="soubor.css" type="text/css"?>
bod.II element bod, který má atribut class nastaven na “II”
selektor výběr
* všechny elementy
bod všechny elementy bod
bod souradnice elementy souradnice, které jsou potomkem el. bod
bod > souradnice analogický zápis: bod souradnice
souradnice[system] elementy souradnice, která mají atribut system
souradnice[systém="EPSG:9221"] elementy souradnice, s atributem systém: S-JTSK
bod#4001 element bod, který má ID 4001
Tabulka 4.1: Pˇr´ıklady pouˇzit´ı selektor˚u v CSS
4.2 XSL
Dalˇs´ım ze stylov´ych jazyk˚u je XSL (eXtensible Stylesheet Language), ˇcasto t´eˇz ve
tvaru XSLT (eXtensible Stylesheet Language Transformation). Pˇrin´aˇs´ı trochu odliˇsn´y zp˚usob
neˇz pˇredchoz´ı CSS, kdy se
”
stylov´an´ı“ prov´ad´ı podle pˇredem definovan´ych ˇsablon. V´ysledn´y
dokument je sestaven programem, kter´emu se ˇr´ık´a XLST Processor. Mezi nejzn´amˇejˇs´ı
patˇr´ı Saxon2
od Michaela Kaye a Xalan3
(Apache project). Oba jsou napsan´e v jazyce
Java(Xalan je implementov´an i v C++). Dnes je jiˇz standardem, ˇze internetov´e prohl´ıˇzeˇce
maj´ı takov´y XSLT procesor implementov´an. XSL nab´ız´ı moˇznost pouˇzit´ı XPath v´yraz˚u,
kter´e umoˇzˇnuj´ı nejen navigaci ve zdrojov´em dokumentu, ale i logick´e ˇr´ızen´ı [Her10]. V´yvoj
XSL je pˇribliˇznˇe stejnˇe dlouh´y jako SVG. XSL z´ıskalo W3C doporuˇcen´ı v listopadu 1999.
Jmenn´y prostor je deklarov´an t´ımto zp˚usobem:
<xsl:stylesheet version="1.2"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
http://sourceforge.net/projects/saxon
3
http://xalan.apache.org/
Filip Zavadil 13. kvˇetna 2011
Kapitola 4. Stylov´e jazyky 35
Zp˚usob jak prob´ıh´a transformace je zˇrejm´y na obr´azku 4.1. Jeden ˇci v´ıce XML soubor˚u
vstupuj´ı spoleˇcnˇe se stylov´ym souborem (koncovka .xsl) do XSLT procesoru na jehoˇz
v´ystupu je dokument libovoln´eho typu. M˚uˇze to b´yt dalˇs´ı XML, HTML, TXT nebo SVG
dokument. V´ystupn´ıch dokument˚u m˚uˇze b´yt tak´e v´ıce, pro r˚uzn´e typy zaˇr´ızen´ı (obrazovka,
tisk´arna atd.)
xml xsl xsl
processor
svg
xml
html
Obr´azek 4.1: Princip XSL transformac´ı
Extern´ı stylov´y soubor je definov´an obdobn´ym zp˚usobem jako v CSS. Dan´y k´od
odkazuje na XSL soubor sablona.xsl:
<?xml-stylesheet type="text/xsl" href="sablona.xsl"?>
Jak uˇz bylo ˇreˇceno v´yˇse, transformace je prov´adˇena podle ˇsablon, kter´e se zapisuj´ı
mezi tagy <xsl:template match="/" > </ xsl:teplate >. Znak ‘/’ oznaˇcuje koˇrenov´y
(root) element, na kter´y bude ˇsablona aplikov´ana. M´ısto toho znaku m˚uˇze b´yt jak´ykoliv
platn´y Xpath v´yraz, kter´y oznaˇcuje urˇcit´y uzel v dokumentu. V´ıce o moˇznostech adre-
sov´an´ı v 4.2.3.
4.2.1 Hlaviˇcka XSL
Kromˇe povinn´eho uveden´ı jmenn´eho prostoru a verze v elementu xsl:stylesheet
je vhodn´e tak´e specifikovat v´ystupn´ı form´at pomoc´ı elementu xsl:output.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
<xsl:output method="xml" version="1.2" encoding="windows-1250"
doctype-public="-//W3C//DTD SVG 1.1//EN"
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
indent="yes" omit-xml-declaration="yes" media-type="image/xml+svg"/>
... obsah stylového dokumentu ...
</xsl:stylesheet>
Atribut method urˇcuje typ v´ystupn´ıho form´atu, uˇzit´e k´odov´an´ı je specifikov´ano
v atributu encoding. N´asleduj´ı atributy doctype-public a doctype-system popisuj´ıc´ı
definice typu v´ystupn´ıho dokumentu. Zarovn´an´ı k´odu dle XML pravidel je nastaveno
atributem indent s parametrem yes. Atribut omit-xml-declaration="yes" zaruˇcuje
vytisknut´ı klasick´e XML deklarace. Jako posledn´ı je v uk´azce uveden atribut media-type
popisuj´ıc´ı typ (MIME, Content-type) v´ystupn´ıho dokumentu.
Filip Zavadil 13. kvˇetna 2011
Kapitola 4. Stylov´e jazyky 36
4.2.2 Element xsl:value-of
Zp˚usob jak z´ıskat hodnotu elementu nebo atributu, je pouˇzit´ı tagu value-of ve
jmenn´em prostoru xsl. Povinn´y atribut select, zajiˇst’uje uveden´ı pˇresn´e polohy a n´azvu
uzlu.
<xsl:value-of select="jmeno"/>
Jedn´a se o nejv´ıce vyuˇz´ıvan´y element, jeho pouˇzit´ı je uk´az´ano na obr´azku 4.2.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template math="/">
<html>
S-JTSK: <xsl:value-of select="bod/souradnice"> [Y,X](m)
</html>
</xsl:teplate>
</xsl:stylesheet>
<?xml version="1.0" encoding="cp1200"?>
<?xml-stylesheet type="text/xsl" href="styl.xsl"?>
<bod cislo="4001">
<souradnice system="EPSG:5221">
744903.16 , 1040716.70
</souradnice>
</bod>
<html>
S-JTSK: 744903.16 , 1040716.70 [Y,X](m)
</html>
vstup
xml
vstup
xsl
výstup
html
Obr´azek 4.2: Pˇrehled vstupn´ıch a v´ystupn´ıch souboru XSL transformac´ı
4.2.3 XPath v´yrazy
Hierarchick´a struktura XML dokumentu je zprostˇredkov´ana pomoc´ı tzv. uzl˚u (no-
des). Pro
”
cestov´an´ı“ po takov´ych uzlech jsou vyuˇz´ıv´any XPath identifik´atory. D´ıky dˇediˇc-
n´ym vztah˚um (rodiˇc — potomek) se lze jednoduˇse odkazovat na vnoˇren´e elementy. Z´akladn´ı
osy, kam je moˇzno adresovat jsou tyto: (pˇr´ıklady se vztahuj´ı k uk´azkov´emu xml dokumetu,
kdy je aktu´aln´ı uzel element bod)[Wil09]:
<mereni>
<bod cislo="4001">
<souradnice system="EPSG:5221">
744903.16 , 1040716.70
</souradnice>
<popis encoding="utf-8" delka="90">
Bod se nachází 2m jižně od ...
</popis>
</bod>
</mereni>
aktuální uzel
mereni
popissouradnice
bod aktuální uzel
• absolutn´ı/relativn´ı cesta (aktu´aln´ı element bod)
- /bod/popis/ ⇒ absolutn´ı cesta k elementu popis
Filip Zavadil 13. kvˇetna 2011
Kapitola 4. Stylov´e jazyky 37
- popis/ ⇒ relativn´ı cesta k elementu popis
• koˇrenov´y element
- / ⇒ koˇrenov´y element mereni
• pˇredek
- identifik´ator: parent, ancestor, ancestor-or-self
- ../mereni, parent::bod, /, ancenstor::bod ⇒ vybere element mereni
• potomek
- identifik´ator: child, descendant, descendant-or-self
- /bod/souradnice/, souradnice/ ⇒ vybere element souradnice
- descendant::bod, child::bod ⇒ vybere elementy souradnice, popis
- descendant-or-self::bod ⇒ vybere elementy bod, souradnice, popis
- //popis ⇒ vyhled´a elementy popis v libovoln´e hloubce
• sourozenec
- identifik´ator: preceding-sibling, preceding, following
- /mereni/bod/popis/, popis/, following::souradnice ⇒ vybere element
popis
- /mereni/bod/souradnice/, souradnice/, preceding::popis ⇒ vybere ele-
ment souradnice
• s´am na sebe
- identifik´ator: self
- ., self::node() ⇒ vybere element bod
• atribut
- identifik´ator: attribute, @
- popis/attribute::encoding, popis/@encoding ⇒ zjist´ı hodnotu atributu
encoding (utf-8)
- popis[@encoding] ⇒ vybere vˇsechny elementy popis, kter´e maj´ı atribut
encoding
• index
Pokud by element bod obsahoval v´ıce element˚u popis, je moˇzn´e k nim pˇristupovat
pomoc´ı index˚u:
- /bod/popis[1] ⇒ vr´at´ı prvn´ı element popis
- /bod/popis[last()] ⇒ vr´at´ı posledn´ı element popis
• logick´a podm´ınka
Filip Zavadil 13. kvˇetna 2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011
filip-zavadil-bp-2011

Mais conteúdo relacionado

Semelhante a filip-zavadil-bp-2011

Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)Petra Pitrová
 
ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016Jan Brychta
 
BPTX_2014_1_11320_0_378624_0_158202
BPTX_2014_1_11320_0_378624_0_158202BPTX_2014_1_11320_0_378624_0_158202
BPTX_2014_1_11320_0_378624_0_158202Petr Hude?ek
 
Lukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoru
Lukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoruLukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoru
Lukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoruLukáš Todorov
 
Zborník príspevkov medzinárodnej konferencie OSSConf 2011
Zborník príspevkov medzinárodnej konferencie OSSConf 2011Zborník príspevkov medzinárodnej konferencie OSSConf 2011
Zborník príspevkov medzinárodnej konferencie OSSConf 2011Geokomunita
 
EET Specifikace projektu final_v22
EET Specifikace projektu final_v22EET Specifikace projektu final_v22
EET Specifikace projektu final_v22Not Andrej Babiš
 
Sborník studentské konference GISáček 2023
Sborník studentské konference GISáček 2023Sborník studentské konference GISáček 2023
Sborník studentské konference GISáček 2023Geokomunita
 
Testování systému pro on-line rezervaci vstupenek do O2 Areny
Testování systému pro on-line rezervaci vstupenek do O2 ArenyTestování systému pro on-line rezervaci vstupenek do O2 Areny
Testování systému pro on-line rezervaci vstupenek do O2 ArenyOndřej Machulda
 
Diplomová práce: Využití eye trackingu v internetovém marketingu
Diplomová práce: Využití eye trackingu v internetovém marketinguDiplomová práce: Využití eye trackingu v internetovém marketingu
Diplomová práce: Využití eye trackingu v internetovém marketinguLukas Marvan
 
009 ba_vm35_45_50_v40 - 08-2018 - cs
009  ba_vm35_45_50_v40 - 08-2018 - cs009  ba_vm35_45_50_v40 - 08-2018 - cs
009 ba_vm35_45_50_v40 - 08-2018 - csZdenkKahoun1
 
Sborník Open Workshop Olomouc 2007
Sborník Open Workshop Olomouc 2007Sborník Open Workshop Olomouc 2007
Sborník Open Workshop Olomouc 2007Liberix, o.p.s.
 
004 ba csma_10-2019_cs
004 ba csma_10-2019_cs004 ba csma_10-2019_cs
004 ba csma_10-2019_csZdenkKahoun1
 
Dissertation: Stock Market Valuation Models (Czech)
Dissertation: Stock Market Valuation Models (Czech)Dissertation: Stock Market Valuation Models (Czech)
Dissertation: Stock Market Valuation Models (Czech)KarelTregler
 
005 ba_dv56-70-90 - 20-04-2016_cs
005  ba_dv56-70-90 - 20-04-2016_cs005  ba_dv56-70-90 - 20-04-2016_cs
005 ba_dv56-70-90 - 20-04-2016_csZdenkKahoun1
 
007 hkm 230-360_a1-a2-v - 10-2018_cs
007   hkm 230-360_a1-a2-v - 10-2018_cs007   hkm 230-360_a1-a2-v - 10-2018_cs
007 hkm 230-360_a1-a2-v - 10-2018_csZdenkKahoun1
 

Semelhante a filip-zavadil-bp-2011 (18)

thesis
thesisthesis
thesis
 
Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)
 
Seo kniha
Seo knihaSeo kniha
Seo kniha
 
ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016
 
BPTX_2014_1_11320_0_378624_0_158202
BPTX_2014_1_11320_0_378624_0_158202BPTX_2014_1_11320_0_378624_0_158202
BPTX_2014_1_11320_0_378624_0_158202
 
Lukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoru
Lukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoruLukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoru
Lukáš Todorov - Využití Business Intelligence v soukromém a veřejném sektoru
 
Zborník príspevkov medzinárodnej konferencie OSSConf 2011
Zborník príspevkov medzinárodnej konferencie OSSConf 2011Zborník príspevkov medzinárodnej konferencie OSSConf 2011
Zborník príspevkov medzinárodnej konferencie OSSConf 2011
 
EET Specifikace projektu final_v22
EET Specifikace projektu final_v22EET Specifikace projektu final_v22
EET Specifikace projektu final_v22
 
Sborník studentské konference GISáček 2023
Sborník studentské konference GISáček 2023Sborník studentské konference GISáček 2023
Sborník studentské konference GISáček 2023
 
Diplomka
DiplomkaDiplomka
Diplomka
 
Testování systému pro on-line rezervaci vstupenek do O2 Areny
Testování systému pro on-line rezervaci vstupenek do O2 ArenyTestování systému pro on-line rezervaci vstupenek do O2 Areny
Testování systému pro on-line rezervaci vstupenek do O2 Areny
 
Diplomová práce: Využití eye trackingu v internetovém marketingu
Diplomová práce: Využití eye trackingu v internetovém marketinguDiplomová práce: Využití eye trackingu v internetovém marketingu
Diplomová práce: Využití eye trackingu v internetovém marketingu
 
009 ba_vm35_45_50_v40 - 08-2018 - cs
009  ba_vm35_45_50_v40 - 08-2018 - cs009  ba_vm35_45_50_v40 - 08-2018 - cs
009 ba_vm35_45_50_v40 - 08-2018 - cs
 
Sborník Open Workshop Olomouc 2007
Sborník Open Workshop Olomouc 2007Sborník Open Workshop Olomouc 2007
Sborník Open Workshop Olomouc 2007
 
004 ba csma_10-2019_cs
004 ba csma_10-2019_cs004 ba csma_10-2019_cs
004 ba csma_10-2019_cs
 
Dissertation: Stock Market Valuation Models (Czech)
Dissertation: Stock Market Valuation Models (Czech)Dissertation: Stock Market Valuation Models (Czech)
Dissertation: Stock Market Valuation Models (Czech)
 
005 ba_dv56-70-90 - 20-04-2016_cs
005  ba_dv56-70-90 - 20-04-2016_cs005  ba_dv56-70-90 - 20-04-2016_cs
005 ba_dv56-70-90 - 20-04-2016_cs
 
007 hkm 230-360_a1-a2-v - 10-2018_cs
007   hkm 230-360_a1-a2-v - 10-2018_cs007   hkm 230-360_a1-a2-v - 10-2018_cs
007 hkm 230-360_a1-a2-v - 10-2018_cs
 

filip-zavadil-bp-2011

  • 1. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze Fakulta stavebn´ı SVG a XSL transformace vyuˇziteln´e v kartografii BAKAL´AˇRSK´A PR´ACE Praha, 2011 Autor: Filip Zavadil
  • 2. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze Fakulta stavebn´ı BAKAL´AˇRSK´A PR´ACE SVG a XSL transformace vyuˇziteln´e v kartografii SVG and XSL transformations used in cartography Vedouc´ı pr´ace: Ing. Jiˇr´ı Cajthaml, Ph.D. Praha, 2011 Autor: Filip Zavadil i
  • 3. CESKE VYSOKE UCENi TECHNICKE vPRAZE Fakulta stavebni Thakurova 7, 166 29 Praha 6 , 'V , ZADANI BAKALARSKE PRAcE studijni program:Q~<?~~:z:i~~~~~<?g~~f.i.~ studijni obor: Geoinformatika akademicky rok: 2010/2011 Jmeno a pfijmeni studenta: Zavadil....C.m.....£ ....m.....:...:..c :.~.cc............................ _ .......................................................................................................................................................................................................................................................... Zadavajici katedra: Nazev bakalarske prace: Nazev bakalarske prace v anglickem jazyce ~yQ.~..?f~!:!~~~~f'?~~~~~~~!~!t.:1..~.y~~~'?~~f.i.i. SVG and XSL transformations used in cartography Ramcov}' obsah bakalarske prace: ~<?pi.~!~:z:~~I~~t.:1.ip~it.:1.~i.pyp'?~it.~~<?y~~~f.i.~y~~~~j~j~_'? __ _ yYy<?j~:~~!!l~!!~~~t.:1.~~~<?y~~t.:1.LY~~<?E<?Y~~E~~t.~'?y~f'?~y:P~!~~~~~!!l~!!~t.:1.a.:j~!:<.?fM!:~j~~<? ....p<?~P~.I??:~...t.~~~~<?!<?gi.~:....~!~~~j.t.:1.~~~~.~..P~~~.~....~~~.~..y~~<?y~a.:P<?Pi.~~..j~~a.:5y'Q.~..~.~!:..~~~f'?~~~!!!l~ .. _ !:<.!~~~j~<?~~~i!~It.:1.~y.~~'?g~~~i.:y~~~<?~~!!l~~!~jt.~y~<?~~y!!lLpf..!~!~~Y: Datum zadani bakalarske prace: 16.2.2011 Termin odevzdani: 13.5.2011 (vyplr1te posledni den vYuky pi'islusneho semestru) Pokud student neodevzdal bakalarskou praci v urcenem terminu, tuto skutecnost predem pisemne zduvodnil a omluva byla dekanem umana, stanovi dekan studentovi nahradni termin odevzdani bakalarske prace. Pokud se vsak student radne neomluvil nebo omluva nebyla dekanem uznana, muze si student zapsat bakalarskou praci podruhe. Studentovi, ktery pri opakovanem zapisu bakalarskou praci neodevzdal v urcenem terminu a tuto skutecnost rarlne neomluvil nebo omluva nebyla dekanem umana, se ukoncuje studium podle § 56 zakona 0 VS c. 11111998. (SZR CVUT cl. 21, odst. 4) Student bere na vedomi, i e je povinen vypracovat bakalarskou praci samostatne, bez cizi pomoci, s vyjimkou poskytnurych konzultaci. Seznam pouiite literatury, jinych pramenu a jmen konzultantu je tfeba uvest v balmldfskt!praci. ~ ······~~d~::[b~i~;;.:,~········ ···············~~d~~~i·~······ Zadani bakalarske prace prevzal dne: ---.-~~S:-~.- - .... .../-~.............................. student Formular nutno vyhotovit ve 3 yYtiscich - Ix katedra, Ix student, Ix studijni odd. (zasle katedra) Nejpozdeji do konce 2. rydne ryuky v semestru odesIe katedra 1 kopii zadani BP na studijni oddeleni a provede zapis udaju rykajicich se BP do databaze KOS. BP zadava katedra nejpozdeji 1. ryden semestru, v nemz rna student BP zapsanou. (Smernice dekana pro realizaci studijnich programu a SZZ na FSv CVUT cl. 5, odst. 7)
  • 4. Prohl´aˇsen´ı Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci na t´ema ” SVG a XSL transformace vyuˇziteln´e v kartografii“ vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. V Praze dne podpis
  • 5. Abstrakt V t´eto pr´aci se pojedn´av´a o z´akladech zobrazov´an´ı poˇc´ıtaˇcov´e grafiky. Jsou zde shrnuty z´akladn´ı vlastnosti rastrov´e a vektorov´e reprezentace obrazov´ych dat. D´ale se pr´ace podrobnˇe vˇenuje ˇsk´alovateln´emu vektorov´emu grafick´emu form´atu SVG. Jsou zde pops´any z´akladn´ı prvky a vlastnosti tvoˇr´ıc´ı SVG dokument. D´ale je pojedn´ano o ” sty- lov´ych“ jazyc´ıch (CSS, XSL), kter´e je vhodn´e spolu s SVG vyuˇz´ıvat. Praktick´a uk´azka je celistv´ym spojen´ım poznatk˚u o SVG. Je zde demonstrov´ano pouˇzit´ı rozliˇsn´ych prvk˚u tohoto jazyka, kter´y je v t´eto pr´aci konfrontov´an s kartografi´ı. Kl´ıˇcov´a slova grafika, vektor, rastr, SVG, XML, CSS, XSL, XPath, JavaScript Abstract This thesis shows the basics of computer graphics. There is a summary of key properties of raster and vector image data. The main emphasis is on Scalable Vector Graphics which is explained in detail. In addition, styling languages (like CSS, XSL) are also covered thanks to a close relationship with SVG. A sample study demonstrates the application of various SVG elements into practice and its confrontation with cartography. Key Words graphics, vector, raster, SVG, XML, CSS, XSL, XPath, JavaScript
  • 6. Obsah 1 ´Uvod 1 2 V´yvoj pˇred SVG 3 2.1 Poˇc´ıtaˇcov´a grafika obecnˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Geometrick´e z´aklady . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2 V´yvoj technologi´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Vektorov´a a rastrov´a grafika . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.1 Vektorov´a reprezentace . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.2 Rastrov´a reprezentace . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.3 V´yhody a nev´yhody . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Vznik a v´yvoj grafick´ych form´at˚u . . . . . . . . . . . . . . . . . . . . . . . 5 2.3.1 Form´aty vektorov´e grafiky . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.2 Form´aty rastrov´e grafiky . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 ´Uvod do XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.1 Syntaxe XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.2 XML dialekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4.3 XML pˇridruˇzen´e technologie . . . . . . . . . . . . . . . . . . . . . . 11 3 Form´at SVG 12 3.1 Verze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Kompatibilita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Hlaviˇcka SVG dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.1 Element defs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.2 Barevn´e pˇrechody . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 SVG elementy z´akladn´ıch geometrick´ych prvk˚u . . . . . . . . . . . . . . . 16 3.4.1 Element line (´useˇcka) . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.2 Element rectangle (obd´eln´ık) . . . . . . . . . . . . . . . . . . . . . 17 3.4.3 Element circle (kruˇznice) . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.4 Element ellipse (elipsa) . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.5 Element polyline (lomen´a ˇc´ara) . . . . . . . . . . . . . . . . . . . 18 3.4.6 Element polygon (mnoho´uheln´ık) . . . . . . . . . . . . . . . . . . . 18 3.5 Element path (kˇrivka) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.6 Textov´e ˇretˇezce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.6.1 Element text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.6.2 Element tspan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.6.3 Element textPath . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.7 Instrukce pro vykreslov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 iii
  • 7. 3.7.1 Vlastnosti atributu stroke . . . . . . . . . . . . . . . . . . . . . . . 22 3.7.2 Vlastnosti atributu fill . . . . . . . . . . . . . . . . . . . . . . . . 24 3.7.3 Atributy opacity,display,visibility . . . . . . . . . . . . . . . 24 3.7.4 Barevn´e modely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.8 Souˇradnicov´y syst´em a jeho transformace . . . . . . . . . . . . . . . . . . . 26 3.8.1 Atribut transform . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.9 Rastr v SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.9.1 Element image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.9.2 Element filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.10 Atributov´a data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.11 Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4 Stylov´e jazyky 33 4.1 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2 XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2.1 Hlaviˇcka XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2.2 Element xsl:value-of . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.2.3 XPath v´yrazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.2.4 Podm´ıneˇcn´e zpracov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.5 Cykly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.6 Promˇenn´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.7 Dalˇs´ı pouˇzit´e prvky . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5 Aplikace do praxe 41 5.1 Zdroj dat a zp˚usob exportu do XML/SVG . . . . . . . . . . . . . . . . . . . 41 5.1.1 Program shp2svg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Popis aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.1 XML datov´a ˇc´ast . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2.2 Stylov´a ˇc´ast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Popis jednotliv´ych aplikac´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3.1 Evropa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3.2 ˇCesk´a republika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3.3 Pl´an kampusu ˇCVUT v Dejvic´ıch . . . . . . . . . . . . . . . . . . . 47 5.3.4 Pl´an mˇesta Pelhˇrimov . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.4 Kartografick´e prvky v SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.4.1 Vizualizace liniov´ych znaˇcek . . . . . . . . . . . . . . . . . . . . . . 48 5.4.2 Vizualizace are´alov´ych znaˇcek . . . . . . . . . . . . . . . . . . . . . 51 5.4.3 Vizualizace bodov´ych prvk˚u . . . . . . . . . . . . . . . . . . . . . . 51 5.5 SVG v HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.6 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6 Z´avˇer 54 Literatura 55 Rejstˇr´ık 56 A Evropa I iv
  • 8. B ˇCesk´a republika II C Pl´an kampusu ˇCVUT Praha III D Pl´an mˇesta Pelhˇrimov IV v
  • 9. Seznam obr´azk˚u 2.1 ˇCasov´a osa vybran´ych kl´ıˇcov´ych moment˚u . . . . . . . . . . . . . . . . . . 4 2.2 Popis b´ezierovy kˇrivky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Zn´azornˇen´ı odliˇsn´eho zp˚usobu z´aznamu obrazov´ych informac´ı . . . . . . . . 5 2.4 Ikony vybran´ych grafick´ych form´at˚u a editor˚u . . . . . . . . . . . . . . . . 8 2.5 Uk´azka struktury dokumentu IBM GML . . . . . . . . . . . . . . . . . . . 8 2.6 Popis nejjednoduˇsˇs´ıho XML dokumentu . . . . . . . . . . . . . . . . . . . 9 2.7 XML dokument popisuj´ıc´ı geobod . . . . . . . . . . . . . . . . . . . . . . . 10 2.8 Stromov´a struktura XML elementu . . . . . . . . . . . . . . . . . . . . . . 10 3.1 Nˇekter´a z ofici´aln´ıch log form´atu SVG . . . . . . . . . . . . . . . . . . . . 12 3.2 Pod´ıl pouˇz´ıvan´ych internetov´ych prohl´ıˇzeˇc˚u ve svˇetˇe v lednu 2011 . . . . . 13 3.3 Element path a pˇr´ıkazy M, L pro vykreslov´an´ı ´useˇcek . . . . . . . . . . . . 18 3.4 Element path a pˇr´ıkazy H, V pro vodorovn´e a svisl´e ´useˇcky . . . . . . . . . 19 3.5 Element path a pˇr´ıkazy C,S pro kubickou B´ezierovu kˇrivku . . . . . . . . . 19 3.6 Element path a pˇr´ıkaz arc pro eliptickou v´yseˇc . . . . . . . . . . . . . . . 20 3.7 Pˇrehled z´akladn´ıch atribut˚u pro pr´aci s textem . . . . . . . . . . . . . . . . 21 3.8 Pˇrehled souˇradnicov´eho syst´emu a d´elkov´ych jednotek . . . . . . . . . . . . 26 3.9 Uk´azka pouˇzit´ı rastrov´ych obrazov´ych dat . . . . . . . . . . . . . . . . . . 28 3.10 Praktick´e vyuˇzit´ı filtr˚u pro symbol informaˇcn´ıch center . . . . . . . . . . . 31 4.1 Princip XSL transformac´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2 Pˇrehled vstupn´ıch a v´ystupn´ıch souboru XSL transformac´ı . . . . . . . . . 36 5.1 Kartogram Evropa, HDP na obyvatele . . . . . . . . . . . . . . . . . . . . 45 5.2 Uk´azka kartografick´ych prvk˚u na mapˇe ˇCR . . . . . . . . . . . . . . . . . . 47 5.3 Uk´azka nˇekter´ych symbol˚u vytvoˇren´ych v SVG . . . . . . . . . . . . . . . 52 5.4 Uk´azka autorsk´e funkce v jazyce Javascript . . . . . . . . . . . . . . . . . . 53 5.5 Struktura adres´aˇr˚u na dom´enˇe http://svg.filipzava.cz . . . . . . . . . 53 vi
  • 10. Kapitola 1. ´Uvod 1 Kapitola 1 ´Uvod V dneˇsn´ı dobˇe se drtiv´a vˇetˇsina kartografick´ych prac´ı prov´ad´ı v digit´aln´ı formˇe na poˇc´ıtaˇc´ıch a tato skuteˇcnost s sebou nese probl´em, jak grafick´a data ukl´adat. Rastrov´y model jako nosiˇc nen´ı vhodn´y, jelikoˇz nezachov´av´a geometrick´e vyj´adˇren´ı objekt˚u. Proto je vyuˇz´ıv´an vektorov´y form´at, kter´ych je dnes velk´e mnoˇzstv´ı. Vˇetˇsina vektorov´ych gra- fick´ych a kartografick´ych editor˚u vyuˇz´ıv´a vlastn´ı form´at, kter´y je v´ıce ˇci m´enˇe otevˇren´y. Tato pr´ace popisuje nejzn´amˇejˇs´ı a nejpouˇz´ıvanˇejˇs´ı rastrov´e i vektorov´e form´aty s detailn´ım zamˇeˇren´ım na form´at SVG (Scalable Vector Graphics). Hlavn´ım d˚uvodem pro v´ybˇer SVG je jeho otevˇrenost a tedy nez´avislost na propriet´arn´ıch aplikac´ıch nebo platform´ach. Mezi dalˇs´ı klady SVG patˇr´ı jeho jednoznaˇcn´a kompatibilita s internetov´ym prostˇred´ım, zp˚usoben´a pouˇzit´ım stejn´ych technologi´ı. V pr˚ubˇehu pr´ace, kdy jsou popisov´any jednotliv´e prvky SVG jazyka, je uv´adˇen jejich vztah a pˇr´ıpadn´e vyuˇzit´ı pro kartografick´e ´uˇcely. Jak jiˇz bylo ˇreˇceno v ´uvodn´ı kapitole, pr´ace se zab´yv´a obecnou problematikou poˇc´ıtaˇcov´e grafiky. Jsou zde tak´e uvedeny hlavn´ı softwarov´e firmy a jejich vliv na v´yvoj grafick´ych form´at˚u. Jelikoˇz form´at SVG je dialektem znaˇckovac´ıho jazyka XML, je v pr´aci uveden tak´e ´uvod do XML popisuj´ıc´ı jeho v´yvoj, z´akladn´ı charakteristiky a zp˚usoby pouˇzit´ı. D˚uleˇzit´e je tak´e sezn´amen´ı s ˇcasto vyuˇz´ıvan´ymi pojmy. Druh´a kapitola je vˇenov´ana jazyku SVG. Popis je doprov´azen autorsk´ymi n´azorn´ymi obr´azky s uveden´ym zdrojov´ym k´odem a vizualizac´ı. Kr´atce je zm´ınˇeno o v´yvojov´ych verz´ıch a jejich kompatibilitˇe s dneˇsn´ımi internetov´ymi prohl´ıˇzeˇci. N´asleduje popis vˇsech geometrick´ych prvk˚u, jejich zp˚usobu z´apisu a z´akladn´ıch vlastnost´ı. Vˇzdy je u kaˇzd´eho uveden tak´e v´yznam pro kartografick´e ´uˇcely. D˚uleˇzitou souˇc´ast´ı je styl vykreslov´an´ı prvk˚u (barva a tlouˇst’ka tahu, styl v´yplnˇe atd.). Neopom´ıjen´ym prvkem je z´apis textov´eho ˇretˇezce a nastaven´ı jeho vlastnost´ı. I kdyˇz je SVG vektorov´y form´at je schopen ukl´adat rastrov´a data a prov´adˇet s nimi r˚uzn´e efekty pomoc´ı definovan´ych filtr˚u. D´ıky XML z´aklad˚um je zde nab´ıdnuta moˇznost ukl´adat i jin´e neˇz obrazov´e informace. Tato skuteˇcnost nahr´av´a pouˇzit´ı SVG jako jednoduch´y GIS form´at. Moˇzn´y je tak´e z´apis metadat. Pro urˇcen´ı zp˚usobu vykreslen´ı je vhodn´e pouˇz´ıt takzvan´e stylov´e soubory. Jedn´a se o dokumenty, kde jsou nastaveny pravidla zobrazen´ı SVG geometrick´ych prvk˚u. Mezi dva nejvyuˇz´ıvanˇejˇs´ı patˇr´ı CSS a XSL, kdy kaˇzd´y se hod´ı k trochu jin´emu ´uˇcelu. V pr´aci jsou uvedeny z´aklady tˇechto stylov´ych jazyk˚u, doplnˇen´e o pˇr´ıklady pouˇzit´ı. Filip Zavadil 13. kvˇetna 2011
  • 11. Kapitola 1. ´Uvod 2 Nejlepˇs´ı cestou jak porozumˇet dan´e problematice je praktick´e vytvoˇren´ı SVG apli- kace. Protoˇze je SVG navrˇzeno pro web, m˚uˇze b´yt aplikace interaktivn´ı. Pouˇzit´ım dalˇs´ıch technologi´ı (JavaScript) je dod´ana i dynamiˇcnost. V posledn´ı kapitole jsou mimo jin´e uvedeny zp˚usoby z´ısk´an´ı ˇci exportu dat do SVG form´atu. Jednotliv´e poznatky zjiˇstˇen´e v pr˚ubˇehu pr´ace a celkov´e shrnut´ı je uvedeno na sa- motn´y z´avˇer pr´ace. Filip Zavadil 13. kvˇetna 2011
  • 12. Kapitola 2. V´yvoj pˇred SVG 3 Kapitola 2 V´yvoj pˇred SVG 2.1 Poˇc´ıtaˇcov´a grafika obecnˇe 2.1.1 Geometrick´e z´aklady Geometrick´e z´aklady uˇz´ıvan´e poˇc´ıtaˇcov´ym zpracov´an´ım grafick´ych dat se datuj´ı uˇz 300-250 pˇr.n.l., kdy se jim vˇenoval ˇreck´y matematik a geometr Euklides ve sv´ych spisech. Filippo Brunelleschi (1377-1446) objevil line´arn´ı perspektivu, tedy prvn´ı vizualizaci 3D prostoru. Ren´e Descartes (1596-1650) je jeden ze zakladatel˚u analytick´e geometrie, za- vedl tak´e kart´ezsk´y syst´em souˇradnic a t´ım z´aklady pro popis objekt˚u v 2D prostoru. James Joseph Sylvester (1814-1897) popsal maticovou notaci, vyuˇz´ıvanou v informatice pro geometrick´e transformace. Pierre B´ezier zavedl popis b´ezierovy kˇrivky vyuˇz´ıvan´y ve vektorov´ych grafick´ych form´atech. 2.1.2 V´yvoj technologi´ı Od doby, kdy se zaˇcaly v´ypoˇcetn´ı technologie rozˇsiˇrovat, zaznamenala oblast poˇc´ı- taˇcov´eho zpracov´an´ı grafick´ych dat velk´y pokrok. V roce 1897 byla nˇemeck´ym fyzikem Karlem Ferdinandem vynalezena katodov´a trubice, kter´a dala vznik televiz´ım a CRT monitor˚um. Tato skuteˇcnost spolu s vyn´alezem tranzistoru v roce 1947 v Bellov´ych labo- ratoˇr´ıch dala z´aklad pro rozvoj poˇc´ıtaˇcov´e grafiky. Mezi dalˇs´ı v´yznamn´e miln´ıky patˇr´ı zaveden´ı pojmu poˇc´ıtaˇcov´a grafika (William Fetter, 1964). O rok pozdˇeji pˇrich´az´ı na svˇet tzv. Bresenham˚uv algoritmus, kter´y popisuje vykreslov´an´ı ˇcar do rastrov´eho pole (pouˇzit´ı v nynˇejˇs´ıch rastrov´ych monitorech) [Sho00]. Firma Apple Computer v roce 1977 pˇredstavuje prvn´ı barevn´y grafick´y mikropoˇc´ıtaˇc Apple II. V 80. letech se pˇredstavuje ˇrada poˇc´ıtaˇc˚u Apple Macintosh s grafick´ym uˇzivatelsk´ym rozhran´ım (GUI) a poˇc´ıtaˇcovou myˇs´ı. Od 90. let, kdy pˇrich´az´ı Bill Gates s operaˇcn´ım syst´emem Windows 3.0, se osobn´ı poˇc´ıtaˇce masivnˇe rozˇsiˇruj´ı do pracoviˇst’ a dom´acnost´ı. Dalˇs´ım mezn´ıkem pro poˇc´ıtaˇcovou grafiku byl v´yvoj internetu. V roce 1969 byla sestavena prvn´ı experiment´aln´ı s´ıt’ ARPANET a o ˇctyˇri roky pozdˇeji vyvstaly ´uvahy vedouc´ı k nynˇejˇs´ımu protokolu TCP/IP. V roce 1987 je do s´ıtˇe pˇripojeno 27 000 stanic a vznik´a pojem internet. Roku 1992 je ofici´alnˇe pˇripojena ˇCesk´a republika a ˇCVUT v Praze. Zhruba o 2 roky pozdˇeji se internet komercializuje a t´ım doch´az´ı k masov´emu n´ar˚ustu Filip Zavadil 13. kvˇetna 2011
  • 13. Kapitola 2. V´yvoj pˇred SVG 4 uˇzivatel˚u. Po roce 2005 je zaznamen´ana miliarda uˇzivatel˚u. St´ale v´ıce se prosazuje on-line obsah i v oblasti kartografie. Vznikaj´ı nov´e grafick´e form´aty zamˇeˇren´e pˇr´ımo pro internet. geometrické základy (Euklides) první použití perspektivního zobrazení (Fillipo Brunelleschi) počátky analytické geometrie (René Descartes) 3.st.př.n.l. 15.století 17.století 18.století 19.století 20.století 21.století vynález tranzistoru vynález katodové trubice (Karl Ferdinand) bézierova křivka (Pierre Bézier) maticový zápis (James J. Sylvester) počátek děrných štítků (Bouchon, Falcon, Jacquard) 6.st.př.n.l. Pythagorova věta (Pythagoras) první verze SVG matematické základy vývoj software & hardware Obr´azek 2.1: ˇCasov´a osa vybran´ych kl´ıˇcov´ych moment˚u 2.2 Vektorov´a a rastrov´a grafika 2.2.1 Vektorov´a reprezentace Vektorov´a grafika m´a z´aklady v analytick´e geometrii. Ukl´adaj´ı se parametry geo- metrick´ych tˇeles, jejich poloha, popˇr. v´yplˇn. Francouzsk´y matematik a konstrukt´er Pierre B´ezier popsal kˇrivku pomoc´ı ˇctyˇr bod˚u. Jedn´a se o krajn´ı body a tzv. body kotevn´ı a kontroln´ı viz. obr.ˇc. 2.2. Krajn´ımi a kotevn´ımi body kˇrivka proch´az´ı a pomoc´ı kont- roln´ıch bod˚u (teˇcny kˇrivky) lze urˇcovat jej´ı zakˇriven´ı. Skl´ad´an´ım tˇechto kˇrivek lze popsat libovoln´y zakˇriven´y tvar. Sloˇzitˇejˇs´ı v´ykres je sloˇzen z primitivn´ıch tvar˚u tzv. objekt˚u. Napˇr´ıklad jednoduch´a kresba snˇehul´aka je pops´ana pomoc´ı tˇr´ı kruˇznic, kde jsou uloˇzeny jen hodnoty polomˇeru a souˇradnice stˇred˚u kruˇznic. Je zjevn´e, ˇze takto popsan´a kresba nebude n´aroˇcn´a na pamˇet’ poˇc´ıtaˇce a datov´a velikost souboru bude minim´aln´ı. Jelikoˇz jsou data pops´ana matematicky, nedoch´az´ı pˇri zvˇetˇsen´ı v´ykresu k poklesu kvality. Protoˇze se jednotliv´e kresby ukl´adaj´ı jako objekty (bod, ´useˇcka, polygon, kˇrivka atd.), mohou se jednoduˇse prov´adˇet modifikace (napˇr. zvˇetˇsen´ı polomˇeru kruˇznice, translace, atd.), aniˇz by to mˇelo vliv na ostatn´ı objekty. Tato struktura je vhodn´a k uloˇzen´ı dat m´enˇe tvarovˇe rozmanit´ych. Vyuˇz´ıv´a se pˇri tvorbˇe firemn´ıch log, sch´ematick´ych obr´azk˚u a diagram˚u, technick´ych v´ykres˚u (CAD) a animac´ı. D´ıky sv´e mal´e datovˇe objemov´e n´aroˇcnosti je vektorov´a grafika vhodn´a pro internet, kde se st´ale v´ıce prosazuje. koncový bod počáteční bod kotevní body kontrolní body Obr´azek 2.2: Popis b´ezierovy kˇrivky Filip Zavadil 13. kvˇetna 2011
  • 14. Kapitola 2. V´yvoj pˇred SVG 5 2.2.2 Rastrov´a reprezentace Rastrov´y (ˇcasto t´eˇz bitmapov´y) zp˚usob popisu obrazov´ych informac´ı ukl´ad´a infor- mace o jednotliv´ych prvc´ıch um´ıstˇen´ych na mˇr´ıˇzce. Mˇr´ıˇzka (rastr) m˚uˇze b´yt sloˇzena z r˚uzn´ych tvar˚u (troj´uheln´ık, obd´eln´ık, ˇsesti´uheln´ık), avˇsak nejˇcastˇeji je tvoˇrena ˇctverci tzv. pixely. Kaˇzd´y prvek mˇr´ıˇzky nese urˇcitou hodnotu (nejˇcastˇeji se jedn´a o hodnotu barvy). Pamˇet’ov´a z´atˇeˇz bude logicky silnˇe z´avisl´a na rozmˇeru v´ysledn´eho obr´azku. Rastrov´y popis v´yˇse uveden´e kresby snˇehul´aka bude tedy n´aroˇcnˇejˇs´ı. Kruˇznice bude reprezentov´ana vyplnˇen´ymi pixely a jejich poˇcet bude z´aleˇzet na obrazov´em rozliˇsen´ı. Aby se kruˇznice jevila realisticky a nebyla ” kostrbat´a“, je nutn´e volit vˇetˇs´ı rozliˇsen´ı, ˇc´ımˇz ale dojde i ke zvˇetˇsen´ı datov´e velikosti souboru na pamˇet’ov´em m´ediu. Fotografie jsou typick´ym pˇredstavitelem rastrov´e grafiky, protoˇze obsahuj´ı velk´y poˇcet rozmanit´ych a tud´ıˇz tˇeˇzko matematicky popsateln´ych tvar˚u. V tomto pˇr´ıpadˇe je vektorov´y model nevhodn´y. Tak´e metoda sbˇeru dat (osv´ıcen´ı CMOS ˇcipu fotoapar´atu) zaznamen´av´a skuteˇcnost do mˇr´ıˇzky a nepopisuje ji matematicky. Nad bitmapov´ymi obr´azky lze s v´yhodou aplikovat spoustu filtr˚u a efekt˚u. 2.2.3 V´yhody a nev´yhody Nelze obecnˇe ˇr´ıci, jak´y zp˚usob je v´yhodnˇejˇs´ı. Vˇzdy z´aleˇz´ı na rozsahu a rozmani- tosti kresby, zadan´emu ´uˇcelu a zp˚usobu sbˇeru dat. Pro zn´azornˇen´ı technick´ych v´ykres˚u je vhodn´y vektorov´y model. Pro v´ykresy, kter´e se maj´ı bl´ıˇzit realitˇe je zase vhodnˇejˇs´ı rastrov´y model. S nads´azkou si lze pˇrestavit, ˇze Pablo Picasso by pro sv´e kubistick´e malby zvolil vektorov´y form´at a Claude Monet v obdob´ı impresionismu by pouˇzil vhodnˇejˇs´ı rastrov´y form´at. V oboru geod´ezie a kartografie jsou vyuˇz´ıv´any oba typy dat. Napˇr. produktem fo- togrammetrie a d´alkov´eho pr˚uzkumu Zemˇe je rastrov´y obsah. Naopak grafick´e zpracov´an´ı geodetick´eho mˇeˇren´ı je vektorov´y v´ykres. Vizu´aln´ı rozd´ıly obou zp˚usob˚u jsou zobrazeny na obr. 2.3 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 S(x,y) r Obr´azek 2.3: Zn´azornˇen´ı odliˇsn´eho zp˚usobu z´aznamu obrazov´ych informac´ı 2.3 Vznik a v´yvoj grafick´ych form´at˚u Informace jsou na pamˇet’ov´ych medi´ıch ukl´ad´ana v bitech a tvoˇr´ı posloupnost jedniˇcek a nul. Form´at souboru sdˇeluje procesoru, jak danou posloupnost rozk´odovat (ˇcten´ı) nebo zak´odovat (z´apis). Pro reprezentaci grafick´ych dat bylo vytvoˇreno mnoho form´at˚u pro vektorov´a i rastrov´a data. Filip Zavadil 13. kvˇetna 2011
  • 15. Kapitola 2. V´yvoj pˇred SVG 6 2.3.1 Form´aty vektorov´e grafiky Kaˇzd´y v´yznamnˇejˇs´ı v´yrobce softwaru pro zpracov´an´ı vektorov´e grafiky si vytv´aˇr´ı vlastn´ı v´ymˇenn´y form´at, kter´y pr˚ubˇeˇznˇe inovuje a doplˇnuje. Vznikaj´ı tak probl´emy se zpˇetnou kompatibilitou a nezˇr´ıdka je tato skuteˇcnost ˇreˇsena vyd´an´ım nov´eho form´atu. M´enˇe ˇcast´ym jevem je vz´ajemn´a kompatibilita mezi aplikacemi. Hlavnˇe tv˚urci pro- priet´arn´ıho softwaru vyv´ıjej´ı a bedlivˇe si stˇreˇz´ı vlastn´ı uzavˇren´y form´at (tato pr´ace po- jedn´av´a o otevˇren´em form´atu). Vektorov´e grafick´e form´aty lze dle [Tiˇs07] rozdˇelit na tyto skupiny: V´yznamnˇejˇs´ı souborov´e form´aty urˇcen´e pro 2D grafiku a CAD • CDR je sloˇzitˇejˇs´ı propriet´arn´ı form´at vyv´ıjen´y spoleˇcnost´ı Corel Corporation, je vyuˇz´ıvan´y v softwaru CorelDRAW. Mezi jeho odvozeniny patˇr´ı: CDX, CDT, CMX. Form´at podporuje v´ıcestr´ankov´y dokument. • AI nativn´ı form´at aplikace Adobe Illustrator je velmi podobn´y form´atu PDF. Pod- poruje vrstvy, ale nepodporuje v´ıcestr´ankov´y dokument ani animace. • DXF (Drawing eXchange Format) je textov´y form´at vyvinut´y spoleˇcnost´ı Auto- Desk. Tento form´at podporuje vˇetˇsina CAD syst´em˚u. Jeho bin´arn´ı podoba m´a pˇr´ıponu DXB. • DWG (DraWinG) je dalˇs´ım CAD/CAM form´atem spoleˇcnosti AutoDesk. Umoˇzˇnuje ukl´adat 2D i 3D data. • DGN (DesiGN) je nativn´ı form´at CAD programu MicroStation od Bentley Systems. • SHP (SHaPefile) je p˚uvodn´ı bin´arn´ı form´at softwaru ESRI ArcMap. Popisuje geo- metrick´e prvky (point, line, polygon) a se soubory typu SHX a DBF tvoˇr´ı geoda- tab´azi. Jedn´a se o nejrozˇs´ıˇrenˇejˇs´ı form´at pro GIS aplikace. • OCD je intern´ı form´at kartografick´eho softwaru OCAD. Form´aty urˇcen´e pro tisk a metaform´aty • PS (PostScript) je jeden z v´ymˇenn´ych tiskov´ych form´at˚u vyvinut´y spoleˇcnost´ı Adobe Systems (1985). Jde o popis dokumentu pomoc´ı programovac´ıho jazyka. • EPS (Encapsulated PostScript) je odvozenina PS form´atu urˇcen´a pro popis obr´azku. • PDF (Portable Document Format), navrˇzen´y spoleˇcnost´ı Adobe je na platformˇe nez´avisl´y v´ymˇenn´y form´at zaloˇzen´y na jazyce PostScript a v souˇcasn´e dobˇe velmi rozˇs´ıˇren. Form´at je schopen n´est i rastrov´a obrazov´a data a metadata aplikac´ı, ve kter´ych byl vytvoˇren. Zejm´ena produkty firmy Adobe jsou schopn´e si v tomto form´atu uchovat i nastaven´ı, vrstvy nebo objekty vyuˇziteln´e pro pozdˇejˇs´ı editaci. • WMF, EMF (Windows MetaFile, Enhanced Windows MetaFile) je vyv´ıjen´y spoleˇc- nost´ı Microsoft pro operaˇcn´ı syst´em MS Windows. Ukl´ad´a geometrick´e objekty i vybran´e pˇr´ıkazy. Filip Zavadil 13. kvˇetna 2011
  • 16. Kapitola 2. V´yvoj pˇred SVG 7 • SWF (Shockwave Flash) je propriet´arn´ı multimedi´aln´ı form´at obsahuj´ıc´ı nejen vek- torov´e prvky. Byl vyv´ıjen spoleˇcnost´ı Macromedia (nyn´ı Adobe Labs), kter´a tak´e vyd´av´a editor Adobe Flash. I pˇres svou nesvobodu je silnˇe rozˇs´ıˇren na webov´em prostˇred´ı a je konkurentem otevˇren´eho form´atu SVG. Grafick´e vektorov´e form´aty zaloˇzen´e na XML technologii • SVG (Scalable Vector Language) je pˇredmˇetem t´eto pr´ace. Bliˇzˇs´ı sezn´amen´ı od kapitoly 3. W3C standardem se stal v roce 1999. • VML (Vector Markup Language) je form´at starˇs´ı neˇz SVG, kter´y se ale pˇr´ıliˇs ne- prosadil. Jeho pˇr´ıpony jsou .htm nebo .html. W3C Standard v roce 1998. • PGML (Precision Graphics Markup Language) je dalˇs´ı pˇredch˚udce SVG v dneˇsn´ı dobˇe jiˇz nevyuˇz´ıvan´y. W3C Standardem se stal v roce 1998. 2.3.2 Form´aty rastrov´e grafiky Rastrov´e form´aty se od sebe rozliˇsuj´ı pouˇzit´ymi kompresn´ımi algoritmy (LZW, JPEG, RLE, Huffmanovo k´odov´an´ı). Nejbˇeˇznˇejˇs´ı rastrov´e form´aty • PNG (Portable Network Graphics) je n´astupce GIFu. Pouˇz´ıv´a bezztr´atovou kom- presi a jeho prvn´ı verze vyˇsla v roce 1996 (Standard W3C). Jelikoˇz podporuje transparentn´ı pozad´ı je hojnˇe pouˇz´ıvan´y v internetov´em prostˇred´ı. • JPEG (Joint Photographic Experts Group) je ztr´atov´y komprimaˇcn´ı algoritmus a tak´e form´at souboru. Je vhodn´y k pouˇzit´ı u obr´azk˚u, kde se nevyskytuj´ı ostr´e hrany (narozd´ıl od form´atu PNG). Je klasick´ym v´ystupem digit´aln´ıch fotoapar´at˚u. • BMP (Microsoft Windows Bitmap), jeho prvn´ı verze byla pˇredstavena v roce 1988. Obr´azky jsou ukl´ad´any po jednotliv´ych pixelech a proto je souborov´a velikost znaˇcnˇe vˇetˇs´ı neˇz u pˇredchoz´ıch form´at˚u. • TIFF (Tag Image File Format) pouˇz´ıv´a libovolnou dostupnou kompresi a je schopen ukl´adat v´ıcestr´ankov´e dokumenty. Vznikl jako vstupn´ı form´at pro scannery a faxov´e pˇr´ıstroje. Jeho varianta GeoTIFF umoˇzˇnuje nosit tak´e prostorov´a data. • GIF (Graphics Interchange Format) vyuˇz´ıv´a bezztr´atovou kompresi LZW84. Kv˚uli tomuto komprimaˇcn´ımu algoritmu, kter´y byl patentovˇe chr´anˇen, je nahrazen form´atem PNG. Je ovˇsem schopen animace, proto byl dˇr´ıve hojnˇe vyuˇz´ıv´an na internetu v re- klamn´ıch bannerech. Form´aty rastrov´ych editor˚u • PSD je nativn´ı form´at aplikace Adobe Photoshop. Je schopen ukl´adat metadata jako vrstvy, kan´aly, cesty, nastaven´ı pr˚uhlednosti atd. • XCF je p˚uvodn´ı form´at freewarov´eho programu GIMP (GNU Image Manipulation Program). Uchov´av´a podobn´e informace jako pˇredchoz´ı PSD. Filip Zavadil 13. kvˇetna 2011
  • 17. Kapitola 2. V´yvoj pˇred SVG 8 Obr´azek 2.4: Ikony vybran´ych grafick´ych form´at˚u a editor˚u 2.4 ´Uvod do XML Pˇri v´yvoji v´ypoˇcetn´ı technologie vyvstal probl´em jak stroji sdˇelit v´yznam jednot- liv´ych ˇc´ast´ı textu a jak je v textu oznaˇcovat. Za analogovou formu lze povaˇzovat ruˇcn´ı vpisov´an´ı pozn´amek mezi autor˚uv text tˇreba pro potˇreby form´atov´an´ı obsahu pro tisk. Pr´avˇe zde byl inspirov´an v´yvoj tzv. znaˇckovac´ıch jazyk˚u. Obsah dokumentu t´ım z´ıskal hierarchickou strukturu a mohl b´yt pouˇzit k v´ıce ´uˇcel˚um. Tak´e mohl b´yt jednoduˇseji transformov´an pro jin´a zaˇr´ızen´ı a st´aval se tedy kompatibiln´ım prostˇredkem mezi syst´emy. Jelikoˇz je pˇredmˇetem t´eto pr´ace form´at SVG, kter´y je odvozen z jazyka XML s pevn´ym DTD, budou v t´eto kapitole pops´any z´akladn´ı principy a syntaxe jazyka XML. IBM GML lze povaˇzovat za prvn´ı znaˇckovac´ı jazyk. Vytvoˇren byl v 60-t´ych le- tech minul´eho stolet´ı v IBM laboratoˇr´ı. Za jeho v´yvojem st´ali p´anov´e Charles Goldfarb, Edward Mosher a Raymond Lorie1 . V´ysledn´y dokument byl ASCII text s hierarchick´ym popisem obsahu. Pˇr´ıklad jeho z´apisu je na uk´azce ˇc. 2.5. :h1.Kapitola 1: Uvod :p.Znacka uvozujici odstavec :oil :li.prvni polozka seznamu :li.druha polozka seznamu :eol. :p.Nazvy tagu jsou dodnes vyuzivany. Obr´azek 2.5: Uk´azka struktury dokumentu IBM GML Dalˇs´ım produktem zaloˇzen´ym na GML je znaˇckovac´ı jazyk SGML (Standard Generalized Markup Language) vyvinut´y jako univerz´aln´ı jazyk pro v´ymˇenu informac´ı mezi poˇc´ıtaˇci, kter´y umoˇzˇnoval definici vlastn´ıch znaˇcek. Byl pˇrijat jako ISO norma (8879) v roce 1986. Instrukce pro oznaˇcen´ı obsahu jsou vloˇzeny mezi tzv. ˇr´ıd´ıc´ı znaky (ostr´e z´avorky ” <,>“). Poprv´e byl pouˇzit DTD (Document Type Definition), kde jsou uvedeny definice dostupn´ych element˚u (znaˇcek). Jelikoˇz se jedn´a o bezkontextov´y jazyk2 , jednotliv´e elementy se nemohou pˇrekr´yvat, ale mohou se vnoˇrovat. Rozˇs´ıˇren´ı tohoto jazyka pomohlo americk´e ministerstvo obrany, kter´e poˇzadovalo od dodavatel˚u dokumentaci pr´avˇe v tomto form´atu [Kos00]. Jazyk SGML byl pˇr´ıliˇs komplexn´ı (umoˇzˇnoval nejen definici vlastn´ıch znaˇcek, ale i urˇcen´ı oddˇelovaˇc˚u tˇechto znaˇcek) a to ho inhibovalo v praktick´em vyuˇzit´ı. 1 V souvislosti s GML je zaj´ımav´a zkratka utvoˇren´a z poˇc´ateˇcn´ıch p´ısmen pˇr´ıjmen´ı autor˚u. 2 Form´aln´ı jazyk vyuˇz´ıvan´y pˇredevˇs´ım pro programov´an´ı. Umoˇzˇnuje sjednocen´ı, substituci, iteraci, morfismus, ale ne pr˚unik ani rozd´ıl. Filip Zavadil 13. kvˇetna 2011
  • 18. Kapitola 2. V´yvoj pˇred SVG 9 Jako jedna z nejzn´amˇejˇs´ıch odvozenin je znaˇckovac´ı jazyk HTML (HyperText Markup Language) dodnes vyuˇz´ıvan´y jako nositel obsahu pro webov´e prostˇred´ı. HTML m´a pevnˇe definovan´e DTD, kter´e bylo s kaˇzdou novou verz´ı m´ırnˇe odliˇsn´e. Tato skuteˇcnost vedla k tomu, ˇze se potenci´al HTML vyˇcerpal. XML (Extensible Markup Language) je rozˇsiˇriteln´y znaˇckovac´ı jazyk, kter´y si jako podmnoˇzina jazyka SGML zachov´av´a definici vlastn´ıch DTD, ale oddˇelovaˇce znak˚u a speci´aln´ı znaky jsou pevnˇe urˇcen´e. Tak´e syntaxe jazyka mus´ı dodrˇzovat pˇr´ısnˇejˇs´ı pravidla neˇz jazyk SGML. Verze XML 1.0 byla dokonˇcena v roce 1998 a nyn´ı je vyd´ana jej´ı 5. revize. Verze XML 1.1 byla pˇredstavena v roce 2006 a nyn´ı je ve druh´e revizi. Obˇe verze se mezi sebou m´ırnˇe liˇs´ı v poˇzadavc´ıch na pouˇzit´e znaky v n´azvech element˚u a atribut˚u. Verze 1.0 dovoluje pouˇzit´ı znak˚u obsaˇzen´ych v Unicode 2.0. Form´at XML by mˇel b´yt nositelem ” ˇcist´ych“ informac´ı, tedy oddˇelen´ych od prvk˚u urˇcuj´ıc´ıch vzhled v´ysledn´eho dokumentu. K tomu ´uˇcelu jsou urˇceny stylov´e jazyky viz. kapitola 4. Asi nezn´amˇejˇs´ı z nich je CSS (Cascade Style Sheet, kask´adov´e styly), kter´e definuj´ı vzhled webov´ych str´anek a jsou tak´e vyuˇz´ıv´any u form´atu SVG. Dalˇs´ım, avˇsak sloˇzitˇejˇs´ım jazykem, je XSL (eXtensible Style Language), kter´y se vyuˇz´ıv´a pˇri takzvan´ych XSL transformac´ıch (XSLT) pro ´upravu a transformace dokumentu. XSLT bude tak´e pˇredmˇetem t´eto pr´ace v podkapitole 4.2. Jak jiˇz bylo ˇreˇceno v´yˇse, form´at XML striktnˇe dodrˇzuje pravidla z´apisu. Pro kontrolu slouˇz´ı program naz´yvan´y parser . Tento program kontroluje spr´avnost dokumentu a odhal´ı chyby, kter´e by mohly b´yt pˇr´ıˇcinou probl´em˚u. Implicitnˇe ho obsahuj´ı dneˇsn´ı internetov´e prohl´ıˇzeˇce. 2.4.1 Syntaxe XML Pro lepˇs´ı orientaci v k´odu SVG je vhodn´e zn´at XML syntaxi a pravidla jeho z´apisu, kter´a mus´ı b´yt narozd´ıl od HTML striktnˇe dodrˇzov´ana. XML dokument je sestaven z ob- jekt˚u naz´yvan´ych elementy . Element je nositelem samotn´e informace i jej´ıho oznaˇcen´ı. Kaˇzd´y element se skl´ad´a z tag˚u , kter´e jsou uzavˇreny do ostr´ych z´avorek (tj. mezi znaky ‘<’ a ‘>’). Cel´y element se skl´ad´a z poˇc´ateˇcn´ıho tagu, obsahu elementu a koncov´eho tagu, kter´y je uvozen znakem ‘/’ (pro odliˇsen´ı od poˇc´ateˇcn´ıho). Jednotliv´e ˇc´asti nejjednoduˇsˇs´ıho XML dokumentu, kter´y obsahuje pouze jeden element, jsou pops´any na obr. 2.6. ˇCasto < titul > SVG a jeho využití v kartografii </ titul > XML element obsah elementu počáteční tag řídící znak ukončovací znak koncového tagu název tagu Obr´azek 2.6: Popis nejjednoduˇsˇs´ıho XML dokumentu nastane situace, kdy element nenese ˇz´adn´y obsah, ale jeho v´yskyt m˚uˇze m´ıt vliv tˇreba na form´atov´an´ı. Zp˚usoby, jak takov´y element napsat jsou tyto: <titul> </titul> - prost´e vynech´an´ı obsahu je v souladu s pravidly <br/> - pouˇz´ıv´a se v XHTML pro ukonˇcen´ı ˇr´adky (break line) Filip Zavadil 13. kvˇetna 2011
  • 19. Kapitola 2. V´yvoj pˇred SVG 10 <text kodovani="utf-8"/> - pr´azdn´y element, obsahuj´ıc´ı pouze atribut, se tak´e ˇcasto vyuˇz´ıv´a V posledn´ı uk´azce se vyskytuje atribut, kter´y se zapisuje do poˇc´ateˇcn´ıho tagu. Je to nositel informace o dan´em tagu. Kaˇzd´y atribut se skl´ad´a z n´azvu a hodnoty, kter´a je uzavˇrena do uvozovek. V uk´azce 2.7 jsou hodnoty souˇradnic bodu v souˇradnicov´em syst´emu S-JTSK. Zvolen´y souˇradnicov´y syst´em i ˇc´ıslo bodu jsou ukl´ad´any jako atributy. Zp˚usob z´apisu koment´aˇre: <!-- text koment´aˇre je parserem ignorov´an -->. <bod cislo="4001"> <souradnice system="EPSG:5221"> 744903.16 , 1040716.70 </souradnice> </bod> Obr´azek 2.7: XML dokument popisuj´ıc´ı geobod bod ELEMENT system ATRIBUT souradnice ELEMENT ID ATRIBUT popis ELEMENT jazyk ATRIBUT kořenový element předek odstavec ELEMENT potomek sourozenec <bod ID=4001> <souradnice system=”EPSG:9221”> 744903.16 , 1040716.70 </souradnice> <popis jazyk=”cz”> <odstavec> Makovice kostela ... </odstavec> </popis> </bod> Obr´azek 2.8: Stromov´a struktura XML elementu 2.4.2 XML dialekty Jazyk˚u odvozen´ych z XML je opravdu mnoho3 , zde budou uvedeny ty nejvyuˇz´ıvanˇejˇs´ı z nich a ty, kter´e maj´ı nˇeco spoleˇcn´eho s oborem geod´ezie a kartografie. • XHTML (XML HyperText Markup Language) Znaˇckovac´ı jazyk nahrazuj´ıc´ı HTML (SGML) je postaven na XML z´akladech. Je pˇr´ısnˇejˇs´ı na syntaxi a umoˇzˇnuje definici vlastn´ıch sad znaˇcek. Jeho pouˇzit´ı se do- poruˇcuje spoleˇcnˇe s CSS (Cascade Style Sheet). • DocBook Odvozenina XML urˇcen´a pro psan´ı nejen technick´e dokumentace. Pouˇz´ıv´a se tak´e 3 http://en.wikipedia.org/wiki/List_of_XML_markup_languages Filip Zavadil 13. kvˇetna 2011
  • 20. Kapitola 2. V´yvoj pˇred SVG 11 pro psan´ı knih, prezentac´ı, ˇcl´ank˚u atd. Obsah lze snadno (podle ˇsablon) transfor- movat pro r˚uzn´e ´uˇcely pouˇzit´ı. • MathML (Mathematical Markup Language) Matematick´y znaˇckovac´ı jazyk popisuje matematick´e vztahy a vzoreˇcky. Je tak´e uloˇzen logick´y smysl v´yrazu. MathML podporuj´ı kancel´aˇrsk´e bal´ıky MS Office, OpenOffice, matematick´y software Mathematica a webov´e prohl´ıˇzeˇce. • SVG (Scalable Vector Graphics) ˇSk´alovateln´y vektorov´y form´at urˇcen´y nejen pro internet. O jeho v´yhod´ach, zp˚usobech pouˇzit´ı a praktick´ych uk´azk´ach pojedn´av´a kapitola 3. • KML (Keyhole Markup Language) Form´at KML4 je standardem Open Geospatial Consortium (OGC5 ) a nositelem geo- grafick´ych dat. Vyuˇz´ıvaj´ı ji Google aplikace (Earth, Maps, SketchUp). D´ıky standar- dizaci se vyuˇz´ıv´a i v GIS aplikac´ıch. Souˇradnice jsou v syst´emu WGS-84 a voliteln´a v´yˇska je v syst´emu EGM96. • GML (Geographic Markup Language) Form´at ukl´ad´a geografick´e prvky jako geometrii (Point, LineString, Polygon), pouˇzit´y referenˇcn´ı syst´em, topologii, ˇcas, pouˇzit´e jednotky mˇeˇren´ı, observace atd. Form´at je tak´e vyv´ıjen a udrˇzov´an konsorciem OGC. • GeoRSS Geografick´y form´at urˇcen´y pro RSS ˇcteˇcky, tzv. ” Web feed“ sluˇzby. Nov´e zpr´avy mohou tak n´est i geografickou lokalizaci. GeoRSS je tak´e projektem organizace OGC. • GPX (GPS eXchange Format) Do tohoto form´atu jsou ukl´ad´any data nˇekter´ych GPS pˇrij´ımaˇc˚u (Garmin) a popisuj´ı trasy. 2.4.3 XML pˇridruˇzen´e technologie XML dokumenty mohou b´yt mezi sebou prov´az´any pouˇzit´ım technologie odkaz˚u. Jazyky XPath, XPointer a XLink nab´ızej´ı vˇetˇs´ı moˇznosti adresov´an´ı neˇz pˇr´ıkaz <a href="http://svg.filipzava.cz" > SVG </a> vyuˇz´ıvan´y v HTML. Tyto jazyky tak´e definuje a standardizuje konzorcium W3C. Aplikace, kter´a bude shrnuj´ıc´ım v´ysledkem t´eto pr´ace, bude vyuˇz´ıvat i tyto moduly jazyka XML. V´ıce o jazyku XPath v 4.2.3. • XLink • XPointer • XPath XML Path Language se pouˇz´ıv´a pro prohled´av´an´ı XML dokumentu, kter´y je repre- zentov´an stromovou hierarchi´ı. Jednotliv´e elementy tvoˇr´ı uzly, po kter´ych je snadn´e se s XPath pohybovat. Pouˇz´ıvaj´ı se pojmy jako pˇredek a potomek. 4 http://code.google.com/intl/cs/apis/kml/documentation/kmlreference.html 5 http://www.opengeospatial.org/ Filip Zavadil 13. kvˇetna 2011
  • 21. Kapitola 3. Form´at SVG 12 Kapitola 3 Form´at SVG 3.1 Verze Vektorov´y form´at SVG je vyv´ıjen od roku 1998. Uˇz od prvopoˇc´atku byl koncipov´an, aby se stal internetov´ym standardem. Ve v´yvojov´em t´ymu zasedali z´astupci v´yznamn´ych firem (Adobe, Corel, Macromedia, Sun, Microsoft, Hewlett-Packard, Apple, IBM). Je- den z rozhodn´ych okamˇzik˚u nastal v z´aˇr´ı 2001, kdy verze SVG 1.0 z´ıskala doporuˇcen´ı od konsorcia W3 (pˇredstupeˇn standardizace). Standardizov´an byl form´at SVG 1.0 v dubnu 2000. O nˇekolik mˇes´ıc˚u pozdˇeji (leden 2001), vyˇsla verze 1.1, kter´a bere v potaz expanzi internetu na rozv´ıjej´ıc´ı se mobiln´ı zaˇr´ızen´ı. Pro vz´ajemnou kompatibilitu mezi tˇemito zaˇr´ızen´ımi bylo SVG rozvˇetveno na form´at pro mobiln´ı zaˇr´ızen´ı SVGB (SVG Basic) a od- vozeninu SVGT (SVG Tiny) pro mobiln´ı telefony (nezahrnuje pr˚uhlednost, CSS styly nebo gradient). V dobˇe psan´ı t´eto publikace se verze nach´azela ve st´adiu SVG 1.2 a je oˇcek´av´ano vypuˇstˇen´ı SVG 2.0. V dneˇsn´ı dobˇe nab´ıraj´ı na trhu sv˚uj pod´ıl tablety, kter´e sv´ym doty- kov´ym displayem umoˇzˇnuj´ı pˇrirozenˇejˇs´ı ovl´ad´an´ı aplikac´ı, tedy i vyuˇzit´ı interaktivity SVG. V tˇechto zaˇr´ızen´ı je vˇetˇsinou zabudov´ana podpora form´atu SVG Full [Eis02]. Obr´azek 3.1: Nˇekter´a z ofici´aln´ıch log form´atu SVG 3.2 Kompatibilita V poˇc´ateˇcn´ıch letech byl SVG form´at podporov´an v´yznamnou spoleˇcnost´ı Adobe, kter´a se nejsp´ıˇs d´ıky tomuto form´atu chtˇela st´at konkurentem flash form´atu od Macrome- dia. Pro zobrazov´an´ı SVG v prohl´ıˇzeˇc´ıch, kter´e v t´e dobˇe nemˇely nativn´ı podporu tohoto form´atu, byl vyuˇz´ıv´an plugin Adobe SVG Viewer. Jeho v´yvoj byl vˇsak ukonˇcen v roce 2009 (vzr˚ustaj´ıc´ı nativn´ı podpora prohl´ıˇzeˇc˚u). Mozilla Firefox zavedla plnou podporu SVG 1.1 ve sv´em j´adru Gecko v roce 2005. Opera m´a plnou podporu SVG Tiny 1.1 od verze 8. Prohl´ıˇzeˇce zaloˇzen´e na WebKit Filip Zavadil 13. kvˇetna 2011
  • 22. Kapitola 3. Form´at SVG 13 (Google Chrome, Apple Safari) ˇc´asteˇcnˇe podporuj´ı SVG 1.1 od roku 2006. Zat´ım celosvˇetovˇe nejv´ıce rozˇs´ıˇren´y prohl´ıˇzeˇc Internet Explorer od Microsoftu zavedl nativn´ı podporu teprve v roce 2011 ve verzi IE9. Internet Explorer Mozilla Firefox Google Chrome Safari Opera Ostatní prohlížeče 43.6% 29.0% 13.9% 6.2% 2.7% 4.6% Obr´azek 3.2: Pod´ıl pouˇz´ıvan´ych internetov´ych prohl´ıˇzeˇc˚u ve svˇetˇe v lednu 2011 3.3 Hlaviˇcka SVG dokumentu Tak jako spr´avnˇe formovan´y XML dokument by i SVG obr´azek mˇel obsahovat hlaviˇcku. V t´eto ˇc´asti jsou uvedeny povinn´e prvky jako (procesn´ı instrukce, definice typu dokumentu) a koˇrenov´y element svg. <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"> ... obsah ... </svg> procesní instrukce společné pro všechny xml dokumenty definice typu dokumentu 1.interní, 2. externí zdroj kořenový element, uvedená verze SVG a zdroj jmenného prostoru, všechny ostatní elementy musí být mezi těmito tagy Je vhodn´e pouˇz´ıt i nepovinn´e elementy pro oznaˇcen´ı obsahu, tzv. metadat (viz. 3.11) informuj´ıc´ıch o autorovi, form´atu a zdroji dat. O z´apisu dalˇs´ıch element˚u ve vztahu ke kartografii je pojedn´ano v 5.4. 3.3.1 Element defs Do elementu defs lze zapsat ˇc´asti k´odu, kter´e mohou b´yt v dokumentu nˇekolikr´at pouˇzity. Jedn´a se zejm´ena o definov´an´ı barev, barevn´ych pˇrechod˚u, vzor˚u atd. T´ımto zp˚usobem lze tak´e pˇred´avat ˇc´ast k´odu. Tato skuteˇcnost se hod´ı tak´e u rozm´ıst’ov´an´ı kartografick´ych znaˇcek, kdy samotn´y k´od je uveden pouze jednou a n´aslednˇe se jen um´ıst’uje na zadan´e souˇradnice. To vede k ´uspoˇre datov´eho objemu dokumentu a pˇrisp´ıv´a k pˇrehlednosti k´odu. Filip Zavadil 13. kvˇetna 2011
  • 23. Kapitola 3. Form´at SVG 14 • atribut id Pro oznaˇcen´ı objektu slouˇz´ı atribut id, jehoˇz hodnota by v dokumentu mˇela b´yt unik´atn´ı, aby nedoˇslo ke kolizi. Podle tohoto oznaˇcen´ı lze prvek kdykoliv zavolat a inicializovat jeho vykreslen´ı. Identifik´ator lze zapsat ke kaˇzd´emu elementu geomet- rick´ych tvar˚u, textov´e sloˇzce nebo rastrov´emu obr´azku. • element use Pro vykreslen´ı symbolu v urˇcit´e ˇc´asti dokumentu je pouˇzit element use s atributy v podobˇe souˇradnic (x,y) a odkazu k symbolu xlink:href, jehoˇz hodnota je id symbolu uvozen´e znakem ‘#’. <defs> <path id="trojuhelnik" stroke="blue" fill="red" d="M-10,10 L0,-10 L10,10 L-10,10" /> </defs> ... <use x="40" y="40" xlink:href="#trojuhelnik" /> 40 40 + + - - • element symbol Mezi tagy s n´azvem symbol se zapisuje k´od objekt˚u urˇcen´ych pro v´ıcen´asobn´e pouˇzit´ı. Lze zapsat libovoln´y element geometrick´ych tvar˚u a textu. Ke kaˇzd´emu symbolu je nutn´e tak´e pˇridat atribut id, kter´y vede k jednoznaˇcn´e identifikaci sym- bolu. Atribut overflow (nastaven´y na visible) zajiˇst’uje vykreslen´ı cel´eho prvku. Objekt je zaps´an relativn´ımi souˇradnicemi, proto je vhodn´e tˇeˇziˇstˇe objektu um´ıstit na poˇc´atek soustavy souˇradnic. T´ımto zp˚usobem lze vytv´aˇret a pouˇz´ıvat kartogra- fick´e znaˇcky. Podobn´eho v´ysledku lze dos´ahnout pouˇzit´ım identifik´atoru pro skupinu : <g id="znacka" > ... obsah znaˇcky ... </g> <defs> <symbol id=”znacka” overflow=”visible”> <rect x="-20" y="-20" width="40" height="40" r="20" fill="#A2DFF4" stroke="black" stroke-width="2" rx="5"/> </symbol> </defs> ... <use x="40" y="40" xlink:href="#znacka" /> 40 40 T[0,0] • element marker Pro tvary element˚u line, polyline, polygon a path je k dispozici nastaven´ı poˇc´ateˇcn´ı, stˇredn´ı nebo koncov´e znaˇcky pomoc´ı elementu marker. Typick´e pouˇzit´ı je zn´azornˇen´ı smˇeru ˇsipkou. Atributy, kter´e lze vyuˇz´ıt pro form´atov´an´ı jsou: - id - identifik´ator, povinn´y parametr - refX, refY - souˇradnice referenˇcn´ıho bodu - markerUnits - definice souˇradnicov´eho syst´emu hodnoty: strokeWidth, user- SpaceOnUse - markerWidth, markerHeight - velikost znaˇcky v z´avislosti na SS Filip Zavadil 13. kvˇetna 2011
  • 24. Kapitola 3. Form´at SVG 15 - orient - nastaven´ı orientace znaˇcek, hodnota ‘auto’ natoˇc´ı znaˇcku automaticky dle teˇcny ke zvolen´emu bodu, lze tak´e zadat ´uhel pootoˇcen´ı <defs> <marker id="sipka" refX="0" refY="0" markerUnits="strokeWidth" orient="auto" overflow="visible"> <polygon points="-5,-5 -5,5 5,0 -5,-5" fill="green" /> </marker> <marker id="bod" refX="0" refY="0" markerUnits="strokeWidth" overflow="visible"/> <circle cx="0" cy="0" r="2" /> </marker> </defs> ... <path d="M20,70 L50,20 80,60 150,30 180,40" stroke="green" marker-end="url(#sipka)" marker-mid="url(#bod)" /> Obsah tohoto elementu tvoˇr´ı samotn´y objekt urˇcen´y k vykreslen´ı. Pro pouˇzit´ı znaˇcky slouˇz´ı atributy: - marker-start poˇc´ateˇcn´ı znaˇcka - marker-mid znaˇcka lomov´ych bod˚u - marker-end znaˇcka koncov´eho bodu Hodnota je odkaz na danou znaˇcku ve tvaru "url(#adresa)". 3.3.2 Barevn´e pˇrechody Plynul´y pˇrestup jedn´e barvy do druh´e se naz´yv´a ” barevn´y pˇrechod“ (gradient). SVG nem´a ˇz´adn´y gradient nastaven´y a uˇzivatel si mus´ı definovat vlastn´ı. Samotn´a defi- nice je um´ıstˇena do hlaviˇcky dokumentu v elementu defs. Existuj´ı dva druhy barevn´ych pˇrechod˚u: line´arn´ı a radi´aln´ı pˇrechod. • element linearGradient Pˇrechod je nutn´e pojmenovat atributem id. N´asleduj´ı atributy x1,y1,x2,y2 ud´avaj´ı (v procentech) smˇer pˇr´ımky, podle kter´e je barevn´y pˇrechod veden. Obsahem ele- mentu linearGradient jsou barevn´e body <stop>, kter´e maj´ı nastaven odstup (offset), barvu v atributu (style) hodnotou (stop-color) nebo nepr˚uhlednost (stop-opacity). Filip Zavadil 13. kvˇetna 2011
  • 25. Kapitola 3. Form´at SVG 16 <defs> <linearGradient id="modro_cervena" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" style="stop-color:blue; stop-opacity:1"/> <stop offset="100%" style="stop-color:red; stop-opacity:1"/> </linearGradient> </defs> ... <rect width="400" height="50" r="20" fill="url(#modro_cervena)"/> 0% 100% • element radialGradient Podobn´e atributy jako line´arn´ı pˇrechod m´a i element radialGradient. Je ale na- staven atributy cx,cy (souˇradnice stˇredu) a fx,fy, kter´e po os´ach posunuj´ı barevn´e body. <defs> <radialGradient id="modro_cervena" cx="50%" cy="50%" r="50%" fx="50%" fy="50%"> <stop offset="0%" style="stop-color:blue; stop-opacity:1"/> <stop offset="100%" style="stop-color:red; stop-opacity:1"/> </radialGradient> </defs> ... <rect width="200" height="200" fill="url(#modro_cervena)"/> 0% 100% fy fx C 0% 100% 0% 100% 0% 100% fy fx C =100% =0% Barevn´e pˇrechody lze pouˇz´ıt jako barvu v´yplnˇe (fill), barvu tahu (stroke) nebo barvu textu. Na definovan´y gradient je odk´az´ano pouˇzit´ım jeho identifik´atoru: fill="url(#prechod)"; Mezi dalˇs´ı prvky, kter´e se zapisuj´ı do hlaviˇcky defs patˇr´ı typografick´e definice. Tyto prvky nejsou v kartografii pˇr´ıliˇs pouˇz´ıvan´e, proto tak´e nebudou podrobnˇeji zmiˇnov´any. 3.4 SVG elementy z´akladn´ıch geometrick´ych prvk˚u Jako u vˇetˇsiny form´at˚u a editor˚u vektorov´e grafiky je v´ysledn´y obr´azek sloˇzen ze z´akladn´ıch prvk˚u jako jsou obd´eln´ıky, kruˇznice, kˇrivky nebo ´useˇcky. Tyto prvky jsou mate- maticky pops´any dle parametr˚u nutn´ych k jejich sestrojen´ı. V n´asleduj´ıc´ıch podkapitol´ach jsou pops´any tzv. ” SVG primitiva“. Je tak´e uvedena jejich kartografick´a hodnota (zp˚usob jejich vyuˇzit´ı pro z´akres map). Stylov´a sloˇzka (barva a tlouˇst’ka ˇc´ary, barva v´yplnˇe atd.) je ˇreˇsena v kapitole 4. Filip Zavadil 13. kvˇetna 2011
  • 26. Kapitola 3. Form´at SVG 17 3.4.1 Element line (´useˇcka) <line x1="10" y1="10" x2="70" y2 ="30"/> [0;0] [10;10] [70;30] p1 p2 x y Jeden z nejjednoduˇsˇs´ıch tvar˚u je ´useˇcka. Je pops´ana pouze poˇc´ateˇcn´ım (x1,y1) a kon- cov´ym bodem (x2,y2). V kartografii tento tvar s´am o sobˇe nenach´az´ı velk´eho uplatnˇen´ı, je ale vyuˇz´ıv´an jako z´akladn´ı prvek kˇrivek, kde tvoˇr´ı spojnici mezi lomov´ymi body. Pr- vek je ˇcasto zastupov´an elementem path. 3.4.2 Element rectangle (obd´eln´ık) <rectangle x="20" y="10" width="30" height="20"/> [0;0] [20;10] p x y height width = 30 = 20 Obd´eln´ık je tvoˇren elementem rectangle. Pro sestrojen´ı jsou ud´any souˇradnice seve- roz´apadn´ıho rohu (x,y) a ˇs´ıˇrka s v´yˇskou tˇelesa (width,height). V mapˇe m˚uˇze b´yt tento prvek pouˇzit u z´akresu budov obd´eln´ıkov´eho tvaru. Ve vˇetˇsinˇe pˇr´ıpadech by vˇsak musel b´yt pootoˇcen. V aplikaci tvoˇr´ı ta- bulky. 3.4.3 Element circle (kruˇznice) <circle cx="30" cy="20" r="10" /> [0;0] [30;20] c x y r=10 Dalˇs´ı lehce popsateln´y tvar je kruˇznice. Mezi jej´ı parametry patˇr´ı souˇradnice stˇredu (cx,cy) a polomˇer (r). V kartografii se vyuˇz´ıv´a nejsp´ıˇse jako kruh (s vyplnˇen´ım) pˇri znaˇcen´ı bodov´ych prvk˚u (napˇr. bodov´a vrstva obc´ı). K tomuto ´uˇcelu je tak´e element pouˇzit v aplikaci. 3.4.4 Element ellipse (elipsa) <ellipse cx="30" cy="20" rx="20" ry="10" /> [0;0] [30;20] c x y ry rx = 20 = 10 Podobn´y element jako pˇredch´azej´ıc´ı kruˇznice je ellipse. Je zˇrejm´e, ˇze kruˇznice je zvl´aˇstn´ı pˇr´ıpad elipsy (stejn´e poloosy). V mapˇe m˚uˇze b´yt pouˇzit k podobn´ym ´uˇcel˚um jako kruh. Oproti circle je pˇrid´an attribut (rx,ry), coˇz jsou d´elky poloos. Tento element se v aplikaci nenal´ez´a. Filip Zavadil 13. kvˇetna 2011
  • 27. Kapitola 3. Form´at SVG 18 3.4.5 Element polyline (lomen´a ˇc´ara) <polyline points=" 0,0 20,10 30,20 50,10 60,30" /> x y [0;0] p1 [20;10] p2 [30;20] p3 [50;10]p4 [60;30] p5 Lomen´a ˇc´ara je sloˇzena z ´useˇcek a je pops´ana pomoc´ı lomov´ych bod˚u v atributu points. Form´at z´apisu obsahuje vˇzdy p´ary souˇradnic (x, y) oddˇelen´ych ˇc´arkou. V kartografii m˚uˇze b´yt vyuˇzit ke zn´azornˇen´ı lini´ı jako jsou komu- nikace, vodn´ı toky, ˇzeleznice atd. V aplikaci je tento prvek pouˇzit u liniov´ych prvk˚u. 3.4.6 Element polygon (mnoho´uheln´ık) <polygon points="30,0 50,10 30,15 20,30 20,10" /> [0;0] p1 p2 p3 p4 p5 x y Jedn´ım z prvk˚u pro vykreslov´an´ı mnoho´uheln´ık˚u je element polygon. Je reprezentov´an posloupnost´ı p´ar˚u souˇradnic, stejnˇe jako element polyline v atributu points. Tento objekt je vhodn´y pro are´alov´e (ploˇsn´e) znaˇcky, jako lesy, vodn´ı plochy, budovy atd. 3.5 Element path (kˇrivka) Trochu sloˇzitˇejˇs´ım a z´aroveˇn obecnˇejˇs´ım popisem geometrick´eho prvku je kˇrivka (path). Pomoc´ı tohoto elementu je moˇzn´e popsat v´yˇse uveden´e tvary, ovˇsem ve sloˇzitˇejˇs´ı a datovˇe objemnˇejˇs´ı formˇe. Tento prvek vyuˇz´ıv´a tvz. virtu´aln´ıho pera, kter´e se ˇr´ıd´ı pˇr´ıkazy uveden´ymi v atributu s n´azvem d (data). Za pˇr´ıkazy n´asleduj´ı p´ary souˇradnic pro ud´an´ı pozice. Pokud je pˇr´ıkaz velk´ym p´ısmenem, ud´av´a absolutn´ı souˇradnice, pokud je zaps´an mal´ym p´ısmenem, souˇradnice jsou ch´ap´any jako relativn´ı (pˇr´ır˚ustky k pˇredchoz´ımu bodu). Dostupn´e pˇr´ıkazy pro element path: • M (move) - virtu´aln´ı pero je pˇresunuto na danou pozici, aniˇz by byla kreslena ˇc´ara • L (line) - z pˇredchoz´ıho bodu je vedena ´useˇcka na souˇradnice uveden´e za t´ımto pˇr´ıkazem <path d="M10,10 L90,40" /> [0;0] [10;10] [90;40] p1 p2 x y <path d="M30,0 l20,10 L30,15 l-10,15 L20,10 Z" /> [0;0] p1 p2 p3 p4 p5 x y Obr´azek 3.3: Element path a pˇr´ıkazy M, L pro vykreslov´an´ı ´useˇcek Filip Zavadil 13. kvˇetna 2011
  • 28. Kapitola 3. Form´at SVG 19 Jak lze odvodit z obr´azku, t´ımto zp˚usobem lze nahradit elementy line, polyline, rectangle, polygon, circle a ellipse, (kresba mapy by ˇsla prov´est za pouˇzit´ı pouze toho typu elementu, ovˇsem datov´a objemov´a n´aroˇcnost a pˇrehlednost by znaˇcnˇe utrpˇela). Na obr´azku vpravo jsou pouˇzity absolutn´ı i relativn´ı souˇradnice. • H (horizontal line) - vodorovn´a ˇc´ara, nen´ı zad´av´ana y-ov´a souˇradnice • V (vertical line) - svisl´a ˇc´ara, nen´ı zad´av´ana x-ov´a souˇradnice, z´apis tvaru obd´eln´ıku ˇci ˇctverce je t´ımto zp˚usobem sice kratˇs´ı, ale m´enˇe pˇrehledn´y pro editaci <path d="M20,10 H50 V30 H20 V10" /> [0;0] [20;10] x y [50;10] [20;30] [50;30] <path d="M20,10 h30 v20 h-30 v-20" /> Zápis absolutními souřadnicemi: Analogický zápis s relativními souřadnicemi: Obr´azek 3.4: Element path a pˇr´ıkazy H, V pro vodorovn´e a svisl´e ´useˇcky • C (curve) - n´astroj pro vykreslov´an´ı kubick´e B´ezierovy kˇrivky • S (smooth curve) - n´astroj pro vykreslov´an´ı kubick´e B´ezierovy kˇrivky s hladk´ym napojen´ım, tento typ elementu path je vhodn´y pro vykreslen´ı zaoblen´ych spojit´ych <path d="M20,30 C10,20 40,20 30,30" /> [0;0] x y [20;30] [30;30] [10;20] [40;20] [0;0] x y [20;30] [30;30] [10;20] [40;20] [40;30] [50;40] <path d="M2 0,30 C10,20 40,20 30,30 S50,40 40,30" /> Obr´azek 3.5: Element path a pˇr´ıkazy C,S pro kubickou B´ezierovu kˇrivku kˇrivek, parabol a hyperbol, vyuˇz´ıv´a kotevn´ı body a urˇcen´ı teˇcen ˇr´ıd´ıc´ımi body, sloˇzitˇejˇs´ı tvary jsou utvoˇreny spojen´ım v´ıce kubick´ych B´ezierov´ych kˇrivek formou hladk´eho napojov´an´ı • Q (quadratic B´eziere curve) - sestrojen´ı kvadratick´e B´ezierovy kˇrivky • T (smooth quadratic B´eziere curve) - sestrojen´ı kvadratick´e B´ezierovy kˇrivky s hladk´ym napojen´ım, kvadratick´e B´ezierovy kˇrivky nejsou ve vektorov´ych editorech bˇeˇznˇe vyuˇz´ıv´any, pro uspokojivou aproximaci vyhovuj´ı kubick´e B´ez. kˇrivky Filip Zavadil 13. kvˇetna 2011
  • 29. Kapitola 3. Form´at SVG 20 <path d="M10,10 A30,20 0 0,0 50,40 Z" /> [0;0] x y [10;10] [50;40] 30 20 A 30, 20 0 0, 0 50, 40 hlavní polosa vedlejší polosa rotace (stupně) kratší/delší výseč (0/1) orientace výseče (0/1) x - koncový bod y - koncový bod Obr´azek 3.6: Element path a pˇr´ıkaz arc pro eliptickou v´yseˇc • A (elliptical arc) - eliptick´y oblouk, prvek m´a sice sloˇzitˇejˇs´ı z´apis, ale mohl by b´yt vyuˇz´ıv´an pro tvorbu diagram˚u • Z (close path) - pˇr´ıkaz pro oznaˇcen´ı konce kˇrivky 3.6 Textov´e ˇretˇezce Jedn´ım ze stˇeˇzejn´ıch prvk˚u vektorov´ych grafick´ych form´at˚u je moˇznost implemen- tace textov´ych ˇretˇezc˚u. Ani form´at SVG nez˚ust´av´a v tomto ohledu pozadu a umoˇzˇnuje ˇsirok´e moˇznosti nastaven´ı jeho vykreslen´ı. Tak´e v oboru kartografie je tento prvek hojnˇe pouˇz´ıv´an zejm´ena v popisc´ıch ulic, m´ıstn´ıch n´azv˚u atd. Zde nach´az´ı uplatnˇen´ı veden´ı textu po kˇrivce. 3.6.1 Element text • x,y - souˇradnice bodu, na kter´y je um´ıstˇen´e poˇc´ateˇcn´ı ´uˇcaˇr´ı textu, pˇrid´an´ım atribut˚u dx, dy lze tato pozice jeˇstˇe ” doladit“ • font-size - velikost p´ısma dle jednotek uveden´ych v 3.8 • font-family - rodina p´ısem (serif, sans-serif, cursive, monospace atd.) • font-style - styl p´ısma (normal, italic, oblique) • font-variant - kapit´alky (normal, small-caps) • font-weight - nastaven´ı tuˇcnosti p´ısma (normal, bold, [100-900]) • font-stretch - vodorovn´e roztaˇzen´ı p´ısma • letter-spacing, kerning - nastaven´ı mezery mezi p´ısmeny • word-spacing - mezery mezi slovy • text-decoration - dekorace textu (none, underline, overline, line-through, blink) Filip Zavadil 13. kvˇetna 2011
  • 30. Kapitola 3. Form´at SVG 21 • rotate - otoˇcen´ı kaˇzd´eho p´ısmene o zadan´y ´uhel ve stupn´ıch • textLength - ˇs´ıˇrka, na kterou m´a text rozt´ahnout • lengthAdjust - zp˚usob jak´ym m´a text vyplnit zadanou ˇs´ıˇrku (spacing, spacingAn- dGlyphs) Lorem ipsum L o r e m i p s u m L o r e m i p s u m 1 5 10 L o r e m i p s u m Lorem ipsum Lorem ipsum Lorem ipsumLorem ipsum L o re m ip s u m Lorem ipsum LOREM IPSUM Lorem ipsum Lorem ipsumLorem ipsumLorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum font-family letter-spacing text-decoration rotate text-stretch font-variant font-size font-style text-length Lorem ipsum Lorem ipsum Lorem ipsum font-weight Obr´azek 3.7: Pˇrehled z´akladn´ıch atribut˚u pro pr´aci s textem 3.6.2 Element tspan Uvnitˇr elementu text lze pouˇz´ıt prvek tspan pro ” jemnˇejˇs´ı“ pˇrizp˚usoben´ı ˇc´ast´ı textu. S v´yhodou lze tak´e vyuˇz´ıt relativn´ıch souˇradnic. K dispozici jsou stejn´e atributy jako u elementu text. <text font-weight="bold" font-size="30" fill="black"> Lorem ipsum no laoreet nostrum eum. <tspan dy="15" fill="red"> Etiam euismod efficiantur id sed. </tspan> <tspan dy="40" dx="-800" font-style="italic">Ius ea intellegat mnesarchum.</tspan> <tspan dy="30" rotate="10" fill="none" stroke="blue"> Ea dicta legimus pri, mea fabellas assentior curo.</tspan> </text> Filip Zavadil 13. kvˇetna 2011
  • 31. Kapitola 3. Form´at SVG 22 3.6.3 Element textPath V kartografii uˇz´ıvan´y zp˚usob psan´ı textu pod´el kˇrivky lze v SVG zapsat elemen- tem textPath. Kˇrivka, kter´a nahrazuje ´uˇcaˇr´ı p´ısma, je definov´ana v hlaviˇcce dokumentu v ˇc´asti defs. Zm´ınˇen´a kˇrivka mus´ı tak´e obsahovat identifik´ator, dle kter´eho je jedno- znaˇcnˇe urˇcena. ˇC´ast textPath mus´ı b´yt um´ıstˇena mezi tagy <text>,</text>, kde b´yv´a nastaveno form´atov´an´ı textu. Element textPath m˚uˇze obsahovat atributy: - xlink:href(#id) - povinn´y atribut, adresa kˇrivky - startOffset - odsazen´ı zaˇc´atku textu od zaˇc´atku kˇrivky <defs> <path id="tah" d="M40,70 C0,110 40,150 70,80 S250,20 300,80"/> </defs> <text fill="black" font-family="cursive"> <textPath xlink:href="#tah"> Text vedený po křivce využitelný pro popis linií. </textPath> </text> Text vedený po křivce využitelný pro popi slinií. 3.7 Instrukce pro vykreslov´an´ı Pro spr´avn´e vykreslen´ı nestaˇc´ı pouze uv´est geometrickou podstatu objekt˚u, ale sdˇelit parseru, jak´ym zp˚usobem se m´a prvek vykreslit (viditelnost ˇcar polygon˚u). Lze tak´e na- stavovat pravidla napojov´an´ı hran. 3.7.1 Vlastnosti atributu stroke Vlastnosti tahu se vztahuj´ı ke vˇsem element˚um uveden´ych v 3.4. Tedy jak k ploˇsn´ym objekt˚um, tak i k lini´ım a text˚um. • stroke Samotn´y atribut stroke slouˇz´ı k urˇcen´ı barvy tahu. Jeho hodnoty mohou nab´yvat barev dle 3.7.4. • stroke-width Tento atribut nastavuje tlouˇst’ku ˇc´ary. Hodnotou je ˇc´ıslo s jednotkou uvedenou na obr. 3.8. Pokud je tlouˇst’ka ˇc´ary neud´ana, je pouˇzita implicitn´ı hodnota (1px). Je to ˇcasto vyuˇz´ıvan´y atribut. M˚uˇze b´yt dynamicky nastavov´an v z´avislosti k mˇeˇr´ıtku. V kartografick´em zobrazen´ı je takto nastavena tlouˇst’ka lini´ı (zn´azorˇnuj´ıc´ı jejich kvalitu). 1px 2px 6px5px4px3px Filip Zavadil 13. kvˇetna 2011
  • 32. Kapitola 3. Form´at SVG 23 • stroke-linecap Tento typ urˇcuje jak´ym zp˚usobem m´a b´yt tah ukonˇcen. Hodnoty nab´yvaj´ı tvar˚u: butt, round, square. butt round square • stroke-linejoin Pro urˇcen´ı tvaru napojen´ı jsou k dispozici tyto hodnoty: miter, round, bevel. Pˇri zobrazov´an´ı v mapˇe lze pouˇz´ıt r˚uzn´e hodnoty, v z´avislosti na zobrazovan´em prvku. Napˇr´ıklad pro vykreslen´ı vodn´ıch tok˚u je vhodn´e pouˇz´ıt hodnotu round, ale pro vyobrazen´ı pr˚ubˇehu hranic hodnoty miter. miter round bevel • stroke-miterlimit Nastaven´ı ” ˇspiˇcatosti“ lze prov´est jen pro objekty s stroke-linejoin="miter". Hodnota je zad´ana ˇc´ıslem. V kartografii nen´ı zobrazov´an´ı ” ostr´eho“ napojov´an´ı ˇz´adouc´ı a u prvk˚u s vysokou frakt´aln´ı dimenz´ı by mˇelo ruˇsiv´y efekt. 3 2 7 6 • stroke-dasharray Pro vykreslen´ı pˇreruˇsovan´e ˇc´ary je vyuˇz´ıv´an atribut stroke-dasharray urˇcuj´ıc´ı vzd´alenost jednotliv´ych ˇcar a mezer. Do hodnot lze zapsat vektor libovoln´e veli- kosti, podle kter´eho se kresl´ı ˇc´ary nebo pr´azdn´e mezery. Tento zp˚usob lze vyuˇz´ıt v kartografii pˇri z´akresu osy ˇzeleznice. stroke-dasharray=”20 10” stroke-dasharray=”20 10 5” 20 10 20 10 5 20 10 520 10 • stroke-dashoffset Tato ˇc´ast urˇcuje, v jak´em bodu se m´a zaˇc´ıt s vykreslov´an´ım. stroke-dashoffset=”40”20 10 20 10 40 • stroke-opacity Nepr˚uhlednost tahu je zad´ana ˇc´ıslem v intervalu < 0, 1 >. 1 0.8 0.6 0.4 0.2 Filip Zavadil 13. kvˇetna 2011
  • 33. Kapitola 3. Form´at SVG 24 3.7.2 Vlastnosti atributu fill • fill Barva v´yplnˇe je nastavena v tomto atributu. • fill-rule Pravidlo v´yplnˇe nab´yv´a hodnot: nonzero, evenodd nonzero evenodd • fill-opacity Nastaven´ı nepr˚uhlednosti je nastaveno hodnotami v intervalu < 0, 1 >. 1 0.8 0.6 0.4 0.2 3.7.3 Atributy opacity,display,visibility • opacity Nastaven´ı nepr˚uhlednosti cel´eho objektu nebo skupiny objekt˚u vˇcetnˇe tahu, v´yplnˇe a textu je moˇzn´e nastavit atributem stroke, jehoˇz hodnoty jsou z intervalu < 0, 1 >. Pro odliˇsen´ı nepr˚uhlednosti tahu nebo v´yplnˇe lze samostatnˇe nastavit stroke-opacity ˇci fill-opacity. 1 0.8 0.6 0.4 0.2 • display inline, block, list-item, run-in, compact, marker, table, inline-table, table-row-group, table-header-group, table-footer-group, table-row, table-column-group, tabel-column, table-cell, table-caption, none Objekty mohou b´yt tak´e vyjmuty ze zobrazovan´ı (hodnota ” none“), i kdyˇz se v do- kumentu vyskytuj´ı. T´eto skuteˇcnosti lze vyuˇz´ıt pˇri vyp´ın´an´ı vrstev. Stejn´eho efektu lze dos´ahnout nastaven´ım atributu opacity na hodnotu 1, avˇsak pokud je pro tento objekt nastavena interaktivita, z˚ust´av´a na rozd´ıl od atributu display="none" za- chov´ana. • visibility visible,hidden,collaspse 3.7.4 Barevn´e modely Zp˚usob˚u jak do atribut˚u fill, stroke a podobn´ych zapsat urˇcitou barvu je nˇekolik. Liˇs´ı se pouˇzit´ym barevn´ym modelem a z´apisem. Kromˇe bˇeˇznˇe zn´am´ych barev obsahuje i ty m´enˇe zn´am´e. Filip Zavadil 13. kvˇetna 2011
  • 34. Kapitola 3. Form´at SVG 25 • Color names jsou barvy pojmenov´any anglick´ymi n´azvy. Je to nejsnadnˇejˇs´ı a ˇclovˇeku nejsrozumitelnˇejˇs´ı forma z´apisu. Pˇr´ıklad pouˇzit´ı pro v´yplˇn ” lososovou“ barvou: fill="salmon". aquamarine coral indianredlimegreen gold mistyrose moccasin lightskyblue • RBG je nejpouˇz´ıvanˇejˇs´ı barevn´y model, kde v´ysledn´a barva vznikne aditivn´ım m´ıˇsen´ım tˇr´ı barevn´ych sloˇzek (ˇcerven´a, zelen´a, modr´a). Tento model je pouˇz´ıvan´y v monitorech a projektorech. Hodnota R,G,B kan´al˚u je zapsan´a 8-bitov´ymi cel´ymi ˇc´ısly v intervalu < 0, 255 >. Hodnoty lze odeˇc´ıst na barevn´e krychli. Z´apis je pro- veden jako RGB() funkce se tˇremi ˇc´ıseln´ymi hodnotami: fill="RGB(240,32,12)". Moˇzn´y je tak´e hexadecim´aln´ı z´apis (HEX), sestaven´y ze tˇr´ı dvojic alfanumerick´ych znak˚u uvozen´ych znakem ‘#’ (fill="#F0200C"). rgb(0,0,0)rgb(255,255,255) rgb(255,0,0) rgb(0,255,0) rgb(0,0,255) rgb(255,0,255) rgb(0,255,255)rgb(255,255,0) • RGBa m´a obdobn´y z´apis jako pˇredchoz´ı RGB model, kde ˇctvrt´y parametr nasta- vuje alpha kan´al (nepr˚uhlednost). Pˇr´ıklad pouˇzit´ı: fill="RGBa(255,0,255,0.4)", kde α-kan´al je reprezentov´an hodnotou typu float v intervalu < 0, 1 >. • HSL (Hue Saturation Lightness) urˇcuje barvu dle barevn´eho kruhu, sytosti a odst´ınu. - Hue je ´uhel (ve stupn´ıch) na barevn´em kruhu. < 0, 360 > [ve stupn´ıch] - Saturation (sytost) barev je nastavena procenty. (100% - nejsytˇejˇs´ı barvy) - Lightness (svˇetlost) je ud´ana tak´e procenty. (100% odpov´ıd´a b´ıl´e barvˇe, 0% ˇcern´e barvˇe) Tohoto modelu lze vyuˇz´ıt pˇri tvorbˇe kartogramu, kdy svˇetlost barvy (lightness) ´uzem´ı je nastavena dle hodnot z tabulky. V dobˇe psan´ı pr´ace tento model bohuˇzel jeˇstˇe nepodporovaly vˇsechny prohl´ıˇzeˇce. Pˇr´ıklad z´apisu: fill="HSL(130,80%,30%)". • HSLa je obdoba modelu HSL, kde je jako ˇctvrt´y parametr hodnota α-kan´alu. 0° 180° 90°270° HSL(90,100%,70%) HSL(300,70%,50%) HSL(210,60%,80%) HSL(350,70%,90%) HSL(50,100%,90%) HSLa(300,70%,50%,0.7) HSLa(350,70%,90%,0.4) Filip Zavadil 13. kvˇetna 2011
  • 35. Kapitola 3. Form´at SVG 26 3.8 Souˇradnicov´y syst´em a jeho transformace Scalable Vector Graphics ˇcesky znamen´a ” ˇsk´alovateln´a vektorov´a grafika“ a proto tak´e form´at SVG nab´ız´ı r˚uzn´e typy transformac´ı. K jejich popisu se bude vhodn´e nejprve sezn´amit se souˇradnicov´ym syst´emem, jak ho ch´ape SVG. V z´avislosti se zaˇzit´ymi kon- vencemi v poˇc´ıtaˇcov´e grafice a zobrazovac´ıch zaˇr´ızen´ıch byl zvolen souˇradnicov´y syst´em s poˇc´atkem v severoz´apadn´ım rohu. 1 2 3 4 5 6 7 [5;4] 0 x y 1 2 3 4 5 6 8 9 10 používané délkové jednotky: (pixels) pixely (implicitní hodnota) (points) body (centimeters) centimetry (milimetres) milimetry (inches) palce (current font size) velikost aktuálního fontu (x-height) velikost písmene x (pica) [: pajka :], 1 pica = 12 points (percent) procenta vůči zobrazované oblasti px pt cm mm in em ex pc % Obr´azek 3.8: Pˇrehled souˇradnicov´eho syst´emu a d´elkov´ych jednotek 3.8.1 Atribut transform Do vˇetˇsiny element˚u, poˇc´ınaje t´ım koˇrenov´ym <svg>, lze zapsat atribut transform, se kter´ym je moˇzno prov´adˇet transformace souˇradnic. Tento fakt nahr´av´a pouˇzit´ı SVG ke kartografick´ym ´uˇcel˚um, kde se transformace vyuˇz´ıvaj´ı velmi ˇcasto. K dispozici je nˇekolik typ˚u: translace, rotace nebo zkosen´ı. Vˇsechny tyto typy lze zahrnout do jednoho prvku pomoc´ı transformaˇcn´ı matice. • translate (translace) transform="translate(20,10)" x y x’ y’ 20 10 Pro posun objekt˚u lze pouˇz´ıt funkci translate. Jej´ı argumenty jsou souˇradnice bodu, na kter´y m´a b´yt poˇc´atek transformovan´e soustavy um´ıstˇen. Lze vyuˇz´ıt pro pozicov´an´ı symbol˚u, kter´e jsou zaps´any v m´ıstn´ı soustavˇe. • rotate (rotace) transform="rotate(30)" x y x’ y’ Pootoˇcen´ı poˇc´atku SS se prov´ad´ı funkc´ı rotate(). ´Uhel je zad´av´an ve stupn´ıch a m˚uˇze nab´yvat z´aporn´ych hodnot (protismˇer hodinov´ych ruˇciˇcek). Jedn´a se tak´e o ˇcasto pouˇz´ıvanou transfor- maci, napˇr. pootoˇcen´ı textu v n´azvech ulic. Filip Zavadil 13. kvˇetna 2011
  • 36. Kapitola 3. Form´at SVG 27 • skew (zeˇsikmen´ı) transform="skewX(-50)" x y x’ y’ -50° Funkce m´a dva tvary z´apisu, skewX() pro zkreslen´ı na ose X a skewY() pro zkreslen´ı na ose y. V obou pˇr´ıpadech jako argument vstupuj´ı stupnˇe vych´ylen´ı zvolen´e osy od osy p˚uvodn´ı. V kartografii nenach´az´ı pˇr´ım´e uplatnˇen´ı. • scale (mˇeˇr´ıtko) transform="scale(2,0.5)" x y x’ y’ Vhodn´a a uˇziteˇcn´a funkce scale() urˇcuje zvˇetˇsen´ı nebo zmenˇsen´ı ob- jekt˚u. Promˇenn´a je bezrozmˇern´a jed- notka a urˇcuje n´asobek, kter´ym se souˇradnicov´y syst´em n´asob´ı. Funkce je pˇret´ıˇzen´a, lze tedy zad´avat jak je- den argument pro zmˇenu mˇeˇr´ıtka obou os, nebo dva argumenty pro kaˇzdou osu zvl´aˇst’. Zmˇena mˇeˇr´ıtka je vztaˇzena nejen na geometrii, ale i na styl vy- kreslov´an´ı. V aplikaci je tato funkce vyuˇz´ıv´ana mimo jin´e i k ” zoomov´an´ı“. • matrix (transformaˇcn´ı matice) Pro obecn´y popis je vhodn´y z´apis pomoc´ı transformaˇcn´ı matice. Pro kaˇzd´y v´yˇse zm´ınˇen´y prvek existuje i varianta zapsan´a pomoc´ı funkce matrix(). N´asoben´ım matic lze dos´ahnout kombinaci jednotliv´ych transformaˇcn´ıch ˇcinitel˚u (transformace prob´ıh´a ve stejn´em poˇrad´ı jako n´asoben´ı matic). Aby se matice mohly n´asobit a byly ˇctvercov´eho typu, je jako posledn´ı ˇr´adek pˇrid´an vektor (0,0,1). V kartografii se transformaˇcn´ı matice vyuˇz´ıvaj´ı zejm´ena pro georeferencov´an´ı. transform="matrix(a,b,c,d,e,f)" 1 0 tx 0 1 ty 0 0 1 sx 0 0 0 sy 0 0 0 1 matrix(1,0,0,1,tx,ty) translate(tx,ty) translace matrix(sx,0,0,sy,0,0) scale(sx,sy) měřítko cos(α) -sin(α) 0 sin(α) cos(α) 0 0 0 1 matrix(cos(α),sin(α),-sin(α),cos(α),0,0) rotate(α) rotace 1 tan(α) 0 0 1 0 0 0 1 1 0 0 tan(α) 1 0 0 0 1 matrix(1,tan(α),0,1,0,0) skewY(α) zešikmení dle osy ‚y‘ matrix(1,0,tan(α),1,0,0) skewX(α) zešikmení dle osy ‚x‘ a c e b d f 0 0 1 obecná tranformační matice Filip Zavadil 13. kvˇetna 2011
  • 37. Kapitola 3. Form´at SVG 28 3.9 Rastr v SVG Jak jiˇz bylo zm´ınˇeno dˇr´ıve, SVG umoˇzˇnuje nejen vkl´adat a ukl´adat rastrovou grafiku, ale nab´ız´ı i moˇznosti editace typu transformace nebo aplikaci pˇreddefinovan´ych filtr˚u. Jelikoˇz se i v modern´ıch digit´aln´ıch kartografick´ych prac´ıch poˇc´ıt´a s rastrov´ym vyj´adˇren´ım (v podobˇe ortofotomap nebo st´ınovan´eho reli´efu), nalezne i rastrov´y form´at sv´e uplatnˇen´ı. 3.9.1 Element image Vloˇzen´ı obr´azku elementem image je provedeno obdobn´ym zp˚usobem jako v HTML. Lze vyuˇz´ıt tyto z´akladn´ı atributy: - x,y - souˇradnice, na kter´e bude um´ıstˇen prav´y horn´ı roh obr´azku - width,height - velikost vkl´adan´eho obr´azku - xlink:href - absolutn´ı/relativn´ı cesta k obr´azku Pro vloˇzen´ı obr´azku pˇr´ımo do dokumentu lze vyuˇz´ıt k´odov´an´ı Base64 (pˇrevod bin´arn´ıch dat na znaky ASCII). Rastrov´y obr´azek v bin´arn´ı formˇe lze po pˇrek´odov´an´ı na ACSII vloˇzit do dokumentu t´ımto zp˚usobem: xlink:href="data:image/jpeg;base64, ...", kde m´ısto teˇcek je dosazen samotn´y k´od. Rastrov´y objekt lze transformovat atribu- tem transform, kde jsou k dispozici vˇsechny typy transformac´ı. Tohoto faktu lze vyuˇz´ıt tˇreba pˇri georeferencov´an´ı rastrov´eho podkladu mapy. <image x="40" y="50" width="512" height="512" xlink:href="Lenna.bmp" /> <circle cy="160" cx="160" r="130" fill="red" opacity="0.3"/> <circle cy="160" cx="440" r="130" fill="green" opacity="0.3"/> <circle cy="160" cx="305" r="130" fill="blue" opacity="0.3"/> Obr´azek 3.9: Uk´azka pouˇzit´ı rastrov´ych obrazov´ych dat 3.9.2 Element filter Na SVG objekty lze aplikovat rastrov´e filtry zn´am´e z editor˚u jako jsou Adobe Photo- shop, Gimp atd. D˚uvod proˇc na vektorovou grafiku pouˇz´ıvat rastrov´e filtry je jednoduch´y. Rastrov´a reprezentace sloˇzit´ych, rozmanit´ych a ˇclenit´ych obrazov´ych dat je v´yhodnˇejˇs´ı na v´ypoˇcet i na vykreslen´ı. Je d˚uleˇzit´e zm´ınit, ˇze ˇsk´alov´an´ı (zmˇena mˇeˇr´ıtka) nem´a na v´ysledn´e vyobrazen´ı vliv (v podobˇe ztr´aty kvality), jelikoˇz doch´az´ı k nov´emu v´ypoˇctu prvk˚u pro kaˇzdou hladinu. I kdyˇz pˇr´ıliˇsn´e zdoben´ı prvk˚u v mapˇe m´a ruˇsiv´y r´az, s drobn´ymi a rozv´aˇzn´ymi efekty lze pˇrispˇet ke zdokonalen´ı vizu´aln´ı i informaˇcn´ı hodnoty v´ysledn´e pr´ace. Filtry se daj´ı aplikovat nejen na geometrick´e tvary a texty, ale i na rastrov´e obr´azky. Filip Zavadil 13. kvˇetna 2011
  • 38. Kapitola 3. Form´at SVG 29 Element filter (zapsan´y v hlaviˇcce v ˇc´asti defs) slouˇz´ı jako kontejner pro z´apis posloupnosti efekt˚u. Obsahuje jedin´y atribut id slouˇz´ıc´ı jako identifik´ator. K pouˇzit´ı exis- tuje mnoho element´arn´ıch filtr˚u, ze kter´ych lze dos´ahnout k´yˇzen´eho v´ysledku. Pˇrehled z´akladn´ıch filtr˚u1 : • feBlend Nastaven´ı zp˚usobu prol´ın´an´ı obraz˚u. K dispozici jsou tyto prol´ınac´ı reˇzimy: Normal, Multiply, Screen, Darken, Lighten. Jedn´a se o v´ypoˇcet nov´e barevn´e hodnoty ˇc´ast´ı obr´azk˚u, kter´e se pˇrekr´yvaj´ı. Pro kartografick´e ´uˇcely nen´ı tento filtr vyuˇz´ıv´an. • feColorMatrix Jednou z moˇznost´ı jak ovlivnit barevnost cel´eho v´ysledn´eho obrazu je pouˇzit´ı tohoto filtru. Barevnou matic´ı lze upravovat jas, transparentnost nebo posouvat barevn´e spektrum. Je moˇzno pouˇz´ıt nˇekolik typ˚u nastaven´ı: - matrix (obecn´a barevn´a matice), - saturate (´uprava jasu, kdy hodnoty leˇz´ı v intervalu < 0, 1 >), - hueRotate (barevn´e spektrum, hodnoty stupnˇe na barevn´em kruhu z model˚u HSL nebo HSV), - luminanceToAlpha (transparentnost je nastavena podle jasu bodu, bez hod- noty) • feComponentTransfer V grafick´ych editorech je vyuˇz´ıv´an histogram jasu, kter´y umoˇzˇnuje dle kˇrivky na- stavit pomˇer jasu a kontrastu. Histogram je moˇzn´e upravovat pro kan´aly RGBA zapisovan´e feFuncR, feFuncG, feFuncB a feFuncA. Z´apis vztah˚u do r˚uzn´ych kan´al˚u atributem type s parametry: - identity - je pouˇzita p˚uvodn´ı kompozitn´ı barva - table - podle hodnot v atributu tableValues je provedena line´arn´ı interpolace kˇrivky - discrete - kˇrivka sestavena z diskr´etn´ıch hodnot z parametr˚u atributu tableValues - linear - kˇrivka nahrazena pˇr´ımkou, kter´a je urˇcena atributy slope (sklon ve stupn´ıch) a intercept (posun na svisl´e ose) - gamma - kˇrivka urˇcena hodnotou amplitudy (atribut apmlitude), exponentu (exponent) a svisl´ym posunem (offset) • feComposite, feMerge R˚uzn´e reˇzimy sluˇcov´an´ı rastr˚u dle algoritmu Porter-Duff. • feConvolveMatrix V´ypoˇcet hodnoty pixelu v z´avislosti k sousedn´ım prvk˚um a parametry matice. Ma- tice (kernel) postupnˇe proch´az´ı obrazem a pˇrepoˇc´ıt´av´a hodnoty. Matice obsahuje m×n prvk˚u. V´ysledek je ovlivnˇen velikost´ı kernelu a jeho parametry. T´ımto filtrem je moˇzn´e prov´adˇet ´ulohy typu rozostˇren´ı, zostˇren´ı, detekce hran atd. Zn´am´a je apli- kace na data z´ıskan´a d´alkov´ym pr˚uzkumem Zemˇe. Na stejn´em principu je stavˇena ˇrada dalˇs´ıch bitmapov´ych operac´ı. Matice je urˇcena z´akladn´ımi atributy: 1 ´upln´y pˇrehled filtr˚u na http://www.w3.org/TR/SVG11/filters.html Filip Zavadil 13. kvˇetna 2011
  • 39. Kapitola 3. Form´at SVG 30 - order - rozmˇer matice - kernelMatrix - po ˇr´adc´ıch zaps´any prvky matice - bias - konstanta, kter´a je pˇriˇctena k v´ysledn´e hodnotˇe pixelu - edgeMode - pravidla pro poˇc´ıt´an´ı krajn´ıch pixel˚u, kdy sousedn´ı prvky neexis- tuj´ı, parametry: duplicate (duplikace okrajov´ych bod˚u), wrap (jsou pouˇzity hodnoty z protilehl´eho konce bitmapy), none (pouˇzity nulov´e hodnoty) - kernelUnitLength - velikost buˇnky matice, implicitnˇe je rovna jednomu pixelu - preserveAlpha - zachov´an´ı transparentnosti nastaven´ım atributu na ” true“ • feGaussianBlur Velmi vyuˇz´ıvan´ym filtrem je gaussovsk´e rozostˇren´ı. Je to forma aplikace kernelu o urˇcit´ych parametrech. Atributem stdDeviation je nastavena standardn´ı odchylka tedy ” velikost“ rozostˇren´ı. Moˇzn´e je nastaven´ı odchylky pro kaˇzdou osu. Zaj´ımav´e je pouˇzit´ı tohoto filtru pro liniov´e prvky (napˇr. odliˇsen´ı cyklotras od turistick´ych), kdy vzr˚ust´a ˇcitelnost mapy. • feTile Vyplnˇen´ı objektu vzorkem (rastr/vektor). Obsahuje atributy x, y, width, height (um´ıstˇen´ı a velikost vzorku) a pro extern´ı vzorky atribut xlink:href. • feFlood Vyplnˇen´ı vzorku barvou. Analogie atributu fill i pro rastrov´a data. Nab´ız´ı i moˇznost nastaven´ı pr˚uhlednosti. Obsahuje atributy flood-color (barva v´yplnˇe) a flood-opacity (nepr˚uhlednost v intervalu < 0, 1 >). • feTurbulence Pˇrid´an´ım ˇsumu takzvanou Perlin funkc´ı lze dos´ahnout vzniku textury jako jsou oblaka ˇci mramor. Zvolen´y typ lze urˇcit atributy: - type - hodnotou fractalNoise je generov´an ˇsum a hodnotou turbulence v´ıˇren´ı - baseFrequency - frekvence ˇsumov´e funkce m˚uˇze b´yt pro kaˇzdou osu odliˇsn´a - numOctaves - poˇcet period - seed - startovn´ı ˇc´ıslo gener´atoru n´ahodn´eho ˇsumu • feDisplacementMap Filtr zajiˇstuj´ıc´ı deformace obrazu. • feImage N´astroj pro vloˇzen´ı extern´ıho grafick´eho souboru. Obdobn´y z´apis jako SVG element image (cesta k souboru atributem xlink:href). Nab´ız´ı i moˇznost vloˇzit dalˇs´ı SVG obr´azek. • feMorphology Prov´ad´ı zes´ılen´ı (ztuˇcnˇen´ı) nebo ztenˇcen´ı prvku. Nastaven´ı je provedeno atributy: operator (parametr erode pro z´uˇzen´ı a diletate pro ztuˇcnˇen´ı) a radius urˇcuje jejich rozsah (velikost). Filip Zavadil 13. kvˇetna 2011
  • 40. Kapitola 3. Form´at SVG 31 • feOffset Posun prvku v ose x, y. Atributy dx,dy pro zad´an´ı posunu. Filtr nahraditeln´y atributem transform="translate(dx,dy)". • feSpecularLighting feDiffuseLighting Filtry vyuˇz´ıvaj´ıc´ı Phong˚uv osvˇetlovac´ı model zejm´ena pro re´aln´e vykreslen´ı 3D gra- fiky. • feDistantLight, fePointLight, feSpotLight Druhy osvˇetlen´ı (smˇerov´e, bodov´e, reflektor). <defs> <filter id="stin"> <feGaussianBlur stdDeviation="5" /> <feOffset dx="7" dy="7"/> </filter> </defs> ... <rect filter="url(#stin)" x="10" y="330" rx="10" width="200" height="200" fill="black" /> <rect x="10" y="330" rx="10" width="200" height="200" fill="#4FA0BA" stroke="black" stroke-width="2"/> <text filter="url(#stin)" font-style="serif" x="75" y="515" font-weight="bold" font-size="250" opacity="0.8" fill="black"> i </text> <text font-style="serif" x="75" y="515" font-weight="bold" font-size="250" fill="white"> i </text> Obr´azek 3.10: Praktick´e vyuˇzit´ı filtr˚u pro symbol informaˇcn´ıch center 3.10 Atributov´a data V geografick´ych informaˇcn´ıch syst´emech (GIS) jsou obsahov´e informace geogra- ficky urˇceny. Vˇetˇsinou se jedn´a o soubor popisuj´ıc´ı geometrickou sloˇzku a dalˇs´ı popi- suj´ıc´ı atributov´a data. Ta jsou vˇetˇsinou v urˇcit´em datab´azov´em syst´emu. Jelikoˇz byl form´at XML p˚uvodnˇe urˇcen jako nositel informac´ı, je v´ıce neˇz vhodn´e pouˇz´ıt tento form´at k uloˇzen´ı atributov´ych dat. Ke kaˇzd´emu SVG elementu lze zapsat libovoln´y atribut. Pˇr´ıklad z´apisu n´azvu komunikace: <path typ="d´alnice" d="..."/>. Pˇridan´e atributy, kter´e se nez´uˇcastˇnuj´ı vykreslov´an´ı, je vhodn´e definovat v DTD, ˇc´ımˇz bude zaruˇcena bez- chybovost dokumentu. 3.11 Metadata Metadata lze interpretovat jako ” data o datech“. Popisuj´ı informace obsaˇzen´e v do- kumentu. Je to bˇeˇzn´y prvek, kter´y je pouˇz´ıv´an pro pops´an´ı obsahu. Jedn´a se zejm´ena o p˚uvod obsahu, rok jeho vzniku, ´udaje o autorovi nebo platnosti dat. V GIS syst´emech jsou popisov´any geometrick´e i atributov´e prvky. Jedn´a se o popis a urˇcen´ı souˇradn´eho syst´emu, zp˚usobu poˇr´ızen´ı dat, informace o zhotoviteli atd. Jedn´ım z nejvhodnˇejˇs´ım a z´aroveˇn nejpouˇz´ıvanˇejˇs´ım form´atem pro z´apis metadat je pr´avˇe XML se svou hierarchickou Filip Zavadil 13. kvˇetna 2011
  • 41. Kapitola 3. Form´at SVG 32 strukturou. Proto data obsaˇzen´a v SVG form´atu nemus´ı b´yt pouh´a obrazov´a data, ale mo- hou n´est i informaci o referenˇcn´ım syst´emu. Tyto informace jsou zapisov´any do elementu metadata. N´asleduj´ıc´ı k´od je pˇrevzat ze str´anek W3C.org2 a popisuje pouˇzit´ı definovan´eho geografick´eho syst´emu souˇradnic podle k´odu EPSG. V uk´azce je vyuˇzit model pro z´apis metadat RDF (Resource Description Framework). <metadata> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:crs="http://www.ogc.org/crs" xmlns:svg="http://www.w3.org/2000/svg"> <rdf:Description rdf:about=""> <!-- In case of a well-known Coordinate Reference System an ’Identifier’ is enough to describe the CRS --> <crs:CoordinateReferenceSystem svg:transform="rotate(-90) scale(2,2)"> <crs:Identifier> <crs:code>4326</crs:code> <crs:codeSpace>EPSG</crs:codeSpace> <crs:edition>5.2</crs:edition> </crs:Identifier> </crs:CoordinateReferenceSystem> </rdf:Description> </rdf:RDF> </metadata> 2 http://www.w3.org/TR/SVG/coords.html#GeographicCoordinates Filip Zavadil 13. kvˇetna 2011
  • 42. Kapitola 4. Stylov´e jazyky 33 Kapitola 4 Stylov´e jazyky XML jako form´at je nositelem obsahu, kter´y by mˇel b´yt oddˇelen od formy, aby v nˇem obsaˇzen´e informace mohly b´yt prezentov´any v´ıce zp˚usoby. Napˇr´ıklad jin´y v´ystup bude urˇcen pro tisk, jin´y pro internet nebo grafickou vizualizaci. Metodu jak toho dos´ahnout poskytuj´ı stylov´e jazyky CSS (Cascade Style Sheets) a XSL (XML Style Language). Tyto jazyky jsou samozˇrejmˇe dostupn´e i pro XML dialekty SVG nevyj´ımaje. 4.1 CSS Kask´adov´e styly jsou zn´amy jiˇz delˇs´ı dobu ve spojen´ı s HTML, kde se trvale us´ıdlily. Nyn´ı se o v´yvoj star´a W3C a v dobˇe psan´ı t´eto pr´ace se pracuje na verzi CSS31 . Vlast- nosti a chov´an´ı element˚u se definuj´ı ve stylov´em souboru, kter´y m˚uˇze b´yt intern´ı (souˇc´ast dokumentu) nebo extern´ı (samostatn´y soubor). Jednoduch´a uk´azka CSS jazyka bude pˇredvedena na pˇr´ıkladu 2.7. bod font-size: 20pt; text-align: center; font-weight: bold; color: red; N´azv˚um element˚u bod a souradnice se v CSS ˇr´ık´a selektory. Ty urˇcuj´ı k jak´ym element˚um se budou uveden´e vlastnosti vztahovat. Pˇrehled nejd˚uleˇzitˇejˇs´ıch selektor˚u je uveden v tabulce 4.1. Vztahu rodiˇc — potomek, lze s v´yhodou pouˇz´ıt i pˇri stylov´an´ı SVG. Zdrojov´y soubor s koncovkou ‘.svg’ m˚uˇze n´est pouze geometrick´e vyj´adˇren´ı, pˇriˇcemˇz instrukce pro vykreslov´an´ı mohou b´yt uvedeny v jin´e ˇc´asti dokumentu nebo i v jin´em souboru. D´ale lze ty sam´e prvky rozliˇsovat pomoc´ı tˇr´ıd (class) nebo identifik´atoru (id). Tato skuteˇcnost je velice v´yhodn´a pro kartografick´e ´uˇcely. Kdy doch´az´ı k zohlednˇen´ı kvalitativn´ıch prvk˚u (ˇs´ıˇrka vodn´ıho toku). Definov´an´ım CSS stylov´eho souboru lze utvoˇrit jazyk mapy, kter´y m˚uˇze b´yt jednoduˇse upraven nebo nahrazen, aniˇz by to mˇelo vliv na polohovou spr´avnost. Dokonce lze tento styl i dynamicky mˇenit (pouˇzit´ım JavaScriptu). Mezi prvky, kter´e by mohly b´yt vyuˇzity pro kartografick´e ´uˇcely patˇr´ı: 1 http://www.w3.org/Style/CSS/ Filip Zavadil 13. kvˇetna 2011
  • 43. Kapitola 4. Stylov´e jazyky 34 • barva Umoˇzˇnuje nastaven´ı barvy do atribut˚u stroke a fill. K dispozici jsou barevn´e modely uveden´e v 3.7.4. • definice tahu Vykreslen´ı tahu lze v CSS upravit pouˇzit´ım atribut˚u jako stroke-width, stroke-linejoin, stroke-dasharray • styl popisu Velikost p´ısma, jeho typ a styl lze CSS nastavit pouˇzit´ım selektor˚u font-weight, font-family, font-style Zp˚usob˚u jak pouˇz´ıt CSS stylov´an´ı je nˇekolik. Jedn´ım z nich je pouˇzit´ı v dokumentu internˇe. Pokud je CSS definov´an externˇe, je nutn´e v dokumentu urˇcit url CSS souboru t´ımto zp˚usobem: <?xml-stylesheet href="soubor.css" type="text/css"?> bod.II element bod, který má atribut class nastaven na “II” selektor výběr * všechny elementy bod všechny elementy bod bod souradnice elementy souradnice, které jsou potomkem el. bod bod > souradnice analogický zápis: bod souradnice souradnice[system] elementy souradnice, která mají atribut system souradnice[systém="EPSG:9221"] elementy souradnice, s atributem systém: S-JTSK bod#4001 element bod, který má ID 4001 Tabulka 4.1: Pˇr´ıklady pouˇzit´ı selektor˚u v CSS 4.2 XSL Dalˇs´ım ze stylov´ych jazyk˚u je XSL (eXtensible Stylesheet Language), ˇcasto t´eˇz ve tvaru XSLT (eXtensible Stylesheet Language Transformation). Pˇrin´aˇs´ı trochu odliˇsn´y zp˚usob neˇz pˇredchoz´ı CSS, kdy se ” stylov´an´ı“ prov´ad´ı podle pˇredem definovan´ych ˇsablon. V´ysledn´y dokument je sestaven programem, kter´emu se ˇr´ık´a XLST Processor. Mezi nejzn´amˇejˇs´ı patˇr´ı Saxon2 od Michaela Kaye a Xalan3 (Apache project). Oba jsou napsan´e v jazyce Java(Xalan je implementov´an i v C++). Dnes je jiˇz standardem, ˇze internetov´e prohl´ıˇzeˇce maj´ı takov´y XSLT procesor implementov´an. XSL nab´ız´ı moˇznost pouˇzit´ı XPath v´yraz˚u, kter´e umoˇzˇnuj´ı nejen navigaci ve zdrojov´em dokumentu, ale i logick´e ˇr´ızen´ı [Her10]. V´yvoj XSL je pˇribliˇznˇe stejnˇe dlouh´y jako SVG. XSL z´ıskalo W3C doporuˇcen´ı v listopadu 1999. Jmenn´y prostor je deklarov´an t´ımto zp˚usobem: <xsl:stylesheet version="1.2" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 2 http://sourceforge.net/projects/saxon 3 http://xalan.apache.org/ Filip Zavadil 13. kvˇetna 2011
  • 44. Kapitola 4. Stylov´e jazyky 35 Zp˚usob jak prob´ıh´a transformace je zˇrejm´y na obr´azku 4.1. Jeden ˇci v´ıce XML soubor˚u vstupuj´ı spoleˇcnˇe se stylov´ym souborem (koncovka .xsl) do XSLT procesoru na jehoˇz v´ystupu je dokument libovoln´eho typu. M˚uˇze to b´yt dalˇs´ı XML, HTML, TXT nebo SVG dokument. V´ystupn´ıch dokument˚u m˚uˇze b´yt tak´e v´ıce, pro r˚uzn´e typy zaˇr´ızen´ı (obrazovka, tisk´arna atd.) xml xsl xsl processor svg xml html Obr´azek 4.1: Princip XSL transformac´ı Extern´ı stylov´y soubor je definov´an obdobn´ym zp˚usobem jako v CSS. Dan´y k´od odkazuje na XSL soubor sablona.xsl: <?xml-stylesheet type="text/xsl" href="sablona.xsl"?> Jak uˇz bylo ˇreˇceno v´yˇse, transformace je prov´adˇena podle ˇsablon, kter´e se zapisuj´ı mezi tagy <xsl:template match="/" > </ xsl:teplate >. Znak ‘/’ oznaˇcuje koˇrenov´y (root) element, na kter´y bude ˇsablona aplikov´ana. M´ısto toho znaku m˚uˇze b´yt jak´ykoliv platn´y Xpath v´yraz, kter´y oznaˇcuje urˇcit´y uzel v dokumentu. V´ıce o moˇznostech adre- sov´an´ı v 4.2.3. 4.2.1 Hlaviˇcka XSL Kromˇe povinn´eho uveden´ı jmenn´eho prostoru a verze v elementu xsl:stylesheet je vhodn´e tak´e specifikovat v´ystupn´ı form´at pomoc´ı elementu xsl:output. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"> <xsl:output method="xml" version="1.2" encoding="windows-1250" doctype-public="-//W3C//DTD SVG 1.1//EN" doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" indent="yes" omit-xml-declaration="yes" media-type="image/xml+svg"/> ... obsah stylového dokumentu ... </xsl:stylesheet> Atribut method urˇcuje typ v´ystupn´ıho form´atu, uˇzit´e k´odov´an´ı je specifikov´ano v atributu encoding. N´asleduj´ı atributy doctype-public a doctype-system popisuj´ıc´ı definice typu v´ystupn´ıho dokumentu. Zarovn´an´ı k´odu dle XML pravidel je nastaveno atributem indent s parametrem yes. Atribut omit-xml-declaration="yes" zaruˇcuje vytisknut´ı klasick´e XML deklarace. Jako posledn´ı je v uk´azce uveden atribut media-type popisuj´ıc´ı typ (MIME, Content-type) v´ystupn´ıho dokumentu. Filip Zavadil 13. kvˇetna 2011
  • 45. Kapitola 4. Stylov´e jazyky 36 4.2.2 Element xsl:value-of Zp˚usob jak z´ıskat hodnotu elementu nebo atributu, je pouˇzit´ı tagu value-of ve jmenn´em prostoru xsl. Povinn´y atribut select, zajiˇst’uje uveden´ı pˇresn´e polohy a n´azvu uzlu. <xsl:value-of select="jmeno"/> Jedn´a se o nejv´ıce vyuˇz´ıvan´y element, jeho pouˇzit´ı je uk´az´ano na obr´azku 4.2. <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template math="/"> <html> S-JTSK: <xsl:value-of select="bod/souradnice"> [Y,X](m) </html> </xsl:teplate> </xsl:stylesheet> <?xml version="1.0" encoding="cp1200"?> <?xml-stylesheet type="text/xsl" href="styl.xsl"?> <bod cislo="4001"> <souradnice system="EPSG:5221"> 744903.16 , 1040716.70 </souradnice> </bod> <html> S-JTSK: 744903.16 , 1040716.70 [Y,X](m) </html> vstup xml vstup xsl výstup html Obr´azek 4.2: Pˇrehled vstupn´ıch a v´ystupn´ıch souboru XSL transformac´ı 4.2.3 XPath v´yrazy Hierarchick´a struktura XML dokumentu je zprostˇredkov´ana pomoc´ı tzv. uzl˚u (no- des). Pro ” cestov´an´ı“ po takov´ych uzlech jsou vyuˇz´ıv´any XPath identifik´atory. D´ıky dˇediˇc- n´ym vztah˚um (rodiˇc — potomek) se lze jednoduˇse odkazovat na vnoˇren´e elementy. Z´akladn´ı osy, kam je moˇzno adresovat jsou tyto: (pˇr´ıklady se vztahuj´ı k uk´azkov´emu xml dokumetu, kdy je aktu´aln´ı uzel element bod)[Wil09]: <mereni> <bod cislo="4001"> <souradnice system="EPSG:5221"> 744903.16 , 1040716.70 </souradnice> <popis encoding="utf-8" delka="90"> Bod se nachází 2m jižně od ... </popis> </bod> </mereni> aktuální uzel mereni popissouradnice bod aktuální uzel • absolutn´ı/relativn´ı cesta (aktu´aln´ı element bod) - /bod/popis/ ⇒ absolutn´ı cesta k elementu popis Filip Zavadil 13. kvˇetna 2011
  • 46. Kapitola 4. Stylov´e jazyky 37 - popis/ ⇒ relativn´ı cesta k elementu popis • koˇrenov´y element - / ⇒ koˇrenov´y element mereni • pˇredek - identifik´ator: parent, ancestor, ancestor-or-self - ../mereni, parent::bod, /, ancenstor::bod ⇒ vybere element mereni • potomek - identifik´ator: child, descendant, descendant-or-self - /bod/souradnice/, souradnice/ ⇒ vybere element souradnice - descendant::bod, child::bod ⇒ vybere elementy souradnice, popis - descendant-or-self::bod ⇒ vybere elementy bod, souradnice, popis - //popis ⇒ vyhled´a elementy popis v libovoln´e hloubce • sourozenec - identifik´ator: preceding-sibling, preceding, following - /mereni/bod/popis/, popis/, following::souradnice ⇒ vybere element popis - /mereni/bod/souradnice/, souradnice/, preceding::popis ⇒ vybere ele- ment souradnice • s´am na sebe - identifik´ator: self - ., self::node() ⇒ vybere element bod • atribut - identifik´ator: attribute, @ - popis/attribute::encoding, popis/@encoding ⇒ zjist´ı hodnotu atributu encoding (utf-8) - popis[@encoding] ⇒ vybere vˇsechny elementy popis, kter´e maj´ı atribut encoding • index Pokud by element bod obsahoval v´ıce element˚u popis, je moˇzn´e k nim pˇristupovat pomoc´ı index˚u: - /bod/popis[1] ⇒ vr´at´ı prvn´ı element popis - /bod/popis[last()] ⇒ vr´at´ı posledn´ı element popis • logick´a podm´ınka Filip Zavadil 13. kvˇetna 2011