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++
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