SlideShare a Scribd company logo
1 of 61
Download to read offline
ˇCesk´e vysok´e uˇcen´ı technick´e v Praze
Fakulta stavebn´ı
Software pro zobrazov´an´ı a export
mapov´ych dlaˇzdic
DIPLOMOV´A PR´ACE
Praha, 2013 Autor: Filip Zavadil
ˇCesk´e vysok´e uˇcen´ı technick´e v Praze
Fakulta stavebn´ı
DIPLOMOV´A PR´ACE
Software pro zobrazov´an´ı a export
mapov´ych dlaˇzdic
Software for displaying and exporting map
tiles
Vedouc´ı pr´ace: Ing. Jiˇr´ı Cajthaml, Ph.D.
Praha, 2013 Autor: Filip Zavadil
Prohl´aˇsen´ı
Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci na t´ema
”
Software pro zobrazovan´ı a ex-
port mapov´ych dlaˇzdic“ vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e
v pˇriloˇzen´em seznamu.
V Praze dne
podpis
Abstrakt
Tato pr´ace popisuje diplomov´y projekt
”
Software pro zobrazov´an´ı a export ma-
pov´ych dlaˇzdic“. Jsou zde uvedeny teoretick´e z´aklady sluˇzeb a technologi´ı, kter´e jsou v pro-
jektu vyuˇzity. Tato pr´ace tak´e slouˇz´ı jako uˇzivatelsk´y manu´al pro stˇeˇzejn´ı ˇc´ast cel´eho di-
plomov´eho projektu, tedy software umoˇzˇnuj´ıc´ı naˇc´ıtat rastrov´e mapov´e dlaˇzdice, rastrov´e
i vektorov´e obr´azky, kombinovat je mezi sebou a n´aslednˇe exportovat do dlaˇzdicov´eho
form´atu nebo jako rastrov´y obr´azek.
Kl´ıˇcov´a slova
mapa, mapov´e dlaˇzdice, TMS, WMTS, SQLite, Qt/C++
Abstract
This thesis is describing diploma project
”
Software for displaying and exporting
map tiles“. There is a summary of teoretical basics of specifications, methods or services
which are used in this project. The main part describes software MapVision. There are
shown options and functions implemented in this application. There is also listed graphical
user interface and future improvements.
Key Words
map, map tiles, TMS, WMTS, SQLite, Qt/C++
Obsah
1 ´Uvod 1
2 Teorie pouˇzit´ych sluˇzeb a technologi´ı 3
2.1 OGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 OSGeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 TMS versus WMTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Referenˇcn´ı souˇradnicov´y syst´em . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 Souˇradnicov´e syst´emy vyuˇz´ıvan´e v aplikaci . . . . . . . . . . . . . . . . . . 8
2.6 Zp˚usob ˇc´ıslov´an´ı ukl´ad´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 Georeferenˇcn´ı soubor WORLDFILE . . . . . . . . . . . . . . . . . . . . . . 12
2.8 Mapov´e dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.8.1 Velikost dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.8.2 Form´at mapov´e dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . 14
2.8.3 Barevn´e hloubky dlaˇzdic . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Sezn´amen´ı s aplikac´ı MapVision 17
3.1 MapVision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Hlavn´ı okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Mapov´e okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 Menu liˇsta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.5 Moduly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5.1 Vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5.2 Informace o souˇradnic´ıch . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5.3 Nalezen´ı polohy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.4 Pˇrid´an´ı textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.5 Obr´azkov´e prvky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5.6 Grafick´e efekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5.7 Informace o mapov´em oknˇe . . . . . . . . . . . . . . . . . . . . . . 24
3.5.8 Informace o v´ybˇeru . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5.9 Protokol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6 V´ıtac´ı okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7 Sada n´astroj˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
iii
3.8 Vstupn´ı vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.9 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.10 Kl´avesy a kl´avesov´e zkratky . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.11 Budouc´ı vylepˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.12 Mapov´y dokument mvd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.13 Licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 V´yvojov´e prostˇred´ı 34
4.1 Historie a v´yvoj Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3 Souˇc´asti Qt Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.4 Programy postaven´e na Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5 Verzov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 V´ybˇer ze zdrojov´eho k´odu 38
5.1 ZavaProj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.1 Export v´yˇrezu mapy . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.2 Export mapov´ych dlaˇzdic . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4 MapView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Z´avˇer 50
Literatura 51
Rejstˇr´ık 52
iv
Seznam obr´azk˚u
1.1 Logo aplikace MapVision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 Logo spoleˇcnosti Open Geospatial Consortium . . . . . . . . . . . . . . . . 4
2.2 Logo spoleˇcnosti Open Source Geospatial Foundation . . . . . . . . . . . . 5
2.3 Loga vybran´ych projekt˚u pod organizac´ı OSGeo . . . . . . . . . . . . . . . 6
2.4 Tissotova indikatrix pro syst´em souˇradnic utm . . . . . . . . . . . . . . . . 9
2.5 Syst´em souˇradnic, kter´y vyuˇz´ıv´a web mercator . . . . . . . . . . . . . . . . 9
2.6 Uk´azka zmˇeny mˇeˇr´ıtka (hladiny zoom) . . . . . . . . . . . . . . . . . . . . 10
2.7 Struktura dlaˇzdic mapov´e sluˇzby wmts . . . . . . . . . . . . . . . . . . . . 11
2.8 Souˇradnicov´a soustava v poˇc´ıtaˇcov´e grafice . . . . . . . . . . . . . . . . . . 12
2.9 Struktura uloˇzen´ı mapov´ych dlaˇzdic . . . . . . . . . . . . . . . . . . . . . . 13
2.10 Sch´ema popisu souboru worldfile, zdroj: wikipedia.org . . . . . . . . . . 14
3.1 Hlavn´ı okno aplikace MapVision . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Dialog pro definici ´uzem´ı dle souˇradnic . . . . . . . . . . . . . . . . . . . . 19
3.3 Dialog zobrazuj´ıc´ı informace o v´ybˇeru . . . . . . . . . . . . . . . . . . . . . 20
3.4 Okno aplikace
”
O aplikaci“ . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 V´ıtac´ı str´anka zobrazuje tipy a odkazy pro n´apovˇedu . . . . . . . . . . . . 26
3.6 Dialog nastaven´ı parametr˚u vrstvy . . . . . . . . . . . . . . . . . . . . . . 27
3.7 Dialog pro uloˇzen´ı v´yˇrezu mapy . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1 Logo frameworku Qt a mottem . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Prostˇred´ı Qt Creator se spuˇstˇen´ym projektem MapVision . . . . . . . . . . 36
4.3 Qt Designer: widgety pro grafick´e rozhran´ı . . . . . . . . . . . . . . . . . . 37
v
Seznam uk´azek zdrojov´eho k´odu
2.1 Definice kartografick´eho zobrazen´ı v knihovnˇe proj.4 . . . . . . . . . . . . 8
2.2 Z´apis web mercatoru ve form´atu ogc wkt a v prj souboru . . . . . . . . 8
3.1 Uk´azka MapVision Dokumentu . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1 Mˇeˇr´ıtko mapy z´avisl´e na zemˇepisn´e ˇs´ıˇrce . . . . . . . . . . . . . . . . . . . 38
5.2 Funkce main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3 Pˇrevod mezi syst´emy WGS84 a syst´emem dlaˇzdic . . . . . . . . . . . . . . 40
5.4 Pˇrevod mezi syst´emy WGS84 a pixelovou soustavou . . . . . . . . . . . . . 41
5.5 Funkce pro pˇrevod mezi soustavami s odliˇsn´ym poˇc´atkem . . . . . . . . . . 41
5.6 Nalezen´ı ohraniˇcuj´ıc´ıho obd´eln´ıku pro dlaˇzdici . . . . . . . . . . . . . . . . 42
5.7 Pˇrevod souˇradnic z decim´aln´ıho form´atu na hexagesim´aln´ı . . . . . . . . . 42
5.8 V´ypoˇcet sf´erick´e vzd´alenosti mezi body . . . . . . . . . . . . . . . . . . . . 43
5.9 Pˇrevod mezi wgs84 a definovan´ym ref. souˇr. syst´emem . . . . . . . . . . . 43
5.10 Pˇrevod souˇradnic z web mercator do wgs84 . . . . . . . . . . . . . . . . . 44
5.11 Uloˇzen´ı v´yˇrezu mapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.12 Vytvoˇren´ı souboru worldfile . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.13 Vyˇr´ıznut´ı mapov´e dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.14 Funkce uloˇz´ı dlaˇzdici o rozmˇerech 256 × 256px . . . . . . . . . . . . . . . . 47
5.15 Implenetace zmˇeny zoom pˇri dvojit´em kliknut´ı . . . . . . . . . . . . . . . . 49
vi
Kapitola 1. ´Uvod
Kapitola 1
´Uvod
V t´eto kapitole je uveden struˇcn´y pˇrehled cel´e pr´ace. Je zde tak´e pops´an d˚uvod
vzniku aplikace a uvedeno srovn´an´ı s programy podobn´e funkcionality.
Jak n´azev diplomov´e pr´ace Software pro zobrazov´an´ı a export mapov´ych
dlaˇzdic napov´ıd´a, jedn´a se o mapovou prohl´ıˇzeˇcku, kter´a je schopn´a prov´adˇet z´akladn´ı
´ukony jako je zobrazov´an´ı, jednoduch´e ´upravy a export rastrov´ych mapov´ych dat. Apli-
kace vyuˇz´ıv´a cachovan´e rastrov´e mapov´e dlaˇzdice zejm´ena sluˇzeb wmts (Web Map Tile
Service) a tms (Tiled Map Service). O tˇechto sluˇzb´ach bude pojedn´ano v kapitole 2.3.
Proˇc zrovna software pro prohl´ıˇzen´ı jiˇz renderovan´ych mapov´ych dlaˇzdic? Drtiv´a
vˇetˇsina mapov´ych produkt˚u se dost´av´a k z´akazn´ıkovi pr´avˇe v rastrov´e formˇe. Je to zp˚usob,
kter´y zajist´ı kompatibilitu se vˇsemi platformami a syst´emy. Nedoch´az´ı zde k ˇz´adn´ym
zmˇen´am ˇci v´ykyv˚um a nepˇresnostem pˇri vykreslov´an´ı dat. Rastrov´y ˇci bitmapov´y obr´azek
je pouˇz´ıv´an od poˇc´atku internetu a vˇsechny prohl´ıˇzeˇce ˇci programy um´ı s tˇemito form´aty
zach´azet. Nev´yhoda je zˇrejm´a. K uˇzivateli se dost´av´a jiˇz hotov´y produkt, kter´y sice lze
zmˇenit, ale za cenu v´ypoˇcetn´ıho v´ykonu pˇri renderov´an´ı na stranˇe serveru. Mapov´a data,
kter´a jsou ˇcasto zobrazov´ana, je vhodn´e vykreslit dopˇredu a vytvoˇrit tzv.
”
dlaˇzdice do
z´asoby“. Vyt´ıˇzen´ı procesoru je minim´aln´ı, jelikoˇz nemus´ı doch´azet k renderov´an´ı vektoru
na rastrov´y obr´azek. Pokud by ale bylo potˇreba do takov´eto mapy pˇridat grafick´y prvek
nebo vrstvu, lze s v´yhodou pouˇz´ıt aplikaci .
Tato pr´ace postupnˇe popisuje v´yvoj cel´e aplikace. Jsou zde pops´any poznatky, po-
stupy a probl´emy, kter´e pˇri programov´an´ı vyvstaly. Na zaˇc´atku pr´ace jsou uvedeny ka-
pitoly pojedn´avaj´ıc´ı o mapov´ych sluˇzb´ach, jsou zde zm´ınˇeny v´yhody a nev´yhody jednot-
liv´ych sluˇzeb a jejich struktura. Je zde tak´e uvedeno jak´y form´at je vhodn´y pro ukl´ad´an´ı
dlaˇzdic. V dalˇs´ı ˇc´asti jsou pops´any algoritmy ˇci matematick´e funkce pro pˇrevod souˇradnic
(zejm´ena zemˇepisn´ych) do ostatn´ıch pravo´uhl´ych souˇradnicov´ych syst´em˚u.
Filip Zavadil 1
Kapitola 1. ´Uvod
Kapitola 3 je vˇenov´ana pˇr´ımo aplikaci . Jsou zde pops´any nejen jednotliv´a
tlaˇc´ıtka a funkce, ale i pˇr´ıklady a v´ystupy praktick´eho vyuˇzit´ı aplikace. V tomto odd´ıle jsou
tak´e uvedeny zdroje, ze kter´ych je moˇzn´e z´ıskat mapov´e dlaˇzdice. Pouˇzit´y programovac´ı
jazyk a v´yvojov´e prostˇred´ı jsou pops´any v samostatn´e kapitole 4.
Pro pr´aci s mapov´ymi dlaˇzdicemi existuje v´ıce aplikac´ı. MOBAC (Mobile Atlas
Creator) umoˇzˇnuje naˇc´ıtat mapov´e sluˇzby tms,wmts a exportovat dlaˇzdice v mnoha
form´atech, zejm´ana pro mobiln´ı zaˇr´ızen´ı. Map Tiler je program pro rozˇrez´an´ı rastrov´e
mapy do dlaˇzdic. D´ale existuje mnoho
”
prohl´ıˇzeˇcek“, kter´e podporuj´ı form´at dlaˇzdic.
Mezi nejzn´amˇejˇs´ı patˇr´ı mobiln´ı aplikace Locus, MGMaps a PhoneMaps. Dlaˇzdicov´e
form´aty podporuj´ı tak´e GIS programy, ovˇsem v omezen´e m´ıˇre (pouze prohl´ıˇzen´ı). Aplikace
se specializuje pouze na dlaˇzdicov´y form´at, proto nab´ız´ı dalˇs´ı moˇznosti pro pr´aci
s mapov´ymi dlaˇzdicemi. Zobrazen´ı v´ıce vrstev, urˇcen´ı jejich pr˚uhlednost´ı, pˇrid´an´ı gra-
fick´ych prvk˚u, moˇznost exportu do georeferencovan´eho obr´azku, moˇznost jednoduch´eho
georeferencov´an´ı; to je v´yˇcet vlastnost´ı, kter´e nav´ıc nab´ız´ı aplikace . Absence
tˇechto moˇznost´ı byla tak´e jedn´ım z hlavn´ıch d˚uvod˚u vzniku programu.
V t´eto pr´aci je pouˇzito v´ıce druh˚u a ˇrez˚u p´ısma. Zde je uvedena uk´azka a popis pro
lepˇs´ı porozumˇen´ı a ch´ap´an´ı textu:
p´ısmo popis
MapVision d˚uleˇzit´e pojmy
mapov´a sluˇzba m´enˇe zn´am´e pojmy, kter´e budou pozdˇeji vysvˇetleny
storno funkce nebo tlaˇc´ıtka aplikace
wmts, png n´azvy technologi´ı a form´at˚u soubor˚u
Qstring name n´azvy promˇenn´ych uveden´ych v textu
Uk´azky zdrojov´eho k´odu maj´ı ˇc´ıslovan´e ˇr´adky a zv´yraznˇenou skladbu k´odu:
§
1 #include <iostream>
3 int main ( int argc , char ∗argv [ ] ) {
4 std : : cout << ” h e l l o world ! ” ;
5 return 0;
6 }
¦ ¥
Obr´azek 1.1: Logo aplikace MapVision
Filip Zavadil 2
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Kapitola 2
Teorie pouˇzit´ych sluˇzeb a technologi´ı
Pˇri vzniku internetu a hlavnˇe pˇri zvˇetˇsen´ı toku dat se zaˇcaly mimo text st´ale v´ıce
objevovaly obr´azky. S t´ımto procesem se tak´e na internetu zaˇcaly vystavovat i rastrov´e
obr´azky map. Nejdˇr´ıve sice jako jeden obr´azek (mapy mal´eho mˇeˇr´ıtka) nebo jako v´yˇrezy.
Postupem ˇcasu pˇriˇsel poˇzadavek na zobrazen´ı cel´e mapy. Vzhledem k tehdy bˇeˇzn´e rych-
losti pˇripojen´ı a niˇzˇs´ı operaˇcn´ı pamˇeti nebylo vhodn´e (a dosud tak´e nen´ı) zobrazit mapu
jako jeden celek. V informatice od jej´ıho poˇc´atku existoval postup jak takov´y obr´azek
poskl´adat. Ten se pouˇz´ıval uˇz v prvn´ıch poˇc´ıtaˇcov´ych hr´ach, kdy se vedle sebe skl´adaly
textury pro vykreslen´ı pozad´ı. Tohoto postupu, tedy skl´ad´an´ı menˇs´ıch ˇc´ast´ı do vˇetˇs´ıho
celku, se s v´yhodou zaˇcalo vyuˇz´ıvat pro zobrazov´an´ı map.
Metody, kter´e tento ´ukon umoˇzˇnuj´ı se naz´yvaj´ı mapov´e sluˇzby (Map Services).
Postupem ˇcasu se tyto sluˇzby rozr˚ustaly a vzniklo v´ıce implementac´ı tˇechto sluˇzeb. Ve
snaze tyto metody sjednotit vzniklo nˇekolik sluˇzeb (ofici´aln´ıch ˇci neofici´aln´ıch), kter´e jsou
si navz´ajem velmi podobn´e. Nejv´ıce podobn´e jsou produkty neboli implementace dvou
organizac´ı: OGC a OSGeo.
2.1 OGC
OGC – Open Geospatial Consortium1
zaˇcalo p˚usobit v roce 1994. Je to neziskov´e
sdruˇzen´ı cca 480 spoleˇcnost´ı, vl´adn´ıch agentur a univerzit, kter´e se snaˇz´ı naj´ıt shodu a
vytvoˇrit standardy (OGC R Standards) a specifikace pro v´yvoj v oblasti geoinformaˇcn´ıch
technologi´ı. Mezi oborovˇe nejzn´amˇejˇs´ı patˇr´ı napˇr. specifikace:
Sluˇzby:
• WMTS – Web Map Tile Service je sluˇzba poskytuj´ıc´ı rastrov´e mapov´e dlaˇzdice;
aplikace podporuje tuto specifikaci; bl´ıˇze viz 2.3 [OCG11];
1
http://www.opengeospatial.org/
Filip Zavadil 3
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
• WMS – Web Map Service poskytuje mapov´e obr´azky dle poˇzadavku klienta (refe-
renˇcn´ı souˇradnicov´y syst´em, ´uzem´ı, velikost obr´azku);
• WFS – Web Feature Service je sluˇzba pro sd´ılen´ı vektorov´ych dat ve form´atu gml
dle poˇzadavk˚u klienta;
• WCS – Web Coverage Service umoˇzˇnuje pˇr´ıstup ke coverage dat˚um na z´akladˇe
dotaz˚u.
Form´aty:
• GML – Geography Markup Language je form´at zaloˇzen´y na xml; ˇrad´ı se mezi
vektorov´e form´aty s geografickou informac´ı bez vizualizaˇcn´ı sloˇzky;
• KML – Keyhole Markup Language je form´at zaloˇzen´y na xml; vektorov´y form´at
hojnˇe vyuˇz´ıvan´y pˇri v´ymˇenˇe a zobrazen´ı dvou-dimenzion´aln´ıch dat ve webov´em
prostˇred´ı (napˇr. Google Earth); form´at obsahuje vizualizaˇcn´ı sloˇzku a lze ho bez-
ztr´atovˇe pˇrev´est do form´atu kml.
Obr´azek 2.1: Logo spoleˇcnosti Open Geospatial Consortium
2.2 OSGeo
OSGeo – Open Source Geospatial Foundation2
je neziskov´a nevl´adn´ı organizace,
kter´a podporuje vznik a v´yvoj opensource geoinformaˇcn´ıch technologi´ı. Organizace byla
zaloˇzena v ´unoru 2006 a poskytuje finanˇcn´ı, organizaˇcn´ı a pr´avn´ı podporu geoinformaˇcn´ı
komunitˇe. Pod z´aˇstitou OSGeo vzniklo mnoho svobodn´ych a otevˇren´ych knihoven, aplikac´ı
a samotn´ych dat. Organizace kaˇzd´y rok poˇr´ad´a konferenci foss4g3
, kter´a je hlavn´ım
m´ıstem setk´an´ı ˇclen˚u a pˇrispˇevatel˚u. Mezi nejzn´amˇejˇs´ı a nejv´ıce vyuˇz´ıvan´e patˇr´ı v souˇcasn´e
dobˇe tyto projekty:
Knihovny:
• PROJ.4 – knihovna umoˇzˇnuje transformaci mezi kartografick´ymi zobrazen´ımi, tuto
knihovnu vyuˇz´ıv´a mnoho dalˇs´ıch opensource projekt˚u;
2
http://www.opengeospatial.org/
3
http://www.foss4g.org/
Filip Zavadil 4
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Obr´azek 2.2: Logo spoleˇcnosti Open Source Geospatial Foundation
• PostGIS – rozˇs´ıˇren´ı pro datab´azov´y syst´em postgresql, umoˇznuj´ıc´ı uloˇzen´ı a do-
tazov´an´ı prostorov´ych dat;
• GDAL/OGR – knihovna funkc´ı pro ˇcten´ı a z´apis rastrov´ych (gdal) a vektorov´ych
(ogr) datov´ych form´at˚u;
• GeoTools – knihovna pro vytv´aˇren´ı interaktivn´ıch geografick´ych vizualizac´ı v pro-
gramovac´ım jazyce java, knihovna je vyuˇz´ıv´ana GeoServerem;
• FDO – c++ api pro definov´an´ı a anal´yzu prostorov´ych dat;
• deegree – otevˇren´y software pro prostorov´a data; zahrnuje pˇr´ıstup, vizualizaci;
software je implementov´an v jazyce java, jsou zde tak´e implementov´any sluˇzby
wms,wfs, ... .
Webov´e aplikace:
• TMS – Tile Map Service je sluˇzba poskytuj´ıc´ı rastrov´e mapov´e dlaˇzdice; aplikace
podporuje tuto specifikaci; bl´ıˇze viz ˇc´ast 2.3; [OSG12]
• OpenLayers – otevˇren´a knihovna ps´ana v jazyce javascript pro zobrazov´an´ı map
na webov´em prohl´ıˇzeˇci; poskytuje api s podobnou funkcionalitou jako Google Maps
nebo Bing Maps; knihovnu openlayers vyuˇz´ıv´a pro svou mapu projekt OpenStreetMap
(Slippy Map);
• MapFish – framework pro vytv´aˇren´ı
”
bohat´ych“ webov´ych mapov´ych aplikac´ı;
zahrnuje knihovny openlayers, extjs a geoext; framework bˇeˇz´ı na stranˇe klienta;
• MapServer – cgi program bˇeˇz´ıc´ı na stranˇe serveru; vyv´ıjen Minnesotskou univer-
zitou;
• GeoServer – mapserver, kter´y pro sd´ılen´ı geoprostorov´ych dat, java program po-
skytuje gui prostˇred´ı.
Desktopov´e aplikace
• Quantum GIS – hojnˇe vyuˇz´ıvan´y opensource geografick´y informaˇcn´ı syst´em; mul-
tiplatformn´ı program je postaven na frameworku c++/qt;
Filip Zavadil 5
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
• GRASS GIS – Geographic Resources Analysis Support System; GIS vyv´ıjen od
roku 1982 pro vojensk´e ´uˇcely; nyn´ı je jako opensource dostupn´y pod licenc´ı GNU
GPL; program je tak´e pˇr´ıstupn´y z qgisu.
Obr´azek 2.3: Loga vybran´ych projekt˚u pod organizac´ı OSGeo
2.3 TMS versus WMTS
Jak jiˇz bylo uvedeno v´yˇse, specifikace sluˇzeb tms, wmts je velmi podobn´a. Je to
d´ano z´avislou histori´ı:
• bˇrezen 2006: OSGeo vyvinulo a otestovalo tms. V souˇcasn´e dobˇe zde existovaly
implementace sluˇzeb jako je Google Maps, OnEarth, apod.
• 2007: Skupina zab´yvaj´ıc´ı se OGC wms uvaˇzovala o zaˇclenˇen´ı podpory pro hotov´e
dlaˇzdice do standardu wms. Pozdˇeji se rozhodlo, ˇze vznikne nov´y oddˇelen´y standard
wmts.
• z´aˇr´ı 2008: Na v´yroˇcn´ı konferenci foss4g v Jiˇzn´ı Africe probˇehla velk´a diskuze
ohlednˇe sluˇzeb distribuj´ıc´ıch mapov´e dlaˇzdice.
• 2008/2009: Byly testov´any 4 nez´avisl´e implementace wmts.
• prosinec 2009: Implementace wmts byla schv´alena jako OGC standard.
• duben, 2010: wmts byla veˇrejnˇe uvedena.
Bˇehem t´eto doby (cca 4 roky neˇz byl vyd´an standard wmts) byla vyuˇz´ıv´ana specifi-
kace tms. Proto se lze bˇeˇznˇe setkat s obˇema typy implementac´ı, kter´e jsou velmi podobn´e:
• Obˇe sluˇzby vyuˇz´ıvaj´ı stejn´y referenˇcn´ı souˇradnicov´y syst´em.
• Sniˇzuj´ı zat´ıˇzen´ı serveru: ˇreˇs´ı poˇzadov´an´ı pouze ˇc´asti mapy, omezuj´ı poˇzadavky
pouze na pˇreddefinovan´e dlaˇzdice, povoluj´ı ukl´ad´an´ı do mezipamˇeti prohl´ıˇzeˇce.
• Obˇe totoˇznˇe definuj´ı mˇeˇr´ıtkovou sadu, sadu dlaˇzdic pro kaˇzd´e mˇeˇr´ıtko, zp˚usob
oznaˇcen´ı a uloˇzen´ı jednotliv´e dlaˇzdice, rastrov´y form´at (png,jpeg, ...) dlaˇzdice.
Filip Zavadil 6
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Z´asadn´ı rozd´ıl je ovˇsem v poˇc´atku souˇradnicov´eho syst´emu. Jedn´a se o poˇc´atek vˇetve
osy y. Vzorec pro pˇrepoˇcet souˇradnice osy y je uveden v ˇc´asti 5.5.
2.4 Referenˇcn´ı souˇradnicov´y syst´em
Standardn´ı kartografick´e zobrazen´ı uˇz´ıvan´e ve sluˇzb´ach tms a wmts. Toto karto-
grafick´e zobrazen´ı se ˇcasto naz´yv´a
”
web mercator“,
”
sf´erick´y mercator“ nebo
”
Google
mercator“. V t´eto pr´aci bude nad´ale pouˇz´ıv´an v´yraz web mercator. Jedn´a se o karto-
grafick´e zobrazen´ı :
• konformn´ı (´uhlojevn´e - spojit´e zobrazen´ı zachov´avaj´ıc´ı ´uhly);
• cylindrick´e (v´alcov´e - osa v´alce totoˇzn´a s osou zemskou);
• na n´ahradn´ı kouli (pro zjednoduˇsen´ı je elipsoid nahrazen koul´ı).
Z vlastnost´ı plyne, ˇze na map´ach nejsou zobrazeny p´oly, kter´e se ocitaj´ı v nekoneˇcnu,
a tak´e ˇze mapa bude vykazovat velk´e zkreslen´ı pr´avˇe v pol´arn´ıch oblastech. Aby si mapa
zachovala ˇctvercov´y pomˇer stran (1 : 1), jsou oblasti zobrazeny do cca 85.05◦
zemˇepisn´ych
ˇs´ıˇrek. Vˇetˇsina svˇetovˇe bˇeˇznˇe pouˇz´ıvan´ych mapov´ych port´al˚u vyuˇz´ıv´a stejn´e kartografick´e
zobrazen´ı, napˇr´ıklad OpenStreetMap (slippy map), Google Maps, Bing Maps, Nokia maps
a dalˇs´ı. Tyto sluˇzby jsou plnˇe kompatibiln´ı s aplikac´ı .
Jelikoˇz je tento ref. souˇr. syst´em pouˇz´ıv´an pro zobrazen´ı a ne pro pˇresn´e souˇradnicov´e
v´ypoˇcty, je pro zjednoduˇsen´ı pouˇzita koule m´ısto elipsoidu. Toto sf´erick´e kart. zobrazen´ı
zp˚usobuje pouze 0.33% zkreslen´ı na ose y. [Ait11]
Toto kart. zobrazen´ı zaˇcal pouˇz´ıvat Google, proto je tak´e ˇcasto naz´yv´ano
”
Google
Projection“. Pot´e tuto projekci pˇrevzal i projekt OpenStreetMap pro svou renderovanou
mapu. V´yvoj, pouˇzit´ı a oznaˇcen´ı referenˇcn´ıho souˇradnicov´eho syst´emu: [ope13]
• EPSG:54004 – vzniklo pro potˇreby Google Maps;
• OSGEO:41001 – takto bylo zobrazen´ı organizac´ı OSGeo pracovnˇe oznaˇceno bˇehem
v´yvoje specifikace tms;
• EPSG:900913 – pro potˇreby definice zobrazen´ı v OpenLayers; dalˇs´ı oznaˇcen´ı SR-
ORG:7483
• ESRI:102113 – oznaˇcen´ı pro ESRI, pot´e bylo nahrazeno ESRI:102100;
• EPSG:3785 – ekvivalentn´ı zobrazen´ı jako pˇredchoz´ı, nyn´ı k´od EPSG; ˇcasto mylnˇe
oznaˇcov´ano jako EPSG:3587;
Filip Zavadil 7
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
• EPSG:3857 – shoda mezi EPSG a ESRI, posledn´ı ofici´aln´ı verze; dalˇs´ı oznaˇcen´ı:
SR-ORG:6864.
§
1 +proj=merc +lon 0=0 +k=1 +x 0=0 +y 0=0 +a=6378137 +b=6378137
2 +towgs84 =0 ,0 ,0 ,0 ,0 ,0 ,0 +units=m +no defs
¦ ¥
Zdroj. k´od 2.1: Definice kartografick´eho zobrazen´ı v knihovnˇe proj.4
§
1 PROJCS[ ”WGS 84 / Pseudo−Mercator” ,
2 GEOGCS[ ”Popular V i s u a l i s a t i o n CRS” ,
3 DATUM[ ”Popular V i s u a l i s a t i o n Datum” ,
4 SPHEROID[ ”Popular V i s u a l i s a t i o n Sphere” ,6378137 ,0 ,
5 AUTHORITY[ ”EPSG” , ”7059” ] ] ,
6 TOWGS84[0 ,0 ,0 ,0 ,0 ,0 ,0] ,
7 AUTHORITY[ ”EPSG” , ”6055 ” ] ] ,
8 PRIMEM[ ”Greenwich” ,0 ,
9 AUTHORITY[ ”EPSG” , ”8901” ] ] ,
10 UNIT[ ” degree ” ,0.01745329251994328 ,
11 AUTHORITY[ ”EPSG” , ”9122” ] ] ,
12 AUTHORITY[ ”EPSG” , ”4055” ] ] ,
13 UNIT[ ”metre” ,1 ,
14 AUTHORITY[ ”EPSG” , ”9001” ] ] ,
15 PROJECTION[ ”Mercator 1SP” ] ,
16 PARAMETER[ ” central meridian ” ,0] ,
17 PARAMETER[ ” s c a l e f a c t o r ” ,1] ,
18 PARAMETER[ ” f a l s e easting ” ,0] ,
19 PARAMETER[ ” f a l s e qnorthing ” ,0] ,
20 AUTHORITY[ ”EPSG” , ”3785” ] ,
21 AXIS [ ”X” ,EAST] ,
22 AXIS [ ”Y” ,NORTH] ]
¦ ¥
Zdroj. k´od 2.2: Z´apis web mercatoru ve form´atu ogc wkt a v prj souboru
2.5 Souˇradnicov´e syst´emy vyuˇz´ıvan´e v aplikaci
Aplikace vyuˇz´ıv´a nˇekolik souˇradnicov´ych syst´em˚u:
• web mercator;
• sch´ema dlaˇzdic;
• pixelov´a soustava.
Vˇsechny souˇradnicov´e syst´emy jsou jiˇz pravo´uhl´e a n´ıˇze jsou bl´ıˇze urˇceny.
Filip Zavadil 8
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Obr´azek 2.4: Tissotova indikatrix pro syst´em souˇradnic utm
Web mercator
Souˇradnicov´a soustava tohoto referenˇcn´ıho syst´emu m´a poˇc´atek na rovn´ıku a nult´em
poledn´ıku, stejnˇe jako wgs84. Kladn´e vˇetve tak´e m´ıˇr´ı na sever a na v´ychod. Jednotky
jsou metry a v odd´ıle 5.4 je uveden transformaˇcn´ı vzorec na zemˇepisn´e souˇradnice wgs84.
[0,0]-x +x
+y
-y
Obr´azek 2.5: Syst´em souˇradnic, kter´y vyuˇz´ıv´a web mercator
Filip Zavadil 9
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Sch´ema dlaˇzdic
Kaˇzd´a zoom hladina m´a vlastn´ı souˇradnicov´y syst´em a ˇc´ıslov´an´ı rozdˇelen´e mapy
zaˇc´ın´a vˇzdy od zaˇc´atku. Tzn. ˇze dlaˇzdice pro [zoom = 2; x = 1; y = 1] bude zobrazovat
odliˇsn´e ´uzem´ı neˇz dlaˇzdice [zoom = 3; x = 1; y = 1]. U sluˇzby tms se poˇc´atek soustavy
souˇradnic povaˇzuje dlaˇzdice na jihoz´apadˇe
”
poskl´adan´e“ mapy. U sluˇzby wmts se poˇc´atek
nach´az´ı v severoz´apadn´ım rohu. To je hlavn´ı rozd´ıl mezi tˇemito sluˇzbami, kter´y je potˇreba
br´at v potaz pˇri pˇrid´av´an´ı nov´e vrstvy. Aplikace umoˇzˇnuje definovat, kde se
tento poˇc´atek nach´az´ı. N´azorn´a uk´azka tohoto syst´emu a zp˚usob poˇc´ıt´an´ı je uveden na
obr´azku 2.7. Pokud jsou zn´amy tyto souˇradnice, lze se snadno dostat k dlaˇzdici, kterou
poˇzadujeme. ˇC´ıslo dlaˇzdice lze zjistit dle jednoduch´eho vzorce 2.1. [Sch07a] [Pˇri08]
Xtile
.
= Xpixel/256
Ytile
.
= Ypixel/256
(2.1)
Po inverzi vzorce 2.1 lze z´ıskat souˇradnice v obr´azkov´ych bodech (pixelech) lev´eho horn´ıho
rohu dlaˇzdice.
(660,360)px
(330,180)px
zoom = 1
zoom = 2
Obr´azek 2.6: Uk´azka zmˇeny mˇeˇr´ıtka (hladiny zoom)
Pixelov´a soustava
Bˇeˇznˇe v informatice pouˇz´ıvan´a soustava souˇradnic jednotliv´ych obr´azkov´ych bod˚u.
Poˇc´atek m´a v lev´em horn´ım rohu obr´azku. Kladn´a vodorovn´a vˇetev osy x smˇeˇruje doprava
a vertik´aln´ı vˇetev osy y m´ıˇr´ı dol˚u. Po pˇredstavˇe cel´e sloˇzen´e mapy svˇeta se poˇc´atek nach´az´ı
vˇzdy na severoz´apadn´ım rohu. Velikost cel´e mapy roste spoleˇcnˇe s hladinou zoom (zmˇenou
mˇeˇr´ıtka). Pokud zoom = 0, mapa svˇeta se vykresl´ı do jedn´e dlaˇzdice o rozmˇerech 256×256
pixel˚u. Pokud se uvaˇzuje zoom = 1, mapa svˇeta se sloˇz´ı do obr´azku, kter´y m´a velikost
512 × 512 pixel˚u. Z tohoto plyne, ˇze se velikost mapy zdvojn´asob´ı a poˇcet dlaˇzdic vzroste
Filip Zavadil 10
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
   
   
   
   
 
 
zoom = 1
512x512 px
zoom = 2
1024x1024 px
+x
+y
+x
+y
Obr´azek 2.7: Struktura dlaˇzdic mapov´e sluˇzby wmts
4×. Lze tedy ˇr´ıci, ˇze pokud se urˇcit´y bod na mapˇe nach´az´ı na souˇradnic´ıch [350, 500]px,
lze ho v n´asleduj´ıc´ı hladinˇe nal´ezt na souˇradnic´ıch [700, 1000]px. Na obr. 2.6 je naˇcrtnut
n´azorn´y pˇr´ıklad. Tabulka 2.1 uv´ad´ı velikost cel´e mapy svˇeta v pixelech a poˇcet dlaˇzdic
potˇrebn´ych k zobrazen´ı svˇeta. [Sch07b]
Tabulka 2.1: Pˇrehled poˇctu mapov´ych dlaˇzdic pro vybran´y zoom
zoom velikost strany (px) poˇcet dlaˇzdic
0 256 1
1 512 4
4 4 096 256
6 16 384 4 096
8 65 536 65 536
10 ∼ 262.12 tis. ∼ 1.048 mil.
12 ∼ 1.05 mil. ∼ 16.777 mil.
14 ∼ 4.19 mil. ∼ 268.44 mil.
16 ∼ 16.78 mil ∼ 4.295 mld.
18 ∼ 67.11 mil. ∼ 68.72 mld.
20 ∼ 268.44 mil. ∼ 1 099 mld.
Pomoc´ı pixelov´e soustavy jsou z´ısk´av´any souˇradnice pro ostatn´ı souˇradnicov´e syst´emy.
Napˇr´ıklad pˇri kliknut´ı myˇsi do oblasti mapy jsou odesl´any pixelov´e souˇradnice m´ısta,
kde se nach´azel kurzor myˇsi. Z tohoto ´udaje a z ˇc´ısla hladiny zoom lze dopoˇc´ıtat napˇr.
zemˇepisnou ˇs´ıˇrku/d´elku (s vyuˇzit´ım vzorce 2.2) nebo ˇc´ıslo dlaˇzdice (vzorec 2.1), kde se
dan´y bod nach´az´ı.
Filip Zavadil 11
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Jelikoˇz se vˇzdy pˇri zmˇenˇe zoom hladiny zvˇetˇs´ı velikost 2×, velmi rychle rostou n´aroky
na datov´y prostor ´uloˇziˇstˇe, je vhodn´e m´ıt dlaˇzdice s optim´aln´ım datov´ym objemem. Touto
problematikou se zab´yv´a ˇc´ast 2.8.3. Velikost cel´e mapy (d´elku strany ˇctverce v pixelech)
lze vypoˇc´ıtat dle vzorce: a = 2zoom
.
Xpixel =
(ϕ + 180)
360
· 256 · 2zoom
Ypixel = 0.5 −
log (1+sin ϕ)
1−sin ϕ
4π
· 256 · 2zoom
(2.2)
[0,0][0,0] +x+x
+y+y
pixelypixely
Obr´azek 2.8: Souˇradnicov´a soustava v poˇc´ıtaˇcov´e grafice
2.6 Zp˚usob ˇc´ıslov´an´ı ukl´ad´an´ı
Sch´ema uloˇzen´ı dlaˇzdice je u sluˇzeb tms a wmts shodn´e. Jedn´a se o adres´aˇrovou
strukturu, kter´a je n´azornˇe pops´ana na obr´azku 2.9. Pokud se vytv´aˇr´ı dlaˇzdicov´a mapa,
nejdˇr´ıve se vytvoˇr´ı adres´aˇre, kter´e jsou pojmenov´any po hladin´ach zoom. Postupnˇe jsou
do tˇechto adres´aˇr˚u zaˇrazeny dalˇs´ı podadres´aˇre, kter´e nesou n´azev dle osy x. Tyto obsahuj´ı
dlaˇzdice, kter´e by po sloˇzen´ı vytvoˇrily sloupec o ˇs´ıˇrce 256 pixel˚u a v´yˇsce dle zobrazovan´eho
´uzem´ı. V tˇechto sloˇzk´ach se jiˇz nach´azej´ı jednotliv´e obr´azky, kter´e jsou pojmenov´any
po ose y a pˇr´ıponou form´atu obr´azku (png, jpg, tiff, ...). O vhodn´ych form´atech je
pojedn´ano v ˇc´asti 2.8.2.
2.7 Georeferenˇcn´ı soubor WORLDFILE
Aplikace umoˇzˇnuje naˇc´ıtat rastrov´a data ve formˇe obr´azk˚u. Aby byla
aplikace schopna um´ıstit obr´azek ve spr´avn´em mˇeˇr´ıtku a ve spr´avn´ych souˇradnic´ıch, je
vyuˇz´ıv´an form´at worldfile. Jedn´a se o textov´y soubor, kter´y obsahuje 6 ˇr´adk˚u, kter´e
pod´avaj´ı informace o rozliˇsen´ı, rotaci a poˇc´ateˇcn´ıch souˇradnic´ıch obr´azku. Soubory ob-
Filip Zavadil 12
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
map set
osa X
osa Y
zoom
hladina

