SEMESTRÁLNÍ PROJEKTgeo.fsv.cvut.cz/gdata/2013/pin2/a/dokumentace/dokumentace.pdf · Úvod Práce...
Transcript of SEMESTRÁLNÍ PROJEKTgeo.fsv.cvut.cz/gdata/2013/pin2/a/dokumentace/dokumentace.pdf · Úvod Práce...
�eské vysoké u£ení technické v Praze
Fakulta stavební
SEMESTRÁLNÍ PROJEKT
153PIN2 - Projekt Informatika 2
Aplikace pro tvorbu kartogram·
Marie Fu¬ákováSimona Karochová
Praha, 2013 Tomá² Vojt¥chovský
Obsah
Úvod 3
1 O programu 4
1.1 Kartogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Nástroje pro vývoj 6
2.1 Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Quantum GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Tvorba aplikace 8
3.1 Kompilace pod MS Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Na£tení knihoven QGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Vstupní a výstupní data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4 Gra�cké rozhraní . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5 Zdrojové kódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Problematické situace 11
4.1 Debug mód pro OS Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Zobrazování ikon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3 Editovatelnost zlomových bod· t°íd . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4 M¥°ítko a referen£ní systém . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5 Pomalé na£ítání v¥t²ího mnoºství dat . . . . . . . . . . . . . . . . . . . . . . . . 12
4.6 Poskytnutí spustitelné aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Zhodnocení aplikace 14
5.1 Návrhy na zlep²ení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1.1 Objektový návrh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1.2 Legenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1.3 Barevná stupnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1.4 Popis vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1.5 Prohlíºení vrstev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1.6 Lokalizace aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.7 Úpravy layoutu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6 Záv¥r 18
Literatura 19
Úvod
Práce byla vytvo°ena v rámci p°edm¥tu Projekt Informatika 2 (153PIN2). Hlavním d·vo-
dem k naprogramování aplikace pro tvorbu kartogram· je vytvo°ení jednoduchého a p°ístup-
ného nástroje, který bude um¥t ovládat i £lov¥k bez znalostí GIS. Poºadavek na tuto aplikaci
vznikl od Ústavu pro prav¥k a ranou dobu d¥jinnou FF UK v Praze[2].
Cílem práce je sestavit program, který na základ¥ knihoven QGIS zobrazí soubor ve for-
mátu *.shp, podle kritérií vytvo°í kartogram a do mapy doplní mimo rámové údaje. Celá
aplikace je naprogramována v jazyce C++ ve vývojovém prost°edí QTCreator s vyuºitím
knihoven QGIS.
3
1 O programu
1.1 Kartogram
Kartogram je jedna z vyjad°ovacích metod tematické kartogra�e. Jedná se o jednoduchou
mapu, v níº je intenzita jevu ve sledovaném území vyjád°ena gra�cky (nap°. barvou). To
znamená, ºe do díl£ích územních celk· mapy jsou plo²ným zp·sobem znázorn¥na statistická
data p°eváºn¥ geogra�ckého charakteru.
Pro kartogram je nutná plocha, která je nositelem informace, na základ¥ níº chceme data
vizualizovat.
Kartogramy se d¥lí na pravé a nepravé kartogramy. Nepravé kartogramy nejsou vztaºeny
k plo²e a nemají proto prostorový základ, protoºe data jsou p°epo£tena na jednotku plochy.
Nepravé kartogramy bývají £ast¥j²í neº b¥ºný kartogram.[3][1]
Mezi druhy kartogram· pat°í[1]:
• Jednoduchý � jeden jev
• Sloºený - více jev·
• Strukturní � £len¥ní jevu
• Te£kový � vizualizace pomocí te£ek
• �árový � vizualizace pomocí £ar
• Sí´ový � geometrické hranice
• Prostorový � typ blokdiagramu
• Anamorfovaný
V anglické literatu°e jsou kartogramy ozna£ovány pod pojmem choropleth mapping a výraz
cartogram odpovídá na²í anamorfované map¥ tj. map¥, kde z d·vodu lep²í £itelnosti a zvýraz-
n¥ní daného jevu mapa ztrácí polohopisný údaj. V takovýchto mapách je proto up°ednost¬ován
tematický obsah p°ed polohopisným.[3]
1.2 Aplikace
V jednoduché aplikaci pro tvorbu kartogram· je moºné na£íst soubor formátu *.shp. Dále
si uºivatel m·ºe vybrat ze sloupc· s £íselnou hodnotou, na jehoº základ¥ se provede klasi�kace
4
podle zadaného po£tu t°íd a zvolené barevné ²kály. Poté je moºné na£tenou mapu obarvit �
vytvo°it tak kartogram.
P°i spu²t¥ní programu se otev°e jednoduché okno aplikace. V horní £ásti okna aplikace jsou
k dispozici dva panely, které si m·ºe uºivatel libovoln¥ p°emístit. Jeden panel slouºí pro práci
s oknem; obsahuje tla£ítka pro na£tení nové vrstvy, p°iblíºení, oddálení, posun a zobrazení
na£tených dat do celého okna. V druhém panelu je pak umíst¥no m¥°ítko, které zobrazuje
maximáln¥ 1 : 500 000 000. Men²í m¥°ítko jiº zaznamenáváno není.
V menu se nachází t°i poloºky File, View a Help. Poloºka File umoº¬uje na£íst vrstvu
*.shp (Load Shape�le), uloºit vytvo°ený kartogram (Save Map As) do n¥kolika formát· (nap°.
bmp, png, ppm,. . . ) a program uzav°ít (Quit). View pak slouºí pro práci s mapovým oknem
� posun a zoom. Help obsahuje stru£nou nápov¥du (Help) a informace o programu (About).
Otev°ít polygonovou vrstvu ve formátu *.shp je moºné prvním tla£ítkem zleva nebo v menu
File � Load Shape�le.
Pokud není na£ten soubor *.shp s £íselnou hodnotou aspo¬ v jednom sloupci, je okno
neaktivní a není v n¥m proto moºné nic zadávat. P°i na£tení nevyhovujícího souboru se zobrazí
varování, které upozorní na konkrétní problém.
Pokud je soubor správn¥ na£ten, v pravé dolní £ásti se zobrazí okno se statistickými údaji
o maximální, minimální hodnot¥ a pr·m¥rné hodnot¥ daného sloupce.
Po na£tení správného souboru je moºné v pravé £ásti zvolit libovolný sloupec s £íselnými
hodnotami, zadat po£et t°íd v rozmezí 1-12 a vybrat metodu pro vytvo°ení t°íd.
Uºivatel si m·ºe zvolit ze dvou metod: Equal interval nebo Editable Breakpoints. V prv-
ním p°ípad¥ je t°ída rozd¥lena na rovnom¥rné intervaly, které se znovu vytvo°í vºdy, kdyº je
vybrána tato moºnost. Ve druhém p°ípad¥ je moºné zvolit si vlastní lomové body. Hodnoty
bod· se zadávají do druhého £íselného sloupce to. Pokud nejsou zadané hodnoty se°azené,
program je dokáºe se°adit. Zárove¬ kontroluje, zda je zadaná hodnota v rozmezí mezi mini-
mální a maximální hodnotou. Pokud je niº²í, hodnota je automaticky p°evedena na nejniº²í
hodnotu, pokud je vy²²í, hodnota je p°evedena na nejvy²²í hodnotu.
Dále je na výb¥r z n¥kolika barevných ²kál spolu s moºností inverzních barev.
Vykreslení kartogramu podle zadaných parametr· se potvrdí tla£ítkem Apply.
Popis k jednotlivým plochám je moºné p°idat za²krtnutím Label this layer a výb¥rem
sloupce, který se má zobrazovat.
5
2 Nástroje pro vývoj
2.1 Qt
Qt je knihovna, p°esn¥ji °e£eno framework, umoºnující vývoj aplikací s gra�ckým uºiva-
telským rozhraním (GUI, Graphical User Interface). Qt je cross-platformní, coº znamená, ºe
v n¥m vytvo°ené programy lze pouºívat na mnoha platformách v£etn¥ GNU/Linux, Mac OS
X a MS Windows. Podporovány jsou v²ak i dal²í opera£ní systémy jako nap°íklad systémy
n¥kterých mobilních telefonu.
Hlavním jazykem, který se pouºívá pro programování Qt aplikací, je C++. V závislosti na
tom, jakou aplikaci vyvíjíme, lze v²ak pouºít i jiné programovací jazyky (nap°. JavaScript £i
Python) £i postupy (nap°. gra�cké skládání uºivatelského rozhraní).
Sou£ástí Qt SDK je i vývojové prost°edí (IDE), které se jmenuje QtCreator. Je voln¥
dostupné ke staºení a je pod licencí GNU GPL. Díky tomu je moºné jej pouºívat k tvorb¥
komer£ního software a to i toho s uzav°enými zdrojovými kódy (proprietárního software).
QtCreator se °adí mezi takzvané lightweight IDE, tedy vývojová prost°edí, která sice na
rozdíl od oby£ejných textových editor· nabízejí ²irokou podporu p°i programování, ale na
druhou stranu nejsou tak náro£ná na nau£ení (a p°ípadn¥ i na výkon) jako rozsáhlá vývojová
prost°edí, která v sob¥ obsahují podporu pro nep°eberné mnoºství £inností.
QtCreator má speciální funkce pro vývoj Qt aplikací. Jedná se nap°íklad o gra�cký nástroj
Qt Designer pro tvorbu gra�ckého uºivatelského rozhraní. [4]
2.2 Quantum GIS
Neboli zkrácen¥ jen QGIS je volný a multiplatformní geogra�cký systém pod licencí GNU
GLP, jehoº vývoj zapo£al roku 2002. Je psán v jazyce C++ a gra�cké uºivatelské rozhraní je
postaveno na knihovn¥ Qt.
QGIS je v neustálém vývoji, který zaji²´uje skupina dobrovolník·. Jeho funk£nost zaji²´ují
zásuvné moduly.
Zdrojové kódy, ale i hotové instala£ní balí£ky jsou poskytovány zdarma na adrese:
http://qgis.org/.
QGIS je napsaný v C++ a postavený na platform¥ Qt. QGIS nabízí n¥kolik moºností,
jak roz²í°it a nebo pouºít jeho funkcionalitu. První moºností je napsání zásuvného modulu
6
£ili pluginu do desktopové aplikace QGIS. Tento plugin m·ºe být napsán v C++ nebo v
Pythonu. Dal²í moºností je postavit na základ¥ r·zných £ástí QGISu svou vlastní desktopovou
£i serverovou aplikaci, to je op¥t moºné v C++ i Pythonu. Asi poslední moºností je p°ímo
modi�kovat existující QGIS aplikaci.[4]
Námi vytvo°ená �stand-alone� aplikace je postavena na verzi QGIS 1.8. V sou£asné dob¥
je p°ipravována k vydání verze 2.0, která se jiº výrazn¥ li²í v mnoha funkcionalitách.
7
3 Tvorba aplikace
�Stand-alone� aplikace na tvorbu kartogram·, byla programována v jazyce C++ v pro-
gramu QtCreator 2.7.0 a kompilována pomocí Qt win 4.8.4. vs2008 za pouºití knihoven
QGIS 1.8. Aplikace byla tvo°ena pod opera£ními systémy Windows 7 a Windows Vista.
3.1 Kompilace pod MS Windows
Je zapot°ebí mít nainstalovanou star²í verzi Qt (niº²í neº verze 5, kde je Qt a Qt Creator
odd¥len). Aplikace byla tvo°ena v Qt Creator 2.7.0 zaloºeném na Qt 4.8.4 (32bit) [6].
Dále je nutné si do po£íta£e nainstalovat MS Visualstudio 2008 [9] a OSGEO4w [7], který
se musí spustit jako správce. P°i instalaci je pot°eba za²krtnout pouze balí£ky:
• qgis (Desktop)
• qgis-devel (Libs)
• qt4-devel (Libs)
• qwt5-devel-qt4 (Libs)
Poté je t°eba p°izp·sobit také Qt projekt, a to p°idáním
C:\OSGeo4W\bin;C:\OSGeo4W\apps\qgis\bin
do prom¥nné PATH. Dále bylo nutné zvolit jako kompilátor Microsoft VisualStudio a nastavit
verzi Qt p°idáním souboru qmake.exe z C:\OSGeo4W\bin. Podrobný návod viz. [5]
3.2 Na£tení knihoven QGIS
Aby bylo moºné pouºívat knihovny QGIS, musí se p°idat do souboru *.pro cesty ke knihov-
nám QGIS[5]:
QGISINCDIR=C:\OSGeo4W\apps\qgis\include
QGISLIBDIR=C:\OSGeo4W\apps\qgis\lib.
8
3.3 Vstupní a výstupní data
Vstupními daty do aplikace je polygonový soubor formátu *.shp, který musí mít minimáln¥
jeden sloupec s £íselnými hodnotami, pomocí kterého lze vytvo°it kartogram. Výstupem je pak
vytvo°ený kartogram, který je moºné exportovat a uloºit v n¥kolika formátech nap°. .bmp,
.png, .ppm,. . . .
3.4 Gra�cké rozhraní
Gra�cký návrh aplikace byl vytvo°en pomocí gra�ckého nástroje QtDesigner. Rozhraní
aplikace je tvo°eno jedním oknem (MainWindow), jehoº velkou £ást zabírá plátno (Frame).V
horní £ásti okna se nachází menu se t°emi poloºkami a dv¥ li²ty; první s ovládacími ikonami
a druhá s m¥°ítkem. V pravé £ásti okna se pak nachází ovládací panel (ScrollArea). V této sekci
se nachází °ada výb¥rových polí Combo Box, tla£ítek Push Button £i popsis· Label. Nejv¥t²í
£ást v²ak zabírá editovatelná tabulka Table Widget.
Obrázek 1: Okno aplikace
3.5 Zdrojové kódy
Hlavními stavebními kameny aplikace jsou zdrojové kódy p°evzaté z knihoven QGIS. Nej-
více jsme se inspirovali soubory qgisapp (*.cpp, *.h), které popisují funkcionalitu hlavního
okna programu QGIS. Konkrétn¥ nás zajímaly prost°edky pro na£tení vrstvy, její zobrazení
a následnou navigaci v map¥.
Nedílnou sou£ástí na²í aplikace je moºnost obarvování polygon·, která je popsána v sou-
boru qgsgraduatedsymboldialog.
9
N¥které funkce byly pro snaz²í implementaci pro nás pouze inspirací, nebo´ byly velmi
sloºité a odkazovaly na dal²í a dal²í funkce. P°íkladem je editovatelný combobox s ukazatelem
m¥°ítka nebo p°i°azení barevné stupnice.
Z nedostatku £asu a z d·vodu velkých technických problém· b¥hem celého projektu (ob-
zvlá²t¥ na po£átku), se jiº nesta£ilo p°istoupit k vytvo°ení a aplikování objektového návrhu,
který by vedl ke zp°ehledn¥ní aplikace a obsahoval logické £len¥ní na jednotlivé t°ídy. Apli-
kace se proto skládá pouze z mainwindows.h, mainwindows.cpp a mainwindows.ui. P°íklad
moºného objektového návrhu je uveden v kapitole 5.1.1.
10
4 Problematické situace
B¥hem vývoje aplikace jsme se dostali do mnoha problematických situací. Prvním a zásad-
ním problémem bylo p°eloºení zdrojového kódu pod OS Windows (viz.3.1) a na£tení knihoven
QGIS (viz.3.2), kdy tyto problémy zabraly mnohem více £asu, neº bylo ºádoucí.
Dal²í problémy nastávaly b¥hem sestavování kódu, kdy bylo nutné pro£ítat velmi dlouhé
zdrojové kódy QGIS, které mají i n¥kolik tisíc °ádk·.
4.1 Debug mód pro OS Windows
Protoºe jsou knihovny QGIS pro OS Windows zkompilovány v Release módu, nelze pou-
ºívat Debug. Aby ho bylo moºné vyuºívat, bylo by nutné v²echny pouºívané knihovny QGIS
vlastnoru£n¥ zkompilovat v Debug módu. k tomuto kroku nebylo z £asových d·vod· p°i-
stoupeno. Debug mód umoº¬uje zobrazovat vnit°ní stav programu, coº je tém¥° nezbytné
pro testování a vývoj programu. Tím pádem se vývoj programu zna£n¥ zkomplikoval. Je na
zváºení, zda by nebylo výhodn¥j²í zkompilovat knihovny p°ed za£átkem vývoje.
4.2 Zobrazování ikon
Pro zobrazování ikon je zapot°ebí vytvo°it soubor resources.grc a do n¥j umístit cestu
k obrázku. Nap°.:
<RCC>
<qresource prefix="/icon">
<file>icons/mActionAddMap.png</file>
<file>icons/mActionPan.png</file>
<file>icons/mActionZoomFullExtent.png</file>
<file>icons/mActionZoomIn.png</file>
<file>icons/mActionZoomOut.png</file>
</qresource>
</RCC>
11
4.3 Editovatelnost zlomových bod· t°íd
Poºadavek na editovatelnost zlomových bod· vycházel ze samotné podstaty úlohy. V QGISu
se zadání nových zlomových bod· °e²í n¥kolika novými okny, £emuº jsme se cht¥li pokud moºno
vyhnout. Bylo tedy nutné pozm¥nit funkci, která se stará o vykreslení barevné palety a vy-
tvo°it její variantu pro mód editovatelných zlomových bod·. Po analýze moºností, jak nejlépe
o²et°it zadávání zlomových bod·, bylo rozhodnuto, ºe editovatelná by m¥la být pouze horní
hranice intervalu a spodní hranice dal²ího intervalu se odvozovala od p°edchozí horní hranice.
Zárove¬ je ºádoucí, aby se zadané horní hranice °adily podle velikosti a nebylo moºné za-
dat hodnotu mimo rozsah dat. Tyto t°i poºadavky nejsou v QGISu v·bec o²et°eny. Uºivatel
m·ºe zadat p°ekrývající se intervaly i intervaly mimo rozsah dat. Proto bylo nutné zm¥nit
typ objektu, do kterého se t°ídy ukládají, z p·vodního list widgetu (kde byla spodní a horní
hranice odd¥lena poml£kou v jedné poloºce) na table widget, kde hodnoty spodních a horních
hranic jsou v r·zných sloupcích a tím i poloºkách, coº umoº¬uje editaci pouze horní hranice.
Po stisknutí tla£ítka Apply jsou intervaly nejd°íve se°azeny a poté vykreslen kartogram.
4.4 M¥°ítko a referen£ní systém
V sou£asné verzi aplikace nezachytává referen£ní systém na£tené vrstvy, coº vede k chyb-
nému ukázání m¥°ítka. Referen£ní systém je porovnáván se systémy v interní databázi QGIS,
na²e aplikace zatím nedokáºe k této databázi p°istoupit. Bylo zji²t¥no, ºe tuto databázi hledá
p°ímo ve sloºce programu, nikoliv ve správném umíst¥ni C:\osgeo4w\apps\qgis\plugins. D·-
sledkem toho je, ºe m¥°ítko se zobrazuje správn¥ pouze p°i na£tení vrstvy bez de�novaného
referen£ního systému. Pod Linux lze problém odstranit p°idáním de�nice prom¥nné prost°edí
QGIS_PREFIX_PATH, do projektu anebo p°ímo do main.cpp. Pod Windows se problém
zatím nepoda°ilo odstranit a to zejména z £asové tísn¥.
4.5 Pomalé na£ítání v¥t²ího mnoºství dat
Rychlost na£tení nové vrstvy je závislá na po£tu polygon·, respektive na po£tu zlomových
bod·. P°i na£ítání polygonové mapy obcí dochází k prodlev¥ n¥kolika vte°in. Pokusili jsme se
testovat délku na£ítání v na²í aplikaci a QGIS. Výsledek byl takový, ºe na£ítání rozsáhlých
polygon· v aplikaci trvá p°ibliºn¥ trojnásobnou dobu neº v QGIS. D·vod pro£ tomu tak je
12
zatím nebyl zji²t¥n. Tento problém by alespo¬ £áste£n¥ uºivateli zp°íjemnil ProgressBar, který
ukazuje aktuální postup na£ítání.
4.6 Poskytnutí spustitelné aplikace
Aby byla aplikace .exe funk£ní, je nutné mít ve stejné sloºce i v²echny knihovny, které apli-
kace pouºívá. Po£et t¥chto knihoven je pom¥rn¥ velký a není snadné zjistit, o které knihovny
se jedná, protoºe se knihovny mohou odkazovat i na dal²í. Vytvo°ení minimalistického balí£ku
(obsahujícího .exe aplikaci a minimální po£et knihoven) by bylo obtíºné a velmi £asov¥ ná-
ro£né. Proto jsme p°istoupili k alternativnímu °e²ení. Tím je umíst¥ní .exe souboru do sloºky
C:\OSGeo4W\bin, respektive do odpovídající sloºky na konkrétním po£íta£i. Nevýhoda spo-
£ívá v nutnosti instalace QGIS, coº znamená staºení a uloºení i nepot°ebných knihoven a v¥t²í
nárok na volný prostor na disku.
13
5 Zhodnocení aplikace
Aplikace slouºí k vykreslování kartogramu se zadaného shape�lu. Snaha byla vytvo°it apli-
kaci co nejjednodu²²í, aby ji dokázal ovládat i £lov¥k bez jakýchkoliv znalostí GIS. Troufáme
si tvrdit, ºe tato podmínka je spln¥na.
I kdyº je aplikace funk£ní, má stále velkou °adu nedostatk·, které se z £asových £i tech-
nických d·vod· zatím nepoda°ilo odstranit. Mnoho v¥cí téº nebylo °e²eno zcela optimálním
zp·sobem, protoºe bylo nutné zabývat se prioritn¥j²ími v¥ci, jako nap°íklad základní funkcio-
nalitou.
Vzhledem k nesnázím a £asové tísni je aplikace v rámci moºností pouºitelná, i kdyº ne
ideální.
5.1 Návrhy na zlep²ení
Jak jiº bylo °e£eno, v aplikaci je stále mnoho v¥cí, které je moºné dále upravovat a vy-
lep²ovat. Mnohé v¥ci nebyly dovedeny do optima z d·vodu velké £asové tísn¥. Moºností na
vylep²ení je mnoho, uvádíme ty nejd·leºit¥j²í.
5.1.1 Objektový návrh
Objektový návrh nebyl v prvopo£átcích projektu v·bec °e²en, protoºe byl velký problém
zhotovit v·bec jakoukoliv spustitelnou aplikaci. k pozd¥j²í úprav¥ kódu se nesta£ilo p°istoupit.
Proto má sou£asný kód jen jednu t°ídu, která je velmi nep°ehledná. Pro zp°ehledn¥ní by bylo
vhodné kód logicky roz£lenit a odd¥lit tak logickou £ást aplikace od £ásti gra�cké.
K aplikaci vhodného objektovému návrhu by bylo ale nutné zm¥nit koncepci zcela od
základu. Sou£asné metody spou²tí mnoho díl£ích funkcí a metod, které by mohly, ne-li p°ímo
m¥ly, být ve vlastní t°íd¥. Sou£asný návrh je zcela nevyhovující a nep°ehledný, ale p°epsání
prakticky celého kódu není z £asových moºností reálné.
14
Objektový návrh
Uvádíme návrh na rozd¥lení do následujících t°íd a jejich metody
• MainWindow
� funkce p°ímo spojeny p°ímo s gra�ckým oknem a jeho komponenty (tla£ítka atd.)
• MapNavigation
� zoom in, out, full
� pan mode
� m¥°ítko - ukázání a nastavení
• SaveImage
� getSaveAsImageName
� createFileFilter_
• LayerProperties
� maximum
� minimum
� pr·m¥r
� AddNumericFields()
� klasi�kace dat
• Labeling
� funkce pro tvorbu popisk·
• ColorRamp
� getColorFromRamp
� updateEntryIcon
� vytvá°ení barevných symbol·
� dal²í funkce spojené s barevnými paletami
Stávající funkci choroplethSettings() je nutné rozpustit a její obsah p°esunout do metod
t°íd ColorRamp a LayerProperties. Jde o páte°ní funkci celé aplikace, která vytvá°í barevné
symboly, klasi�kuje data a p°i°azuje jednotlivým t°ídám barvu.
15
5.1.2 Legenda
P°i tvorb¥ legendy jsme se cht¥li inspirovat °e²ením pouºitém v QGIS. Tam je legenda °e-
²ena otev°ením nového okna, které obsahuje objekt t°ídy �QgsComposition� . V na²í aplikaci
pouºíváme ale objekt t°ídy �QgsMapCanvas� , stejn¥ jako základní okno QGISu. QqsCom-
position má de�novány úpln¥ jiné metody neº Canvas, a proto není moºné ty dva QFramy
voln¥ zam¥nit. Tvorba legendy by byla moºná dv¥ma zp·soby. První zp·sob je vytvo°it nové
okno, stejn¥ jako postupuje QGIS, coº je ale pro na²í aplikaci zbyte£n¥ sloºité a neºádoucí.
Druhý zp·sob je zm¥na pouºívaného QgsMapCanvas na QgsComposition, jehoº sou£ástí by
byl QgsMapCanvas. To by byl znamenalo velké zm¥ny v kódu, které jsme nebyli schopni
uskute£nit z £asových d·vod·.
5.1.3 Barevná stupnice
Pro lep²í p°edstavu o barvách palety by bylo vhodné místo popisu ve výb¥rovém poli
zobrazit skute£nou barevnou ²kálu. Na p°ání koncového uºivatele je moºné roz²í°it výb¥r
barev o dal²í barevné palety.
5.1.4 Popis vrstvy
Popisy nejsou p°ímo sou£ástí kartogram· ani poºadavkem zadavatele, a proto jejich zob-
razení nebylo v¥nováno tolik £asu. Nyní je moºné zobrazit popis v jedné velikosti písma, který
je automaticky umíst¥n. Pro moºnost reálného vyuºití a správné zobrazování podle kartogra-
�ckých zásad by bylo nutné vytvo°it dal²í dialogové okno, kde by uºivatel de�noval velikost,
styl, barvu, oto£ení £i umíst¥ní v·£i plo²e, ke které je popis vztaºen.
5.1.5 Prohlíºení vrstev
V aktuální verzi není moºné na£íst shape�le, který neobsahuje v atributové tabulce alespo¬
jeden sloupec s £íselnými hodnotami. Zárove¬ není moºné otev°ít soubor, který neobsahuje
polygony, ale jiné geometrické objekty (linie £i body). Otázkou je, zda je ºádoucí tyto typy
soubor· alespo¬ zobrazit. Prohlíºení jakýchkoliv vrstev formátu *.shp (i nepolygonových nebo
bez numerického sloupce) bez moºnosti vytvo°ení kartogramu je moºné poskytnout na p°ání
koncového uºivatele.
16
5.1.6 Lokalizace aplikace
Aplikace je vytvo°ena v anglickém jazyce, ale bylo by vhodné, aby £e²tí uºivatelé m¥li
k dispozici £eskou verzi. k tomu je nutné vytvo°it seznam výraz·, které je nutné p°eloºit,
vytvo°it p°eklad a implementovat lokalizaci. Z £asových d·vod· bylo rozhodnuto, ºe lokalizace
aplikace není nezbytn¥ nutná.
5.1.7 Úpravy layoutu
P°i zmen²ení aplikace by bylo vhodné, aby se vpravo zobrazil rolovací panel. Pokud je okno
zmen²eno, není moºnost se dostat k nezobrazeným poloºkám. P°i zv¥t²ení aplikace by naopak
bylo ºádoucí, aby se tabulka t°íd Table Widget roztáhla do maximální moºné vý²ky.
17
6 Záv¥r
Výsledkem na²í práce je voln¥ spustitelná aplikace pro tvorbu kartogram· na základ¥
polygonového souboru Shape�le.
Celá aplikace byla psána v jazyce C++ s vyuºitím knihoven QGIS. Protoºe jsme nem¥li
prakticky ºádné p°edchozí zku²enosti s knihovnami QGIS, trvalo procházení kódu a jeho po-
chopení vºdy velmi dlouhou dobu.
V pr·b¥hu tvorby aplikace jsme narazili na mnohé nesnáze, z nichº mnohé se poda°ilo
více £i mén¥ vy°e²it, jiné, p°eváºn¥ z £asových d·vod·, stále z·stávají. Nejv¥t²í problém byl
v prvopo£átcích aplikace, kdy trvalo velmi dlouho neº se v·bec poda°ilo spustit jakoukoliv
aplikaci. �as, který byl investován do zprovozn¥ní první aplikace, se nám v záv¥ru nedostával,
a nebylo tak moºné doladit v²echny pot°ebné funkcionality. Na²im cílem bylo v zadaném
termínu mít v rámci moºností funk£ní aplikaci, £ehoº bylo dosaºeno a zadavatel projektu je
s prozatímní aplikací spokojen. Dal²í vylep²ování a optimalizace aplikace je pak uº jen otázkou
£asu. Postupy nutné ke zdokonalení aplikace jsou nám známy a zbývá jen jejich aplikace.
Velké nesnáze nám zp·sobilo rozhodnutí programovat aplikaci pod OS MS Windows, coº
zp·sobilo °adu problém·, kterým bylo moºné se vyhnout a s kterými jsme se potýkali od
za£átku do konce. Nejv¥t²í problém, který z toho vyplýval, byla nemoºnost vyuºívání debug
modu viz kapitola 4.1.
B¥hem práce jsme se blíºe seznámili s knihovnami QGIS, jazykem C++ a prost°edím Qt
Creator. Práce nás obohatila o °adu uºite£ných zku²eností.
18
Literatura
[1] �ERBA, O. Kartogramy: P°edná²ka z p°edm¥tu Tematická kartogra�e (KMA/TKA). [on-
line]. [cit. 2013-05-13]. Dostupné z WWW: http://gis.zcu.cz/studium/tka/Slides/
kartogramy.pdf
[2] FFUK Praha. Ústav pro archeologii [online]. [cit. 2013-05-14]. Dostupné z WWW: http:
//uprav.ff.cuni.cz/
[3] Kartogramy. In: Wikipedia: otev°ená encyklopedie. [online]. [cit. 2013-05-13]. Dostupné
z WWW: http://cs.wikipedia.org/wiki/Kartogram
[4] PETRÁ�, V.; KRATOCHVÍLOVÁ, A. Zásuvný model QGISu pro práci s katastrálními
daty: Dokumentace [online]. [cit. 2013-05-14]. Dostupné z WWW: http://geo.fsv.cvut.
cz/gdata/2012/pin2/b/dokumentace/dokumentace_2012_b.pdf
[5] QGIS / Tvorba vlastní C++ aplikace pomocí QGIS knihoven [online]. Poslední re-
vize 27.3.2013 [cit. 2013-05-14]. Dostupné z WWW: http://geo.fsv.cvut.cz/freegis/
QGIS_/_Tvorba_vlastn%C3%AD_C%2B%2B_aplikace_pomoc%C3%AD_QGIS_knihoven
[6] Qt win opensource 4.8.4. Library download [online]. [cit. 2013-03-08]. Dostupné
z WWW: http://releases.qt-project.org/qt4/source/qt-win-opensource-.8.
4-vs2010.exe
[7] Qt win opensource4.8.4:OSGeo4W. Download. [online]. [cit. 2013-03-08]. Dostupné
z WWW: http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe
[8] Quantum GIS APU documentation 1.8. [online]. [cit. 2013-03-08]. Dostupné z WWW:
qgis.org/api/1.8
[9] Visual Studio. Download. [online]. [cit. 2013-03-08]. Dostupné z WWW: http://www.
microsoft.com/visualstudio/cze/downloads#d-2010express
Pod¥kování
D¥kujeme za mnohé uºite£né rady a konzultace Ing. Martinu Landovi.
19