Obr´azek 2.9: Struktura uloˇzen´ı mapov´ych dlaˇzdic
sahuj´ı koncovku dle typu obr´azku. Napˇr. form´at jpeg bude m´ıt georeferenˇcn´ı soubor
s koncovkou jgw. Podobnˇe: png ⇒ pgw, tiff ⇒ tfw. [ESR09]
Tento form´at vyvinula spoleˇcnost ESRI, pro georeferencov´an´ı rastrov´ych dat. Je to
alternativa k form´atu GeoTIFF, kter´y obsahuje data pro georeferencov´an´ı a informaci
o pouˇzit´em kartografick´em zobrazen´ı pˇr´ımo v sobˇe. Soubor worldfile ovˇsem nepod´av´a
informaci o referenˇcn´ım souˇradnicov´em syst´emu. Tuto informaci je nutn´e v GIS aplikac´ıch
urˇcit. Aplikace v t´eto chv´ıli naˇc´ıt´a worldfile pouze v syst´emu web mercator
a s nulovou rotac´ı na os´ach x, y. Zde je uvedena uk´azka a popis souboru worldfile:
worldfile popis
78271.51695312499 A rozliˇsen´ı na ose-x (jednotky/pixel)
0 B rotace kolem osy-y
-0 C rotace kolem osy-x
-78271.51695312499 D rozliˇsen´ı na ose-y (jednotky/pixel)
-1721973.372968750 E x-souˇradnice stˇredu horn´ıho prav´eho pixelu
11271098.44124999 F y-souˇradnice stˇredu horn´ıho prav´eho pixelu
Souˇradnice referenˇcn´ıho syst´emu lze vypoˇc´ıtat dle vzorce 2.3, kde x, y jsou souˇradnice
pixelov´e a ¯x, ¯y souˇradnice v referenˇcn´ım syst´emu, kter´y worldfile vyuˇz´ıv´a.
¯x
¯y
=
A B C
D E F



x
y
1


 (2.3)
Filip Zavadil 13
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
Obr´azek 2.10: Sch´ema popisu souboru worldfile, zdroj: wikipedia.org
2.8 Mapov´e dlaˇzdice
Tato ˇc´ast se zab´yv´a typem a form´atem jednotliv´ych mapov´ych dlaˇzdic. Dlaˇzdice
(tile) je jeden d´ılek, ze kter´eho se skl´ad´a v´ysledn´a mapa. Mapov´e dlaˇzdice jsou rastrov´e
(bitmapov´e) obr´azky, kter´e se mohou renderovat (vykreslovat) z vektorov´ych dat (podle
stylov´eho kl´ıˇce) pˇri poˇzadavku uˇzivatele, nebo mohou b´yt jiˇz vytvoˇreny dopˇredu. Tomuto
zp˚usobu se ˇr´ık´a tile caching. V´yhoda cachov´an´ı spoˇc´ıv´a v rychlejˇs´ı odezvˇe.
2.8.1 Velikost dlaˇzdice
Mapov´e sluˇzby nejˇcastˇeji pouˇz´ıvaj´ı ˇctvercov´e obr´azky o velikosti 256 × 256 pixel˚u.
Lze se setkat tak´e s form´atem 64 × 64 pixel˚u, zejm´ena pro mobiln´ı zaˇr´ızen´ı s menˇs´ım
displejem. Aplikace pracuje pouze s prvnˇe uvedenou velikost´ı.
2.8.2 Form´at mapov´e dlaˇzdice
Jelikoˇz objem dat vzr˚ust´a 4× s kaˇzdou hladinou zoom, je zapotˇreb´ı zvolit vhodn´y
form´at mapov´e dlaˇzdice a z´aroveˇn pˇrihl´ıˇzet k vizu´aln´ımu hledisku. Mapov´e dlaˇzdice mohou
b´yt uloˇzeny v bˇeˇznˇe uˇz´ıvan´ych rastrov´ych form´atech, jako jsou:
• PNG (Portable Network Graphics, MIME typeimage/png) je n´astupce GIFu. Pouˇz´ıv´a
bezztr´atovou kompresi 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, MIME typeimage/jpeg)je ztr´atov´y kom-
primaˇ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 di-
git´aln´ıch fotoapar´at˚u.
Filip Zavadil 14
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
• BMP (Microsoft Windows Bitmap, MIME typeimage/bmp) 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, MIME typeimage/tiff) pouˇz´ıv´a libovolnou dostup-
nou 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 obsahuje informaci
o prostoru a kartografick´em zobrazen´ı.
• GIF (Graphics Interchange Format, MIME typeimage/gif) 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, a proto byl dˇr´ıve
hojnˇe vyuˇz´ıv´an na internetu v reklamn´ıch bannerech.
Nejˇcastˇeji pouˇz´ıvan´ym form´atem je png, kter´y je vhodn´y pro vˇetˇsinu kreslen´ych
map. D´ıky sv´e lzw bezztr´atov´e kompresi je vhodn´y po str´ance datov´eho objemu i vi-
zualizaˇcn´ı. S v´yhodou lze tak´e vyuˇz´ıt vlastnosti pr˚uhlednosti. Pokud se v mapˇe vysky-
tuje gradient nebo je typick´e ˇcast´e stˇr´ıd´an´ı barev (satelitn´ı sn´ımky, ortofotosn´ımky nebo
st´ınov´an´ı ter´enu), hod´ı se sp´ıˇse form´at jpeg, kter´y uˇsetˇr´ı m´ısto v ´uloˇziˇsti. [Zav09]
2.8.3 Barevn´e hloubky dlaˇzdic
Barevn´a hloubka popisuje poˇcet pouˇzit´ych barev. Na tom tak´e z´avis´ı poˇcet bit˚u,
potˇrebn´ych k popisu barvy a tedy i datov´y objem. Nejmenˇs´ı datovou velikost bude m´ıt
obr´azek se dvˇema barvami, kter´y bude potˇrebovat pouze jeden bit (Mono Color). Naproti
tomu obr´azek, kter´y by pouˇz´ıval vˇsechny barvy, kter´e je lidsk´e oko schopno rozeznat by
k z´apisu potˇreboval 32 bit˚u (Super True Color). Pˇr´ıklady poˇctu bit˚u na pixel a poˇcet
moˇzn´ych barev je uveden v tabulce 2.2.
počet bitů počet barev označení
1 2 mono color
4 16
8 256
15 32 768 low color
16 65 536 high color
24 16 777 216 true color
32 4 294 mil. super true color
48 281,5 bil. deep color
Tabulka 2.2: Barevn´a hloubka obr´azk˚u poˇc´ıtaˇcov´e grafiky
Bˇeˇzn´e mapy jako v´ystup digit´aln´ı kartografie ovˇsem vyuˇz´ıvaj´ı barev mnohem m´enˇe.
Vˇetˇsinou postaˇc´ı 8-bit˚u/pixel (256 barev). Ovˇsem exporty s touto barevnou hloubkou
Filip Zavadil 15
Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı
nejsou v kartografick´ych ani GIS editorech bˇeˇzn´e. ˇCasto tak´e postaˇc´ı m´enˇe neˇz 64 barev a
t´ım dojde k v´yznamn´e redukci objemu dat, aniˇz by byla ovlivnˇena vizu´aln´ı kvalita mapy
pˇri zobrazen´ı na displeji. Je ovˇsem nutn´e pouˇz´ıt spr´avn´y algoritmus, kter´y poˇcet barev
vhodnˇe zredukuje. Lze vyuˇz´ıt napˇr. program pngquant4
, kter´y kvantuje obr´azky pomoc´ı
neuquant algoritmu na 8-bitovou hloubku s moˇznost´ı vybrat 256 a m´enˇe barev. T´ımto
dojde k optimalizaci (pˇri zachov´an´ı pr˚uhlednosti) a v´ysledn´y obr´azek je m´enˇe datovˇe
n´aroˇcn´y. V tabulce 2.3 si lze vˇsimnout zmˇeny datov´e velikosti pˇri redukci barev, aniˇz by
byla ovlivnˇena hodnota zobrazen´ı. Aplikace bude umoˇzˇnovat tuto optimalizaci
pˇri exportu pr´avˇe d´ıky programu pngquant.
8 b i t ů / p i x e l 4 b i t ů / p i x e l
256 barev
~184kB
~182kB
~118kB
64 barev
~112kB
~121kB
~92kB
16 barev
~63kB
~67kB
~61kB
4 barvy
~30kB
~33kB
~33kB
2 barvy
~18kB
~9kB
~18kB
Tabulka 2.3: Porovn´an´ı barevn´ych hloubek obr´azku 512 × 512 px
4
http://www.pngquant.org/
Filip Zavadil 16
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Kapitola 3
Sezn´amen´ı s aplikac´ı MapVision
3.1 MapVision
Aplikace byla navrhnuta pro pr´aci s mapov´ymi dlaˇzdicemi. Postupnˇe
byly pˇrid´any dalˇs´ı funkce ve formˇe modul˚u (ˇc´ast 3.5). D´ıky t´eto skuteˇcnosti je aplikace
lehce rozˇsiˇriteln´a o dalˇs´ı prvky a funkce. V pl´anu je implementovat rozˇs´ıˇren´ı aplikace po-
moc´ı metody plug-in. GUI (grafick´e uˇzivatelsk´e rozhran´ı) bylo navrˇzeno dle modern´ıch
aplikac´ı, proto se vizu´alnˇe nepodob´a bˇeˇzn´ym program˚um. Ikony jsou autorsk´e a pˇri jejich
v´yrobˇe byl br´an zˇretel na to, aby uˇzivatel intuitivnˇe poznal k ˇcemu jak´a ikona slouˇz´ı.
Aplikace byla pojmenov´ana [mapviˇzn]. Je to sloˇzeni dvou anglick´ych slov
map (mapa) a vision (vidˇen´ı) – prohl´ıˇzen´ı map. Logo (obr. 1.1) je sloˇzeno z n´azvu aplikace,
ˇctyˇr kosod´eln´ık˚u symbolizuj´ıc´ıch dlaˇzdice a ikony modelu Zemˇe, kter´y pod´av´a informaci,
ˇze se jedn´a o mapu.
3.2 Hlavn´ı okno
Po spuˇstˇen´ı se program otevˇre v maxim´aln´ım zobrazen´ı. Vˇetˇsina panel˚u je zapnuta a
v mapov´em oknˇe se spust´ı
”
v´ıtac´ı str´anka“. Hlavn´ı okno obsahuje vˇetˇsinu zn´am´ych prvk˚u,
jako jsou menu a liˇsta n´astroj˚u (ˇc´ast 3.7), n´asleduj´ı dva postrann´ı panely (ˇc´ast 3.5), mezi
nimiˇz je hlavn´ı ˇc´ast – mapov´e okno (ˇc´ast 3.3). Vespodu se nach´az´ı v´ypis protokolu (ˇc´ast
3.5.9), kde jsou vypisov´any v´ysledky poˇzadavk˚u a informace.
3.3 Mapov´e okno
Mapov´e okno zprostˇredkov´av´a veˇsker´e zobrazovac´ı funkce. Je to pl´atno (mapov´a
sc´ena), na kter´e se pˇrid´avaj´ı dlaˇzdice vˇsech vrstev, mapov´e grafick´e prvky nebo text.
Nach´az´ı se ve stˇredn´ım panelu aplikace.
Filip Zavadil 17
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Obr´azek 3.1: Hlavn´ı okno aplikace MapVision
3.4 Menu liˇsta
Aplikace obsahuje klasickou
”
menu“ liˇstu, jako bˇeˇznˇe uˇz´ıvan´e programy. Jsou zde
k nalezen´ı funkce pro pr´aci s aplikac´ı.
Soubor
• Otevˇri – umoˇzˇnuje nahr´at mapov´y dokument s nastaven´ım mapov´eho okna
nebo pˇridan´ych vrstev; mapov´y dokument je dle specifikace uveden´e v 3.12;
• Uloˇz – otevˇre dialog pro uloˇzen´ı mapov´eho dokumentu mvd;
• Uloˇz jako – pˇreuloˇz´ı mapov´y dokument mvd;
• Konec – ukonˇc´ı aplikaci.
Pˇridej – k dispozici je pˇrid´an´ı r˚uzn´ych typ˚u vrstev viz ˇc´ast 3.8.
• Lok´aln´ı dlaˇzdice;
• Online dlaˇzdice;
• SQLite datab´azov´y soubor;
• Georeferencovan´y obr´azek.
Filip Zavadil 18
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Export – export vrstev viz ˇc´ast 5.2.
• Jako obr´azek;
• Rozˇrezej dlaˇzdice.
V´ybˇer – moˇznosti definice ´uzem´ı na mapˇe;
• V´ybˇer myˇs´ı – pomoc´ı kurzoru
”
t´ahnut´ım“;
• V´ybˇer dle souˇradnic – otevˇre dialog v´ybˇer zad´an´ım souˇradnic; obr. 3.2;
• Informace o v´ybˇeru – otevˇre dialog, kter´y popisuje definovan´y v´ybˇer viz obr.
3.3.
Obr´azek 3.2: Dialog pro definici ´uzem´ı dle souˇradnic
Zobrazen´ı – z´aloˇzka s nastaven´ım mˇeˇr´ıtka mapov´eho okna, jednotliv´e moˇznosti
jsou zn´azornˇeny v tabulce n´ıˇze.
zobrazen´ı zkratka popis
200% mˇeˇr´ıtko mapov´eho okna 200%
150% mˇeˇr´ıtko mapov´eho okna 150%
100% Ctrl + 1 mˇeˇr´ıtko mapov´eho okna 100%
75% Ctrl + 2 mˇeˇr´ıtko mapov´eho okna 75%
50% Ctrl + 3 mˇeˇr´ıtko mapov´eho okna 50%
25% Ctrl + 4 mˇeˇr´ıtko mapov´eho okna 10%
10% mˇeˇr´ıtko mapov´eho okna 25%
Filip Zavadil 19
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Obr´azek 3.3: Dialog zobrazuj´ıc´ı informace o v´ybˇeru
Nastaven´ı – umoˇzˇnuje nastavit aplikaci .
Okno – zde je moˇzn´e zobrazit nebo skr´yt veˇsker´e moduly.
Pomoc.
• O aplikaci – otevˇre okno, popisuj´ıc´ı aplikaci, viz obr. 3.4.
• V´ıtac´ı okno – otevˇre okno, kter´e se spouˇst´ı pˇri startu.
3.5 Moduly
Na lev´e stranˇe se nach´az´ı panel, kde se nach´az´ı modul vrstvy (ˇc´ast 3.5.1) a modul
informace o mapov´em oknˇe (ˇc´ast 3.5.7). Na prav´e stranˇe lze nal´ezt moduly pro pr´aci
s mapou a daty. Kaˇzd´y modul obsahuje hlaviˇcku, kde je uveden jeho n´azev a tlaˇc´ıtko
min/max pro minimalizaci ˇci maximalizaci, tlaˇc´ıtko dock/undock pro odebr´an´ı ˇci pˇrid´an´ı
modulu do panelu. Posledn´ı tlaˇc´ıtko hide skryje modul. V menu liˇstˇe se nach´az´ı z´aloˇzka
Window/Okno, kde je moˇzn´e veˇsker´e moduly zapnout ˇci vypnout.
Filip Zavadil 20
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Obr´azek 3.4: Okno aplikace
”
O aplikaci“
3.5.1 Vrstvy
Pro zobrazen´ı a nastavov´an´ı jednotliv´ych vrstev je
vyuˇzit tento modul. Zde se zobraz´ı kaˇzd´a mapov´a vrstva.
Jednotliv´e poloˇzky lze jednoduˇse pˇreskupit t´ahnut´ım
myˇsi. Vrstvy jsou v mapov´em oknˇe zobrazeny ve stejn´em
poˇrad´ı jako v tomto modulu. U kaˇzd´e poloˇzky se
nach´az´ı zaˇskrt´avac´ı pol´ıˇcko, kter´e oznaˇcuje viditelnost
vrstvy v mapov´em oknˇe. Po kliknut´ı na poloˇzku prav´ym
tlaˇc´ıtkem myˇsi se zobraz´ı kontextov´a nab´ıdka. Vedle
ikonky vrstev se zobrazuje n´azev mapov´eho doku-
mentu. Pokud nen´ı jiˇz uloˇzen, zobrazuje se n´apis map
dokument*, jinak se zobrazuje jm´eno uloˇzen´eho ma-
pov´eho dokumentu.
3.5.2 Informace o souˇradnic´ıch
Tento modul slouˇz´ı pro pod´an´ı informace o souˇradnic´ıch. Pokud je zapnut n´astroj
kˇr´ıˇz , lze po kliknut´ı do mapov´eho okna zjistit souˇradnice v syst´emu wgs84 nebo
v uˇzivatelem definovan´em souˇradnicov´em syst´emu. Jelikoˇz je pouˇzita knihovna proj.4,
definice je upˇresnˇena pr´avˇe ve form´atu proj.4 (uk´azka viz k´od 2.1), kter´y lze zadat pˇr´ımo
do tohoto modulu. Na obr´azku n´ıˇze je zadan´y k´od pro definici Kˇrov´akova zobrazen´ı. De-
finice lze nal´ezt na webu1
. Zemˇepisn´e souˇradnice wgs84 lze zobrazovat v decim´aln´ım
form´atu nebo ve form´atu dms (Degree Minute Second) v hexagesim´aln´ı soustavˇe s ud´an´ım
1
http://www.spatialreference.org/
Filip Zavadil 21
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
kvadrantu: N,S (severn´ı, jiˇzn´ı ˇs´ıˇrka), W,E (z´apadn´ı,v´ychodn´ı d´elka). Pro pˇrep´ın´an´ı mezi
tˇemito reˇzimy slouˇz´ı tlaˇc´ıtko decimal format /degree format. Pomoc´ı tlaˇc´ıtka copy to
console lze souˇradnice vytisknout do tabulky do protokolu (viz ˇc´ast 3.5.9). Souˇradnice
definovan´eho syst´emu jsou v metrech, pokud je v proj.4 k´odu uvedeno +units=m. Po-
kud tomu tak nen´ı, v´ystup je automaticky pˇredkl´ad´an ve stupn´ıch a pol´ıˇcko degrees je
zaˇskrtnut´e.
3.5.3 Nalezen´ı polohy
Pokud je potˇreba vycentrovat mapu na urˇcit´e souˇradnice nebo nal´ezt polohu v mapˇe,
lze vyuˇz´ıt tento modul. Souˇradnice wgs84 lze zadat v hexagesim´aln´ım nebo decim´aln´ım
form´atu. Pol´ıˇcko zoom oznaˇcuje hladinu, na kterou se nastav´ı mapov´e okno. Pro tento mo-
dul se chyst´a implementace vyhled´av´an´ı podle adresy. Vyuˇzita bude sluˇzba Nominatim2
a datab´aze GEONAMES 3
.
3.5.4 Pˇrid´an´ı textu
Do mapy lze pomoc´ı tohoto n´astroje vkl´adat text, kter´y lze i form´atovat a pˇrizp˚usobit.
Po kliknut´ı na tlaˇc´ıtko add text se text um´ıst´ı do stˇredu mapov´eho okna a z´aroveˇn se
automaticky vybere n´astroj ukazatel , pomoc´ı kter´eho lze texty vyb´ırat a posouvat.
K dispozici jsou tak´e syst´emov´e fonty. Uˇzivatel si m˚uˇze nastavit kromˇe barvy p´ısma tak´e
ˇrez p´ısma (tuˇcnˇe, kurz´ıva) nebo podtrhnut´ı ˇci pˇreˇskrtnut´ı.
2
http://wiki.openstreetmap.org/wiki/Nominatim
3
http://www.geonames.org/
Filip Zavadil 22
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
3.5.5 Obr´azkov´e prvky
Pokud je potˇreba do mapy pˇridat symbol, ikonku nebo obr´azek lze s v´yhodou vyuˇz´ıt
pr´avˇe tento modul. Modul obsahuje obr´azky, kter´e se po dvojit´em kliknut´ı nebo stisknut´ı
tlaˇc´ıtka add to map pˇridaj´ı do stˇredu mapov´eho okna. Takto pˇridan´e prvky lze snadno
vˇsechny vybrat/odznaˇcit nebo skr´yt (tlaˇc´ıtka select all, clear all, hide all ). Tak´e
lze hromadnˇe prov´adˇet editace jak´ymi jsou zmˇena pr˚uhlednosti nebo mˇeˇr´ıtka. Uˇzivatel
si m˚uˇze do mapy pˇridat vlastn´ı obr´azek kliknut´ım na tlaˇc´ıtko load image from file
nebo pˇrid´an´ım obr´azku do adres´aˇre map items, kter´y se nach´az´ı v adres´aˇri aplikace. Po
restartov´an´ı programu se naˇctou novˇe pˇridan´e obr´azky. Lze pˇridat tyto obr´azkov´e form´aty:
png, jpg, tiff, bmp, svg. Doporuˇcen je posledn´ı (vektorov´y) form´at svg(d´ıky jeho
ˇsk´alovatelnosti). Jednotliv´e prvky lze posouvat pomoc´ı n´astroje ukazatel .
3.5.6 Grafick´e efekty
Jednou z moˇznost´ı, jak editovat data, je pouˇzit´ı grafick´eho efektu. V tuto dobu jsou
k dispozici tˇri efekty:
• st´ın – nastavuje se odsazen´ı st´ınu od osy x a y a tak´e polomˇer rozostˇren´ı;
Filip Zavadil 23
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
• obarven´ı – zde je moˇznost vybrat barvu a s´ılu obarven´ı;
• rozostˇren´ı – gaussovsk´e rozostˇren´ı je specifikov´ano hodnotou polomˇer (radius).
Pro aplikaci tˇechto efekt˚u je nutn´e vybrat prvek, na kter´y bude efekt pouˇzit a kliknout
na tlaˇc´ıtko add effect to selected. Po kliknut´ı na remove effect dojde k odebr´an´ı
efektu u vybran´eho prvku. Efekt lze aplikovat i pro vrstvy map, pokud je vybr´ana (lev´e
tlaˇc´ıtko myˇsi na modulu vrstvy, viz obr. 3.5.1).
3.5.7 Informace o mapov´em oknˇe
Modul zobrazuje informace o mapov´em oknˇe. Nejprve jsou ud´any souˇradnice pod
kurzorem myˇsi ve form´atu dms (zemˇepisn´a ˇs´ıˇrka/d´elka). Pot´e n´asleduje pol´ıˇcko zoom,
kter´e ud´av´a informaci o aktu´aln´ı hladinˇe a mˇeˇr´ıtko zobrazen´ı mapov´eho okna v pro-
centech. Obˇe poloˇzky jsou editovateln´e a lze si tak nastavit pˇresn´e zobrazen´ı. N´asleduje
pˇribliˇzn´e mˇeˇr´ıtko mapy a zaˇskrtnuteln´e tlaˇc´ıtko render (vykreslov´an´ı). Pokud nen´ı
zaˇskrtnuto, nedoch´az´ı k vykreslov´an´ı ˇz´adn´eho prvku ani vrstvy.
3.5.8 Informace o v´ybˇeru
V´ybˇer ´uzem´ı se zprostˇredkuje pomoc´ı n´astroje
v´ybˇer . Tento modul poskytuje informaci
o souˇradnic´ıch lev´eho horn´ıho rohu a prav´eho
spodn´ıho rohu. Souˇradnice jsou v souˇradnicov´em
syst´emu wgs84 a form´atu dms.
Filip Zavadil 24
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
3.5.9 Protokol
Do tohoto modulu (konzole) jsou postupnˇe vypisov´any vybran´e akce, kter´e uˇzivatel
provedl, nebo jsou zde zobrazeny chybov´e hl´aˇsky aplikace. Je to tak´e m´ısto, kde je moˇzn´e
zapisovat pozn´amky. Napˇr. modul Informace o souˇradnic´ıch nab´ız´ı v´ystup (tabulku
souˇradnic) do tohoto panelu. Na lev´e stranˇe se nach´az´ı tlaˇc´ıtka: hide (skryt´ı modulu),
clear (vymaz´an´ı cel´eho protokolu), save (uloˇzen´ı protokolu ve form´atech: webov´e pre-
zentace – html, richtext – rtf, plaintext – txt).
3.6 V´ıtac´ı okno
Ihned po spuˇstˇen´ı aplikace se zobraz´ı
”
v´ıtac´ı okno“ (obr. 3.5), kter´e uˇzivateli umoˇzˇnuje
rychlou navigaci v n´apovˇedˇe aplikace a z´aroveˇn zobraz´ı tipy pˇri pr´aci s programem. Pˇri
kliknut´ı na dlaˇzdici se otevˇre internetov´y prohl´ıˇzeˇc s pˇr´ısluˇsnou str´ankou. Uˇzivatel se tak
m˚uˇze dozvˇedˇet
”
Jak zaˇc´ıt“, nahl´ednout na internetov´e str´anky projektu, st´at se fanouˇskem
na Facebooku, nebo si prohl´ednout dokumentaci.
3.7 Sada n´astroj˚u
N´astroje umoˇzˇnuj´ı pr´aci s mapov´ym oknem a urˇcuj´ı chov´an´ı prvk˚u.
Otevˇre soubor mvd (MapVision Dokument; mapov´y dokument), kter´y
definuje zobrazen´e vrstvy a nastaven´ı mapov´eho okna.
Uloˇz´ı zmˇeny v otevˇren´em mapov´em dokumentu mvd.
Pˇrid´a mapov´y set ve struktuˇre adres´aˇr˚u a obr´azk˚u.
Filip Zavadil 25
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Pˇrid´an´ı sluˇzby tms/wmts.
Vrstva s mapov´ymi dlaˇzdicemi ve form´atu mbtiles.
N´astroj umoˇzˇnuje definici v´ybˇeru v mapˇe kurzorem myˇsi.
Slouˇz´ı pro posouv´an´ı a zmˇenu mˇeˇr´ıtka mapy.
Ukazatel pro vybr´an´ı jednotliv´ych mapov´ych prvk˚u (grafick´e prvky a
text), pomoc´ı kl´avesy ctrl je moˇzn´e seskupovat v´ybˇer.
Zjiˇstˇen´ı souˇradnic, kliknut´ım do mapov´eho okna.
Zmˇena hladiny zoom o jednotku m´enˇe (m´enˇe podrobn´a mapa).
Zmˇena hladiny zoom o jednotku v´ıce (podrobnˇejˇs´ı mapa).
Zmˇena mˇeˇr´ıtka mapov´eho okna (zmenˇsen´ı).
Zmˇena mˇeˇr´ıtka mapov´eho okna (zvˇetˇsen´ı).
Pˇrekresl´ı mapov´e okno a vrstvy jsou znovu naˇcteny.
Obr´azek 3.5: V´ıtac´ı str´anka zobrazuje tipy a odkazy pro n´apovˇedu
Filip Zavadil 26
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
3.8 Vstupn´ı vrstvy
V souˇcasn´e chv´ıli jsou k dispozici ˇctyˇri typy mapov´ych vrstev. V pl´anu je dalˇs´ı
vrstva, kter´a bude vyuˇz´ıvat sluˇzbu wms, kter´a je obecnˇe rozˇs´ıˇrenˇejˇs´ı.
Lok´aln´ı dlaˇzdice (Tiles-local)
Mapov´y set nach´azej´ıc´ı se na ´uloˇziˇsti ve struktuˇre popsan´e na obr´azku 2.9.
Dlaˇzdice online (Tiles-online)
Tato vrstva podporuje sluˇzby wmts,tms a je d´ıky speci´aln´ımu z´apisu
pˇrizp˚usobiteln´a mnoha dalˇs´ım sluˇzb´am. Dalˇs´ı informace viz ˇc´ast 3.8.
Georeferencovan´y obr´azek (Georeferenced Image)
Podpora pˇrid´an´ı georeferencovan´eho obr´azku. Georeferencov´an´ı je zprostˇred-
kov´ano souborem s definic´ı tzv. worldfile (web mercator), viz odd´ıl 2.7.
SQLite datab´aze (MBtiles)
Dlaˇzdice uloˇzen´e v souborov´e datab´azi SQLite jsou podporov´any ve form´atu
mbtiles. V pl´anu je pˇrid´an´ı specifikace podobn´eho form´atu, kter´e
vyuˇz´ıvaj´ı aplikace Locus nebo MOBAC.
Kaˇzd´a vrstva lze nastavovat skrze dialog vlastnost´ı (obr. 3.6), kter´y je dostupn´y
pˇres kontextov´e menu vyvolan´e prav´ym tlaˇc´ıtkem u pˇr´ısluˇsn´e vrstvy v panelu vrstvy. Je
moˇzn´e nastavit tyto parametry: n´azev vrstvy, zdroj vrstvy, pr˚uhlednost vrstvy, referenˇcn´ı
bod (souˇradnice, hladina zoom) a polohu poˇc´atku osy y.
Obr´azek 3.6: Dialog nastaven´ı parametr˚u vrstvy
3
http://www.mbtiles.org/
Filip Zavadil 27
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Dodatek k online sluˇzb´am
Z´apis zdroje online sluˇzby byl koncipov´an tak, aby bylo jednoduch´e pˇridat st´avaj´ıc´ı
sluˇzbu, kter´a je podobn´a sluˇzb´am tms, wmts, OSM, Google Map. Pˇr´ıklad url adresy,
kter´a je zad´av´ana do pol´ıˇcka zdroj :
http://${sub[a,b,c]}.server.org/zoom=${z}/x=${x}/y=${y}.png
symbol popis
${sub[a,b,c]} symboly (a,b,c) zastupuj´ı n´azev subdom´en, kter´e
sluˇzba vyuˇz´ıv´a, aby nebyl zat´ıˇzen pouze jeden server
${z} zastupuj´ıc´ı znak pro hladinu zoom
${x} na m´ıstˇe tohoto znaku bude nahrazeno ˇc´ıslo osy x
${y} n´azev osy y, koncovka (.png)
Zdroje online sluˇzeb
Zde jsou uvedeny zdroje online mapov´ych sluˇzeb. Vˇetˇsina z nich m´a omezen´e pouˇzit´ı,
proto je potˇreba d˚ukladnˇe prostudovat podm´ınky pouˇzit´ı, na kter´e je uveden odkaz pod
sluˇzbami. Odkaz na sluˇzby staˇc´ı zkop´ırovat do pol´ıˇcka zdroj.
OSM odvozen´e
http://${sub[a,b,c]}.tile.openstreetmap.org/${z}/${x}/${y}.png
http://${sub[a,b,c]}.tile.cloudmade.com/(API key)/1/256/${z}/${x}/${y}.png
http://${sub[a,b,c]}.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png
http://${sub[a,b,c]}.tile.cloudmade.com/(API key)/7/256/${z}/${x}/${y}.png
podm´ınky pouˇzit´ı: http://www.openstreetmap.org/copyright
(API key) – http://developers.cloudmade.com/projects/tiles/documents
MapQuest, 4U map
http://mtile0${sub[1,2,3,4]}.mqcdn.com/tiles/1.0.0/vx/map/${z}/${x}/${y}.png
http://otile${sub[1,2,3,4]}.mqcdn.com/tiles/1.0.0/sat/${z}/${x}/${y}.jpg
http://4umaps.eu/${z}/${x}/${y}.png
podm´ınky pouˇzit´ı: http://wiki.openstreetmap.org/wiki/MapQuest#MapQuest-hosted_map_tiles
http://www.4umaps.eu/terms-of-use.htm
Google maps
http://mts${sub[1,2,3]}.google.com/vt/lyrs=mx=${x}y=${y}z=${z}
http://mts${sub[1,2,3]}.google.com/vt/lyrs=sx=${x}y=${y}z=${z}
http://mts${sub[1,2,3]}.google.com/vt/lyrs=tx=${x}y=${y}z=${z}
http://mts${sub[1,2,3]}.google.com/vt/lyrs=hx=${x}y=${y}z=${z}
podm´ınky pouˇzit´ı: https://developers.google.com/maps/terms
Filip Zavadil 28
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
3.9 Export
Pro moˇznosti exportu je zde implementov´ano uloˇzen´ı mapy jako obr´azek nebo jako
mapov´y set. V budoucnu se poˇc´ıt´a s moˇznost´ı uloˇzen´ı do souborov´e datab´aze sqlite, popˇr.
jin´ych form´at˚u (sqlite, geotiff, . . . ).
• Export rastrov´eho obr´azku lze definovat v´ybˇerem, souˇradnicemi nebo dle zob-
razen´e ˇc´asti, nab´ız´ı se zde moˇznost vytvoˇren´ı i worldfile – souboru pro georefe-
rencov´an´ı v souˇradnicov´em syst´emu epsg:3857. V dialogu pro definici v´yˇrezu lze
vybrat ´uzem´ı dle zobrazen´e oblasti, zadan´ych souˇradnic, nebo dle v´ybˇeru myˇs´ı. D´ale
je k dispozici nastaven´ı velikosti obr´azku v pixelech. Pˇri zaˇskrtnut´ı pol´ıˇcka world-
file se pˇri exportu vytvoˇr´ı i textov´y soubor worldfile. Uk´azka dialogu je uvedena
na obr. 3.7.
• Export mapov´eho setu nab´ız´ı moˇznost rozˇrez´an´ı mapov´eho okna a uloˇzen´ı ma-
pov´ych dlaˇzdic do struktury podobn´e sluˇzbˇe tms.
Obr´azek 3.7: Dialog pro uloˇzen´ı v´yˇrezu mapy
3.10 Kl´avesy a kl´avesov´e zkratky
Pro rychlejˇs´ı a jednoduˇsˇs´ı pr´aci s aplikac´ı lze pouˇz´ıt kl´avesov´e zkratky. Pˇri n´avrhu
zkratek byl br´an ohled na
”
zaˇzit´e“ postupy. N´ıˇze jsou zobrazeny a pops´any kl´avesov´e
zkratky aplikace
Filip Zavadil 29
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
kl´avesa ikona funkce
space posun mapy v mapov´em oknˇe pˇri stisknut´e kl´avese
Alt + O otevˇren´ı mapov´eho dokumentu mvd
Alt + S uloˇzen´ı mapov´eho dokumentu mvd
Alt + Shift + S pˇreuloˇzen´ı mapov´eho dokumentu mvd
Alt + A spuˇstˇen´ı okna
”
O aplikaci“
Alt + R zapnut´ı/vypnut´ı vykreslov´an´ı
Alt + H n´astroj pro posun mapy
Alt + S definice v´ybˇeru ´uzem´ı
Alt + P v´ybˇer a editace grafick´ych prvk˚u
Alt + C sn´ım´an´ı souˇradnic
Ctrl + - zmenˇs´ı mˇeˇr´ıtko zobrazen´ı o 10%
Ctrl + + zvˇetˇs´ı mˇeˇr´ıtko zobrazen´ı o 10%
Alt + + zvˇetˇs´ı hladinu zoom o jednotku
Alt + - zmenˇs´ı hladinu zoom o jednotku
Ctrl R, F5 pˇrekresl´ı mapov´e okno
Ctrl + 1 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 100%
Ctrl + 2 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 75%
Ctrl + 3 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 50%
Ctrl + 4 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 25%
Alt + I dialog pro uloˇzen´ı v´yˇrezu mapy jako obr´azek
Alt + W spust´ı
”
v´ıtac´ı str´anku“
Alt + Q ukonˇc´ı aplikaci
3.11 Budouc´ı vylepˇsen´ı
Zde jsou uvedeny prvky a funkce, kter´e budou postupnˇe implementov´any, aby se
aplikace stala v´ıce vyuˇzitelnˇejˇs´ı.
• SQLite – export: zaˇclenˇen´ı exportu v tˇechto form´atech: mbtiles (MapBox)4
nebo
sqlite(Locus5
, mobac6
);
• PDF – export: uloˇzen´ı v´yˇrezu mapy do form´atu pdf;
• WMS: pˇrid´an´ı moˇznosti naˇc´ıtat sluˇzbu Web Map Service;
• GPX: moˇznost naˇc´ıt´an´ı, editace a exportu form´atu gps exchange format;
4
http://mapbox.com/developers/mbtiles/
5
http://www.locusmap.eu/
6
http://mobac.sourceforge.net/
Filip Zavadil 30
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
• Vyhled´av´an´ı adres: zjiˇstˇen´ı adresy dle souˇradnic a vyhled´an´ı polohy podle adresy;
vyuˇzita bude sluˇzba nominatim7
a datab´aze n´azv˚u geonames8
;
• Georeferencov´an´ı: moˇznost georeferencovat obr´azek (rotace, translace, zmˇena mˇeˇr´ıtka);
• Editace: pˇrid´an´ı vektorov´e vrstvy, do kter´e bude moˇzno zakreslovat mapov´e prvky
(body, linie, polygony);
• SHP: umoˇzn´ı naˇc´ıt´an´ı a export vektorov´e vrstvy do form´atu shapefile;
• GeoTIFF: umoˇzn´ı naˇc´ıt´an´ı a export do georeferencovan´eho tiffu;
• GDAL: zaˇclenˇen´ı funkc´ı t´eto knihovny.
3.12 Mapov´y dokument mvd
Pro ´uˇcely uloˇzen´ı pˇridan´ych vrstev a uloˇzen´ı nastaven´ı mapov´eho okna byl vyvinut
form´at MapVision Dokument - mvd. Ten je zaloˇzen na znaˇckovac´ım jazyku xml.
Zdroj. k´od 3.1: Uk´azka MapVision Dokumentu§
1 ?xml version=” 1.0 ”?
2 !DOCTYPE MapVisionDocument
3 map desc=”my map” zoom=”4” scale=”50” created=”2012−11−15T08:55:22 ”
4 name=” Introduce MV” owner=” F i l i p ” saved=”2012−11−16T14:47:10 ”
5 longtitude=” 35.1562 ” latitude=” 30.7513 ”
7 layers
8 layer opacity=”100” zoom=”1” zValue=”0” type=”TMSlocal”
9 source=”C:/testMap/GOOGLE NAMES” name=”GOOGLE NAMES”
10 longtitude=”0” latitude=” 85.0511 ”/
12 layer opacity=”100” zoom=”1” zValue=”1” type=”TMSlocal”
13 source=”C:/testMap/ stiny ” name=” stiny ”
14 longtitude=”0” latitude=” 85.0511 ”/
15 /layers
17 /map
¦ ¥
Aby byl dokument mvd validn´ı a program pˇri jeho nahr´av´an´ı nespadl, bylo vy-
tvoˇreno sch´ema (ˇsablona), kter´e urˇcuje elementy a atributy dokumentu mvd.
7
http://wiki.openstreetmap.org/wiki/Nominatim
8
http://www.geonames.org
Filip Zavadil 31
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
Tabulka 3.1: Popis element˚u a atribut˚u v MVD dokumentu
element atribut popis a funkce
map element popisuj´ıc´ı nastaven´ı a metadata mapov´eho okna
desc kr´atk´y popis mapov´e sc´eny
zoom hladina zoom mapov´eho okna
scale mˇeˇr´ıtko zobrazen´ı mapov´eho okna
created datum a ˇcas prvn´ıho vytvoˇren´ı mvd dokumentu
name n´azev mapov´e sc´eny
owner jm´eno uˇzivatele
saved datum a ˇcas uloˇzen´ı/pˇreuloˇzen´ı
longtitude zemˇepisn´a d´elka stˇredu mapov´eho okna
latitude zemˇepisn´a ˇs´ıˇrka stˇredu mapov´eho okna
layers element sdruˇzuj´ıc´ı jednotliv´e vrstvy
layer element popisuje nastaven´ı a metadata vrstvy
name n´azev mapov´e vrstvy
source zdroj/um´ıstˇen´ı/url mapov´e vrstvy
zoom zoom hladina referenˇcn´ıho bodu vrstvy
longtitude zemˇepisn´a d´elka referenˇcn´ıho bodu vrstvy
latitude zemˇepisn´a ˇs´ıˇrka referenˇcn´ıho bodu vrstvy
opacity nastaven´ı pr˚uhlednosti vrstvy
type typ vrstvy (lok´aln´ı/online/mbtiles/georeferenced)
zValue poˇrad´ı vrstvy v mapov´em oknˇe
3.13 Licence
Aplikace je vyd´ana pod licenc´ı GNU LGPL v2.1 (GNU Lesser Ge-
neral Public License)9
. U kaˇzd´eho souboru se zdrojov´ym k´odem je uvedena preambule
informuj´ıc´ı o pr´avech a moˇznostech ˇs´ıˇren´ı.
This MapVision software is c Filip Zavadil 2013. It is licensed under the LGPL
license. This MapVision software dynamically links to unmodified Qt5 Library.
The Qt5 Library is c 2013 Qt R and/or its subsidiary(-ies), and is licensed
under the GNU Lesser General Public License version 2.1 with Qt R LGPL exception
version 1.1.
Qt5 library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License, version 2.1, as published by
the Free Software Foundation. Qt5 library is provided AS IS, without
WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A~PARTICULAR PURPOSE.
9
http://www.gnu.org/copyleft/lesser.html
Filip Zavadil 32
Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision
As an additional permission to the GNU Lesser General Public License version 2.1,
the object code form of a work that uses the Library may incorporate material
from a header file that is part of the Library. You may distribute such object
code under terms of your choice, provided that: (i) the header files of
the Library have not been modified; and (ii) the incorporated material is limited
to numerical parameters, data structure layouts, accessors, macros, inline
functions and templates; and (iii) you comply with the terms of Section 6 of the
GNU Lesser General Public License version 2.1.
Moreover, you may apply this exception to a modified version of the Library,
provided that such modification does not involve copying material from the Library
into the modified Library’s header files unless such material is limited to (i)
numerical parameters; (ii) data structure layouts; (iii) accessors; and (iv) small
macros, templates and inline functions of five lines or less in length.
Furthermore, you are not required to apply this additional permission to a
modified version of the Library.
You should have received a copy of the GNU Lesser General Public License along
with this package; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
The source code for Qt 5.X SDK is available from Qt Project here:
http://qt-project.org/downloads
Filip Zavadil 33
Kapitola 4. V´yvojov´e prostˇred´ı
Kapitola 4
V´yvojov´e prostˇred´ı
Cel´a aplikace byla naps´ana ve frameworku c++/qt. Jak jiˇz n´azev napov´ıd´a, jedn´a
se o objektovˇe orientovan´y jazyk c++ s knihovnou qt, kter´a tak´e obsahuje grafick´e
uˇzivatelsk´e prostˇred´ı. Framework qt je multiplatformn´ı, proto nen´ı probl´em vydat aplikaci
pro platformu Windows, Linux nebo MacOS.
Obr´azek 4.1: Logo frameworku Qt a mottem
4.1 Historie a v´yvoj Qt
V roce 1991 zaˇcal v norsk´em Oslu v´yvoj frameworku qt pod ˇst´ıtkem firmy TrollTech.
Nejdˇr´ıve byl framework ˇs´ıˇren jako opensource pouze pro unixov´e syst´emy. Pro Windows
musela b´yt pouˇzita komerˇcn´ı licence. O deset let pozdˇeji, kdy bylo vyd´ano qt 3.0, se do
seznamu podporovan´ych platforem zaˇradil i syst´em MacOS. Od roku 2003 jsou k dispozici
du´aln´ı licence pro vˇsechny podporovan´e platformy. V roce 2005 byla vyd´ana verze qt
4.0. O ˇctyˇri roky pozdˇeji pˇrevzala v´yvoj spoleˇcnost Nokia, kter´a do produktu zaˇradila
podporu sv´eho operaˇcn´ıho syst´emu pro mobiln´ı telefony Symbian. V roce 2011 prodala
Nokia pr´ava a licenci pro komerˇcn´ı projekty spoleˇcnosti Digia s ujiˇstˇen´ım, ˇze du´aln´ı licence
bude zachov´ana. Ke konci roku 2012 byla vyd´ana verze qt 5.0, ve kter´e je v dobˇe psan´ı
t´eto pr´ace aplikace sestavena.
Filip Zavadil 34
Kapitola 4. V´yvojov´e prostˇred´ı
4.2 Licence
qt project1
je vyv´ıjen s otevˇren´ym zdrojov´ym k´odem. V´yhodou t´eto skuteˇcnosti
je, ˇze m˚uˇze vznikat komunita pˇrispˇevovatel˚u, kteˇr´ı se mohou zapojit do v´yvoje. Aplikaci
ˇci knihovnu vytvoˇrenou v qt lze tedy vyd´avat pod nˇekolika druhy licenc´ı.
Opensource licence
V dobˇe psan´ı t´eto pr´ace je moˇzn´e programy vytvoˇren´e v qt vyd´avat pod licenc´ı
GNU LGPL v2.1 (GNU Lesser General Public License). Tato licence je pˇredstavuje
stˇred mezi opensource licencemi GNU GPL a MIT nebo BSD. Programy nebo knihovny
s touto licenc´ı nemus´ı m´ıt narozd´ıl od GNU GPL stejnou licenci. Lze ji tedy pouˇz´ıt v pro-
priet´arn´ıch aplikac´ıch, mus´ı b´yt ovˇsem uvedena licence a autor se zachov´an´ım otevˇren´eho
k´odu. Pouˇzit´e knihovny by mˇely b´yt linkov´any dynamicky (mimo hlavn´ı spustiteln´y sou-
bor). Aplikace je vyd´ana pr´avˇe pod touto licenc´ı. Alternativnˇe lze vyuˇz´ıt tak´e
licenci GNU GPL v3.0 .
Komerˇcn´ı licence
Dalˇs´ı moˇznost´ı jak vyv´ıjet aplikace postaven´e na qt, je pod komerˇcn´ı (propriet´arn´ı)
licenc´ı. Ta je spravov´ana spoleˇcnost´ı Digia2
. Tato spoleˇcnost nab´ız´ı produkt qt Commer-
cial, kter´y nab´ız´ı nejnovˇejˇs´ı qt knihovnu stejnˇe jako qt project. Aplikace ˇci knihovna
vydan´a pod qt Commercial m˚uˇze m´ıt jakoukoliv licenci, ˇz´adn´a omezen´ı jiˇz nejsou za-
hrnuta. Zdrojov´y k´od nemus´ı b´yt tak´e pˇr´ıstupn´y. S touto licenc´ı je zaruˇcena technick´a
podpora a p´eˇce o z´akazn´ıka. Knihovny mohou b´yt linkov´any staticky.
4.3 Souˇc´asti Qt Framework
V qt sdk (Software Developement Kit) je k dispozici ˇrada n´astroj˚u, kter´a usnadn´ı
v´yvoj cel´e aplikace od pl´anov´an´ı aˇz k jej´ımu vyd´an´ı. N´ıˇze je uveden seznam vybran´ych
n´astroj˚u, kter´e byly tak´e pouˇzity pˇri v´yvoji aplikace . [Pro13]
• Qt Creator (obr.4.2) je editor nebo sp´ıˇse v´yvojov´e prostˇred´ı, kde je integrov´ana
dokumentace. Pˇri psan´ı aplikace automaticky zv´yrazˇnuje nebo doplˇnuje k´od. Qt
Creator obsahuje n´astroj na spr´avu verz´ı. K dispozici je i v´ykonn´y debugger.
• Qt Designer je n´astroj pro vytv´aˇren´ı GUI (grafick´e uˇzivatelsk´e rozhran´ı) na
z´akladˇe tzv. Qt Wigdet˚u. Jejich z´akladn´ı seznam je vyobrazen na obr. 4.3.
• Qt Linguist je vhodn´y pro vytv´aˇren´ı jazykov´ych mutac´ı. Pˇreloˇzit lze vˇsechny hod-
noty promˇenn´ych QString, kter´e jsou uvedeny jako argument funkce tr().
1
http://qt-project.org
2
http://qt.digia.com
Filip Zavadil 35
Kapitola 4. V´yvojov´e prostˇred´ı
• Qt Assistant je n´astroj pro vytvoˇren´ı on-line dokumentac´ı nebo n´apovˇedy.
• qmake samostatn´y program pro sestaven´ı spustiteln´eho souboru; program s´am
vytv´aˇr´ı i Makefiles.
Obr´azek 4.2: Prostˇred´ı Qt Creator se spuˇstˇen´ym projektem MapVision
4.4 Programy postaven´e na Qt
Zde je uveden seznam3
vybran´ych program˚u, kter´e jsou (cel´e nebo jejich ˇc´asti)
vyv´ıjeny v prostˇred´ı qt:
• Quantum GIS,
• QCad,
• GNU Octave,
• Google Earth,
• Autodesk Maya,
• LibreCAD,
• Skype,
• Adobe Photoshop Album,
• Amazon Kindle,
• VLC media player,
• Konqueror,
• Texmaker.
3
´upln´y seznam – http://en.wikipedia.org/wiki/Category:Software that uses Qt
Filip Zavadil 36
Kapitola 4. V´yvojov´e prostˇred´ı
Obr´azek 4.3: Qt Designer: widgety pro grafick´e rozhran´ı
4.5 Verzov´an´ı
Pro potˇreby uchov´av´an´ı historie editac´ı bˇehem v´yvoje aplikace se pouˇz´ıvaj´ı tzv.
syst´emy spr´avy verz´ı. Ty jsou schopny proveden´e zmˇeny uchov´avat a n´aslednˇe se k nim
vr´atit, pokud je v k´odu nalezena chyba. V souˇcasnosti jsou k dispozici dva typy program˚u
pro spr´avu verz´ı. Prvn´ım z nich jsou syst´emy centralizovan´e (repozit´aˇr je pouze na
jednom m´ıstˇe – serveru). Mezi tento typ patˇr´ı tyto nejpouˇz´ıvanˇejˇs´ı opensource programy:
CVS, Subversion. Druh´y typ zastupuj´ı syst´emy distribuovan´e (repozit´aˇr m˚uˇze b´yt na
lok´aln´ım disku). Mezi distribuovan´e syst´emy patˇr´ı napˇr. Git, Mercurial, Bazaar. Pro v´yvoj
aplikace a pro spravov´an´ı t´eto publikace byl vyuˇzit opensource syst´em spr´avy
verz´ı Git.
Distribuovan´y syst´em spr´avy verz´ı git byl vyvinut p˚uvodnˇe pro v´yvoj j´adra operaˇcn´ıho
syst´emu GNU Linux Linusem Torvaldsem. Postupnˇe se vˇsak stal samostatn´ym a pouˇz´ıvan´ym
syst´emem. Vzd´alen´e
”
hostov´an´ı“ opensource projekt˚u (na b´azi git) nab´ız´ı mnoho server˚u.
Nam´atkou tˇreba Gitorious4
, GitHub, Google code nebo CodePlex5
Aplikace a tato pr´ace je opensource projekt a tedy zdrojov´e k´ody jsou volnˇe dostupn´e
z repozit´aˇr˚u na serveru Gitorious.org .
• Projekt MapVision: http://www.gitorious.org/mapvision
• Diplomov´a pr´ace: http://gitorious.org/mapvision-diploma-thesis
4
https://www.gitorious.org/
5
http://www.codeplex.com/
Filip Zavadil 37
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
Kapitola 5
V´ybˇer ze zdrojov´eho k´odu
Pro potˇreby sestaven´ı aplikace bylo vytvoˇreno nˇekolik tˇr´ıd. Vˇetˇsina jich je odvo-
zen´ych a vyuˇz´ıvaj´ı metody dˇediˇcnosti, kdy se implementuj´ı nov´e vlastnosti existuj´ıc´ıch
tˇr´ıd z knihovny qt.
§
1 QString getMapScale ()
2 {
3 double r e s o l u t i o n =156543.034∗ cos ( this−getCenterLonLat ( ) . y ()∗M PI/180)
4 /(pow(2 , zoom ) ) ;
5 int dpi = QApplication : : desktop()−physicalDpiX ( ) ;
6 double s c a l e = ( dpi ∗ 39.37 ∗ r e s o l u t i o n ) ;
7 return QString : : number( scale , ’ f ’ , 0 ) ;
8 }
¦ ¥
Zdroj. k´od 5.1: Mˇeˇr´ıtko mapy z´avisl´e na zemˇepisn´e ˇs´ıˇrce
§
1 int main ( int argc , char ∗argv [ ] )
2 {
3 QCoreApplication : : setApplicationName ( ”MapVision” ) ;
4 QCoreApplication : : setApplicationVersion ( ” 0 . 8 . 1 ” ) ;
5 QApplication a ( argc , argv ) ;
6 a . s e t S t y l e ( ” fusion ” ) ;
7 QTranslator t r a n s l a t o r ;
8 a . i n s t a l l T r a n s l a t o r ( t r a n s l a t o r ) ;
9 QPixmap pixmap ( ”images/ startUpScreen . png” ) ;
10 QSplashScreen splash (pixmap , Qt : : WindowStaysOnTopHint ) ;
11 splash . show ( ) ;
12 MapVision w;
13 w. showMaximized ( ) ;
14 splash . f i n i s h (w) ;
15 return a . exec ( ) ;
16 }
¦ ¥
Zdroj. k´od 5.2: Funkce main()
Filip Zavadil 38
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
V n´asleduj´ıc´ı tabulce je uveden jejich pˇrehled a popis funkcionality. Vybran´e tˇr´ıdy
jsou detailnˇeji pops´any n´ıˇze.
n´azev tˇr´ıdy popis
zavaproj tˇr´ıda pro pˇrevod a v´ypoˇcet souˇradnic (ˇc´ast5.1)
about okno o aplikaci
addselectionrect tˇr´ıda implementuj´ıc´ı v´ybˇer ´uzem´ı
dialogexport dialogov´e okno pro export v´yˇrezu mapy jako obr´azek
dialogexportcutting dialogov´e okno pro export mapy jako dlaˇzdice
dialoglayerimg dialogov´e okno georeferencovan´eho obr´azku
dialoglayersqlite dialogov´e okno SQLite vrstvy
dialoglayertileslocal dialogov´e okno lok´aln´ıch dlaˇzdic
dialoglayertilesonline dialogov´e okno online dlaˇzdic
dialogpreferences dialogov´e okno nastaven´ı vrstev
dialogpreferencesglobal dialogov´e okno nastaven´ı aplikace
dockwidgetaddmapfeatures tˇr´ıda modulu mapov´e prvky
dockwidgetconsole tˇr´ıda modulu Protokol
dockwidgetcoorsinfo tˇr´ıda modulu Informace o souˇradnic´ıch
dockwidgeteffects tˇr´ıda modulu Grafick´e efekty
dockwidgetgeneral rodiˇcovsk´a tˇr´ıda modul˚u
dockwidgetgeneralleft rodiˇcovsk´a tˇr´ıda modul˚u
dockwidgetselectioninfo tˇr´ıda modulu Informace o v´ybˇeru
dockwidgettext tˇr´ıda modulu Text
dockwidgetzoomto tˇr´ıda modulu Pˇrejdi na
export tˇr´ıda zajiˇstuj´ıc´ı funkce exportu (ˇc´ast 5.2)
graphicsfeatureitem implementace grafick´eho rastrov´eho prvku
graphicsfeatureitemsvg implementace grafick´eho vektorov´eho prvku
graphicstextitem implementace grafick´eho textov´eho prvku
layer rodiˇcovsk´a tˇr´ıda pro jednotliv´e typy vrstev, (ˇc´ast 5.3)
layerimg implementace vrstvy rastrov´eho obr´azku
layersqlite implementace vrstvy SQLite
layertileslocal implementace vrstvy lok´aln´ıch dlaˇzdic
layertilesonline implementace vrstvy dlaˇzdic online
listwidget implementace panelu
”
pˇrehled vrstev“
mapdocumet implementace mapov´eho dokumentu mvd
mapscene tˇr´ıda pˇrid´av´a vlastnosti tˇr´ıdˇe QGraphicsScene
mapview implementace mapov´eho okna, (ˇc´ast5.4)
mapvision implementace hlavn´ıho okna aplikace
selectionrubberband tˇr´ıda implementuje v´ybˇer
welcome tˇr´ıda implementuje V´ıtac´ı okno
Filip Zavadil 39
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
5.1 ZavaProj
V t´eto tˇr´ıdˇe jsou implementov´any metody pro pˇrevod mezi r˚uzn´ymi druhy souˇradnic.
D´ale je zde implementov´ana funkce pro v´ypoˇcet vzd´alenosti, mˇeˇr´ıtka nebo pro pˇrevod
zemˇepisn´ych souˇradnic do form´atu dms. Tato tˇr´ıda tak´e naˇc´ıt´a knihovnu proj.4, a d´ıky
tomu je k dispozici pˇrevod do libovoln´eho souˇradnicov´eho syst´emu.
lonlat2tileFormat
Pro ´uˇcely pˇrevodu souˇradnic mezi syst´emem wgs84 a form´atem dlaˇzdic lze vyuˇz´ıt
tuto funkci. Vstupn´ı promˇenn´e jsou double lon, double lat (zemˇepisn´e souˇradnice),
int zoom (hladina
”
zoom“) a Yaxis yaxis (poloha poˇc´atku vˇetve y). V´ystupn´ı
hodnotou jsou souˇradnice bodu ve form´atu dlaˇzdic (QPoint). K´od lze nal´ezt v uk´azce
5.3.
§
1 QPoint lonlat2tileFormat (double lon , double lat , int zoom , Yaxis yaxis )
2 {
3 QPoint xy ;
4 int m=pow (2 . 0 , zoom ) ;
5 xy . setX (( int )( f l o o r (( lon + 180.0) / 360.0 ∗ m) ) ) ;
6 xy . setY (( int )( f l o o r ( ( 1 . 0 − log ( tan ( l a t ∗ M PI/180.0) + 1.0
7 / cos ( l a t ∗ M PI /180.0)) / M PI) / 2.0 ∗ m) ) ) ;
8 // conversion to TMS
9 i f ( yaxis==BOTTOM) xy . setY (m−xy . y() −1);
10 return xy ;
11 }
13 double Clip (double n , double minValue , double maxValue )
14 {
15 return std : : min( std : : max(n , minValue ) , maxValue ) ;
16 // return qMin(qMax(n , minValue ) , maxValue ) ;
17 }
¦ ¥
Zdroj. k´od 5.3: Pˇrevod mezi syst´emy WGS84 a syst´emem dlaˇzdic
tileFormat2lonlat
Reverzn´ı funkce k pˇredchoz´ı. QPoint xy, int zoom, Yaxis yaxis slouˇz´ı jako vstup.
Na v´ystupu se nach´azej´ı zemˇepisn´e souˇradnice ve form´atu QPointF.
pixels2lonlat
Funkce pˇrevede souˇradnice z mapov´e sc´eny v pixelech na souˇradnice zemˇepisn´e.
QPoint pixels, int zoom jsou vstupn´ı parametry. V´ystup jsou zemˇepisn´e souˇradnice
ve form´atu QPointF. Zdrojov´y k´od viz uk´azka 5.4.
Filip Zavadil 40
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
§
1 QPointF p i x e l s 2 l o n l a t (QPoint pixelPos , int zoom)
2 {
3 double pixelX=pixelPos . x ( ) ;
4 double pixelY=pixelPos . y ( ) ;
5 double mapSize = 256  zoom ;
6 double x = ( Clip (double( pixelX ) ,0 , mapSize −1)/double( mapSize )) −0.5;
7 double y = 0.5 −( Clip (double( pixelY ) ,0 , mapSize −1)/double( mapSize ) ) ;
8 double l a t=90−double (360)∗ atan ( exp(−y∗double (2)∗M PI))/ double(M PI)
9 double lon = double (360.0)∗ x ;
10 return QPointF( lon , l a t ) ;
11 }
¦ ¥
Zdroj. k´od 5.4: Pˇrevod mezi syst´emy WGS84 a pixelovou soustavou
lonlat2pixels
Revezn´ı funkce k pˇredchoz´ı, vstupn´ı parametry jsou QPointF lonlat, int zoom
a v´ystup jsou pixelov´e souˇradnice pro danou zoom hladinu v pixelech ve form´atu
QPoint.
pixels2tileFormat
Pˇrevod souˇradnic mapov´e sc´eny v pixelech na odpov´ıdaj´ıc´ı dlaˇzdici. Jako vstup
slouˇz´ı promˇenn´e QPoint xy, int zoom, ZavaProj::Yaxis origin a v´ystup jsou
souˇradnice dlaˇzdice ve form´atu QPoint.
tileFormat2pixels
Pˇrevod souˇradnic ve form´atu dlaˇzdic do mapov´e sc´eny v pixelech. Vstupn´ı para-
metry QPoint xy, int zoom, ZavaProj::Yaxis origin. V´ystup jsou souˇradnice
v pixelech ve form´atu QPoint.
convertYaxis
Funkce pˇrevede souˇradnici y u form´atu dlaˇzdic na jej´ı obdobu v opaˇcn´em poˇc´atku
(urˇcena pro odliˇsnosti mezi sluˇzbami wmts a tms). Vstupn´ı hodnoty jsou int
yTile, int zoom a v´ystup je souˇradnice y pro opaˇcn´y poˇc´atek ve datov´em typu
int.
§
1 int convertYaxis ( int yTile , int zoom)
2 {
3 return pow(2 , zoom)−yTile −1;
4 }
¦ ¥
Zdroj. k´od 5.5: Funkce pro pˇrevod mezi soustavami s odliˇsn´ym poˇc´atkem
Filip Zavadil 41
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
rectForTile
Funkce pro v´ypoˇcet ohraniˇcuj´ıc´ıho obd´eln´ıku dlaˇzdice. Vstupem jsou souˇradnice
dlaˇzdice (QPoint) a v´ystupem je definice obd´eln´ıku (v tomto pˇr´ıpadˇe ˇctverce) ve
form´atu QRect.
§
1 QRect rectForTile (QPoint t i l e )
2 {
3 // returns TMS Y−o r i g i n ( bottom )
4 return QRect( t i l e . x ()∗256 , t i l e . y ()∗256 ,256 ,256);
5 }
¦ ¥
Zdroj. k´od 5.6: Nalezen´ı ohraniˇcuj´ıc´ıho obd´eln´ıku pro dlaˇzdici
pointForTile
Pˇrevod ˇc´ıslov´an´ı dlaˇzdic na pozici (horn´ı prav´y roh) v mapov´e sc´enˇe v pixelech.
Vstupem je QPoint tileFormat,int zoom a v´ystupem jsou souˇradnice dlaˇzdice
v mapov´e sc´enˇe v pixelech.
dms2lonlat
Funkce obstar´av´a pˇrevod z form´atu dms na decim´aln´ı form´at. Vstupem jsou souˇradnice
ve form´atu: 50◦
20 30 . A v´ystup jsou souˇradnice zemˇepisn´e wgs84 ve form´atu
QPointF.
lonlat2dms
Reverzn´ı funkce k pˇredchoz´ı. Ze souˇradnic v decim´aln´ım form´atu se pˇrevedou na
form´at dms.
§
1 QString lonlat2dms (QPointF lonLat )
2 {
3 QString lon , lat ,DMS;
4 lon=this−double2dms ( lonLat . x ( ) , 2 ) ;
5 l a t=this−double2dms ( lonLat . y ( ) , 2 ) ;
6 DMS = ( lonLat . y() 0) ? l a t + ”N” : l a t + ”S” ;
7 DMS += ” , ” ;
8 DMS +=(lonLat . x() 0) ? lon + ”E” : lon + ”W” ;
9 return DMS;
10 }
¦ ¥
Zdroj. k´od 5.7: Pˇrevod souˇradnic z decim´aln´ıho form´atu na hexagesim´aln´ı
getDistance
Funkce vypoˇc´ıt´a d´elku mezi dvˇema body zadan´ymi zemˇepisn´ymi souˇradnicemi.
V´ypoˇcet prob´ıh´a na kouli a jedn´a se tedy o ortodromu (nejkratˇs´ı vzd´alenost). Uk´azka
vzorce viz. 5.8
Filip Zavadil 42
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
§
1 double getDistance (QPointF lonlatA , QPointF lonlatB )
2 {
3 int R = 6371;
4 double dLat = lonlatA . y () − lonlatB . y ( ) ;
5 double dLon = lonlatA . x () − lonlatB . x ( ) ;
6 double rad = M PI / double (180);
7 dLat ∗= rad ;
8 dLon ∗= rad ;
9 double a = sin ( dLat /2)∗ sin ( dLat/2)+ sin (dLon/2)∗
10 sin (dLon/2)∗ cos ( lonlatA . y ()∗ rad )∗ cos ( lonlatB . y ()∗ rad ) ;
11 double c = 2 ∗ atan2 ( sqrt ( a ) , sqrt (1−a ) ) ;
12 return R ∗ c ;
13 }
¦ ¥
Zdroj. k´od 5.8: V´ypoˇcet sf´erick´e vzd´alenosti mezi body
project
Funkce pro pˇrevod zemˇepisn´ych souˇradnic (wgs84) do libovoln´ych referenˇcn´ıch
souˇradnicov´ych syst´em˚u. Vstupem jsou decim´aln´ı souˇradnice (QPointF) a k´od proj.4
(QString). V´ystup jsou souˇradnice ve zvolen´em syst´emu (QPointF).
§
1 QPointF project (QPointF lonlat , QString proj4CODE , bool isDegree )
2 {
3 double x , y ;
4 projPJ out , in ;
5 x=l o n l a t . x ( ) ;
6 y=l o n l a t . y ( ) ;
7 x∗=DEG TO RAD;
8 y∗=DEG TO RAD;
9 i f ( ! ( out = p j i n i t p l u s (proj4CODE . toUtf8 ( ) ) ) ) {
10 QMessageBox msgBox ;
11 msgBox . setText ( ”The input projection i s i n v a l i d ! ” ) ;
12 msgBox . exec ( ) ;
13 return QPointF(NULL,NULL) ; }
14 i f ( ! ( in = p j i n i t p l u s ( ”+proj=latlong +e l l p s=WGS84
15 +datum=WGS84 +no defs ” ) ) ) return QPointF(NULL,NULL) ;
16 i f ( ! pj transform ( in , out ,1 ,1 ,x,y ,NULL)) {
17 i f ( isDegree ){
18 x∗=RAD TO DEG;
19 y∗=RAD TO DEG;
20 }
21 return QPointF(x , y ) ;
22 }
23 else return QPointF(NULL,NULL) ;
24 }
¦ ¥
Zdroj. k´od 5.9: Pˇrevod mezi wgs84 a definovan´ym ref. souˇr. syst´emem
Filip Zavadil 43
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
lonlat2UTM
Pˇrevod ze zemˇepisn´ych souˇradnic do souˇradnic referenˇcn´ıho syst´emu web mercator
(epsg:3758).
UTM2lonlat
Reverzn´ı funkce k pˇredchoz´ı. Vstupem jsou souˇradnice v syst´emu web mercator
(QPointF) a v´ystupem jsou souˇradnice zemˇepisn´e wgs84 (QPointF).
§
1 QPointF UTM2lonlat (QPointF xy )
2 {
3 double lon = ( xy . x () / 20037508.34) ∗ 180;
4 double l a t = ( xy . y () / 20037508.34) ∗ 180;
6 l a t = 180/M PI ∗ (2 ∗ atan ( exp ( l a t ∗ M PI / 180)) − M PI / 2 ) ;
7 return QPointF( lon , l a t ) ;
8 }
¦ ¥
Zdroj. k´od 5.10: Pˇrevod souˇradnic z web mercator do wgs84
5.2 Export
Tato tˇr´ıda m´a implementov´any dvˇe hlavn´ı metody. Prvn´ı je export v´yˇrezu mapy
jako obr´azek se souborem worldfile a druh´a je export v podobˇe mapov´ych dlaˇzdic.
5.2.1 Export v´yˇrezu mapy
Tato funkce aplikace je implementov´ana v tˇr´ıdˇe DialogExport. Nejprve
je zavol´ano dialogov´e okno (obr. 3.7), kde se v prvn´ı sekci nastav´ı, jak je definov´an v´yˇrez.
Ten m˚uˇze b´yt urˇcen:
• zobrazen´ym ´uzem´ım,
• zadan´ymi souˇradnicemi,
• nebo n´astrojem selekce .
V dalˇs´ı sekci je moˇzn´e upravit rozmˇery obr´azku, kter´e jsou z poˇc´atku nastaveny na
100% velikost. Lze tak´e zamknout pomˇer stran, aby nedoch´azelo k deformaci. Je zde tak´e
obsaˇzeno tlaˇc´ıtko, kter´e nastav´ı 100% rozmˇery.
D´ale se v oknˇe nach´az´ı zaˇskrt´avac´ı pol´ıˇcko vytvoˇr worldfile a tlaˇc´ıtko exportuj,
kter´e po kliknut´ı spust´ı dalˇs´ı okno pro v´ybˇer adres´aˇre a n´azvu souboru.
Filip Zavadil 44
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
§
1 // z j iˇs t e n´ı rozmˇeru obr´azku
2 int height = zavaProj . l o n l a t 2 p i x e l s ( rect . bottomRight () ,map−getZoom ( ) ) . y()−
3 zavaProj . l o n l a t 2 p i x e l s ( rect . topRight () ,map−getZoom ( ) ) . y ()
4 int width = zavaProj . l o n l a t 2 p i x e l s ( rect . topRight () ,map−getZoom ( ) ) . x()−
5 zavaProj . l o n l a t 2 p i x e l s ( rect . topLeft () ,map−getZoom ( ) ) . x ( ) ;
7 // lev´y horn´ı roh obr´azku
8 QPoint topLeft = zavaProj . l o n l a t 2 p i x e l s ( rect . topLeft () ,map−getZoom ( ) ) ;
10 // rendrov´an´ı
11 QPainter ∗ painter= new QPainter( newImage ) ;
12 map−getScene()−render ( painter ,QRectF(QPoint(0 ,0) , imageSize ) ,
13 QRectF( topLeft , QSize( width , height )) , Qt : : KeepAspectRatio ) ;
15 QtConcurrent : : run ( this , DialogExport : : saveMap , newImage , fileName ) ;
17 // vytvoˇren´ı souboru w o r l d f i l e
18 i f ( ui−checkBoxCreateWorldFile−isChecked ()){
19 QRect r e c t P i x e l s ( topLeft , QSize( imageSize ) ) ;
20 this−createWorldFile ( rectPixels , rect , fileName ) ;
21 }
¦ ¥
Zdroj. k´od 5.11: Uloˇzen´ı v´yˇrezu mapy
Pˇri vytv´aˇren´ı souboru worldfile program nejprve vypoˇcte souˇradnice v´yˇrezu.
D´ale je vypoˇcteno rozliˇsen´ı (metr/pixel). Rotace dle os x, y nen´ı br´ana v potaz. Pot´e
jsou vypoˇcten´e hodnoty zaps´any do v´ystupu a je uloˇzen textov´y soubor ve form´atu spe-
cifikovan´em v odd´ıle 2.10.
§
1 void createWorldFile (QRect pixelRect , QRectF lonlatRect , QString imgFilename )
2 {
3 QUNUSED( lonlatRect )
4 QPointF utmTopLeft = zavaProj . lonlat2UTM ( rect . topLeft ( ) ) ;
5 QPointF utmBottomRight = zavaProj . lonlat2UTM ( rect . bottomRight ( ) ) ;
7 double diffX = utmBottomRight . x () − utmTopLeft . x ( ) ;
8 double diffY = utmTopLeft . y () − utmBottomRight . y ( ) ;
10 double resX = diffX / pixelRect . s i z e ( ) . width ( ) ;
11 double resY = diffY / pixelRect . s i z e ( ) . height ( ) ;
13 QPointF coors = utmTopLeft ; //+ QPointF ( resX /2 , resY /2);
15 QString output = QString : : number( resX , ’ f ’ ,16) + ”n” + ”0n−0n” +
16 QString : : number(−resY , ’ f ’ ,16)+ ”n” ;
17 output += QString : : number( coors . x () , ’ f ’ ,9) + ”n” +
Filip Zavadil 45
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
18 QString : : number( coors . y () , ’ f ’ , 9 ) ;
20 // write WORLDFILE
21 QString fileName = imgFilename ;
22 fileName . remove ( imgFilename . s i z e () −2 ,1);
23 fileName+=”w” ;
25 QFile ∗ textak = new QFile( fileName ) ;
27 i f ( textak−open ( QIODevice : : ReadWrite )){
28 QTextStream out ( textak ) ;
29 out  output ;
30 }
32 textak−c l o s e ( ) ;
34 }
¦ ¥
Zdroj. k´od 5.12: Vytvoˇren´ı souboru worldfile
5.2.2 Export mapov´ych dlaˇzdic
Tato metoda nejprve zmenˇs´ı mapov´e okno na rozmˇery 512×512px a nastav´ı mˇeˇr´ıtko
zobrazen´ı na 100%, jelikoˇz pˇred uloˇzen´ım jsou mapov´e dlaˇzdice zobrazeny na sc´enˇe. Pot´e
jsou pro kaˇzdou hladinu zoom vypoˇcteny souˇradnice v´ybˇeru v pixelech, podle kter´ych se
posouv´a stˇred mapov´eho okna. Je definov´ana oblast o rozmˇerech (256×256px) a n´aslednˇe
je dlaˇzdice uloˇzena do urˇcit´eho adres´aˇre a pod urˇcit´ym n´azvem.
§
1 void Export : : cutting ( QListint zooms , QString path )
2 {
3 // uloˇzen´ı rozmˇer˚u mapov´eho okna
4 QSize preSize = map−maximumSize ( ) ;
5 int preZoom = map−getZoom ( ) ;
6 QPointF preCenter = map−getCenterLonLat ( ) ;
7 // zmenˇsen´ı rozmˇer˚u mapov´eho okna
8 map−setMaximumSize (512 ,512);
9 map−setViewScale (100);
10 // nastaven´ı ˇc´ıtaˇc˚u
11 int countTemp=0;
12 int countTemp2=0;
13 // pro zvolen´e hladiny zoom
14 foreach ( int z , zooms ) {
15 map−setZoom ( z ) ;
16 map−r e f r e s h ( ) ;
17 QTimer t ;
18 t . s t a r t (500);
19 QEventLoop loop ; // smyˇcka po 500msec
Filip Zavadil 46
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
20 QObject : : connect(t , SIGNAL( timeout ()) , loop , SLOT( quit ( ) ) ) ;
21 loop . exec ( ) ;
23 // d e f i n i c e ´uzem´ı pro rozˇrez´an´ı
24 QPoint NW = zavaproj . pixels2tileFormat ( s e l e c t i o n −
25 getRectPixels ( z ) . topLeft () , z , ZavaProj : :BOTTOM) ;
26 QPoint SE = zavaproj . pixels2tileFormat ( s e l e c t i o n −
27 getRectPixels ( z ) . bottomRight () , z , ZavaProj : :BOTTOM) ;
29 // nastaven´ı mapy na poˇc´atek
30 map−setCenterLonLat (
31 zavaproj . tileFormat2lonlat (QPoint(NW. x () ,SE. y ( ) ) , z ,
32 ZavaProj : :BOTTOM) ) ;
34 // pˇr e l e t nad jednotliv´ymi dlaˇzdicemi
35 for ( int x=NW. x ( ) ; x=SE. x ( ) ; x++){
36 for ( int y=SE. y ( ) ; y=NW. y ( ) ; y++){
37 map−setCenterLonLat (
38 zavaproj . tileFormat2lonlat (QPoint(x , y ) , z , ZavaProj : :BOTTOM) ) ;
40 renderTiles ( path , z , x , y ) ;
41 countTemp++;
42 countTemp2++;
43 }
44 }
45 }
46 // nastaven´ı mapov´eho okna zpˇet na p˚uvodn´ı v e l i k o s t
47 map−setZoom ( preZoom ) ;
48 map−setCenterLonLat ( preCenter ) ;
49 map−setMaximumSize ( preSize ) ;
50 }
¦ ¥
Zdroj. k´od 5.13: Vyˇr´ıznut´ı mapov´e dlaˇzdice
§
1 void renderTiles (QString path , int z , int x , int y)
2 {
3 QImage img (QSize (256 ,256) , QImage : : Format ARGB32 ) ;
4 painter = new QPainter ( ) ;
5 painter −begin(img ) ;
6 map−getScene()−render (
7 painter ,QRect(0 ,0 ,256 ,256) ,
8 QRect(QPoint(x∗256 , zavaproj . convertYaxis (QPoint(x , y ) , z ) . y ()∗256) ,
9 QSize (256 ,256)) ,Qt : : KeepAspectRatio ) ;
10 saveMapTile ( path , z , x , y , img ) ;
11 painter −end ( ) ;
12 }
¦ ¥
Zdroj. k´od 5.14: Funkce uloˇz´ı dlaˇzdici o rozmˇerech 256 × 256px
Filip Zavadil 47
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
5.3 Layer
Tˇr´ıda Layer je rodiˇcovsk´a tˇr´ıda tˇr´ıda, ze kter´e dˇed´ı ostatn´ı vstupn´ı vrstvy (LayerIMG,
LayerSQLite, LayerTILESlocal, LayerTILESonline). Pro pr´aci s vrstvami je zde im-
plementov´ano nˇekolik veˇrejn´ych metod:
• Nastaven´ı a vyps´an´ı n´azvu vrstvy
QString getLayerName();
void setLayerName(QString layerName2);
• Zdroj vrstvy (cesta ke struktuˇre adres´aˇr˚u, url adresa)
QString getSource();
void setSource(QString source2);
• Nastaven´ı viditelnosti
bool getVisible();
void setVisible(bool is);
• Poˇrad´ı vrstvy
int getZvalue();
void setZvalue(int zValue2);
• Zmˇena pr˚uhlednosti
qreal getOpacity();
void setOpacity(qreal opacity2);
• Nastaven´ı referenˇcn´ıho bodu
QPointF getLonlatOrigin();
QString getLonlatOriginString();
int getZoomOrigin();
void setOrigin(QPointF lonlat,int zoom);
5.4 MapView
Tˇr´ıda MapView rozˇsiˇruje a dˇed´ı ze tˇr´ıdy QGraphicsView. Je uzp˚usobena pro pr´aci
s mapou a mapov´ym oknem a prvky mapy.
• Pl´atno mapov´e sc´eny
MapScene* getScene();
• Nastaven´ı stˇredu mapov´eho okna je moˇzn´e decim´aln´ım form´atem, nebo tak´e
from´atem dms
void setCenterLonLat(QPointF lonLat);
void setCenterLonLat(QString dmsFormat);
QPointF getCenterLonLat();
Filip Zavadil 48
Kapitola 5. V´ybˇer ze zdrojov´eho k´odu
• Nastaven´ı hladiny zoom
void setZoom(int zoom);
int getZoom();
• Nastaven´ı mˇeˇr´ıtka zobrazen´ı
void setViewScale(int viewScale);
int getViewScale();
• Funkce vyp´ıˇse mˇeˇr´ıtko mapy ve form´atu QString
QString getMapScale(); viz k´od 5.1;
• Souˇradnice (wgs84) roh˚u zobrazen´e oblasti
QRectF getRectLonlat();
• Vypnut´ı zvolen´e vrstvy
void tilesVisible(QString layerName, bool isVisible);
§
1 void MapView : : mouseDoubleClickEvent (QMouseEvent ∗ event )
2 {
3 i f ( panEnabled ){
4 QPointF posCenter=getCenterPixels ( ) ;
5 QPointF posScene=this−mapToScene( event−pos ( ) ) ;
6 QPointF delta = posCenter−posScene ;
7 i f ( event−button()==Qt : : LeftButton ){
8 i f (zoom20) zoom++;
9 emit zoomChanged(zoom ) ;
10 this−setCenterPixels ( posCenter∗2−delta ) ;
11 } else i f ( event−button()==Qt : : RightButton ){
12 i f (zoom=1) zoom−−;
13 emit zoomChanged(zoom ) ;
14 this−setCenterPixels ( posCenter/2+delta ) ;
15 }
16 this−update ( ) ;
17 }
18 QGraphicsView : : mouseDoubleClickEvent ( event ) ;
19 }
¦ ¥
Zdroj. k´od 5.15: Implenetace zmˇeny zoom pˇri dvojit´em kliknut´ı
Filip Zavadil 49
Kapitola 6. Z´avˇer
Kapitola 6
Z´avˇer
Byla vyvinuta a vyd´ana aplikace . C´ılem a pˇr´an´ım autora je, aby aplikace
mohla b´yt v praxi vyuˇzita a byla t´ım prospˇeˇsn´a a to nejen odborn´e veˇrejnosti, ale i lidem,
kteˇr´ı maj´ı mapy jako sv´eho kon´ıˇcka a vˇenuj´ı se jim ve sv´em voln´em ˇcase.
Bˇehem v´yvoje vyvstaly mnoh´e probl´emy, kter´e se autor snaˇzil vn´ımat sp´ıˇse jako
v´yzvy. D´ıky tomuto pˇr´ıstupu se v´yvoj´aˇr v t´eto oblasti velmi obohatil a mnoh´e se nauˇcil.
Zaj´ımav´y je t´eˇz proces v´yvoje od ´upln´ych zaˇc´atk˚u aˇz po vyd´an´ı prvn´ı verze, tedy pˇrem´yˇslen´ı,
n´aˇcrty a pak k´odov´an´ı. ˇCasto se t´eˇz st´av´a, ˇze uˇz bˇehem programov´an´ı se mˇen´ı koneˇcn´e
vyuˇzit´ı aplikace. K´odu tedy st´ale pˇrib´yv´a a cel´a aplikace se st´av´a sloˇzitˇejˇs´ı a komplexnˇejˇs´ı.
Jak zn´amo, aplikace nen´ı nikdy dokonal´a, a vˇzdy autor nach´az´ı m´ısta, kter´a by bylo moˇzn´e
vylepˇsit nebo pˇridat novou funkcionalitu.
Zad´an´ı diplomov´e pr´ace bylo splnˇeno v pln´em rozsahu. Aplikace nav´ıc obsahuje
mnoho dalˇs´ıch funkc´ı, d´ıky kter´ym se je vyuˇzitelnˇejˇs´ı. Aplikace je nyn´ı vyuˇz´ıv´ana tak´e
pro ´upravu off-line mapov´ych bal´ıˇck˚u pro mobiln´ıho pr˚uvodce PhoneMaps.
V dobˇe v´az´an´ı t´eto pr´ace byla aplikace ve v´yvojov´e verzi 0.8.1 a prob´ıhalo
jej´ı testov´an´ı, proto je moˇzn´e, ˇze aplikace
”
zamrzne“ u neoˇcek´avan´e operace. Pro nahlaˇsov´an´ı
chyb (bug˚u) slouˇz´ı webov´e str´anky projektu: http://mapvision.codeplex.com . Zdro-
jov´y k´od aplikace a spustiteln´e soubory (Windows) spolu se vzorov´ymi daty jsou na
pˇriloˇzen´em CD.
Filip Zavadil 50
Literatura
Literatura
[Ait11] Alastair Aitchison. The google maps / bing maps spherical mer-
cator projection. http://alastaira.wordpress.com/2011/01/23/
the-google-maps-bing-maps-spherical-mercator-projection/, Janu-
ary 2011.
[ESR09] ESRI. About world files. http://webhelp.esri.com/arcims/9.2/general/
topics/author_world_files.htm, December 2009.
[OCG11] OCG. Opengis web map tile service implementation standard. http://www.
opengeospatial.org/standards/wmts, June 2011.
[ope13] opestreetmap.org. Slippy map. http://wiki.openstreetmap.org/wiki/
Slippy_Map, May 2013.
[OSG12] OSGeo. Tile map service specification. http://wiki.osgeo.org/wiki/Tile_
Map_Service_Specification, May 2012.
[Pˇri08] Petr Pˇridal. Tiles ´A la google maps: Coordinates,
tile bounds and projection. http://www.maptiler.org/
google-maps-coordinates-tile-bounds-projection, July 2008.
[Pro13] Qt Project. Qt 5.0 documentation. http://qt-project.org/doc/qt-5.0/
qtdoc/index.html, April 2013.
[Sch07a] Joe Schwartz. Bing maps tile system. http://msdn.microsoft.com/en-us/
library/bb259689.aspx, January 2007.
[Sch07b] Joe Schwartz. Understanding scale and resolution. http://msdn.microsoft.
com/en-us/library/aa940990.aspx, January 2007.
[Zav09] Filip Zavadil. Svg a xls transformace vyuˇziteln´e v kartografii. http://svg.
filipzava.cz/Bakalarska_prace.pdf, May 2009.
Filip Zavadil 51
Rejstˇr´ık
Rejstˇr´ık
barevn´a hloubka, 15
caching, 1, 14
dms, 21
git, 37
GNU GPL, 35
google mercator, 7
gui, 17
konsole, 25
layer, 48
mapov´a sc´ena, 17
mapov´e dlaˇzdice, 14
mapov´e okno, 17
mapov´e sluˇzby, 3
MapVision dokument, 31
menu, 18
modul, 20
mvd, 31
n´astroje, 25
OGC, 3
OSGeo, 4
panel, 20
pixely, 10
pl´atno, 17
protokol, 25
Qt, 34
sch´ema dlaˇzdic, 10
TMS, 6
verze, 37
web mercator, 7, 9
WMTS, 6
worldfile, 12
Filip Zavadil 52

More Related Content

Similar to filip-zavadil-dp-2013

Hydrologické analýzy v distribuovaném prostředí
Hydrologické analýzy v distribuovaném prostředíHydrologické analýzy v distribuovaném prostředí
Hydrologické analýzy v distribuovaném prostředíGeokomunita
 
Loskot_Bachelor_Thesis
Loskot_Bachelor_ThesisLoskot_Bachelor_Thesis
Loskot_Bachelor_ThesisMartin Loskot
 
Loskot_Diploma_Thesis
Loskot_Diploma_ThesisLoskot_Diploma_Thesis
Loskot_Diploma_ThesisMartin Loskot
 
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á
 
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.
 
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
 
004 ba csma_10-2019_cs
004 ba csma_10-2019_cs004 ba csma_10-2019_cs
004 ba csma_10-2019_csZdenkKahoun1
 
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
 
002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_cs002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_csZdenkKahoun1
 
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
 
003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_cs003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_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
 
Oxe um 4028_4029_mu19005_csae_1_cs
Oxe um 4028_4029_mu19005_csae_1_csOxe um 4028_4029_mu19005_csae_1_cs
Oxe um 4028_4029_mu19005_csae_1_csBouhafs Abdelkader
 
012 ba vpm 07-2019 - cs
012   ba vpm 07-2019 - cs012   ba vpm 07-2019 - cs
012 ba vpm 07-2019 - csZdenkKahoun1
 
Č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
 

Similar to filip-zavadil-dp-2013 (20)

Hydrologické analýzy v distribuovaném prostředí
Hydrologické analýzy v distribuovaném prostředíHydrologické analýzy v distribuovaném prostředí
Hydrologické analýzy v distribuovaném prostředí
 
thesis
thesisthesis
thesis
 
Loskot_Bachelor_Thesis
Loskot_Bachelor_ThesisLoskot_Bachelor_Thesis
Loskot_Bachelor_Thesis
 
Loskot_Diploma_Thesis
Loskot_Diploma_ThesisLoskot_Diploma_Thesis
Loskot_Diploma_Thesis
 
User print 2
User print 2User print 2
User print 2
 
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)
 
Sborník Open Workshop Olomouc 2007
Sborník Open Workshop Olomouc 2007Sborník Open Workshop Olomouc 2007
Sborník Open Workshop Olomouc 2007
 
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
 
004 ba csma_10-2019_cs
004 ba csma_10-2019_cs004 ba csma_10-2019_cs
004 ba csma_10-2019_cs
 
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
 
002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_cs002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_cs
 
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
 
003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_cs003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_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
 
Seo kniha
Seo knihaSeo kniha
Seo kniha
 
Oxe um 4028_4029_mu19005_csae_1_cs
Oxe um 4028_4029_mu19005_csae_1_csOxe um 4028_4029_mu19005_csae_1_cs
Oxe um 4028_4029_mu19005_csae_1_cs
 
012 ba vpm 07-2019 - cs
012   ba vpm 07-2019 - cs012   ba vpm 07-2019 - cs
012 ba vpm 07-2019 - cs
 
Č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
 
Diplomka2
Diplomka2Diplomka2
Diplomka2
 
Diplomka
DiplomkaDiplomka
Diplomka
 

filip-zavadil-dp-2013

  • 1. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze Fakulta stavebn´ı Software pro zobrazov´an´ı a export mapov´ych dlaˇzdic DIPLOMOV´A PR´ACE Praha, 2013 Autor: Filip Zavadil
  • 2. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze Fakulta stavebn´ı DIPLOMOV´A PR´ACE Software pro zobrazov´an´ı a export mapov´ych dlaˇzdic Software for displaying and exporting map tiles Vedouc´ı pr´ace: Ing. Jiˇr´ı Cajthaml, Ph.D. Praha, 2013 Autor: Filip Zavadil
  • 3.
  • 4. Prohl´aˇsen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci na t´ema ” Software pro zobrazovan´ı a ex- port mapov´ych dlaˇzdic“ vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. V Praze dne podpis
  • 5. Abstrakt Tato pr´ace popisuje diplomov´y projekt ” Software pro zobrazov´an´ı a export ma- pov´ych dlaˇzdic“. Jsou zde uvedeny teoretick´e z´aklady sluˇzeb a technologi´ı, kter´e jsou v pro- jektu vyuˇzity. Tato pr´ace tak´e slouˇz´ı jako uˇzivatelsk´y manu´al pro stˇeˇzejn´ı ˇc´ast cel´eho di- plomov´eho projektu, tedy software umoˇzˇnuj´ıc´ı naˇc´ıtat rastrov´e mapov´e dlaˇzdice, rastrov´e i vektorov´e obr´azky, kombinovat je mezi sebou a n´aslednˇe exportovat do dlaˇzdicov´eho form´atu nebo jako rastrov´y obr´azek. Kl´ıˇcov´a slova mapa, mapov´e dlaˇzdice, TMS, WMTS, SQLite, Qt/C++ Abstract This thesis is describing diploma project ” Software for displaying and exporting map tiles“. There is a summary of teoretical basics of specifications, methods or services which are used in this project. The main part describes software MapVision. There are shown options and functions implemented in this application. There is also listed graphical user interface and future improvements. Key Words map, map tiles, TMS, WMTS, SQLite, Qt/C++
  • 6. Obsah 1 ´Uvod 1 2 Teorie pouˇzit´ych sluˇzeb a technologi´ı 3 2.1 OGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 OSGeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 TMS versus WMTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Referenˇcn´ı souˇradnicov´y syst´em . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Souˇradnicov´e syst´emy vyuˇz´ıvan´e v aplikaci . . . . . . . . . . . . . . . . . . 8 2.6 Zp˚usob ˇc´ıslov´an´ı ukl´ad´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.7 Georeferenˇcn´ı soubor WORLDFILE . . . . . . . . . . . . . . . . . . . . . . 12 2.8 Mapov´e dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.8.1 Velikost dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.8.2 Form´at mapov´e dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . 14 2.8.3 Barevn´e hloubky dlaˇzdic . . . . . . . . . . . . . . . . . . . . . . . . 15 3 Sezn´amen´ı s aplikac´ı MapVision 17 3.1 MapVision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 Hlavn´ı okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3 Mapov´e okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4 Menu liˇsta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.5 Moduly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.5.1 Vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.5.2 Informace o souˇradnic´ıch . . . . . . . . . . . . . . . . . . . . . . . . 21 3.5.3 Nalezen´ı polohy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5.4 Pˇrid´an´ı textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5.5 Obr´azkov´e prvky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.6 Grafick´e efekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.7 Informace o mapov´em oknˇe . . . . . . . . . . . . . . . . . . . . . . 24 3.5.8 Informace o v´ybˇeru . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.9 Protokol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.6 V´ıtac´ı okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.7 Sada n´astroj˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 iii
  • 7. 3.8 Vstupn´ı vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.9 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.10 Kl´avesy a kl´avesov´e zkratky . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.11 Budouc´ı vylepˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.12 Mapov´y dokument mvd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.13 Licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 V´yvojov´e prostˇred´ı 34 4.1 Historie a v´yvoj Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2 Licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Souˇc´asti Qt Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4 Programy postaven´e na Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.5 Verzov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5 V´ybˇer ze zdrojov´eho k´odu 38 5.1 ZavaProj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.2 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.2.1 Export v´yˇrezu mapy . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.2.2 Export mapov´ych dlaˇzdic . . . . . . . . . . . . . . . . . . . . . . . 46 5.3 Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.4 MapView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6 Z´avˇer 50 Literatura 51 Rejstˇr´ık 52 iv
  • 8. Seznam obr´azk˚u 1.1 Logo aplikace MapVision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 Logo spoleˇcnosti Open Geospatial Consortium . . . . . . . . . . . . . . . . 4 2.2 Logo spoleˇcnosti Open Source Geospatial Foundation . . . . . . . . . . . . 5 2.3 Loga vybran´ych projekt˚u pod organizac´ı OSGeo . . . . . . . . . . . . . . . 6 2.4 Tissotova indikatrix pro syst´em souˇradnic utm . . . . . . . . . . . . . . . . 9 2.5 Syst´em souˇradnic, kter´y vyuˇz´ıv´a web mercator . . . . . . . . . . . . . . . . 9 2.6 Uk´azka zmˇeny mˇeˇr´ıtka (hladiny zoom) . . . . . . . . . . . . . . . . . . . . 10 2.7 Struktura dlaˇzdic mapov´e sluˇzby wmts . . . . . . . . . . . . . . . . . . . . 11 2.8 Souˇradnicov´a soustava v poˇc´ıtaˇcov´e grafice . . . . . . . . . . . . . . . . . . 12 2.9 Struktura uloˇzen´ı mapov´ych dlaˇzdic . . . . . . . . . . . . . . . . . . . . . . 13 2.10 Sch´ema popisu souboru worldfile, zdroj: wikipedia.org . . . . . . . . . . 14 3.1 Hlavn´ı okno aplikace MapVision . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 Dialog pro definici ´uzem´ı dle souˇradnic . . . . . . . . . . . . . . . . . . . . 19 3.3 Dialog zobrazuj´ıc´ı informace o v´ybˇeru . . . . . . . . . . . . . . . . . . . . . 20 3.4 Okno aplikace ” O aplikaci“ . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.5 V´ıtac´ı str´anka zobrazuje tipy a odkazy pro n´apovˇedu . . . . . . . . . . . . 26 3.6 Dialog nastaven´ı parametr˚u vrstvy . . . . . . . . . . . . . . . . . . . . . . 27 3.7 Dialog pro uloˇzen´ı v´yˇrezu mapy . . . . . . . . . . . . . . . . . . . . . . . . 29 4.1 Logo frameworku Qt a mottem . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2 Prostˇred´ı Qt Creator se spuˇstˇen´ym projektem MapVision . . . . . . . . . . 36 4.3 Qt Designer: widgety pro grafick´e rozhran´ı . . . . . . . . . . . . . . . . . . 37 v
  • 9. Seznam uk´azek zdrojov´eho k´odu 2.1 Definice kartografick´eho zobrazen´ı v knihovnˇe proj.4 . . . . . . . . . . . . 8 2.2 Z´apis web mercatoru ve form´atu ogc wkt a v prj souboru . . . . . . . . 8 3.1 Uk´azka MapVision Dokumentu . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1 Mˇeˇr´ıtko mapy z´avisl´e na zemˇepisn´e ˇs´ıˇrce . . . . . . . . . . . . . . . . . . . 38 5.2 Funkce main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.3 Pˇrevod mezi syst´emy WGS84 a syst´emem dlaˇzdic . . . . . . . . . . . . . . 40 5.4 Pˇrevod mezi syst´emy WGS84 a pixelovou soustavou . . . . . . . . . . . . . 41 5.5 Funkce pro pˇrevod mezi soustavami s odliˇsn´ym poˇc´atkem . . . . . . . . . . 41 5.6 Nalezen´ı ohraniˇcuj´ıc´ıho obd´eln´ıku pro dlaˇzdici . . . . . . . . . . . . . . . . 42 5.7 Pˇrevod souˇradnic z decim´aln´ıho form´atu na hexagesim´aln´ı . . . . . . . . . 42 5.8 V´ypoˇcet sf´erick´e vzd´alenosti mezi body . . . . . . . . . . . . . . . . . . . . 43 5.9 Pˇrevod mezi wgs84 a definovan´ym ref. souˇr. syst´emem . . . . . . . . . . . 43 5.10 Pˇrevod souˇradnic z web mercator do wgs84 . . . . . . . . . . . . . . . . . 44 5.11 Uloˇzen´ı v´yˇrezu mapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.12 Vytvoˇren´ı souboru worldfile . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.13 Vyˇr´ıznut´ı mapov´e dlaˇzdice . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.14 Funkce uloˇz´ı dlaˇzdici o rozmˇerech 256 × 256px . . . . . . . . . . . . . . . . 47 5.15 Implenetace zmˇeny zoom pˇri dvojit´em kliknut´ı . . . . . . . . . . . . . . . . 49 vi
  • 10. Kapitola 1. ´Uvod Kapitola 1 ´Uvod V t´eto kapitole je uveden struˇcn´y pˇrehled cel´e pr´ace. Je zde tak´e pops´an d˚uvod vzniku aplikace a uvedeno srovn´an´ı s programy podobn´e funkcionality. Jak n´azev diplomov´e pr´ace Software pro zobrazov´an´ı a export mapov´ych dlaˇzdic napov´ıd´a, jedn´a se o mapovou prohl´ıˇzeˇcku, kter´a je schopn´a prov´adˇet z´akladn´ı ´ukony jako je zobrazov´an´ı, jednoduch´e ´upravy a export rastrov´ych mapov´ych dat. Apli- kace vyuˇz´ıv´a cachovan´e rastrov´e mapov´e dlaˇzdice zejm´ena sluˇzeb wmts (Web Map Tile Service) a tms (Tiled Map Service). O tˇechto sluˇzb´ach bude pojedn´ano v kapitole 2.3. Proˇc zrovna software pro prohl´ıˇzen´ı jiˇz renderovan´ych mapov´ych dlaˇzdic? Drtiv´a vˇetˇsina mapov´ych produkt˚u se dost´av´a k z´akazn´ıkovi pr´avˇe v rastrov´e formˇe. Je to zp˚usob, kter´y zajist´ı kompatibilitu se vˇsemi platformami a syst´emy. Nedoch´az´ı zde k ˇz´adn´ym zmˇen´am ˇci v´ykyv˚um a nepˇresnostem pˇri vykreslov´an´ı dat. Rastrov´y ˇci bitmapov´y obr´azek je pouˇz´ıv´an od poˇc´atku internetu a vˇsechny prohl´ıˇzeˇce ˇci programy um´ı s tˇemito form´aty zach´azet. Nev´yhoda je zˇrejm´a. K uˇzivateli se dost´av´a jiˇz hotov´y produkt, kter´y sice lze zmˇenit, ale za cenu v´ypoˇcetn´ıho v´ykonu pˇri renderov´an´ı na stranˇe serveru. Mapov´a data, kter´a jsou ˇcasto zobrazov´ana, je vhodn´e vykreslit dopˇredu a vytvoˇrit tzv. ” dlaˇzdice do z´asoby“. Vyt´ıˇzen´ı procesoru je minim´aln´ı, jelikoˇz nemus´ı doch´azet k renderov´an´ı vektoru na rastrov´y obr´azek. Pokud by ale bylo potˇreba do takov´eto mapy pˇridat grafick´y prvek nebo vrstvu, lze s v´yhodou pouˇz´ıt aplikaci . Tato pr´ace postupnˇe popisuje v´yvoj cel´e aplikace. Jsou zde pops´any poznatky, po- stupy a probl´emy, kter´e pˇri programov´an´ı vyvstaly. Na zaˇc´atku pr´ace jsou uvedeny ka- pitoly pojedn´avaj´ıc´ı o mapov´ych sluˇzb´ach, jsou zde zm´ınˇeny v´yhody a nev´yhody jednot- liv´ych sluˇzeb a jejich struktura. Je zde tak´e uvedeno jak´y form´at je vhodn´y pro ukl´ad´an´ı dlaˇzdic. V dalˇs´ı ˇc´asti jsou pops´any algoritmy ˇci matematick´e funkce pro pˇrevod souˇradnic (zejm´ena zemˇepisn´ych) do ostatn´ıch pravo´uhl´ych souˇradnicov´ych syst´em˚u. Filip Zavadil 1
  • 11. Kapitola 1. ´Uvod Kapitola 3 je vˇenov´ana pˇr´ımo aplikaci . Jsou zde pops´any nejen jednotliv´a tlaˇc´ıtka a funkce, ale i pˇr´ıklady a v´ystupy praktick´eho vyuˇzit´ı aplikace. V tomto odd´ıle jsou tak´e uvedeny zdroje, ze kter´ych je moˇzn´e z´ıskat mapov´e dlaˇzdice. Pouˇzit´y programovac´ı jazyk a v´yvojov´e prostˇred´ı jsou pops´any v samostatn´e kapitole 4. Pro pr´aci s mapov´ymi dlaˇzdicemi existuje v´ıce aplikac´ı. MOBAC (Mobile Atlas Creator) umoˇzˇnuje naˇc´ıtat mapov´e sluˇzby tms,wmts a exportovat dlaˇzdice v mnoha form´atech, zejm´ana pro mobiln´ı zaˇr´ızen´ı. Map Tiler je program pro rozˇrez´an´ı rastrov´e mapy do dlaˇzdic. D´ale existuje mnoho ” prohl´ıˇzeˇcek“, kter´e podporuj´ı form´at dlaˇzdic. Mezi nejzn´amˇejˇs´ı patˇr´ı mobiln´ı aplikace Locus, MGMaps a PhoneMaps. Dlaˇzdicov´e form´aty podporuj´ı tak´e GIS programy, ovˇsem v omezen´e m´ıˇre (pouze prohl´ıˇzen´ı). Aplikace se specializuje pouze na dlaˇzdicov´y form´at, proto nab´ız´ı dalˇs´ı moˇznosti pro pr´aci s mapov´ymi dlaˇzdicemi. Zobrazen´ı v´ıce vrstev, urˇcen´ı jejich pr˚uhlednost´ı, pˇrid´an´ı gra- fick´ych prvk˚u, moˇznost exportu do georeferencovan´eho obr´azku, moˇznost jednoduch´eho georeferencov´an´ı; to je v´yˇcet vlastnost´ı, kter´e nav´ıc nab´ız´ı aplikace . Absence tˇechto moˇznost´ı byla tak´e jedn´ım z hlavn´ıch d˚uvod˚u vzniku programu. V t´eto pr´aci je pouˇzito v´ıce druh˚u a ˇrez˚u p´ısma. Zde je uvedena uk´azka a popis pro lepˇs´ı porozumˇen´ı a ch´ap´an´ı textu: p´ısmo popis MapVision d˚uleˇzit´e pojmy mapov´a sluˇzba m´enˇe zn´am´e pojmy, kter´e budou pozdˇeji vysvˇetleny storno funkce nebo tlaˇc´ıtka aplikace wmts, png n´azvy technologi´ı a form´at˚u soubor˚u Qstring name n´azvy promˇenn´ych uveden´ych v textu Uk´azky zdrojov´eho k´odu maj´ı ˇc´ıslovan´e ˇr´adky a zv´yraznˇenou skladbu k´odu: § 1 #include <iostream> 3 int main ( int argc , char ∗argv [ ] ) { 4 std : : cout << ” h e l l o world ! ” ; 5 return 0; 6 } ¦ ¥ Obr´azek 1.1: Logo aplikace MapVision Filip Zavadil 2
  • 12. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Kapitola 2 Teorie pouˇzit´ych sluˇzeb a technologi´ı Pˇri vzniku internetu a hlavnˇe pˇri zvˇetˇsen´ı toku dat se zaˇcaly mimo text st´ale v´ıce objevovaly obr´azky. S t´ımto procesem se tak´e na internetu zaˇcaly vystavovat i rastrov´e obr´azky map. Nejdˇr´ıve sice jako jeden obr´azek (mapy mal´eho mˇeˇr´ıtka) nebo jako v´yˇrezy. Postupem ˇcasu pˇriˇsel poˇzadavek na zobrazen´ı cel´e mapy. Vzhledem k tehdy bˇeˇzn´e rych- losti pˇripojen´ı a niˇzˇs´ı operaˇcn´ı pamˇeti nebylo vhodn´e (a dosud tak´e nen´ı) zobrazit mapu jako jeden celek. V informatice od jej´ıho poˇc´atku existoval postup jak takov´y obr´azek poskl´adat. Ten se pouˇz´ıval uˇz v prvn´ıch poˇc´ıtaˇcov´ych hr´ach, kdy se vedle sebe skl´adaly textury pro vykreslen´ı pozad´ı. Tohoto postupu, tedy skl´ad´an´ı menˇs´ıch ˇc´ast´ı do vˇetˇs´ıho celku, se s v´yhodou zaˇcalo vyuˇz´ıvat pro zobrazov´an´ı map. Metody, kter´e tento ´ukon umoˇzˇnuj´ı se naz´yvaj´ı mapov´e sluˇzby (Map Services). Postupem ˇcasu se tyto sluˇzby rozr˚ustaly a vzniklo v´ıce implementac´ı tˇechto sluˇzeb. Ve snaze tyto metody sjednotit vzniklo nˇekolik sluˇzeb (ofici´aln´ıch ˇci neofici´aln´ıch), kter´e jsou si navz´ajem velmi podobn´e. Nejv´ıce podobn´e jsou produkty neboli implementace dvou organizac´ı: OGC a OSGeo. 2.1 OGC OGC – Open Geospatial Consortium1 zaˇcalo p˚usobit v roce 1994. Je to neziskov´e sdruˇzen´ı cca 480 spoleˇcnost´ı, vl´adn´ıch agentur a univerzit, kter´e se snaˇz´ı naj´ıt shodu a vytvoˇrit standardy (OGC R Standards) a specifikace pro v´yvoj v oblasti geoinformaˇcn´ıch technologi´ı. Mezi oborovˇe nejzn´amˇejˇs´ı patˇr´ı napˇr. specifikace: Sluˇzby: • WMTS – Web Map Tile Service je sluˇzba poskytuj´ıc´ı rastrov´e mapov´e dlaˇzdice; aplikace podporuje tuto specifikaci; bl´ıˇze viz 2.3 [OCG11]; 1 http://www.opengeospatial.org/ Filip Zavadil 3
  • 13. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı • WMS – Web Map Service poskytuje mapov´e obr´azky dle poˇzadavku klienta (refe- renˇcn´ı souˇradnicov´y syst´em, ´uzem´ı, velikost obr´azku); • WFS – Web Feature Service je sluˇzba pro sd´ılen´ı vektorov´ych dat ve form´atu gml dle poˇzadavk˚u klienta; • WCS – Web Coverage Service umoˇzˇnuje pˇr´ıstup ke coverage dat˚um na z´akladˇe dotaz˚u. Form´aty: • GML – Geography Markup Language je form´at zaloˇzen´y na xml; ˇrad´ı se mezi vektorov´e form´aty s geografickou informac´ı bez vizualizaˇcn´ı sloˇzky; • KML – Keyhole Markup Language je form´at zaloˇzen´y na xml; vektorov´y form´at hojnˇe vyuˇz´ıvan´y pˇri v´ymˇenˇe a zobrazen´ı dvou-dimenzion´aln´ıch dat ve webov´em prostˇred´ı (napˇr. Google Earth); form´at obsahuje vizualizaˇcn´ı sloˇzku a lze ho bez- ztr´atovˇe pˇrev´est do form´atu kml. Obr´azek 2.1: Logo spoleˇcnosti Open Geospatial Consortium 2.2 OSGeo OSGeo – Open Source Geospatial Foundation2 je neziskov´a nevl´adn´ı organizace, kter´a podporuje vznik a v´yvoj opensource geoinformaˇcn´ıch technologi´ı. Organizace byla zaloˇzena v ´unoru 2006 a poskytuje finanˇcn´ı, organizaˇcn´ı a pr´avn´ı podporu geoinformaˇcn´ı komunitˇe. Pod z´aˇstitou OSGeo vzniklo mnoho svobodn´ych a otevˇren´ych knihoven, aplikac´ı a samotn´ych dat. Organizace kaˇzd´y rok poˇr´ad´a konferenci foss4g3 , kter´a je hlavn´ım m´ıstem setk´an´ı ˇclen˚u a pˇrispˇevatel˚u. Mezi nejzn´amˇejˇs´ı a nejv´ıce vyuˇz´ıvan´e patˇr´ı v souˇcasn´e dobˇe tyto projekty: Knihovny: • PROJ.4 – knihovna umoˇzˇnuje transformaci mezi kartografick´ymi zobrazen´ımi, tuto knihovnu vyuˇz´ıv´a mnoho dalˇs´ıch opensource projekt˚u; 2 http://www.opengeospatial.org/ 3 http://www.foss4g.org/ Filip Zavadil 4
  • 14. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Obr´azek 2.2: Logo spoleˇcnosti Open Source Geospatial Foundation • PostGIS – rozˇs´ıˇren´ı pro datab´azov´y syst´em postgresql, umoˇznuj´ıc´ı uloˇzen´ı a do- tazov´an´ı prostorov´ych dat; • GDAL/OGR – knihovna funkc´ı pro ˇcten´ı a z´apis rastrov´ych (gdal) a vektorov´ych (ogr) datov´ych form´at˚u; • GeoTools – knihovna pro vytv´aˇren´ı interaktivn´ıch geografick´ych vizualizac´ı v pro- gramovac´ım jazyce java, knihovna je vyuˇz´ıv´ana GeoServerem; • FDO – c++ api pro definov´an´ı a anal´yzu prostorov´ych dat; • deegree – otevˇren´y software pro prostorov´a data; zahrnuje pˇr´ıstup, vizualizaci; software je implementov´an v jazyce java, jsou zde tak´e implementov´any sluˇzby wms,wfs, ... . Webov´e aplikace: • TMS – Tile Map Service je sluˇzba poskytuj´ıc´ı rastrov´e mapov´e dlaˇzdice; aplikace podporuje tuto specifikaci; bl´ıˇze viz ˇc´ast 2.3; [OSG12] • OpenLayers – otevˇren´a knihovna ps´ana v jazyce javascript pro zobrazov´an´ı map na webov´em prohl´ıˇzeˇci; poskytuje api s podobnou funkcionalitou jako Google Maps nebo Bing Maps; knihovnu openlayers vyuˇz´ıv´a pro svou mapu projekt OpenStreetMap (Slippy Map); • MapFish – framework pro vytv´aˇren´ı ” bohat´ych“ webov´ych mapov´ych aplikac´ı; zahrnuje knihovny openlayers, extjs a geoext; framework bˇeˇz´ı na stranˇe klienta; • MapServer – cgi program bˇeˇz´ıc´ı na stranˇe serveru; vyv´ıjen Minnesotskou univer- zitou; • GeoServer – mapserver, kter´y pro sd´ılen´ı geoprostorov´ych dat, java program po- skytuje gui prostˇred´ı. Desktopov´e aplikace • Quantum GIS – hojnˇe vyuˇz´ıvan´y opensource geografick´y informaˇcn´ı syst´em; mul- tiplatformn´ı program je postaven na frameworku c++/qt; Filip Zavadil 5
  • 15. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı • GRASS GIS – Geographic Resources Analysis Support System; GIS vyv´ıjen od roku 1982 pro vojensk´e ´uˇcely; nyn´ı je jako opensource dostupn´y pod licenc´ı GNU GPL; program je tak´e pˇr´ıstupn´y z qgisu. Obr´azek 2.3: Loga vybran´ych projekt˚u pod organizac´ı OSGeo 2.3 TMS versus WMTS Jak jiˇz bylo uvedeno v´yˇse, specifikace sluˇzeb tms, wmts je velmi podobn´a. Je to d´ano z´avislou histori´ı: • bˇrezen 2006: OSGeo vyvinulo a otestovalo tms. V souˇcasn´e dobˇe zde existovaly implementace sluˇzeb jako je Google Maps, OnEarth, apod. • 2007: Skupina zab´yvaj´ıc´ı se OGC wms uvaˇzovala o zaˇclenˇen´ı podpory pro hotov´e dlaˇzdice do standardu wms. Pozdˇeji se rozhodlo, ˇze vznikne nov´y oddˇelen´y standard wmts. • z´aˇr´ı 2008: Na v´yroˇcn´ı konferenci foss4g v Jiˇzn´ı Africe probˇehla velk´a diskuze ohlednˇe sluˇzeb distribuj´ıc´ıch mapov´e dlaˇzdice. • 2008/2009: Byly testov´any 4 nez´avisl´e implementace wmts. • prosinec 2009: Implementace wmts byla schv´alena jako OGC standard. • duben, 2010: wmts byla veˇrejnˇe uvedena. Bˇehem t´eto doby (cca 4 roky neˇz byl vyd´an standard wmts) byla vyuˇz´ıv´ana specifi- kace tms. Proto se lze bˇeˇznˇe setkat s obˇema typy implementac´ı, kter´e jsou velmi podobn´e: • Obˇe sluˇzby vyuˇz´ıvaj´ı stejn´y referenˇcn´ı souˇradnicov´y syst´em. • Sniˇzuj´ı zat´ıˇzen´ı serveru: ˇreˇs´ı poˇzadov´an´ı pouze ˇc´asti mapy, omezuj´ı poˇzadavky pouze na pˇreddefinovan´e dlaˇzdice, povoluj´ı ukl´ad´an´ı do mezipamˇeti prohl´ıˇzeˇce. • Obˇe totoˇznˇe definuj´ı mˇeˇr´ıtkovou sadu, sadu dlaˇzdic pro kaˇzd´e mˇeˇr´ıtko, zp˚usob oznaˇcen´ı a uloˇzen´ı jednotliv´e dlaˇzdice, rastrov´y form´at (png,jpeg, ...) dlaˇzdice. Filip Zavadil 6
  • 16. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Z´asadn´ı rozd´ıl je ovˇsem v poˇc´atku souˇradnicov´eho syst´emu. Jedn´a se o poˇc´atek vˇetve osy y. Vzorec pro pˇrepoˇcet souˇradnice osy y je uveden v ˇc´asti 5.5. 2.4 Referenˇcn´ı souˇradnicov´y syst´em Standardn´ı kartografick´e zobrazen´ı uˇz´ıvan´e ve sluˇzb´ach tms a wmts. Toto karto- grafick´e zobrazen´ı se ˇcasto naz´yv´a ” web mercator“, ” sf´erick´y mercator“ nebo ” Google mercator“. V t´eto pr´aci bude nad´ale pouˇz´ıv´an v´yraz web mercator. Jedn´a se o karto- grafick´e zobrazen´ı : • konformn´ı (´uhlojevn´e - spojit´e zobrazen´ı zachov´avaj´ıc´ı ´uhly); • cylindrick´e (v´alcov´e - osa v´alce totoˇzn´a s osou zemskou); • na n´ahradn´ı kouli (pro zjednoduˇsen´ı je elipsoid nahrazen koul´ı). Z vlastnost´ı plyne, ˇze na map´ach nejsou zobrazeny p´oly, kter´e se ocitaj´ı v nekoneˇcnu, a tak´e ˇze mapa bude vykazovat velk´e zkreslen´ı pr´avˇe v pol´arn´ıch oblastech. Aby si mapa zachovala ˇctvercov´y pomˇer stran (1 : 1), jsou oblasti zobrazeny do cca 85.05◦ zemˇepisn´ych ˇs´ıˇrek. Vˇetˇsina svˇetovˇe bˇeˇznˇe pouˇz´ıvan´ych mapov´ych port´al˚u vyuˇz´ıv´a stejn´e kartografick´e zobrazen´ı, napˇr´ıklad OpenStreetMap (slippy map), Google Maps, Bing Maps, Nokia maps a dalˇs´ı. Tyto sluˇzby jsou plnˇe kompatibiln´ı s aplikac´ı . Jelikoˇz je tento ref. souˇr. syst´em pouˇz´ıv´an pro zobrazen´ı a ne pro pˇresn´e souˇradnicov´e v´ypoˇcty, je pro zjednoduˇsen´ı pouˇzita koule m´ısto elipsoidu. Toto sf´erick´e kart. zobrazen´ı zp˚usobuje pouze 0.33% zkreslen´ı na ose y. [Ait11] Toto kart. zobrazen´ı zaˇcal pouˇz´ıvat Google, proto je tak´e ˇcasto naz´yv´ano ” Google Projection“. Pot´e tuto projekci pˇrevzal i projekt OpenStreetMap pro svou renderovanou mapu. V´yvoj, pouˇzit´ı a oznaˇcen´ı referenˇcn´ıho souˇradnicov´eho syst´emu: [ope13] • EPSG:54004 – vzniklo pro potˇreby Google Maps; • OSGEO:41001 – takto bylo zobrazen´ı organizac´ı OSGeo pracovnˇe oznaˇceno bˇehem v´yvoje specifikace tms; • EPSG:900913 – pro potˇreby definice zobrazen´ı v OpenLayers; dalˇs´ı oznaˇcen´ı SR- ORG:7483 • ESRI:102113 – oznaˇcen´ı pro ESRI, pot´e bylo nahrazeno ESRI:102100; • EPSG:3785 – ekvivalentn´ı zobrazen´ı jako pˇredchoz´ı, nyn´ı k´od EPSG; ˇcasto mylnˇe oznaˇcov´ano jako EPSG:3587; Filip Zavadil 7
  • 17. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı • EPSG:3857 – shoda mezi EPSG a ESRI, posledn´ı ofici´aln´ı verze; dalˇs´ı oznaˇcen´ı: SR-ORG:6864. § 1 +proj=merc +lon 0=0 +k=1 +x 0=0 +y 0=0 +a=6378137 +b=6378137 2 +towgs84 =0 ,0 ,0 ,0 ,0 ,0 ,0 +units=m +no defs ¦ ¥ Zdroj. k´od 2.1: Definice kartografick´eho zobrazen´ı v knihovnˇe proj.4 § 1 PROJCS[ ”WGS 84 / Pseudo−Mercator” , 2 GEOGCS[ ”Popular V i s u a l i s a t i o n CRS” , 3 DATUM[ ”Popular V i s u a l i s a t i o n Datum” , 4 SPHEROID[ ”Popular V i s u a l i s a t i o n Sphere” ,6378137 ,0 , 5 AUTHORITY[ ”EPSG” , ”7059” ] ] , 6 TOWGS84[0 ,0 ,0 ,0 ,0 ,0 ,0] , 7 AUTHORITY[ ”EPSG” , ”6055 ” ] ] , 8 PRIMEM[ ”Greenwich” ,0 , 9 AUTHORITY[ ”EPSG” , ”8901” ] ] , 10 UNIT[ ” degree ” ,0.01745329251994328 , 11 AUTHORITY[ ”EPSG” , ”9122” ] ] , 12 AUTHORITY[ ”EPSG” , ”4055” ] ] , 13 UNIT[ ”metre” ,1 , 14 AUTHORITY[ ”EPSG” , ”9001” ] ] , 15 PROJECTION[ ”Mercator 1SP” ] , 16 PARAMETER[ ” central meridian ” ,0] , 17 PARAMETER[ ” s c a l e f a c t o r ” ,1] , 18 PARAMETER[ ” f a l s e easting ” ,0] , 19 PARAMETER[ ” f a l s e qnorthing ” ,0] , 20 AUTHORITY[ ”EPSG” , ”3785” ] , 21 AXIS [ ”X” ,EAST] , 22 AXIS [ ”Y” ,NORTH] ] ¦ ¥ Zdroj. k´od 2.2: Z´apis web mercatoru ve form´atu ogc wkt a v prj souboru 2.5 Souˇradnicov´e syst´emy vyuˇz´ıvan´e v aplikaci Aplikace vyuˇz´ıv´a nˇekolik souˇradnicov´ych syst´em˚u: • web mercator; • sch´ema dlaˇzdic; • pixelov´a soustava. Vˇsechny souˇradnicov´e syst´emy jsou jiˇz pravo´uhl´e a n´ıˇze jsou bl´ıˇze urˇceny. Filip Zavadil 8
  • 18. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Obr´azek 2.4: Tissotova indikatrix pro syst´em souˇradnic utm Web mercator Souˇradnicov´a soustava tohoto referenˇcn´ıho syst´emu m´a poˇc´atek na rovn´ıku a nult´em poledn´ıku, stejnˇe jako wgs84. Kladn´e vˇetve tak´e m´ıˇr´ı na sever a na v´ychod. Jednotky jsou metry a v odd´ıle 5.4 je uveden transformaˇcn´ı vzorec na zemˇepisn´e souˇradnice wgs84. [0,0]-x +x +y -y Obr´azek 2.5: Syst´em souˇradnic, kter´y vyuˇz´ıv´a web mercator Filip Zavadil 9
  • 19. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Sch´ema dlaˇzdic Kaˇzd´a zoom hladina m´a vlastn´ı souˇradnicov´y syst´em a ˇc´ıslov´an´ı rozdˇelen´e mapy zaˇc´ın´a vˇzdy od zaˇc´atku. Tzn. ˇze dlaˇzdice pro [zoom = 2; x = 1; y = 1] bude zobrazovat odliˇsn´e ´uzem´ı neˇz dlaˇzdice [zoom = 3; x = 1; y = 1]. U sluˇzby tms se poˇc´atek soustavy souˇradnic povaˇzuje dlaˇzdice na jihoz´apadˇe ” poskl´adan´e“ mapy. U sluˇzby wmts se poˇc´atek nach´az´ı v severoz´apadn´ım rohu. To je hlavn´ı rozd´ıl mezi tˇemito sluˇzbami, kter´y je potˇreba br´at v potaz pˇri pˇrid´av´an´ı nov´e vrstvy. Aplikace umoˇzˇnuje definovat, kde se tento poˇc´atek nach´az´ı. N´azorn´a uk´azka tohoto syst´emu a zp˚usob poˇc´ıt´an´ı je uveden na obr´azku 2.7. Pokud jsou zn´amy tyto souˇradnice, lze se snadno dostat k dlaˇzdici, kterou poˇzadujeme. ˇC´ıslo dlaˇzdice lze zjistit dle jednoduch´eho vzorce 2.1. [Sch07a] [Pˇri08] Xtile . = Xpixel/256 Ytile . = Ypixel/256 (2.1) Po inverzi vzorce 2.1 lze z´ıskat souˇradnice v obr´azkov´ych bodech (pixelech) lev´eho horn´ıho rohu dlaˇzdice. (660,360)px (330,180)px zoom = 1 zoom = 2 Obr´azek 2.6: Uk´azka zmˇeny mˇeˇr´ıtka (hladiny zoom) Pixelov´a soustava Bˇeˇznˇe v informatice pouˇz´ıvan´a soustava souˇradnic jednotliv´ych obr´azkov´ych bod˚u. Poˇc´atek m´a v lev´em horn´ım rohu obr´azku. Kladn´a vodorovn´a vˇetev osy x smˇeˇruje doprava a vertik´aln´ı vˇetev osy y m´ıˇr´ı dol˚u. Po pˇredstavˇe cel´e sloˇzen´e mapy svˇeta se poˇc´atek nach´az´ı vˇzdy na severoz´apadn´ım rohu. Velikost cel´e mapy roste spoleˇcnˇe s hladinou zoom (zmˇenou mˇeˇr´ıtka). Pokud zoom = 0, mapa svˇeta se vykresl´ı do jedn´e dlaˇzdice o rozmˇerech 256×256 pixel˚u. Pokud se uvaˇzuje zoom = 1, mapa svˇeta se sloˇz´ı do obr´azku, kter´y m´a velikost 512 × 512 pixel˚u. Z tohoto plyne, ˇze se velikost mapy zdvojn´asob´ı a poˇcet dlaˇzdic vzroste Filip Zavadil 10
  • 20. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı                     zoom = 1 512x512 px zoom = 2 1024x1024 px +x +y +x +y Obr´azek 2.7: Struktura dlaˇzdic mapov´e sluˇzby wmts 4×. Lze tedy ˇr´ıci, ˇze pokud se urˇcit´y bod na mapˇe nach´az´ı na souˇradnic´ıch [350, 500]px, lze ho v n´asleduj´ıc´ı hladinˇe nal´ezt na souˇradnic´ıch [700, 1000]px. Na obr. 2.6 je naˇcrtnut n´azorn´y pˇr´ıklad. Tabulka 2.1 uv´ad´ı velikost cel´e mapy svˇeta v pixelech a poˇcet dlaˇzdic potˇrebn´ych k zobrazen´ı svˇeta. [Sch07b] Tabulka 2.1: Pˇrehled poˇctu mapov´ych dlaˇzdic pro vybran´y zoom zoom velikost strany (px) poˇcet dlaˇzdic 0 256 1 1 512 4 4 4 096 256 6 16 384 4 096 8 65 536 65 536 10 ∼ 262.12 tis. ∼ 1.048 mil. 12 ∼ 1.05 mil. ∼ 16.777 mil. 14 ∼ 4.19 mil. ∼ 268.44 mil. 16 ∼ 16.78 mil ∼ 4.295 mld. 18 ∼ 67.11 mil. ∼ 68.72 mld. 20 ∼ 268.44 mil. ∼ 1 099 mld. Pomoc´ı pixelov´e soustavy jsou z´ısk´av´any souˇradnice pro ostatn´ı souˇradnicov´e syst´emy. Napˇr´ıklad pˇri kliknut´ı myˇsi do oblasti mapy jsou odesl´any pixelov´e souˇradnice m´ısta, kde se nach´azel kurzor myˇsi. Z tohoto ´udaje a z ˇc´ısla hladiny zoom lze dopoˇc´ıtat napˇr. zemˇepisnou ˇs´ıˇrku/d´elku (s vyuˇzit´ım vzorce 2.2) nebo ˇc´ıslo dlaˇzdice (vzorec 2.1), kde se dan´y bod nach´az´ı. Filip Zavadil 11
  • 21. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Jelikoˇz se vˇzdy pˇri zmˇenˇe zoom hladiny zvˇetˇs´ı velikost 2×, velmi rychle rostou n´aroky na datov´y prostor ´uloˇziˇstˇe, je vhodn´e m´ıt dlaˇzdice s optim´aln´ım datov´ym objemem. Touto problematikou se zab´yv´a ˇc´ast 2.8.3. Velikost cel´e mapy (d´elku strany ˇctverce v pixelech) lze vypoˇc´ıtat dle vzorce: a = 2zoom . Xpixel = (ϕ + 180) 360 · 256 · 2zoom Ypixel = 0.5 − log (1+sin ϕ) 1−sin ϕ 4π · 256 · 2zoom (2.2) [0,0][0,0] +x+x +y+y pixelypixely Obr´azek 2.8: Souˇradnicov´a soustava v poˇc´ıtaˇcov´e grafice 2.6 Zp˚usob ˇc´ıslov´an´ı ukl´ad´an´ı Sch´ema uloˇzen´ı dlaˇzdice je u sluˇzeb tms a wmts shodn´e. Jedn´a se o adres´aˇrovou strukturu, kter´a je n´azornˇe pops´ana na obr´azku 2.9. Pokud se vytv´aˇr´ı dlaˇzdicov´a mapa, nejdˇr´ıve se vytvoˇr´ı adres´aˇre, kter´e jsou pojmenov´any po hladin´ach zoom. Postupnˇe jsou do tˇechto adres´aˇr˚u zaˇrazeny dalˇs´ı podadres´aˇre, kter´e nesou n´azev dle osy x. Tyto obsahuj´ı dlaˇzdice, kter´e by po sloˇzen´ı vytvoˇrily sloupec o ˇs´ıˇrce 256 pixel˚u a v´yˇsce dle zobrazovan´eho ´uzem´ı. V tˇechto sloˇzk´ach se jiˇz nach´azej´ı jednotliv´e obr´azky, kter´e jsou pojmenov´any po ose y a pˇr´ıponou form´atu obr´azku (png, jpg, tiff, ...). O vhodn´ych form´atech je pojedn´ano v ˇc´asti 2.8.2. 2.7 Georeferenˇcn´ı soubor WORLDFILE Aplikace umoˇzˇnuje naˇc´ıtat rastrov´a data ve formˇe obr´azk˚u. Aby byla aplikace schopna um´ıstit obr´azek ve spr´avn´em mˇeˇr´ıtku a ve spr´avn´ych souˇradnic´ıch, je vyuˇz´ıv´an form´at worldfile. Jedn´a se o textov´y soubor, kter´y obsahuje 6 ˇr´adk˚u, kter´e pod´avaj´ı informace o rozliˇsen´ı, rotaci a poˇc´ateˇcn´ıch souˇradnic´ıch obr´azku. Soubory ob- Filip Zavadil 12
  • 22. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı map set osa X osa Y zoom hladina  Obr´azek 2.9: Struktura uloˇzen´ı mapov´ych dlaˇzdic sahuj´ı koncovku dle typu obr´azku. Napˇr. form´at jpeg bude m´ıt georeferenˇcn´ı soubor s koncovkou jgw. Podobnˇe: png ⇒ pgw, tiff ⇒ tfw. [ESR09] Tento form´at vyvinula spoleˇcnost ESRI, pro georeferencov´an´ı rastrov´ych dat. Je to alternativa k form´atu GeoTIFF, kter´y obsahuje data pro georeferencov´an´ı a informaci o pouˇzit´em kartografick´em zobrazen´ı pˇr´ımo v sobˇe. Soubor worldfile ovˇsem nepod´av´a informaci o referenˇcn´ım souˇradnicov´em syst´emu. Tuto informaci je nutn´e v GIS aplikac´ıch urˇcit. Aplikace v t´eto chv´ıli naˇc´ıt´a worldfile pouze v syst´emu web mercator a s nulovou rotac´ı na os´ach x, y. Zde je uvedena uk´azka a popis souboru worldfile: worldfile popis 78271.51695312499 A rozliˇsen´ı na ose-x (jednotky/pixel) 0 B rotace kolem osy-y -0 C rotace kolem osy-x -78271.51695312499 D rozliˇsen´ı na ose-y (jednotky/pixel) -1721973.372968750 E x-souˇradnice stˇredu horn´ıho prav´eho pixelu 11271098.44124999 F y-souˇradnice stˇredu horn´ıho prav´eho pixelu Souˇradnice referenˇcn´ıho syst´emu lze vypoˇc´ıtat dle vzorce 2.3, kde x, y jsou souˇradnice pixelov´e a ¯x, ¯y souˇradnice v referenˇcn´ım syst´emu, kter´y worldfile vyuˇz´ıv´a. ¯x ¯y = A B C D E F    x y 1    (2.3) Filip Zavadil 13
  • 23. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı Obr´azek 2.10: Sch´ema popisu souboru worldfile, zdroj: wikipedia.org 2.8 Mapov´e dlaˇzdice Tato ˇc´ast se zab´yv´a typem a form´atem jednotliv´ych mapov´ych dlaˇzdic. Dlaˇzdice (tile) je jeden d´ılek, ze kter´eho se skl´ad´a v´ysledn´a mapa. Mapov´e dlaˇzdice jsou rastrov´e (bitmapov´e) obr´azky, kter´e se mohou renderovat (vykreslovat) z vektorov´ych dat (podle stylov´eho kl´ıˇce) pˇri poˇzadavku uˇzivatele, nebo mohou b´yt jiˇz vytvoˇreny dopˇredu. Tomuto zp˚usobu se ˇr´ık´a tile caching. V´yhoda cachov´an´ı spoˇc´ıv´a v rychlejˇs´ı odezvˇe. 2.8.1 Velikost dlaˇzdice Mapov´e sluˇzby nejˇcastˇeji pouˇz´ıvaj´ı ˇctvercov´e obr´azky o velikosti 256 × 256 pixel˚u. Lze se setkat tak´e s form´atem 64 × 64 pixel˚u, zejm´ena pro mobiln´ı zaˇr´ızen´ı s menˇs´ım displejem. Aplikace pracuje pouze s prvnˇe uvedenou velikost´ı. 2.8.2 Form´at mapov´e dlaˇzdice Jelikoˇz objem dat vzr˚ust´a 4× s kaˇzdou hladinou zoom, je zapotˇreb´ı zvolit vhodn´y form´at mapov´e dlaˇzdice a z´aroveˇn pˇrihl´ıˇzet k vizu´aln´ımu hledisku. Mapov´e dlaˇzdice mohou b´yt uloˇzeny v bˇeˇznˇe uˇz´ıvan´ych rastrov´ych form´atech, jako jsou: • PNG (Portable Network Graphics, MIME typeimage/png) je n´astupce GIFu. Pouˇz´ıv´a bezztr´atovou kompresi 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, MIME typeimage/jpeg)je ztr´atov´y kom- primaˇ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 di- git´aln´ıch fotoapar´at˚u. Filip Zavadil 14
  • 24. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı • BMP (Microsoft Windows Bitmap, MIME typeimage/bmp) 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, MIME typeimage/tiff) pouˇz´ıv´a libovolnou dostup- nou 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 obsahuje informaci o prostoru a kartografick´em zobrazen´ı. • GIF (Graphics Interchange Format, MIME typeimage/gif) 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, a proto byl dˇr´ıve hojnˇe vyuˇz´ıv´an na internetu v reklamn´ıch bannerech. Nejˇcastˇeji pouˇz´ıvan´ym form´atem je png, kter´y je vhodn´y pro vˇetˇsinu kreslen´ych map. D´ıky sv´e lzw bezztr´atov´e kompresi je vhodn´y po str´ance datov´eho objemu i vi- zualizaˇcn´ı. S v´yhodou lze tak´e vyuˇz´ıt vlastnosti pr˚uhlednosti. Pokud se v mapˇe vysky- tuje gradient nebo je typick´e ˇcast´e stˇr´ıd´an´ı barev (satelitn´ı sn´ımky, ortofotosn´ımky nebo st´ınov´an´ı ter´enu), hod´ı se sp´ıˇse form´at jpeg, kter´y uˇsetˇr´ı m´ısto v ´uloˇziˇsti. [Zav09] 2.8.3 Barevn´e hloubky dlaˇzdic Barevn´a hloubka popisuje poˇcet pouˇzit´ych barev. Na tom tak´e z´avis´ı poˇcet bit˚u, potˇrebn´ych k popisu barvy a tedy i datov´y objem. Nejmenˇs´ı datovou velikost bude m´ıt obr´azek se dvˇema barvami, kter´y bude potˇrebovat pouze jeden bit (Mono Color). Naproti tomu obr´azek, kter´y by pouˇz´ıval vˇsechny barvy, kter´e je lidsk´e oko schopno rozeznat by k z´apisu potˇreboval 32 bit˚u (Super True Color). Pˇr´ıklady poˇctu bit˚u na pixel a poˇcet moˇzn´ych barev je uveden v tabulce 2.2. počet bitů počet barev označení 1 2 mono color 4 16 8 256 15 32 768 low color 16 65 536 high color 24 16 777 216 true color 32 4 294 mil. super true color 48 281,5 bil. deep color Tabulka 2.2: Barevn´a hloubka obr´azk˚u poˇc´ıtaˇcov´e grafiky Bˇeˇzn´e mapy jako v´ystup digit´aln´ı kartografie ovˇsem vyuˇz´ıvaj´ı barev mnohem m´enˇe. Vˇetˇsinou postaˇc´ı 8-bit˚u/pixel (256 barev). Ovˇsem exporty s touto barevnou hloubkou Filip Zavadil 15
  • 25. Kapitola 2. Teorie pouˇzit´ych sluˇzeb a technologi´ı nejsou v kartografick´ych ani GIS editorech bˇeˇzn´e. ˇCasto tak´e postaˇc´ı m´enˇe neˇz 64 barev a t´ım dojde k v´yznamn´e redukci objemu dat, aniˇz by byla ovlivnˇena vizu´aln´ı kvalita mapy pˇri zobrazen´ı na displeji. Je ovˇsem nutn´e pouˇz´ıt spr´avn´y algoritmus, kter´y poˇcet barev vhodnˇe zredukuje. Lze vyuˇz´ıt napˇr. program pngquant4 , kter´y kvantuje obr´azky pomoc´ı neuquant algoritmu na 8-bitovou hloubku s moˇznost´ı vybrat 256 a m´enˇe barev. T´ımto dojde k optimalizaci (pˇri zachov´an´ı pr˚uhlednosti) a v´ysledn´y obr´azek je m´enˇe datovˇe n´aroˇcn´y. V tabulce 2.3 si lze vˇsimnout zmˇeny datov´e velikosti pˇri redukci barev, aniˇz by byla ovlivnˇena hodnota zobrazen´ı. Aplikace bude umoˇzˇnovat tuto optimalizaci pˇri exportu pr´avˇe d´ıky programu pngquant. 8 b i t ů / p i x e l 4 b i t ů / p i x e l 256 barev ~184kB ~182kB ~118kB 64 barev ~112kB ~121kB ~92kB 16 barev ~63kB ~67kB ~61kB 4 barvy ~30kB ~33kB ~33kB 2 barvy ~18kB ~9kB ~18kB Tabulka 2.3: Porovn´an´ı barevn´ych hloubek obr´azku 512 × 512 px 4 http://www.pngquant.org/ Filip Zavadil 16
  • 26. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Kapitola 3 Sezn´amen´ı s aplikac´ı MapVision 3.1 MapVision Aplikace byla navrhnuta pro pr´aci s mapov´ymi dlaˇzdicemi. Postupnˇe byly pˇrid´any dalˇs´ı funkce ve formˇe modul˚u (ˇc´ast 3.5). D´ıky t´eto skuteˇcnosti je aplikace lehce rozˇsiˇriteln´a o dalˇs´ı prvky a funkce. V pl´anu je implementovat rozˇs´ıˇren´ı aplikace po- moc´ı metody plug-in. GUI (grafick´e uˇzivatelsk´e rozhran´ı) bylo navrˇzeno dle modern´ıch aplikac´ı, proto se vizu´alnˇe nepodob´a bˇeˇzn´ym program˚um. Ikony jsou autorsk´e a pˇri jejich v´yrobˇe byl br´an zˇretel na to, aby uˇzivatel intuitivnˇe poznal k ˇcemu jak´a ikona slouˇz´ı. Aplikace byla pojmenov´ana [mapviˇzn]. Je to sloˇzeni dvou anglick´ych slov map (mapa) a vision (vidˇen´ı) – prohl´ıˇzen´ı map. Logo (obr. 1.1) je sloˇzeno z n´azvu aplikace, ˇctyˇr kosod´eln´ık˚u symbolizuj´ıc´ıch dlaˇzdice a ikony modelu Zemˇe, kter´y pod´av´a informaci, ˇze se jedn´a o mapu. 3.2 Hlavn´ı okno Po spuˇstˇen´ı se program otevˇre v maxim´aln´ım zobrazen´ı. Vˇetˇsina panel˚u je zapnuta a v mapov´em oknˇe se spust´ı ” v´ıtac´ı str´anka“. Hlavn´ı okno obsahuje vˇetˇsinu zn´am´ych prvk˚u, jako jsou menu a liˇsta n´astroj˚u (ˇc´ast 3.7), n´asleduj´ı dva postrann´ı panely (ˇc´ast 3.5), mezi nimiˇz je hlavn´ı ˇc´ast – mapov´e okno (ˇc´ast 3.3). Vespodu se nach´az´ı v´ypis protokolu (ˇc´ast 3.5.9), kde jsou vypisov´any v´ysledky poˇzadavk˚u a informace. 3.3 Mapov´e okno Mapov´e okno zprostˇredkov´av´a veˇsker´e zobrazovac´ı funkce. Je to pl´atno (mapov´a sc´ena), na kter´e se pˇrid´avaj´ı dlaˇzdice vˇsech vrstev, mapov´e grafick´e prvky nebo text. Nach´az´ı se ve stˇredn´ım panelu aplikace. Filip Zavadil 17
  • 27. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Obr´azek 3.1: Hlavn´ı okno aplikace MapVision 3.4 Menu liˇsta Aplikace obsahuje klasickou ” menu“ liˇstu, jako bˇeˇznˇe uˇz´ıvan´e programy. Jsou zde k nalezen´ı funkce pro pr´aci s aplikac´ı. Soubor • Otevˇri – umoˇzˇnuje nahr´at mapov´y dokument s nastaven´ım mapov´eho okna nebo pˇridan´ych vrstev; mapov´y dokument je dle specifikace uveden´e v 3.12; • Uloˇz – otevˇre dialog pro uloˇzen´ı mapov´eho dokumentu mvd; • Uloˇz jako – pˇreuloˇz´ı mapov´y dokument mvd; • Konec – ukonˇc´ı aplikaci. Pˇridej – k dispozici je pˇrid´an´ı r˚uzn´ych typ˚u vrstev viz ˇc´ast 3.8. • Lok´aln´ı dlaˇzdice; • Online dlaˇzdice; • SQLite datab´azov´y soubor; • Georeferencovan´y obr´azek. Filip Zavadil 18
  • 28. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Export – export vrstev viz ˇc´ast 5.2. • Jako obr´azek; • Rozˇrezej dlaˇzdice. V´ybˇer – moˇznosti definice ´uzem´ı na mapˇe; • V´ybˇer myˇs´ı – pomoc´ı kurzoru ” t´ahnut´ım“; • V´ybˇer dle souˇradnic – otevˇre dialog v´ybˇer zad´an´ım souˇradnic; obr. 3.2; • Informace o v´ybˇeru – otevˇre dialog, kter´y popisuje definovan´y v´ybˇer viz obr. 3.3. Obr´azek 3.2: Dialog pro definici ´uzem´ı dle souˇradnic Zobrazen´ı – z´aloˇzka s nastaven´ım mˇeˇr´ıtka mapov´eho okna, jednotliv´e moˇznosti jsou zn´azornˇeny v tabulce n´ıˇze. zobrazen´ı zkratka popis 200% mˇeˇr´ıtko mapov´eho okna 200% 150% mˇeˇr´ıtko mapov´eho okna 150% 100% Ctrl + 1 mˇeˇr´ıtko mapov´eho okna 100% 75% Ctrl + 2 mˇeˇr´ıtko mapov´eho okna 75% 50% Ctrl + 3 mˇeˇr´ıtko mapov´eho okna 50% 25% Ctrl + 4 mˇeˇr´ıtko mapov´eho okna 10% 10% mˇeˇr´ıtko mapov´eho okna 25% Filip Zavadil 19
  • 29. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Obr´azek 3.3: Dialog zobrazuj´ıc´ı informace o v´ybˇeru Nastaven´ı – umoˇzˇnuje nastavit aplikaci . Okno – zde je moˇzn´e zobrazit nebo skr´yt veˇsker´e moduly. Pomoc. • O aplikaci – otevˇre okno, popisuj´ıc´ı aplikaci, viz obr. 3.4. • V´ıtac´ı okno – otevˇre okno, kter´e se spouˇst´ı pˇri startu. 3.5 Moduly Na lev´e stranˇe se nach´az´ı panel, kde se nach´az´ı modul vrstvy (ˇc´ast 3.5.1) a modul informace o mapov´em oknˇe (ˇc´ast 3.5.7). Na prav´e stranˇe lze nal´ezt moduly pro pr´aci s mapou a daty. Kaˇzd´y modul obsahuje hlaviˇcku, kde je uveden jeho n´azev a tlaˇc´ıtko min/max pro minimalizaci ˇci maximalizaci, tlaˇc´ıtko dock/undock pro odebr´an´ı ˇci pˇrid´an´ı modulu do panelu. Posledn´ı tlaˇc´ıtko hide skryje modul. V menu liˇstˇe se nach´az´ı z´aloˇzka Window/Okno, kde je moˇzn´e veˇsker´e moduly zapnout ˇci vypnout. Filip Zavadil 20
  • 30. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Obr´azek 3.4: Okno aplikace ” O aplikaci“ 3.5.1 Vrstvy Pro zobrazen´ı a nastavov´an´ı jednotliv´ych vrstev je vyuˇzit tento modul. Zde se zobraz´ı kaˇzd´a mapov´a vrstva. Jednotliv´e poloˇzky lze jednoduˇse pˇreskupit t´ahnut´ım myˇsi. Vrstvy jsou v mapov´em oknˇe zobrazeny ve stejn´em poˇrad´ı jako v tomto modulu. U kaˇzd´e poloˇzky se nach´az´ı zaˇskrt´avac´ı pol´ıˇcko, kter´e oznaˇcuje viditelnost vrstvy v mapov´em oknˇe. Po kliknut´ı na poloˇzku prav´ym tlaˇc´ıtkem myˇsi se zobraz´ı kontextov´a nab´ıdka. Vedle ikonky vrstev se zobrazuje n´azev mapov´eho doku- mentu. Pokud nen´ı jiˇz uloˇzen, zobrazuje se n´apis map dokument*, jinak se zobrazuje jm´eno uloˇzen´eho ma- pov´eho dokumentu. 3.5.2 Informace o souˇradnic´ıch Tento modul slouˇz´ı pro pod´an´ı informace o souˇradnic´ıch. Pokud je zapnut n´astroj kˇr´ıˇz , lze po kliknut´ı do mapov´eho okna zjistit souˇradnice v syst´emu wgs84 nebo v uˇzivatelem definovan´em souˇradnicov´em syst´emu. Jelikoˇz je pouˇzita knihovna proj.4, definice je upˇresnˇena pr´avˇe ve form´atu proj.4 (uk´azka viz k´od 2.1), kter´y lze zadat pˇr´ımo do tohoto modulu. Na obr´azku n´ıˇze je zadan´y k´od pro definici Kˇrov´akova zobrazen´ı. De- finice lze nal´ezt na webu1 . Zemˇepisn´e souˇradnice wgs84 lze zobrazovat v decim´aln´ım form´atu nebo ve form´atu dms (Degree Minute Second) v hexagesim´aln´ı soustavˇe s ud´an´ım 1 http://www.spatialreference.org/ Filip Zavadil 21
  • 31. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision kvadrantu: N,S (severn´ı, jiˇzn´ı ˇs´ıˇrka), W,E (z´apadn´ı,v´ychodn´ı d´elka). Pro pˇrep´ın´an´ı mezi tˇemito reˇzimy slouˇz´ı tlaˇc´ıtko decimal format /degree format. Pomoc´ı tlaˇc´ıtka copy to console lze souˇradnice vytisknout do tabulky do protokolu (viz ˇc´ast 3.5.9). Souˇradnice definovan´eho syst´emu jsou v metrech, pokud je v proj.4 k´odu uvedeno +units=m. Po- kud tomu tak nen´ı, v´ystup je automaticky pˇredkl´ad´an ve stupn´ıch a pol´ıˇcko degrees je zaˇskrtnut´e. 3.5.3 Nalezen´ı polohy Pokud je potˇreba vycentrovat mapu na urˇcit´e souˇradnice nebo nal´ezt polohu v mapˇe, lze vyuˇz´ıt tento modul. Souˇradnice wgs84 lze zadat v hexagesim´aln´ım nebo decim´aln´ım form´atu. Pol´ıˇcko zoom oznaˇcuje hladinu, na kterou se nastav´ı mapov´e okno. Pro tento mo- dul se chyst´a implementace vyhled´av´an´ı podle adresy. Vyuˇzita bude sluˇzba Nominatim2 a datab´aze GEONAMES 3 . 3.5.4 Pˇrid´an´ı textu Do mapy lze pomoc´ı tohoto n´astroje vkl´adat text, kter´y lze i form´atovat a pˇrizp˚usobit. Po kliknut´ı na tlaˇc´ıtko add text se text um´ıst´ı do stˇredu mapov´eho okna a z´aroveˇn se automaticky vybere n´astroj ukazatel , pomoc´ı kter´eho lze texty vyb´ırat a posouvat. K dispozici jsou tak´e syst´emov´e fonty. Uˇzivatel si m˚uˇze nastavit kromˇe barvy p´ısma tak´e ˇrez p´ısma (tuˇcnˇe, kurz´ıva) nebo podtrhnut´ı ˇci pˇreˇskrtnut´ı. 2 http://wiki.openstreetmap.org/wiki/Nominatim 3 http://www.geonames.org/ Filip Zavadil 22
  • 32. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision 3.5.5 Obr´azkov´e prvky Pokud je potˇreba do mapy pˇridat symbol, ikonku nebo obr´azek lze s v´yhodou vyuˇz´ıt pr´avˇe tento modul. Modul obsahuje obr´azky, kter´e se po dvojit´em kliknut´ı nebo stisknut´ı tlaˇc´ıtka add to map pˇridaj´ı do stˇredu mapov´eho okna. Takto pˇridan´e prvky lze snadno vˇsechny vybrat/odznaˇcit nebo skr´yt (tlaˇc´ıtka select all, clear all, hide all ). Tak´e lze hromadnˇe prov´adˇet editace jak´ymi jsou zmˇena pr˚uhlednosti nebo mˇeˇr´ıtka. Uˇzivatel si m˚uˇze do mapy pˇridat vlastn´ı obr´azek kliknut´ım na tlaˇc´ıtko load image from file nebo pˇrid´an´ım obr´azku do adres´aˇre map items, kter´y se nach´az´ı v adres´aˇri aplikace. Po restartov´an´ı programu se naˇctou novˇe pˇridan´e obr´azky. Lze pˇridat tyto obr´azkov´e form´aty: png, jpg, tiff, bmp, svg. Doporuˇcen je posledn´ı (vektorov´y) form´at svg(d´ıky jeho ˇsk´alovatelnosti). Jednotliv´e prvky lze posouvat pomoc´ı n´astroje ukazatel . 3.5.6 Grafick´e efekty Jednou z moˇznost´ı, jak editovat data, je pouˇzit´ı grafick´eho efektu. V tuto dobu jsou k dispozici tˇri efekty: • st´ın – nastavuje se odsazen´ı st´ınu od osy x a y a tak´e polomˇer rozostˇren´ı; Filip Zavadil 23
  • 33. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision • obarven´ı – zde je moˇznost vybrat barvu a s´ılu obarven´ı; • rozostˇren´ı – gaussovsk´e rozostˇren´ı je specifikov´ano hodnotou polomˇer (radius). Pro aplikaci tˇechto efekt˚u je nutn´e vybrat prvek, na kter´y bude efekt pouˇzit a kliknout na tlaˇc´ıtko add effect to selected. Po kliknut´ı na remove effect dojde k odebr´an´ı efektu u vybran´eho prvku. Efekt lze aplikovat i pro vrstvy map, pokud je vybr´ana (lev´e tlaˇc´ıtko myˇsi na modulu vrstvy, viz obr. 3.5.1). 3.5.7 Informace o mapov´em oknˇe Modul zobrazuje informace o mapov´em oknˇe. Nejprve jsou ud´any souˇradnice pod kurzorem myˇsi ve form´atu dms (zemˇepisn´a ˇs´ıˇrka/d´elka). Pot´e n´asleduje pol´ıˇcko zoom, kter´e ud´av´a informaci o aktu´aln´ı hladinˇe a mˇeˇr´ıtko zobrazen´ı mapov´eho okna v pro- centech. Obˇe poloˇzky jsou editovateln´e a lze si tak nastavit pˇresn´e zobrazen´ı. N´asleduje pˇribliˇzn´e mˇeˇr´ıtko mapy a zaˇskrtnuteln´e tlaˇc´ıtko render (vykreslov´an´ı). Pokud nen´ı zaˇskrtnuto, nedoch´az´ı k vykreslov´an´ı ˇz´adn´eho prvku ani vrstvy. 3.5.8 Informace o v´ybˇeru V´ybˇer ´uzem´ı se zprostˇredkuje pomoc´ı n´astroje v´ybˇer . Tento modul poskytuje informaci o souˇradnic´ıch lev´eho horn´ıho rohu a prav´eho spodn´ıho rohu. Souˇradnice jsou v souˇradnicov´em syst´emu wgs84 a form´atu dms. Filip Zavadil 24
  • 34. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision 3.5.9 Protokol Do tohoto modulu (konzole) jsou postupnˇe vypisov´any vybran´e akce, kter´e uˇzivatel provedl, nebo jsou zde zobrazeny chybov´e hl´aˇsky aplikace. Je to tak´e m´ısto, kde je moˇzn´e zapisovat pozn´amky. Napˇr. modul Informace o souˇradnic´ıch nab´ız´ı v´ystup (tabulku souˇradnic) do tohoto panelu. Na lev´e stranˇe se nach´az´ı tlaˇc´ıtka: hide (skryt´ı modulu), clear (vymaz´an´ı cel´eho protokolu), save (uloˇzen´ı protokolu ve form´atech: webov´e pre- zentace – html, richtext – rtf, plaintext – txt). 3.6 V´ıtac´ı okno Ihned po spuˇstˇen´ı aplikace se zobraz´ı ” v´ıtac´ı okno“ (obr. 3.5), kter´e uˇzivateli umoˇzˇnuje rychlou navigaci v n´apovˇedˇe aplikace a z´aroveˇn zobraz´ı tipy pˇri pr´aci s programem. Pˇri kliknut´ı na dlaˇzdici se otevˇre internetov´y prohl´ıˇzeˇc s pˇr´ısluˇsnou str´ankou. Uˇzivatel se tak m˚uˇze dozvˇedˇet ” Jak zaˇc´ıt“, nahl´ednout na internetov´e str´anky projektu, st´at se fanouˇskem na Facebooku, nebo si prohl´ednout dokumentaci. 3.7 Sada n´astroj˚u N´astroje umoˇzˇnuj´ı pr´aci s mapov´ym oknem a urˇcuj´ı chov´an´ı prvk˚u. Otevˇre soubor mvd (MapVision Dokument; mapov´y dokument), kter´y definuje zobrazen´e vrstvy a nastaven´ı mapov´eho okna. Uloˇz´ı zmˇeny v otevˇren´em mapov´em dokumentu mvd. Pˇrid´a mapov´y set ve struktuˇre adres´aˇr˚u a obr´azk˚u. Filip Zavadil 25
  • 35. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Pˇrid´an´ı sluˇzby tms/wmts. Vrstva s mapov´ymi dlaˇzdicemi ve form´atu mbtiles. N´astroj umoˇzˇnuje definici v´ybˇeru v mapˇe kurzorem myˇsi. Slouˇz´ı pro posouv´an´ı a zmˇenu mˇeˇr´ıtka mapy. Ukazatel pro vybr´an´ı jednotliv´ych mapov´ych prvk˚u (grafick´e prvky a text), pomoc´ı kl´avesy ctrl je moˇzn´e seskupovat v´ybˇer. Zjiˇstˇen´ı souˇradnic, kliknut´ım do mapov´eho okna. Zmˇena hladiny zoom o jednotku m´enˇe (m´enˇe podrobn´a mapa). Zmˇena hladiny zoom o jednotku v´ıce (podrobnˇejˇs´ı mapa). Zmˇena mˇeˇr´ıtka mapov´eho okna (zmenˇsen´ı). Zmˇena mˇeˇr´ıtka mapov´eho okna (zvˇetˇsen´ı). Pˇrekresl´ı mapov´e okno a vrstvy jsou znovu naˇcteny. Obr´azek 3.5: V´ıtac´ı str´anka zobrazuje tipy a odkazy pro n´apovˇedu Filip Zavadil 26
  • 36. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision 3.8 Vstupn´ı vrstvy V souˇcasn´e chv´ıli jsou k dispozici ˇctyˇri typy mapov´ych vrstev. V pl´anu je dalˇs´ı vrstva, kter´a bude vyuˇz´ıvat sluˇzbu wms, kter´a je obecnˇe rozˇs´ıˇrenˇejˇs´ı. Lok´aln´ı dlaˇzdice (Tiles-local) Mapov´y set nach´azej´ıc´ı se na ´uloˇziˇsti ve struktuˇre popsan´e na obr´azku 2.9. Dlaˇzdice online (Tiles-online) Tato vrstva podporuje sluˇzby wmts,tms a je d´ıky speci´aln´ımu z´apisu pˇrizp˚usobiteln´a mnoha dalˇs´ım sluˇzb´am. Dalˇs´ı informace viz ˇc´ast 3.8. Georeferencovan´y obr´azek (Georeferenced Image) Podpora pˇrid´an´ı georeferencovan´eho obr´azku. Georeferencov´an´ı je zprostˇred- kov´ano souborem s definic´ı tzv. worldfile (web mercator), viz odd´ıl 2.7. SQLite datab´aze (MBtiles) Dlaˇzdice uloˇzen´e v souborov´e datab´azi SQLite jsou podporov´any ve form´atu mbtiles. V pl´anu je pˇrid´an´ı specifikace podobn´eho form´atu, kter´e vyuˇz´ıvaj´ı aplikace Locus nebo MOBAC. Kaˇzd´a vrstva lze nastavovat skrze dialog vlastnost´ı (obr. 3.6), kter´y je dostupn´y pˇres kontextov´e menu vyvolan´e prav´ym tlaˇc´ıtkem u pˇr´ısluˇsn´e vrstvy v panelu vrstvy. Je moˇzn´e nastavit tyto parametry: n´azev vrstvy, zdroj vrstvy, pr˚uhlednost vrstvy, referenˇcn´ı bod (souˇradnice, hladina zoom) a polohu poˇc´atku osy y. Obr´azek 3.6: Dialog nastaven´ı parametr˚u vrstvy 3 http://www.mbtiles.org/ Filip Zavadil 27
  • 37. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Dodatek k online sluˇzb´am Z´apis zdroje online sluˇzby byl koncipov´an tak, aby bylo jednoduch´e pˇridat st´avaj´ıc´ı sluˇzbu, kter´a je podobn´a sluˇzb´am tms, wmts, OSM, Google Map. Pˇr´ıklad url adresy, kter´a je zad´av´ana do pol´ıˇcka zdroj : http://${sub[a,b,c]}.server.org/zoom=${z}/x=${x}/y=${y}.png symbol popis ${sub[a,b,c]} symboly (a,b,c) zastupuj´ı n´azev subdom´en, kter´e sluˇzba vyuˇz´ıv´a, aby nebyl zat´ıˇzen pouze jeden server ${z} zastupuj´ıc´ı znak pro hladinu zoom ${x} na m´ıstˇe tohoto znaku bude nahrazeno ˇc´ıslo osy x ${y} n´azev osy y, koncovka (.png) Zdroje online sluˇzeb Zde jsou uvedeny zdroje online mapov´ych sluˇzeb. Vˇetˇsina z nich m´a omezen´e pouˇzit´ı, proto je potˇreba d˚ukladnˇe prostudovat podm´ınky pouˇzit´ı, na kter´e je uveden odkaz pod sluˇzbami. Odkaz na sluˇzby staˇc´ı zkop´ırovat do pol´ıˇcka zdroj. OSM odvozen´e http://${sub[a,b,c]}.tile.openstreetmap.org/${z}/${x}/${y}.png http://${sub[a,b,c]}.tile.cloudmade.com/(API key)/1/256/${z}/${x}/${y}.png http://${sub[a,b,c]}.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png http://${sub[a,b,c]}.tile.cloudmade.com/(API key)/7/256/${z}/${x}/${y}.png podm´ınky pouˇzit´ı: http://www.openstreetmap.org/copyright (API key) – http://developers.cloudmade.com/projects/tiles/documents MapQuest, 4U map http://mtile0${sub[1,2,3,4]}.mqcdn.com/tiles/1.0.0/vx/map/${z}/${x}/${y}.png http://otile${sub[1,2,3,4]}.mqcdn.com/tiles/1.0.0/sat/${z}/${x}/${y}.jpg http://4umaps.eu/${z}/${x}/${y}.png podm´ınky pouˇzit´ı: http://wiki.openstreetmap.org/wiki/MapQuest#MapQuest-hosted_map_tiles http://www.4umaps.eu/terms-of-use.htm Google maps http://mts${sub[1,2,3]}.google.com/vt/lyrs=mx=${x}y=${y}z=${z} http://mts${sub[1,2,3]}.google.com/vt/lyrs=sx=${x}y=${y}z=${z} http://mts${sub[1,2,3]}.google.com/vt/lyrs=tx=${x}y=${y}z=${z} http://mts${sub[1,2,3]}.google.com/vt/lyrs=hx=${x}y=${y}z=${z} podm´ınky pouˇzit´ı: https://developers.google.com/maps/terms Filip Zavadil 28
  • 38. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision 3.9 Export Pro moˇznosti exportu je zde implementov´ano uloˇzen´ı mapy jako obr´azek nebo jako mapov´y set. V budoucnu se poˇc´ıt´a s moˇznost´ı uloˇzen´ı do souborov´e datab´aze sqlite, popˇr. jin´ych form´at˚u (sqlite, geotiff, . . . ). • Export rastrov´eho obr´azku lze definovat v´ybˇerem, souˇradnicemi nebo dle zob- razen´e ˇc´asti, nab´ız´ı se zde moˇznost vytvoˇren´ı i worldfile – souboru pro georefe- rencov´an´ı v souˇradnicov´em syst´emu epsg:3857. V dialogu pro definici v´yˇrezu lze vybrat ´uzem´ı dle zobrazen´e oblasti, zadan´ych souˇradnic, nebo dle v´ybˇeru myˇs´ı. D´ale je k dispozici nastaven´ı velikosti obr´azku v pixelech. Pˇri zaˇskrtnut´ı pol´ıˇcka world- file se pˇri exportu vytvoˇr´ı i textov´y soubor worldfile. Uk´azka dialogu je uvedena na obr. 3.7. • Export mapov´eho setu nab´ız´ı moˇznost rozˇrez´an´ı mapov´eho okna a uloˇzen´ı ma- pov´ych dlaˇzdic do struktury podobn´e sluˇzbˇe tms. Obr´azek 3.7: Dialog pro uloˇzen´ı v´yˇrezu mapy 3.10 Kl´avesy a kl´avesov´e zkratky Pro rychlejˇs´ı a jednoduˇsˇs´ı pr´aci s aplikac´ı lze pouˇz´ıt kl´avesov´e zkratky. Pˇri n´avrhu zkratek byl br´an ohled na ” zaˇzit´e“ postupy. N´ıˇze jsou zobrazeny a pops´any kl´avesov´e zkratky aplikace Filip Zavadil 29
  • 39. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision kl´avesa ikona funkce space posun mapy v mapov´em oknˇe pˇri stisknut´e kl´avese Alt + O otevˇren´ı mapov´eho dokumentu mvd Alt + S uloˇzen´ı mapov´eho dokumentu mvd Alt + Shift + S pˇreuloˇzen´ı mapov´eho dokumentu mvd Alt + A spuˇstˇen´ı okna ” O aplikaci“ Alt + R zapnut´ı/vypnut´ı vykreslov´an´ı Alt + H n´astroj pro posun mapy Alt + S definice v´ybˇeru ´uzem´ı Alt + P v´ybˇer a editace grafick´ych prvk˚u Alt + C sn´ım´an´ı souˇradnic Ctrl + - zmenˇs´ı mˇeˇr´ıtko zobrazen´ı o 10% Ctrl + + zvˇetˇs´ı mˇeˇr´ıtko zobrazen´ı o 10% Alt + + zvˇetˇs´ı hladinu zoom o jednotku Alt + - zmenˇs´ı hladinu zoom o jednotku Ctrl R, F5 pˇrekresl´ı mapov´e okno Ctrl + 1 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 100% Ctrl + 2 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 75% Ctrl + 3 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 50% Ctrl + 4 mˇeˇr´ıtko zobrazen´ı mapov´eho okna 25% Alt + I dialog pro uloˇzen´ı v´yˇrezu mapy jako obr´azek Alt + W spust´ı ” v´ıtac´ı str´anku“ Alt + Q ukonˇc´ı aplikaci 3.11 Budouc´ı vylepˇsen´ı Zde jsou uvedeny prvky a funkce, kter´e budou postupnˇe implementov´any, aby se aplikace stala v´ıce vyuˇzitelnˇejˇs´ı. • SQLite – export: zaˇclenˇen´ı exportu v tˇechto form´atech: mbtiles (MapBox)4 nebo sqlite(Locus5 , mobac6 ); • PDF – export: uloˇzen´ı v´yˇrezu mapy do form´atu pdf; • WMS: pˇrid´an´ı moˇznosti naˇc´ıtat sluˇzbu Web Map Service; • GPX: moˇznost naˇc´ıt´an´ı, editace a exportu form´atu gps exchange format; 4 http://mapbox.com/developers/mbtiles/ 5 http://www.locusmap.eu/ 6 http://mobac.sourceforge.net/ Filip Zavadil 30
  • 40. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision • Vyhled´av´an´ı adres: zjiˇstˇen´ı adresy dle souˇradnic a vyhled´an´ı polohy podle adresy; vyuˇzita bude sluˇzba nominatim7 a datab´aze n´azv˚u geonames8 ; • Georeferencov´an´ı: moˇznost georeferencovat obr´azek (rotace, translace, zmˇena mˇeˇr´ıtka); • Editace: pˇrid´an´ı vektorov´e vrstvy, do kter´e bude moˇzno zakreslovat mapov´e prvky (body, linie, polygony); • SHP: umoˇzn´ı naˇc´ıt´an´ı a export vektorov´e vrstvy do form´atu shapefile; • GeoTIFF: umoˇzn´ı naˇc´ıt´an´ı a export do georeferencovan´eho tiffu; • GDAL: zaˇclenˇen´ı funkc´ı t´eto knihovny. 3.12 Mapov´y dokument mvd Pro ´uˇcely uloˇzen´ı pˇridan´ych vrstev a uloˇzen´ı nastaven´ı mapov´eho okna byl vyvinut form´at MapVision Dokument - mvd. Ten je zaloˇzen na znaˇckovac´ım jazyku xml. Zdroj. k´od 3.1: Uk´azka MapVision Dokumentu§ 1 ?xml version=” 1.0 ”? 2 !DOCTYPE MapVisionDocument 3 map desc=”my map” zoom=”4” scale=”50” created=”2012−11−15T08:55:22 ” 4 name=” Introduce MV” owner=” F i l i p ” saved=”2012−11−16T14:47:10 ” 5 longtitude=” 35.1562 ” latitude=” 30.7513 ” 7 layers 8 layer opacity=”100” zoom=”1” zValue=”0” type=”TMSlocal” 9 source=”C:/testMap/GOOGLE NAMES” name=”GOOGLE NAMES” 10 longtitude=”0” latitude=” 85.0511 ”/ 12 layer opacity=”100” zoom=”1” zValue=”1” type=”TMSlocal” 13 source=”C:/testMap/ stiny ” name=” stiny ” 14 longtitude=”0” latitude=” 85.0511 ”/ 15 /layers 17 /map ¦ ¥ Aby byl dokument mvd validn´ı a program pˇri jeho nahr´av´an´ı nespadl, bylo vy- tvoˇreno sch´ema (ˇsablona), kter´e urˇcuje elementy a atributy dokumentu mvd. 7 http://wiki.openstreetmap.org/wiki/Nominatim 8 http://www.geonames.org Filip Zavadil 31
  • 41. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision Tabulka 3.1: Popis element˚u a atribut˚u v MVD dokumentu element atribut popis a funkce map element popisuj´ıc´ı nastaven´ı a metadata mapov´eho okna desc kr´atk´y popis mapov´e sc´eny zoom hladina zoom mapov´eho okna scale mˇeˇr´ıtko zobrazen´ı mapov´eho okna created datum a ˇcas prvn´ıho vytvoˇren´ı mvd dokumentu name n´azev mapov´e sc´eny owner jm´eno uˇzivatele saved datum a ˇcas uloˇzen´ı/pˇreuloˇzen´ı longtitude zemˇepisn´a d´elka stˇredu mapov´eho okna latitude zemˇepisn´a ˇs´ıˇrka stˇredu mapov´eho okna layers element sdruˇzuj´ıc´ı jednotliv´e vrstvy layer element popisuje nastaven´ı a metadata vrstvy name n´azev mapov´e vrstvy source zdroj/um´ıstˇen´ı/url mapov´e vrstvy zoom zoom hladina referenˇcn´ıho bodu vrstvy longtitude zemˇepisn´a d´elka referenˇcn´ıho bodu vrstvy latitude zemˇepisn´a ˇs´ıˇrka referenˇcn´ıho bodu vrstvy opacity nastaven´ı pr˚uhlednosti vrstvy type typ vrstvy (lok´aln´ı/online/mbtiles/georeferenced) zValue poˇrad´ı vrstvy v mapov´em oknˇe 3.13 Licence Aplikace je vyd´ana pod licenc´ı GNU LGPL v2.1 (GNU Lesser Ge- neral Public License)9 . U kaˇzd´eho souboru se zdrojov´ym k´odem je uvedena preambule informuj´ıc´ı o pr´avech a moˇznostech ˇs´ıˇren´ı. This MapVision software is c Filip Zavadil 2013. It is licensed under the LGPL license. This MapVision software dynamically links to unmodified Qt5 Library. The Qt5 Library is c 2013 Qt R and/or its subsidiary(-ies), and is licensed under the GNU Lesser General Public License version 2.1 with Qt R LGPL exception version 1.1. Qt5 library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation. Qt5 library is provided AS IS, without WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A~PARTICULAR PURPOSE. 9 http://www.gnu.org/copyleft/lesser.html Filip Zavadil 32
  • 42. Kapitola 3. Sezn´amen´ı s aplikac´ı MapVision As an additional permission to the GNU Lesser General Public License version 2.1, the object code form of a work that uses the Library may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that: (i) the header files of the Library have not been modified; and (ii) the incorporated material is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates; and (iii) you comply with the terms of Section 6 of the GNU Lesser General Public License version 2.1. Moreover, you may apply this exception to a modified version of the Library, provided that such modification does not involve copying material from the Library into the modified Library’s header files unless such material is limited to (i) numerical parameters; (ii) data structure layouts; (iii) accessors; and (iv) small macros, templates and inline functions of five lines or less in length. Furthermore, you are not required to apply this additional permission to a modified version of the Library. You should have received a copy of the GNU Lesser General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA The source code for Qt 5.X SDK is available from Qt Project here: http://qt-project.org/downloads Filip Zavadil 33
  • 43. Kapitola 4. V´yvojov´e prostˇred´ı Kapitola 4 V´yvojov´e prostˇred´ı Cel´a aplikace byla naps´ana ve frameworku c++/qt. Jak jiˇz n´azev napov´ıd´a, jedn´a se o objektovˇe orientovan´y jazyk c++ s knihovnou qt, kter´a tak´e obsahuje grafick´e uˇzivatelsk´e prostˇred´ı. Framework qt je multiplatformn´ı, proto nen´ı probl´em vydat aplikaci pro platformu Windows, Linux nebo MacOS. Obr´azek 4.1: Logo frameworku Qt a mottem 4.1 Historie a v´yvoj Qt V roce 1991 zaˇcal v norsk´em Oslu v´yvoj frameworku qt pod ˇst´ıtkem firmy TrollTech. Nejdˇr´ıve byl framework ˇs´ıˇren jako opensource pouze pro unixov´e syst´emy. Pro Windows musela b´yt pouˇzita komerˇcn´ı licence. O deset let pozdˇeji, kdy bylo vyd´ano qt 3.0, se do seznamu podporovan´ych platforem zaˇradil i syst´em MacOS. Od roku 2003 jsou k dispozici du´aln´ı licence pro vˇsechny podporovan´e platformy. V roce 2005 byla vyd´ana verze qt 4.0. O ˇctyˇri roky pozdˇeji pˇrevzala v´yvoj spoleˇcnost Nokia, kter´a do produktu zaˇradila podporu sv´eho operaˇcn´ıho syst´emu pro mobiln´ı telefony Symbian. V roce 2011 prodala Nokia pr´ava a licenci pro komerˇcn´ı projekty spoleˇcnosti Digia s ujiˇstˇen´ım, ˇze du´aln´ı licence bude zachov´ana. Ke konci roku 2012 byla vyd´ana verze qt 5.0, ve kter´e je v dobˇe psan´ı t´eto pr´ace aplikace sestavena. Filip Zavadil 34
  • 44. Kapitola 4. V´yvojov´e prostˇred´ı 4.2 Licence qt project1 je vyv´ıjen s otevˇren´ym zdrojov´ym k´odem. V´yhodou t´eto skuteˇcnosti je, ˇze m˚uˇze vznikat komunita pˇrispˇevovatel˚u, kteˇr´ı se mohou zapojit do v´yvoje. Aplikaci ˇci knihovnu vytvoˇrenou v qt lze tedy vyd´avat pod nˇekolika druhy licenc´ı. Opensource licence V dobˇe psan´ı t´eto pr´ace je moˇzn´e programy vytvoˇren´e v qt vyd´avat pod licenc´ı GNU LGPL v2.1 (GNU Lesser General Public License). Tato licence je pˇredstavuje stˇred mezi opensource licencemi GNU GPL a MIT nebo BSD. Programy nebo knihovny s touto licenc´ı nemus´ı m´ıt narozd´ıl od GNU GPL stejnou licenci. Lze ji tedy pouˇz´ıt v pro- priet´arn´ıch aplikac´ıch, mus´ı b´yt ovˇsem uvedena licence a autor se zachov´an´ım otevˇren´eho k´odu. Pouˇzit´e knihovny by mˇely b´yt linkov´any dynamicky (mimo hlavn´ı spustiteln´y sou- bor). Aplikace je vyd´ana pr´avˇe pod touto licenc´ı. Alternativnˇe lze vyuˇz´ıt tak´e licenci GNU GPL v3.0 . Komerˇcn´ı licence Dalˇs´ı moˇznost´ı jak vyv´ıjet aplikace postaven´e na qt, je pod komerˇcn´ı (propriet´arn´ı) licenc´ı. Ta je spravov´ana spoleˇcnost´ı Digia2 . Tato spoleˇcnost nab´ız´ı produkt qt Commer- cial, kter´y nab´ız´ı nejnovˇejˇs´ı qt knihovnu stejnˇe jako qt project. Aplikace ˇci knihovna vydan´a pod qt Commercial m˚uˇze m´ıt jakoukoliv licenci, ˇz´adn´a omezen´ı jiˇz nejsou za- hrnuta. Zdrojov´y k´od nemus´ı b´yt tak´e pˇr´ıstupn´y. S touto licenc´ı je zaruˇcena technick´a podpora a p´eˇce o z´akazn´ıka. Knihovny mohou b´yt linkov´any staticky. 4.3 Souˇc´asti Qt Framework V qt sdk (Software Developement Kit) je k dispozici ˇrada n´astroj˚u, kter´a usnadn´ı v´yvoj cel´e aplikace od pl´anov´an´ı aˇz k jej´ımu vyd´an´ı. N´ıˇze je uveden seznam vybran´ych n´astroj˚u, kter´e byly tak´e pouˇzity pˇri v´yvoji aplikace . [Pro13] • Qt Creator (obr.4.2) je editor nebo sp´ıˇse v´yvojov´e prostˇred´ı, kde je integrov´ana dokumentace. Pˇri psan´ı aplikace automaticky zv´yrazˇnuje nebo doplˇnuje k´od. Qt Creator obsahuje n´astroj na spr´avu verz´ı. K dispozici je i v´ykonn´y debugger. • Qt Designer je n´astroj pro vytv´aˇren´ı GUI (grafick´e uˇzivatelsk´e rozhran´ı) na z´akladˇe tzv. Qt Wigdet˚u. Jejich z´akladn´ı seznam je vyobrazen na obr. 4.3. • Qt Linguist je vhodn´y pro vytv´aˇren´ı jazykov´ych mutac´ı. Pˇreloˇzit lze vˇsechny hod- noty promˇenn´ych QString, kter´e jsou uvedeny jako argument funkce tr(). 1 http://qt-project.org 2 http://qt.digia.com Filip Zavadil 35
  • 45. Kapitola 4. V´yvojov´e prostˇred´ı • Qt Assistant je n´astroj pro vytvoˇren´ı on-line dokumentac´ı nebo n´apovˇedy. • qmake samostatn´y program pro sestaven´ı spustiteln´eho souboru; program s´am vytv´aˇr´ı i Makefiles. Obr´azek 4.2: Prostˇred´ı Qt Creator se spuˇstˇen´ym projektem MapVision 4.4 Programy postaven´e na Qt Zde je uveden seznam3 vybran´ych program˚u, kter´e jsou (cel´e nebo jejich ˇc´asti) vyv´ıjeny v prostˇred´ı qt: • Quantum GIS, • QCad, • GNU Octave, • Google Earth, • Autodesk Maya, • LibreCAD, • Skype, • Adobe Photoshop Album, • Amazon Kindle, • VLC media player, • Konqueror, • Texmaker. 3 ´upln´y seznam – http://en.wikipedia.org/wiki/Category:Software that uses Qt Filip Zavadil 36
  • 46. Kapitola 4. V´yvojov´e prostˇred´ı Obr´azek 4.3: Qt Designer: widgety pro grafick´e rozhran´ı 4.5 Verzov´an´ı Pro potˇreby uchov´av´an´ı historie editac´ı bˇehem v´yvoje aplikace se pouˇz´ıvaj´ı tzv. syst´emy spr´avy verz´ı. Ty jsou schopny proveden´e zmˇeny uchov´avat a n´aslednˇe se k nim vr´atit, pokud je v k´odu nalezena chyba. V souˇcasnosti jsou k dispozici dva typy program˚u pro spr´avu verz´ı. Prvn´ım z nich jsou syst´emy centralizovan´e (repozit´aˇr je pouze na jednom m´ıstˇe – serveru). Mezi tento typ patˇr´ı tyto nejpouˇz´ıvanˇejˇs´ı opensource programy: CVS, Subversion. Druh´y typ zastupuj´ı syst´emy distribuovan´e (repozit´aˇr m˚uˇze b´yt na lok´aln´ım disku). Mezi distribuovan´e syst´emy patˇr´ı napˇr. Git, Mercurial, Bazaar. Pro v´yvoj aplikace a pro spravov´an´ı t´eto publikace byl vyuˇzit opensource syst´em spr´avy verz´ı Git. Distribuovan´y syst´em spr´avy verz´ı git byl vyvinut p˚uvodnˇe pro v´yvoj j´adra operaˇcn´ıho syst´emu GNU Linux Linusem Torvaldsem. Postupnˇe se vˇsak stal samostatn´ym a pouˇz´ıvan´ym syst´emem. Vzd´alen´e ” hostov´an´ı“ opensource projekt˚u (na b´azi git) nab´ız´ı mnoho server˚u. Nam´atkou tˇreba Gitorious4 , GitHub, Google code nebo CodePlex5 Aplikace a tato pr´ace je opensource projekt a tedy zdrojov´e k´ody jsou volnˇe dostupn´e z repozit´aˇr˚u na serveru Gitorious.org . • Projekt MapVision: http://www.gitorious.org/mapvision • Diplomov´a pr´ace: http://gitorious.org/mapvision-diploma-thesis 4 https://www.gitorious.org/ 5 http://www.codeplex.com/ Filip Zavadil 37
  • 47. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu Kapitola 5 V´ybˇer ze zdrojov´eho k´odu Pro potˇreby sestaven´ı aplikace bylo vytvoˇreno nˇekolik tˇr´ıd. Vˇetˇsina jich je odvo- zen´ych a vyuˇz´ıvaj´ı metody dˇediˇcnosti, kdy se implementuj´ı nov´e vlastnosti existuj´ıc´ıch tˇr´ıd z knihovny qt. § 1 QString getMapScale () 2 { 3 double r e s o l u t i o n =156543.034∗ cos ( this−getCenterLonLat ( ) . y ()∗M PI/180) 4 /(pow(2 , zoom ) ) ; 5 int dpi = QApplication : : desktop()−physicalDpiX ( ) ; 6 double s c a l e = ( dpi ∗ 39.37 ∗ r e s o l u t i o n ) ; 7 return QString : : number( scale , ’ f ’ , 0 ) ; 8 } ¦ ¥ Zdroj. k´od 5.1: Mˇeˇr´ıtko mapy z´avisl´e na zemˇepisn´e ˇs´ıˇrce § 1 int main ( int argc , char ∗argv [ ] ) 2 { 3 QCoreApplication : : setApplicationName ( ”MapVision” ) ; 4 QCoreApplication : : setApplicationVersion ( ” 0 . 8 . 1 ” ) ; 5 QApplication a ( argc , argv ) ; 6 a . s e t S t y l e ( ” fusion ” ) ; 7 QTranslator t r a n s l a t o r ; 8 a . i n s t a l l T r a n s l a t o r ( t r a n s l a t o r ) ; 9 QPixmap pixmap ( ”images/ startUpScreen . png” ) ; 10 QSplashScreen splash (pixmap , Qt : : WindowStaysOnTopHint ) ; 11 splash . show ( ) ; 12 MapVision w; 13 w. showMaximized ( ) ; 14 splash . f i n i s h (w) ; 15 return a . exec ( ) ; 16 } ¦ ¥ Zdroj. k´od 5.2: Funkce main() Filip Zavadil 38
  • 48. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu V n´asleduj´ıc´ı tabulce je uveden jejich pˇrehled a popis funkcionality. Vybran´e tˇr´ıdy jsou detailnˇeji pops´any n´ıˇze. n´azev tˇr´ıdy popis zavaproj tˇr´ıda pro pˇrevod a v´ypoˇcet souˇradnic (ˇc´ast5.1) about okno o aplikaci addselectionrect tˇr´ıda implementuj´ıc´ı v´ybˇer ´uzem´ı dialogexport dialogov´e okno pro export v´yˇrezu mapy jako obr´azek dialogexportcutting dialogov´e okno pro export mapy jako dlaˇzdice dialoglayerimg dialogov´e okno georeferencovan´eho obr´azku dialoglayersqlite dialogov´e okno SQLite vrstvy dialoglayertileslocal dialogov´e okno lok´aln´ıch dlaˇzdic dialoglayertilesonline dialogov´e okno online dlaˇzdic dialogpreferences dialogov´e okno nastaven´ı vrstev dialogpreferencesglobal dialogov´e okno nastaven´ı aplikace dockwidgetaddmapfeatures tˇr´ıda modulu mapov´e prvky dockwidgetconsole tˇr´ıda modulu Protokol dockwidgetcoorsinfo tˇr´ıda modulu Informace o souˇradnic´ıch dockwidgeteffects tˇr´ıda modulu Grafick´e efekty dockwidgetgeneral rodiˇcovsk´a tˇr´ıda modul˚u dockwidgetgeneralleft rodiˇcovsk´a tˇr´ıda modul˚u dockwidgetselectioninfo tˇr´ıda modulu Informace o v´ybˇeru dockwidgettext tˇr´ıda modulu Text dockwidgetzoomto tˇr´ıda modulu Pˇrejdi na export tˇr´ıda zajiˇstuj´ıc´ı funkce exportu (ˇc´ast 5.2) graphicsfeatureitem implementace grafick´eho rastrov´eho prvku graphicsfeatureitemsvg implementace grafick´eho vektorov´eho prvku graphicstextitem implementace grafick´eho textov´eho prvku layer rodiˇcovsk´a tˇr´ıda pro jednotliv´e typy vrstev, (ˇc´ast 5.3) layerimg implementace vrstvy rastrov´eho obr´azku layersqlite implementace vrstvy SQLite layertileslocal implementace vrstvy lok´aln´ıch dlaˇzdic layertilesonline implementace vrstvy dlaˇzdic online listwidget implementace panelu ” pˇrehled vrstev“ mapdocumet implementace mapov´eho dokumentu mvd mapscene tˇr´ıda pˇrid´av´a vlastnosti tˇr´ıdˇe QGraphicsScene mapview implementace mapov´eho okna, (ˇc´ast5.4) mapvision implementace hlavn´ıho okna aplikace selectionrubberband tˇr´ıda implementuje v´ybˇer welcome tˇr´ıda implementuje V´ıtac´ı okno Filip Zavadil 39
  • 49. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu 5.1 ZavaProj V t´eto tˇr´ıdˇe jsou implementov´any metody pro pˇrevod mezi r˚uzn´ymi druhy souˇradnic. D´ale je zde implementov´ana funkce pro v´ypoˇcet vzd´alenosti, mˇeˇr´ıtka nebo pro pˇrevod zemˇepisn´ych souˇradnic do form´atu dms. Tato tˇr´ıda tak´e naˇc´ıt´a knihovnu proj.4, a d´ıky tomu je k dispozici pˇrevod do libovoln´eho souˇradnicov´eho syst´emu. lonlat2tileFormat Pro ´uˇcely pˇrevodu souˇradnic mezi syst´emem wgs84 a form´atem dlaˇzdic lze vyuˇz´ıt tuto funkci. Vstupn´ı promˇenn´e jsou double lon, double lat (zemˇepisn´e souˇradnice), int zoom (hladina ” zoom“) a Yaxis yaxis (poloha poˇc´atku vˇetve y). V´ystupn´ı hodnotou jsou souˇradnice bodu ve form´atu dlaˇzdic (QPoint). K´od lze nal´ezt v uk´azce 5.3. § 1 QPoint lonlat2tileFormat (double lon , double lat , int zoom , Yaxis yaxis ) 2 { 3 QPoint xy ; 4 int m=pow (2 . 0 , zoom ) ; 5 xy . setX (( int )( f l o o r (( lon + 180.0) / 360.0 ∗ m) ) ) ; 6 xy . setY (( int )( f l o o r ( ( 1 . 0 − log ( tan ( l a t ∗ M PI/180.0) + 1.0 7 / cos ( l a t ∗ M PI /180.0)) / M PI) / 2.0 ∗ m) ) ) ; 8 // conversion to TMS 9 i f ( yaxis==BOTTOM) xy . setY (m−xy . y() −1); 10 return xy ; 11 } 13 double Clip (double n , double minValue , double maxValue ) 14 { 15 return std : : min( std : : max(n , minValue ) , maxValue ) ; 16 // return qMin(qMax(n , minValue ) , maxValue ) ; 17 } ¦ ¥ Zdroj. k´od 5.3: Pˇrevod mezi syst´emy WGS84 a syst´emem dlaˇzdic tileFormat2lonlat Reverzn´ı funkce k pˇredchoz´ı. QPoint xy, int zoom, Yaxis yaxis slouˇz´ı jako vstup. Na v´ystupu se nach´azej´ı zemˇepisn´e souˇradnice ve form´atu QPointF. pixels2lonlat Funkce pˇrevede souˇradnice z mapov´e sc´eny v pixelech na souˇradnice zemˇepisn´e. QPoint pixels, int zoom jsou vstupn´ı parametry. V´ystup jsou zemˇepisn´e souˇradnice ve form´atu QPointF. Zdrojov´y k´od viz uk´azka 5.4. Filip Zavadil 40
  • 50. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu § 1 QPointF p i x e l s 2 l o n l a t (QPoint pixelPos , int zoom) 2 { 3 double pixelX=pixelPos . x ( ) ; 4 double pixelY=pixelPos . y ( ) ; 5 double mapSize = 256 zoom ; 6 double x = ( Clip (double( pixelX ) ,0 , mapSize −1)/double( mapSize )) −0.5; 7 double y = 0.5 −( Clip (double( pixelY ) ,0 , mapSize −1)/double( mapSize ) ) ; 8 double l a t=90−double (360)∗ atan ( exp(−y∗double (2)∗M PI))/ double(M PI) 9 double lon = double (360.0)∗ x ; 10 return QPointF( lon , l a t ) ; 11 } ¦ ¥ Zdroj. k´od 5.4: Pˇrevod mezi syst´emy WGS84 a pixelovou soustavou lonlat2pixels Revezn´ı funkce k pˇredchoz´ı, vstupn´ı parametry jsou QPointF lonlat, int zoom a v´ystup jsou pixelov´e souˇradnice pro danou zoom hladinu v pixelech ve form´atu QPoint. pixels2tileFormat Pˇrevod souˇradnic mapov´e sc´eny v pixelech na odpov´ıdaj´ıc´ı dlaˇzdici. Jako vstup slouˇz´ı promˇenn´e QPoint xy, int zoom, ZavaProj::Yaxis origin a v´ystup jsou souˇradnice dlaˇzdice ve form´atu QPoint. tileFormat2pixels Pˇrevod souˇradnic ve form´atu dlaˇzdic do mapov´e sc´eny v pixelech. Vstupn´ı para- metry QPoint xy, int zoom, ZavaProj::Yaxis origin. V´ystup jsou souˇradnice v pixelech ve form´atu QPoint. convertYaxis Funkce pˇrevede souˇradnici y u form´atu dlaˇzdic na jej´ı obdobu v opaˇcn´em poˇc´atku (urˇcena pro odliˇsnosti mezi sluˇzbami wmts a tms). Vstupn´ı hodnoty jsou int yTile, int zoom a v´ystup je souˇradnice y pro opaˇcn´y poˇc´atek ve datov´em typu int. § 1 int convertYaxis ( int yTile , int zoom) 2 { 3 return pow(2 , zoom)−yTile −1; 4 } ¦ ¥ Zdroj. k´od 5.5: Funkce pro pˇrevod mezi soustavami s odliˇsn´ym poˇc´atkem Filip Zavadil 41
  • 51. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu rectForTile Funkce pro v´ypoˇcet ohraniˇcuj´ıc´ıho obd´eln´ıku dlaˇzdice. Vstupem jsou souˇradnice dlaˇzdice (QPoint) a v´ystupem je definice obd´eln´ıku (v tomto pˇr´ıpadˇe ˇctverce) ve form´atu QRect. § 1 QRect rectForTile (QPoint t i l e ) 2 { 3 // returns TMS Y−o r i g i n ( bottom ) 4 return QRect( t i l e . x ()∗256 , t i l e . y ()∗256 ,256 ,256); 5 } ¦ ¥ Zdroj. k´od 5.6: Nalezen´ı ohraniˇcuj´ıc´ıho obd´eln´ıku pro dlaˇzdici pointForTile Pˇrevod ˇc´ıslov´an´ı dlaˇzdic na pozici (horn´ı prav´y roh) v mapov´e sc´enˇe v pixelech. Vstupem je QPoint tileFormat,int zoom a v´ystupem jsou souˇradnice dlaˇzdice v mapov´e sc´enˇe v pixelech. dms2lonlat Funkce obstar´av´a pˇrevod z form´atu dms na decim´aln´ı form´at. Vstupem jsou souˇradnice ve form´atu: 50◦ 20 30 . A v´ystup jsou souˇradnice zemˇepisn´e wgs84 ve form´atu QPointF. lonlat2dms Reverzn´ı funkce k pˇredchoz´ı. Ze souˇradnic v decim´aln´ım form´atu se pˇrevedou na form´at dms. § 1 QString lonlat2dms (QPointF lonLat ) 2 { 3 QString lon , lat ,DMS; 4 lon=this−double2dms ( lonLat . x ( ) , 2 ) ; 5 l a t=this−double2dms ( lonLat . y ( ) , 2 ) ; 6 DMS = ( lonLat . y() 0) ? l a t + ”N” : l a t + ”S” ; 7 DMS += ” , ” ; 8 DMS +=(lonLat . x() 0) ? lon + ”E” : lon + ”W” ; 9 return DMS; 10 } ¦ ¥ Zdroj. k´od 5.7: Pˇrevod souˇradnic z decim´aln´ıho form´atu na hexagesim´aln´ı getDistance Funkce vypoˇc´ıt´a d´elku mezi dvˇema body zadan´ymi zemˇepisn´ymi souˇradnicemi. V´ypoˇcet prob´ıh´a na kouli a jedn´a se tedy o ortodromu (nejkratˇs´ı vzd´alenost). Uk´azka vzorce viz. 5.8 Filip Zavadil 42
  • 52. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu § 1 double getDistance (QPointF lonlatA , QPointF lonlatB ) 2 { 3 int R = 6371; 4 double dLat = lonlatA . y () − lonlatB . y ( ) ; 5 double dLon = lonlatA . x () − lonlatB . x ( ) ; 6 double rad = M PI / double (180); 7 dLat ∗= rad ; 8 dLon ∗= rad ; 9 double a = sin ( dLat /2)∗ sin ( dLat/2)+ sin (dLon/2)∗ 10 sin (dLon/2)∗ cos ( lonlatA . y ()∗ rad )∗ cos ( lonlatB . y ()∗ rad ) ; 11 double c = 2 ∗ atan2 ( sqrt ( a ) , sqrt (1−a ) ) ; 12 return R ∗ c ; 13 } ¦ ¥ Zdroj. k´od 5.8: V´ypoˇcet sf´erick´e vzd´alenosti mezi body project Funkce pro pˇrevod zemˇepisn´ych souˇradnic (wgs84) do libovoln´ych referenˇcn´ıch souˇradnicov´ych syst´em˚u. Vstupem jsou decim´aln´ı souˇradnice (QPointF) a k´od proj.4 (QString). V´ystup jsou souˇradnice ve zvolen´em syst´emu (QPointF). § 1 QPointF project (QPointF lonlat , QString proj4CODE , bool isDegree ) 2 { 3 double x , y ; 4 projPJ out , in ; 5 x=l o n l a t . x ( ) ; 6 y=l o n l a t . y ( ) ; 7 x∗=DEG TO RAD; 8 y∗=DEG TO RAD; 9 i f ( ! ( out = p j i n i t p l u s (proj4CODE . toUtf8 ( ) ) ) ) { 10 QMessageBox msgBox ; 11 msgBox . setText ( ”The input projection i s i n v a l i d ! ” ) ; 12 msgBox . exec ( ) ; 13 return QPointF(NULL,NULL) ; } 14 i f ( ! ( in = p j i n i t p l u s ( ”+proj=latlong +e l l p s=WGS84 15 +datum=WGS84 +no defs ” ) ) ) return QPointF(NULL,NULL) ; 16 i f ( ! pj transform ( in , out ,1 ,1 ,x,y ,NULL)) { 17 i f ( isDegree ){ 18 x∗=RAD TO DEG; 19 y∗=RAD TO DEG; 20 } 21 return QPointF(x , y ) ; 22 } 23 else return QPointF(NULL,NULL) ; 24 } ¦ ¥ Zdroj. k´od 5.9: Pˇrevod mezi wgs84 a definovan´ym ref. souˇr. syst´emem Filip Zavadil 43
  • 53. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu lonlat2UTM Pˇrevod ze zemˇepisn´ych souˇradnic do souˇradnic referenˇcn´ıho syst´emu web mercator (epsg:3758). UTM2lonlat Reverzn´ı funkce k pˇredchoz´ı. Vstupem jsou souˇradnice v syst´emu web mercator (QPointF) a v´ystupem jsou souˇradnice zemˇepisn´e wgs84 (QPointF). § 1 QPointF UTM2lonlat (QPointF xy ) 2 { 3 double lon = ( xy . x () / 20037508.34) ∗ 180; 4 double l a t = ( xy . y () / 20037508.34) ∗ 180; 6 l a t = 180/M PI ∗ (2 ∗ atan ( exp ( l a t ∗ M PI / 180)) − M PI / 2 ) ; 7 return QPointF( lon , l a t ) ; 8 } ¦ ¥ Zdroj. k´od 5.10: Pˇrevod souˇradnic z web mercator do wgs84 5.2 Export Tato tˇr´ıda m´a implementov´any dvˇe hlavn´ı metody. Prvn´ı je export v´yˇrezu mapy jako obr´azek se souborem worldfile a druh´a je export v podobˇe mapov´ych dlaˇzdic. 5.2.1 Export v´yˇrezu mapy Tato funkce aplikace je implementov´ana v tˇr´ıdˇe DialogExport. Nejprve je zavol´ano dialogov´e okno (obr. 3.7), kde se v prvn´ı sekci nastav´ı, jak je definov´an v´yˇrez. Ten m˚uˇze b´yt urˇcen: • zobrazen´ym ´uzem´ım, • zadan´ymi souˇradnicemi, • nebo n´astrojem selekce . V dalˇs´ı sekci je moˇzn´e upravit rozmˇery obr´azku, kter´e jsou z poˇc´atku nastaveny na 100% velikost. Lze tak´e zamknout pomˇer stran, aby nedoch´azelo k deformaci. Je zde tak´e obsaˇzeno tlaˇc´ıtko, kter´e nastav´ı 100% rozmˇery. D´ale se v oknˇe nach´az´ı zaˇskrt´avac´ı pol´ıˇcko vytvoˇr worldfile a tlaˇc´ıtko exportuj, kter´e po kliknut´ı spust´ı dalˇs´ı okno pro v´ybˇer adres´aˇre a n´azvu souboru. Filip Zavadil 44
  • 54. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu § 1 // z j iˇs t e n´ı rozmˇeru obr´azku 2 int height = zavaProj . l o n l a t 2 p i x e l s ( rect . bottomRight () ,map−getZoom ( ) ) . y()− 3 zavaProj . l o n l a t 2 p i x e l s ( rect . topRight () ,map−getZoom ( ) ) . y () 4 int width = zavaProj . l o n l a t 2 p i x e l s ( rect . topRight () ,map−getZoom ( ) ) . x()− 5 zavaProj . l o n l a t 2 p i x e l s ( rect . topLeft () ,map−getZoom ( ) ) . x ( ) ; 7 // lev´y horn´ı roh obr´azku 8 QPoint topLeft = zavaProj . l o n l a t 2 p i x e l s ( rect . topLeft () ,map−getZoom ( ) ) ; 10 // rendrov´an´ı 11 QPainter ∗ painter= new QPainter( newImage ) ; 12 map−getScene()−render ( painter ,QRectF(QPoint(0 ,0) , imageSize ) , 13 QRectF( topLeft , QSize( width , height )) , Qt : : KeepAspectRatio ) ; 15 QtConcurrent : : run ( this , DialogExport : : saveMap , newImage , fileName ) ; 17 // vytvoˇren´ı souboru w o r l d f i l e 18 i f ( ui−checkBoxCreateWorldFile−isChecked ()){ 19 QRect r e c t P i x e l s ( topLeft , QSize( imageSize ) ) ; 20 this−createWorldFile ( rectPixels , rect , fileName ) ; 21 } ¦ ¥ Zdroj. k´od 5.11: Uloˇzen´ı v´yˇrezu mapy Pˇri vytv´aˇren´ı souboru worldfile program nejprve vypoˇcte souˇradnice v´yˇrezu. D´ale je vypoˇcteno rozliˇsen´ı (metr/pixel). Rotace dle os x, y nen´ı br´ana v potaz. Pot´e jsou vypoˇcten´e hodnoty zaps´any do v´ystupu a je uloˇzen textov´y soubor ve form´atu spe- cifikovan´em v odd´ıle 2.10. § 1 void createWorldFile (QRect pixelRect , QRectF lonlatRect , QString imgFilename ) 2 { 3 QUNUSED( lonlatRect ) 4 QPointF utmTopLeft = zavaProj . lonlat2UTM ( rect . topLeft ( ) ) ; 5 QPointF utmBottomRight = zavaProj . lonlat2UTM ( rect . bottomRight ( ) ) ; 7 double diffX = utmBottomRight . x () − utmTopLeft . x ( ) ; 8 double diffY = utmTopLeft . y () − utmBottomRight . y ( ) ; 10 double resX = diffX / pixelRect . s i z e ( ) . width ( ) ; 11 double resY = diffY / pixelRect . s i z e ( ) . height ( ) ; 13 QPointF coors = utmTopLeft ; //+ QPointF ( resX /2 , resY /2); 15 QString output = QString : : number( resX , ’ f ’ ,16) + ”n” + ”0n−0n” + 16 QString : : number(−resY , ’ f ’ ,16)+ ”n” ; 17 output += QString : : number( coors . x () , ’ f ’ ,9) + ”n” + Filip Zavadil 45
  • 55. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu 18 QString : : number( coors . y () , ’ f ’ , 9 ) ; 20 // write WORLDFILE 21 QString fileName = imgFilename ; 22 fileName . remove ( imgFilename . s i z e () −2 ,1); 23 fileName+=”w” ; 25 QFile ∗ textak = new QFile( fileName ) ; 27 i f ( textak−open ( QIODevice : : ReadWrite )){ 28 QTextStream out ( textak ) ; 29 out output ; 30 } 32 textak−c l o s e ( ) ; 34 } ¦ ¥ Zdroj. k´od 5.12: Vytvoˇren´ı souboru worldfile 5.2.2 Export mapov´ych dlaˇzdic Tato metoda nejprve zmenˇs´ı mapov´e okno na rozmˇery 512×512px a nastav´ı mˇeˇr´ıtko zobrazen´ı na 100%, jelikoˇz pˇred uloˇzen´ım jsou mapov´e dlaˇzdice zobrazeny na sc´enˇe. Pot´e jsou pro kaˇzdou hladinu zoom vypoˇcteny souˇradnice v´ybˇeru v pixelech, podle kter´ych se posouv´a stˇred mapov´eho okna. Je definov´ana oblast o rozmˇerech (256×256px) a n´aslednˇe je dlaˇzdice uloˇzena do urˇcit´eho adres´aˇre a pod urˇcit´ym n´azvem. § 1 void Export : : cutting ( QListint zooms , QString path ) 2 { 3 // uloˇzen´ı rozmˇer˚u mapov´eho okna 4 QSize preSize = map−maximumSize ( ) ; 5 int preZoom = map−getZoom ( ) ; 6 QPointF preCenter = map−getCenterLonLat ( ) ; 7 // zmenˇsen´ı rozmˇer˚u mapov´eho okna 8 map−setMaximumSize (512 ,512); 9 map−setViewScale (100); 10 // nastaven´ı ˇc´ıtaˇc˚u 11 int countTemp=0; 12 int countTemp2=0; 13 // pro zvolen´e hladiny zoom 14 foreach ( int z , zooms ) { 15 map−setZoom ( z ) ; 16 map−r e f r e s h ( ) ; 17 QTimer t ; 18 t . s t a r t (500); 19 QEventLoop loop ; // smyˇcka po 500msec Filip Zavadil 46
  • 56. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu 20 QObject : : connect(t , SIGNAL( timeout ()) , loop , SLOT( quit ( ) ) ) ; 21 loop . exec ( ) ; 23 // d e f i n i c e ´uzem´ı pro rozˇrez´an´ı 24 QPoint NW = zavaproj . pixels2tileFormat ( s e l e c t i o n − 25 getRectPixels ( z ) . topLeft () , z , ZavaProj : :BOTTOM) ; 26 QPoint SE = zavaproj . pixels2tileFormat ( s e l e c t i o n − 27 getRectPixels ( z ) . bottomRight () , z , ZavaProj : :BOTTOM) ; 29 // nastaven´ı mapy na poˇc´atek 30 map−setCenterLonLat ( 31 zavaproj . tileFormat2lonlat (QPoint(NW. x () ,SE. y ( ) ) , z , 32 ZavaProj : :BOTTOM) ) ; 34 // pˇr e l e t nad jednotliv´ymi dlaˇzdicemi 35 for ( int x=NW. x ( ) ; x=SE. x ( ) ; x++){ 36 for ( int y=SE. y ( ) ; y=NW. y ( ) ; y++){ 37 map−setCenterLonLat ( 38 zavaproj . tileFormat2lonlat (QPoint(x , y ) , z , ZavaProj : :BOTTOM) ) ; 40 renderTiles ( path , z , x , y ) ; 41 countTemp++; 42 countTemp2++; 43 } 44 } 45 } 46 // nastaven´ı mapov´eho okna zpˇet na p˚uvodn´ı v e l i k o s t 47 map−setZoom ( preZoom ) ; 48 map−setCenterLonLat ( preCenter ) ; 49 map−setMaximumSize ( preSize ) ; 50 } ¦ ¥ Zdroj. k´od 5.13: Vyˇr´ıznut´ı mapov´e dlaˇzdice § 1 void renderTiles (QString path , int z , int x , int y) 2 { 3 QImage img (QSize (256 ,256) , QImage : : Format ARGB32 ) ; 4 painter = new QPainter ( ) ; 5 painter −begin(img ) ; 6 map−getScene()−render ( 7 painter ,QRect(0 ,0 ,256 ,256) , 8 QRect(QPoint(x∗256 , zavaproj . convertYaxis (QPoint(x , y ) , z ) . y ()∗256) , 9 QSize (256 ,256)) ,Qt : : KeepAspectRatio ) ; 10 saveMapTile ( path , z , x , y , img ) ; 11 painter −end ( ) ; 12 } ¦ ¥ Zdroj. k´od 5.14: Funkce uloˇz´ı dlaˇzdici o rozmˇerech 256 × 256px Filip Zavadil 47
  • 57. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu 5.3 Layer Tˇr´ıda Layer je rodiˇcovsk´a tˇr´ıda tˇr´ıda, ze kter´e dˇed´ı ostatn´ı vstupn´ı vrstvy (LayerIMG, LayerSQLite, LayerTILESlocal, LayerTILESonline). Pro pr´aci s vrstvami je zde im- plementov´ano nˇekolik veˇrejn´ych metod: • Nastaven´ı a vyps´an´ı n´azvu vrstvy QString getLayerName(); void setLayerName(QString layerName2); • Zdroj vrstvy (cesta ke struktuˇre adres´aˇr˚u, url adresa) QString getSource(); void setSource(QString source2); • Nastaven´ı viditelnosti bool getVisible(); void setVisible(bool is); • Poˇrad´ı vrstvy int getZvalue(); void setZvalue(int zValue2); • Zmˇena pr˚uhlednosti qreal getOpacity(); void setOpacity(qreal opacity2); • Nastaven´ı referenˇcn´ıho bodu QPointF getLonlatOrigin(); QString getLonlatOriginString(); int getZoomOrigin(); void setOrigin(QPointF lonlat,int zoom); 5.4 MapView Tˇr´ıda MapView rozˇsiˇruje a dˇed´ı ze tˇr´ıdy QGraphicsView. Je uzp˚usobena pro pr´aci s mapou a mapov´ym oknem a prvky mapy. • Pl´atno mapov´e sc´eny MapScene* getScene(); • Nastaven´ı stˇredu mapov´eho okna je moˇzn´e decim´aln´ım form´atem, nebo tak´e from´atem dms void setCenterLonLat(QPointF lonLat); void setCenterLonLat(QString dmsFormat); QPointF getCenterLonLat(); Filip Zavadil 48
  • 58. Kapitola 5. V´ybˇer ze zdrojov´eho k´odu • Nastaven´ı hladiny zoom void setZoom(int zoom); int getZoom(); • Nastaven´ı mˇeˇr´ıtka zobrazen´ı void setViewScale(int viewScale); int getViewScale(); • Funkce vyp´ıˇse mˇeˇr´ıtko mapy ve form´atu QString QString getMapScale(); viz k´od 5.1; • Souˇradnice (wgs84) roh˚u zobrazen´e oblasti QRectF getRectLonlat(); • Vypnut´ı zvolen´e vrstvy void tilesVisible(QString layerName, bool isVisible); § 1 void MapView : : mouseDoubleClickEvent (QMouseEvent ∗ event ) 2 { 3 i f ( panEnabled ){ 4 QPointF posCenter=getCenterPixels ( ) ; 5 QPointF posScene=this−mapToScene( event−pos ( ) ) ; 6 QPointF delta = posCenter−posScene ; 7 i f ( event−button()==Qt : : LeftButton ){ 8 i f (zoom20) zoom++; 9 emit zoomChanged(zoom ) ; 10 this−setCenterPixels ( posCenter∗2−delta ) ; 11 } else i f ( event−button()==Qt : : RightButton ){ 12 i f (zoom=1) zoom−−; 13 emit zoomChanged(zoom ) ; 14 this−setCenterPixels ( posCenter/2+delta ) ; 15 } 16 this−update ( ) ; 17 } 18 QGraphicsView : : mouseDoubleClickEvent ( event ) ; 19 } ¦ ¥ Zdroj. k´od 5.15: Implenetace zmˇeny zoom pˇri dvojit´em kliknut´ı Filip Zavadil 49
  • 59. Kapitola 6. Z´avˇer Kapitola 6 Z´avˇer Byla vyvinuta a vyd´ana aplikace . C´ılem a pˇr´an´ım autora je, aby aplikace mohla b´yt v praxi vyuˇzita a byla t´ım prospˇeˇsn´a a to nejen odborn´e veˇrejnosti, ale i lidem, kteˇr´ı maj´ı mapy jako sv´eho kon´ıˇcka a vˇenuj´ı se jim ve sv´em voln´em ˇcase. Bˇehem v´yvoje vyvstaly mnoh´e probl´emy, kter´e se autor snaˇzil vn´ımat sp´ıˇse jako v´yzvy. D´ıky tomuto pˇr´ıstupu se v´yvoj´aˇr v t´eto oblasti velmi obohatil a mnoh´e se nauˇcil. Zaj´ımav´y je t´eˇz proces v´yvoje od ´upln´ych zaˇc´atk˚u aˇz po vyd´an´ı prvn´ı verze, tedy pˇrem´yˇslen´ı, n´aˇcrty a pak k´odov´an´ı. ˇCasto se t´eˇz st´av´a, ˇze uˇz bˇehem programov´an´ı se mˇen´ı koneˇcn´e vyuˇzit´ı aplikace. K´odu tedy st´ale pˇrib´yv´a a cel´a aplikace se st´av´a sloˇzitˇejˇs´ı a komplexnˇejˇs´ı. Jak zn´amo, aplikace nen´ı nikdy dokonal´a, a vˇzdy autor nach´az´ı m´ısta, kter´a by bylo moˇzn´e vylepˇsit nebo pˇridat novou funkcionalitu. Zad´an´ı diplomov´e pr´ace bylo splnˇeno v pln´em rozsahu. Aplikace nav´ıc obsahuje mnoho dalˇs´ıch funkc´ı, d´ıky kter´ym se je vyuˇzitelnˇejˇs´ı. Aplikace je nyn´ı vyuˇz´ıv´ana tak´e pro ´upravu off-line mapov´ych bal´ıˇck˚u pro mobiln´ıho pr˚uvodce PhoneMaps. V dobˇe v´az´an´ı t´eto pr´ace byla aplikace ve v´yvojov´e verzi 0.8.1 a prob´ıhalo jej´ı testov´an´ı, proto je moˇzn´e, ˇze aplikace ” zamrzne“ u neoˇcek´avan´e operace. Pro nahlaˇsov´an´ı chyb (bug˚u) slouˇz´ı webov´e str´anky projektu: http://mapvision.codeplex.com . Zdro- jov´y k´od aplikace a spustiteln´e soubory (Windows) spolu se vzorov´ymi daty jsou na pˇriloˇzen´em CD. Filip Zavadil 50
  • 60. Literatura Literatura [Ait11] Alastair Aitchison. The google maps / bing maps spherical mer- cator projection. http://alastaira.wordpress.com/2011/01/23/ the-google-maps-bing-maps-spherical-mercator-projection/, Janu- ary 2011. [ESR09] ESRI. About world files. http://webhelp.esri.com/arcims/9.2/general/ topics/author_world_files.htm, December 2009. [OCG11] OCG. Opengis web map tile service implementation standard. http://www. opengeospatial.org/standards/wmts, June 2011. [ope13] opestreetmap.org. Slippy map. http://wiki.openstreetmap.org/wiki/ Slippy_Map, May 2013. [OSG12] OSGeo. Tile map service specification. http://wiki.osgeo.org/wiki/Tile_ Map_Service_Specification, May 2012. [Pˇri08] Petr Pˇridal. Tiles ´A la google maps: Coordinates, tile bounds and projection. http://www.maptiler.org/ google-maps-coordinates-tile-bounds-projection, July 2008. [Pro13] Qt Project. Qt 5.0 documentation. http://qt-project.org/doc/qt-5.0/ qtdoc/index.html, April 2013. [Sch07a] Joe Schwartz. Bing maps tile system. http://msdn.microsoft.com/en-us/ library/bb259689.aspx, January 2007. [Sch07b] Joe Schwartz. Understanding scale and resolution. http://msdn.microsoft. com/en-us/library/aa940990.aspx, January 2007. [Zav09] Filip Zavadil. Svg a xls transformace vyuˇziteln´e v kartografii. http://svg. filipzava.cz/Bakalarska_prace.pdf, May 2009. Filip Zavadil 51
  • 61. Rejstˇr´ık Rejstˇr´ık barevn´a hloubka, 15 caching, 1, 14 dms, 21 git, 37 GNU GPL, 35 google mercator, 7 gui, 17 konsole, 25 layer, 48 mapov´a sc´ena, 17 mapov´e dlaˇzdice, 14 mapov´e okno, 17 mapov´e sluˇzby, 3 MapVision dokument, 31 menu, 18 modul, 20 mvd, 31 n´astroje, 25 OGC, 3 OSGeo, 4 panel, 20 pixely, 10 pl´atno, 17 protokol, 25 Qt, 34 sch´ema dlaˇzdic, 10 TMS, 6 verze, 37 web mercator, 7, 9 WMTS, 6 worldfile, 12 Filip Zavadil 52