Na začátku bych chtěl poděkovat vedoucímu bakalářské práce Prof. Ing. Aleši Čepkovi, CSc za výuku předmětů Informatika 1,2,3, Projekt - Informatika a



Podobné dokumenty
ArcGIS Server 10.1/10.2

ELEKTRONICKÉ PODÁNÍ OBČANA

ArcGIS Online Subscription

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Možnosti využití dat RÚIAN poskytovaných VDP pomocí webových služeb

GeoHosting. Martin Vlk. (vypusťte svoje data do světa) Help forest s.r.o. člen skupiny WirelessInfo 2008

Publikování map na webu - WMS

Vývoj aplikací v Qt pro mobilní zařízení

KIV/PIA 2012 Ing. Jan Tichava

25. listopadu 2014, Brno Připravil: David Procházka. Qt a QML. Programovací jazyk C++

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Otevřený katastr (OK)

Platforma ArcGIS. Platforma ArcGIS se skládá ze čtyř komponent: dat, zdrojů, portálu a aplikací.

Multiplatformní GUI toolkity

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Seznámení s prostředím dot.net Framework

První kapitola úvod do problematiky

Uživatelská příručka pro práci s Portálem VZP. Test kompatibility nastavení prohlížeče

Testovací protokol. webový generátor PostSignum. sada PIIX3; 1 GB RAM; harddisk 20 GB IDE OS: Windows Vista Service Pack 2 SW: Internet Explorer 9

CZ.1.07/1.5.00/

Mapa Česka:

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

KMI / TMA Tvorba mobilních aplikací

Uživatelská dokumentace

MATURITNÍ PRÁCE dokumentace

Jihočeská univerzita v Českých Budějovicích. Název bakalářské práce v ČJ Název bakalářské práce v AJ

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Tvorba internetových aplikací s využitím framework jquery

Novinky ve Visual Studio Tomáš Kroupa

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

Úvod 13 O čem je tato kniha? Pro koho je tato kniha? Jak studovat tuto knihu? Poděkování 16 Zpětná vazba od čtenářů Zdrojové kódy ke knize Errata 17

Úvod do programovacího jazyka Python

Strategie ochrany před negativními dopady povodní a erozními jevy přírodě blízkými opatřeními v České republice

Jakub Šesták. ESEJ DO PŘEDMĚTU DIGITÁLNÍ KNIHOVNY

E-learningovýsystém Moodle

Základní popis Toolboxu MPSV nástroje

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Domino 10 nové komponenty a související témata (node.js, ES )

Přehled technologií mapových serverů ve státní správě

Nastavení provozního prostředí webového prohlížeče pro aplikaci

ABRA Software a.s. ABRA on- line

NÁVOD K POUŽITÍ. IP kamerový systém.

Hardware Různé počítačové platformy (personální počítače, pracovní stanice, víceuživatelské systémy) Požadavek na konkrétní vstupní a výstupní zařízen

Přístup k poště MS Office 365 mají pouze studenti 1. a 2. ročníku EkF prezenčního studia. Přístup k ostatním službám mají všichni studenti.

Využití aplikace SketchUp pro tvorbu jednoduchého informačního systému

D2 - GUI design. Radek Mečiar

internetu v rámci výuky

Redakční systém Joomla. Prokop Zelený

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Předpoklady správného fungování formulářů

Úvod. Klíčové vlastnosti. Jednoduchá obsluha

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Nové vývojové nástroje i5/os Rational Developer for System i V7.1

Možnosti tisku v MarushkaDesignu

První kroky s METEL IEC IDE

Vytvoření bootovatelného média

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

NAS 208 WebDAV bezpečné sdílení souborů

Instalace pluginů pro formuláře na eportálu ČSSZ

Střední odborná škola a Střední odborné učiliště, Hořovice

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

modrana: flexibilní navigační systém Martin Kolman

1.2 Operační systémy, aplikace

NÁVOD K POUŽITÍ. IP kamerový systém.

Reliance 3 design OBSAH

Po prvním spuštění Chrome Vás prohlížeč vyzve, aby jste zadali své přihlašovací údaje do účtu Google. Proč to udělat? Máte několik výhod:

IntraVUE Co je nového

Zdroje mapových podkladů

C2184 Úvod do programování v Pythonu podzim Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita. Úvod.

Lubomír Dobrovolský, DOB113

ArcGIS for Server. V oblasti správy, vizualizace a zpracování prostorových dat nabízí ArcGIS for Server tyto možnosti:

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

Programátorská příručka

Programovací jazyky Přehled a vývoj

Rozklad na prvočinitele. 3. prosince 2010

Easycars Aplikace pro správu autobazaru

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

FOSS4G úspěšné projekty

ArcGIS Server 10. Řešení pro sdílení geodat

ZEMĚMĚŘICKÝ ÚŘAD. Poskytování dat a služeb Geoportál ČÚZK. Petr Dvořáček

Úvod do programovacího jazyka Python

Georeferencované mapové podklady z WMS služeb


CS OTE. Dokumentace pro externí uživatele

ČASOPROSTOROVÁ DATA NA WEB ZA 15 MINUT. Jan RŮŽIČKA

Instrukce pro vzdálené připojení do učebny 39d

Wonderware Information Server 4.0 Co je nového

Transkript:

Na začátku bych chtěl poděkovat vedoucímu bakalářské práce Prof. Ing. Aleši Čepkovi, CSc za výuku předmětů Informatika 1,2,3, Projekt - Informatika a za vedení mé bakalářské práce. Dále bych chtěl poděkovat Ing. Arnoštovi Müllerovi a Ing. Vladimírovi Holubcovi za poskytnuté konzultace ohledně ArcGIS.

České vysoké učení technické v Praze Fakulta stavební katedra geomatiky BAKALÁŘSKÁ PRÁCE Testování ArcGIS Runtime SDK pro Qt Testing ArcGIS Runtime SDK for Qt Autor: Petr Bezděka Vedoucí práce: Prof. Ing. Aleš Čepek, CSc. Praha, 2015

Název práce: Testování ArcGIS Runtime SDK pro QT Autor: Petr Bezděka Katedra: Katedra geomatiky Vedoucí bakalářské práce: Prof. Ing. Aleš Čepek, CSc. e-mail vedoucího: cepek@fsv.cvut.cz Abstrakt Cílem této bakalářské práce je praktické ověření možností využití ArcGIS Runtime SDK pro Qt v prostředí MS Windows a Linux. Tato bakalářská práce obsahuje krátké seznámení s Qt, zmíněny jsou také další knihovny vyvíjené společností ESRI v rámci projektu ArcGIS for Developers. Testování knihovny pro Qt je zacíleno na její instalaci a probíhá pod základní licencí Devoleper. V rámci testování jsou rozebrány různé způsoby načítání mapových podkladů do vyvíjených aplikací. Možnosti knihovny ArcGIS Runtime SDK pro Qt jsou demonstrovány na vybraných ukázkových příkladech napsaných v deklarativním vysokoúrovňovém skriptovacím jazyku QML. Klíčová slova: ArcGIS for Developers, ArcGIS Runtime SDK pro Qt, Qt Creator, QML Title: Testing ArcGIS Runtime SDK for QT Author: Petr Bezděka Department: Department of Geomatics Supervisor: Prof. Ing. Aleš Čepek, CSc. Supervisor s e-mail address: cepek@fsv.cvut.cz Abstract Goal of work is practical verification of using possibilities ArcGIS Runtime SDK for Qt in MS Windows and Linux. It contains short familiarization with Qt, there are included others libraries produced by ESRI within ArcGIS Developers project. Testing library for Qt is focused around instalation and it works with license Developer. There are explained several way of loading maps for apps. Possibilities are demonstrated on selected examples coded in QML. Keywords: ArcGIS for Developers, ArcGIS Runtime SDK for Qt, Qt Creator, QML II

Prohlašuji, že jsem svou bakalářskou práci napsal samostatně a výhradně s použitím citovaných pramenů. Souhlasím se zapůjčováním práce a jejím zveřejňováním. V Praze dne 15. května 2015 Petr Bezděka V

OBSAH Abstrakt Zadání práce II III 1 Úvod 1 2 Vývojové prostředí 3 2.1 Qt............................................. 3 2.1.1 Qt Quick a QML................................ 4 3 ESRI a ArcGIS 7 3.1 ArcGIS for Developers.................................. 7 3.1.1 ArcGIS Web Api................................ 7 3.1.2 ArcGIS Runtime SDK.............................. 8 3.1.3 Licence...................................... 8 4 Zprovoznění ArcGIS Runtime SDK pro Qt 9 4.1 Linux........................................... 9 4.1.1 Instalace Qt................................... 9 4.1.2 Instalace ArcGIS Runtime SDK pro Qt.................... 9 4.1.3 Sestavení testovací aplikace.......................... 9 4.2 Windows......................................... 11 4.2.1 Instalace Microsoft Visual Studio....................... 11 4.2.2 Instalace Microsoft WinDbg.......................... 11 4.2.3 Instalace Qt................................... 11 4.2.4 Instalace ArcGIS Runtime SDK pro Qt.................... 12 4.2.5 Sestavení testovací aplikace.......................... 12 4.2.6 Příprava Windows pro vývoj aplikací v Qt na Android.......... 12 5 Mapové podklady 15 5.1 Podklady uložené v lokálním zařízení......................... 15 5.1.1 Local Tiled Layer (*.tpk)............................ 15 5.1.2 Local Dynamic Layer (*.mpk)......................... 17 5.1.3 Zobrazování mapového podkladu na koncovém zařízení......... 17 5.2 Podklady stahované z ArcGIS Online......................... 20 5.3 Podklady připojené přes službu WMS......................... 20 6 Ukázkové aplikace 21 6.1 Aplikace s kešovaným mapovým podkladem.................... 22 VII

OBSAH 6.2 Prohlížeč kešovaných mapových podkladů...................... 24 6.3 Kešované a dynamické mapové podklady v jedné aplikaci............. 26 6.4 Přidání grafických prvků do mapy........................... 27 6.5 Aplikace s připojeným WMS serverem........................ 31 7 Závěr 37 8 Literatura 39 9 Seznam obrázků 41 VIII

KAPITOLA PRVNÍ ÚVOD Na podzim roku 2014 byl na webovém portálu Root.cz zveřejněn článek o Qt DeveloperDays 2014, ve kterém jsem se poprvé dočetl o existenci knihovny ArcGIS Runtime SDK pro Qt.[1] Pomocí této knihovny lze v Qt vytvářet mapové aplikace, a to včetně editace, geokódování, vyhledávání tras a vizualizace dat. Toto téma mě velice zaujalo a po nabídce pana profesora Čepka zabývat se testováním této knihovny v rámci mé bakalářské práce jsem neváhal a začal se tomuto tématu věnovat. Cílem této práce je tedy otestovat funkčnost a možnosti ArcGIS Runtime SDK pro Qt. Testování bude probíhat pod operačním systémem Linux a MS Windows. Součástí této práce je také pokus o přípravu Qt pro vývoj aplikace pro mobilní zařízení se systémem Android. Během testování proběhne všeobecné základní seznámení s ArcGIS Runtime SDK, jejich různými typy a jednotlivými licencemi. Zaměřeno bude také na podporované možnosti připojení různých mapových podkladů. Knihovna ArcGIS Runtime SDK pro Qt obsahuje C++ API a QML API. Obě dvě rozhraní nabízejí vypracované ukázkové aplikace. V rámci této práce proběhne testování vybraných ukázkových aplikací. Veškeré podklady pro tuto knihovnu jsou zveřejněny na oficiálních internetových stránkách. [2] Obrázek 1.1: Internetové stránky ArcGIS Developers for Qt 1

KAPITOLA DRUHÁ VÝVOJOVÉ PROSTŘEDÍ Aktuálně existují různá vývojová prostředí pro tvorbu aplikací. Například Microsoft Visual Studio, NetBeans, Adobe Air a další. Jedná se vlastně o sady nástrojů, které pomáhají vývojářům ladit programy, vyhledávat chyby a udržovat přehlednost kódu. Většina vývojových prostředí je zaměřena pro konkrétní platformu nebo konkrétní programovací jazyk. Existují však i výjimky. V rámci této bakalářské práce budeme pracovat právě s jednou z nich, knihovnu od společnosti ESRI budeme testovat v multiplatformním vývojovém prostředí Qt. 2.1 Qt Jak již bylo výše uvedeno, Qt je integrované vývojové prostředí (IDE = Integrated Development Environment). V dnešní době se jedná o výborný nástroj pro tvorbu multiplatformních programů. Pomocí Qt můžeme tedy vyvíjet aplikace nezávisle na platformě (Linux, Windows, OS X, ios, Android...). Významnou součástí Qt jsou nástroje Qt Designer, pomocí něhož lze intuitivně vytvářet grafické rozhraní, a Qt Assistant, který obsahuje rozsáhlou dokumentaci. Qt Creator obsahuje propracovaný editor pro programovací jazyk C++. Nemůžeme ovšem říci, že Qt je jen knihovna pro tento programovací jazyk, existuje například i pro C, Javu, Python, Ruby a další. Silným nástrojem je Qt Quick, který pomocí speciálního skriptovacího jazyka QML (QML = Qt Meta Language) umožňuje vývojářům a návrhářům tvořit vizuálně zajímavé aplikace především pro mobilní platformy, a to bez použití C++. Vývoj aplikací může probíhat pod licencí LGPL, existují ale také licence pro komerční účely, které jsou rozšířeny o další nástroje (např. Qt Charts pro vytváření grafů atd.). Qt vyvíjela společnost Trolltech již od roku 1999. V roce 2008 ho koupila firma Nokia, která v Qt soustředila mobilní vývoj pro Symbian a MeeGo Harmattan. Poté, co Nokie začala spolupracovat s Microsoftem a do svých nových smartphonů začala uvádět operační systém Windows Phone, se pomalu začal z Qt stávat open source projekt. V roce 2011 práva na provoz podpůrných služeb a prodej licencí pro komerční účely zakoupila od Nokie společnost Digia. Digia ze své Qt divize založila samostatnou společnost The Qt Company, a právě tato společnost koncem roku 2014 představila zatím 3

Vývojové prostředí poslední verzi Qt 5.4, která mimo jiné obsahuje vylepšené nástroje pro vývoj aplikací na moderních mobilních platformách. Pro Android se příchodem nové verze například zrychlil start aplikací a zmenšily se instalační balíčky. Vylepšeny byly QtQuick Controls (modul obsahující sadu ovládacích prvků), které mají oproti předchozí verzi pro běžného uživatele přirozenější vzhled. Právě díky těmto změnám začínají Qt používat čím dál více i mobilní vývojáři pro ios a Android. Do budoucna ale společnost údajně také spoléhá na zabudovanou elektroniku v automobilovém průmyslu, ve kterém se předpokládá rychlý vývoj podobný vývoji trhu s chytrými telefony. I když je Qt projekt stále ztrátovou záležitostí, jedná se o nejpoužívanější crossplatformu pro vývoj aplikací. Tento fakt potvrzuje i krok společnosti ESRI, která pro Qt v roce 2014 představila ArcGIS Runtime SDK. [1] 2.1.1 Qt Quick a QML V předchozí kapitole bylo naznačeno, že se v Qt dají aplikace vytvářet i bez větších znalostí C++, který je u klasického Qt brán jako primární programovací jazyk. Pokud v aplikaci vývojář nebude potřebovat sofistikovanější funkce, jako například načítání textových souborů, nemusí při vývoji aplikace C++ vědomě použít. Jelikož ArcGIS Runtime SDK pro Qt podporuje tvorbu programů i v QtQuick, musíme se u tohoto modulu, a potažmo QML, zastavit. QML je deklarativní vysokoúrovňový skriptovací jazyk, který usnadňuje programátorům tvorbu graficky efektivních aplikací. Používá se jak k popisu vzhledu samotné aplikace, tak i jejího chování. Struktura kódu může některým připomínat HTML v kombinaci s CSS. Velkou výhodou je fakt, že kód psaný v QML je na první pohled čitelný a to dokonce i ve složitějších projektech. Programátor dostává možnost vytvářet interaktivní aplikace s podporou různých animací, skriptování a renderování obsahu. Qt Quick byl vyvinut především pro mobilní platformy a jeho velkou výhodou v dnešní době je právě kompatibilita s ios a Androidem. Logiku jazyka QML si ukážeme na následujícím kódu: import QtQuick 1.0 Rectangle { width: 300 height: 300 color: "black" Text { id: texthello anchors { verticalcenter: parent.verticalcenter; left: parent.left; leftmargin: 50 text: "Hello World!"; color: "white"; opacity: 0.0 4

Qt font.pixelsize: parent.height / 8 Component.onCompleted: { texthello.opacity = 1.0 Na třetím řádku je použit základní vizuální element Rectangle. Dědičnost objektů je zde deklarována složenými závorkami. Na první pohled je tedy zjevné, že objekt Text je potomkem objektu Rectangle. U nastavování parametrů u objektu Text je na šestnácté řádce vidět, že velikost textu je závislá na výšce rodičovského prvku Rectangle. V ukázkovém skriptu stojí ještě za zmínku identifikátor id na řádce devět, pomocí něhož se můžeme na prvek odkazovat. 5

KAPITOLA TŘETÍ ESRI A ARCGIS ESRI je společnost zabývající se vývojem softwaru pro práci s geografickými informačními systémy. Vlajkovou lodí této společnosti je systém ArcGIS, který obsahuje tři základní aplikace (ArcMap, ArcCatalog, ArcToolbox). Systém je určen pro tvorbu mapových podkladů a obsahuje nástroje pro hloubkové analýzy. 3.1 ArcGIS for Developers V rámci projektu ArcGIS for Developers společnost ESRI publikuje pro různá rozhraní knihovny, které obsahují nástroje programu ArcGIS. Tyto knihovny můžeme rozdělit na Web API (nástroje pro vývoj webových aplikací) a Runtime SDK (nástroje zaměřené na vývoj aplikací pro určité platformy a zařízení). [3] Web API JavaScript - knihovna objektově orientovaného programovacího jazyka Web AppBuilder - framework pro tvorbu vlastních widgetů a motivů Esri Leaflet Runtime SDK Android - vývoj pro Android ios - vývoj pro Apple iphone, ipod touch a ipad Java - vývoj pro Windows a Linux pomocí jazyka Java Mac OS X - vývoj pro MAC.Net - vývoj pro Windows a Windows Phone Qt - vývoj pro Windows, Linux, Android a ios 3.1.1 ArcGIS Web Api Pro vývojáře webových aplikací ESRI nabízí rozsáhlou knihovnu napsanou v programovacím jazyku JavaScript, která v současné době podporuje HTML 5 a CSS 3. Pro 7

ESRI a ArcGIS webové aplikace existují v rámci projektu Web AppBuilder předpřipravené widgety, které můžeme jednoduše do aplikací připojovat. Vývoj těchto nástrojů je zacílen na webové prohlížeče: Chrome Firefox Safari 3+ Internet Explorer 8+ Používání ArcGIS Web Api je podmíněno založením účtu pro komerční účely na ArcGIS Online, které je zpoplatněno. 3.1.2 ArcGIS Runtime SDK ArcGIS Runtime SDK jsou od základu postaveny přímo na programovacím jazyku C++. Knihovny jsou přizpůsobeny pro mobilní, desktopové a vestavěné systémy (embedded system). Tyto knihovny umožňují nejen zobrazovat jednoduché mapy, pomocí nichž lze dokonce provádět i pokročilé analýzy v rámci řešení konkrétních GIS úloh. Aplikace mohou být připojeny na ArcGIS Online nebo mohou fungovat v offline režimu. V aplikacích můžeme vytvořit graficky propracované mapové podklady, které jsou postaveny na reálných geodeticky zaměřených datech. 3.1.3 Licence Knihovny ArcGIS Runtime SDK jsou poskytovány pod třemi druhy licencí: Developer License - licence určená k vývoji a testování aplikací, v mapách musí být zobrazen vodotisk loga společnosti ESRI Basic License - po registraci aplikace na internetové stránce věnované "ArcGIS for Developers"a použití vygenerovaného "Client ID"můžeme využívat téměř všechny funkcionality knihovny. Omezení této licence spočívá pouze v offline režimu, při kterém licence nepodporuje určité funkce knihovny - viz. tabulka. Standard License - licence umožňuje po přihlášení na ArcGIS Online odemknout podporu všech funkcí včetně plné podpory offline režimu. Funkce v offline režimu Developer Basic Standard Zobrazování mapy + + + Geokódování + + Vyhledávání tras + + Editace a synchronizace + + V průběhu testování knihovny ArcGIS Runtime SDK bylo zjištěno, že licence Developer (určená pro vývoj a testování aplikací) nepodporuje připojení mapových podkladů ve formátu *.mpk. Tato problematika je více popsána v kapitole týkající se konkrétně tomuto formátu. 8

KAPITOLA ČTVRTÁ ZPROVOZNĚNÍ ARCGIS RUNTIME SDK PRO QT V této kapitole si krok po kroku projdeme samotnou instalaci ArcGIS Runtime SDK pro Qt, a to jednotlivě pro platformy Linux a Windows. Na závěr se ještě pokusíme na obou dvou platformách připravit prostředí Qt pro tvorbu a testování aplikací pro Android. 4.1 Linux Instalace proběhla na Ubuntu 14.04 "Trusty Tahr". Testováno bylo v prostředí Qt 5.4.1. Testována byla verze ArcGIS Runtime SDK pro Qt 10.2.3. 4.1.1 Instalace Qt Po stažení instalačního souboru z oficiálních stránek Qt (LGPL licence) instalace proběhla standardním způsobem. [4] 4.1.2 Instalace ArcGIS Runtime SDK pro Qt Pro stažení knihovny je nutná registrace na stránkách developers.arcgis.com. Poté si můžeme knihovnu ArcGIS Runtime SDK pro Qt stáhnout. Knihovnu nainstalujeme např. do implicitního umístění /arcgis. Při samotné instalaci se nevyskystly žádné komplikace. [2] 4.1.3 Sestavení testovací aplikace V Qt si vytvoříme nový projekt z předpřipravené šablony "ArcGIS Runtime SDK 10.2.3. for Qt application". Při sestavování testovací aplikace nás Qt upozorní na první chybu: Map.h: No such file or directory Tento problém vyřešíme v souboru *.pro dopsáním "includepath": INCLUDEPATH += $$PWD/../../arcgis/runtime_sdk/qt10.2.3/sdk/include/ 9

Zprovoznění ArcGIS Runtime SDK pro Qt Poté při sestavování narazíme na další problém, a to chybějící knihovny Runtime. Do projektu tyto externí knihovny připojíme v souboru *.pro kliknutím na pravé tlačíko myši a poté "Add Library". Do souboru *.pro se vypíše následující kód: unix:!macx: LIBS += -L$$PWD/../../arcgis/runtime_sdk/qt10.2.3/ /ArcGISRuntime10.2.3/Client64/ -lesriruntimeqt INCLUDEPATH += $$PWD/../../arcgis/runtime_sdk/qt10.2.3/ /ArcGISRuntime10.2.3/Client64 DEPENDPATH += $$PWD/../../arcgis/runtime_sdk/qt10.2.3/ /ArcGISRuntime10.2.3/Client64 unix:!macx: LIBS += -L$$PWD/../../arcgis/runtime_sdk/qt10.2.3/ /ArcGISRuntime10.2.3/Client64/ -lc++ INCLUDEPATH += $$PWD/../../arcgis/runtime_sdk/qt10.2.3/ /ArcGISRuntime10.2.3/Client64 DEPENDPATH += $$PWD/../../arcgis/runtime_sdk/qt10.2.3/ /ArcGISRuntime10.2.3/Client64 Pro správnou funkčnost musíme ale před tímto krokem manuálně vyrobit symbolický odkaz pomocí příkazu: ln -s libc++.so.1 libc++.so Po vyřešení těchto překážek Qt nevrací žádnou jinou chybovou hlášku. Aplikace se v pořádku sestaví a spustí pod licencí Developer. V případě potřeby vývoje aplikací pod jinými licencemi můžeme Client ID vyplnit v souboru main.cpp příkazem: EsriRuntimeQt::ArcGISRuntime::setClientId("id"); Obrázek 4.1: Neznámý hlavičkový soubor Map.h 10

Windows 4.2 Windows Instalace byla provedena na operačním systému MS Windows 8.1. Testováno bylo v prostředí Qt 5.4.1. Testována byla verze ArcGIS Runtime SDK pro Qt 10.2.5. 4.2.1 Instalace Microsoft Visual Studio Nejdříve si musíme stáhnout a nainstalovat Mircosoft Visual Studio, jelikož pro sestavení ArcGIS Runtime SDK pro Qt je používán jeho kompilátor. Pokud máte na svém počítači nainstalovanou starší verzi Visual Studia, ESRI doporučuje před instalací nové verze původní verzi odinstalovat. [5] Obrázek 4.2: Stažení a instalace Microsoft Visual Studio 4.2.2 Instalace Microsoft WinDbg Poté musíme stáhnout a nainstalovat ladící nástroj Microsoft WinDbg, který používá Qt Creator společně s Visual Studiem. Postačí nám stáhnout samostatný WinDbg, a to samozřejmě ve verzi, která je určená pro náš operační systém. [6] 4.2.3 Instalace Qt Dalším krokem je stáhnutí a následná instalace samotného Qt. K účelům sestavení a testování ArcGIS Runtime SDK pro Qt nám postačí LGPL licence. [4] 11

Zprovoznění ArcGIS Runtime SDK pro Qt Obrázek 4.3: Stažení WinDbg 4.2.4 Instalace ArcGIS Runtime SDK pro Qt Po registraci a následném přihlášení na stránkách developers.arcgis.com si můžeme knihovnu ArcGIS Runtime SDK pro Qt stáhnout. Instalace probíhá standardním způsobem. Pro lepší orientaci v celé knihovně je doporučeno nainstalovat i ukázkové příklady jak pro QML, tak pro C++. [2] 4.2.5 Sestavení testovací aplikace Po nainstalování všech potřebných nástrojů se nám při zakládání nového projektu v Qt (Ctrl+N) zobrazí mezi předpřipravenými projekty položka "ArcGIS"se šablonami: ArcGIS Runtime 10.2.5 Qt Quick Application ArcGIS Runtime 10.2.5 Qt Widgets Application Pokud chceme aplikaci vyvíjet v QML, volíme Qt Quick Application. Pokud máme v plánu aplikaci tvořit v C++, volíme Qt Widgets Application. Pro sestavení aplikace zaškrtneme v dalším kroku pouze kit Qt 5.4.1 MSVC2013 64 bit, který obsahuje kompilátor Microsoft Visual C++ 12.0. U zakládání nové aplikace přes Qt Quick Application po nás Qt ještě požaduje parametry dané aplikace. Pro testování postačí vyplnit název a popis. Pro komerční účely bychom museli vyplnit i Client ID. Při zakládání Qt Widgets Application se Client ID vyplňuje ručně přímo do souboru main.cpp příkazem: EsriRuntimeQt::ArcGISRuntime::setClientId("id"); 4.2.6 Příprava Windows pro vývoj aplikací v Qt na Android Příprava Qt pro vývoj aplikací pro operační systém Android byla testována pod operačním systémem Microsft Windows. Nejdříve byly staženy a postupně nainstalovány 12

Windows balíčky The Android SDK Tools, The Android NDK, Apache Ant a Java SE Development Kit (JDK). V operačním systému Windows byly nastaveny v ovládacích panelech uživatelské proměnné JAVA HOME a ANDROID NDK ROOT. [2] Ovládací panely > Systém > > Upřesnit nastavení systému > Proměnné prostředí Obrázek 4.4: Nastavení proměnného prostředí pro Windows Poté byl stažen Google USB Drive, zip byl dekomprimován a pomocí příkazu byla zkontrolována jeho funkčnost: cd Android\adt-bundle-windows-x86_64-<version>\sdk\platform-tools adb.exe V Qt byly nastaveny cesty k nástrojům The Android SDK Tools, The Android NDK, Apache Ant a Java SE Development Kit (JDK): Tools > Options > Android Kvůli neznámé chybě se nepodařilo nastavit Android Kit. V rámci této bakalářské práce tedy bohužel neproběhlo testování ukázkových kódů knihovny ArcGIS Runtime SDK pro mobilní aplikace s operačním systémem Android. 13

KAPITOLA PÁTÁ MAPOVÉ PODKLADY Prostřednictvím knihovny ArcGIS Runtime SDK můžeme v Qt vytvářet mapové aplikace. V návaznosti na budoucí používání aplikace si musíme vybrat jeden ze způsobů, jak mapové podklady budeme do aplikace nahrávat, respektive odkud bude aplikace mapové podklady čerpat. Jednotlivé způsoby načítání mapových podkladů můžeme rozdělit do dvou hlavních kategorií: Mapové podklady jsou uloženy v lokálním zařízení Mapové podklady stahujeme ze služby ArcGIS Online 5.1 Podklady uložené v lokálním zařízení Výhoda této metody je nesporná. Mapové podklady se do aplikace nahrají vždy, a to nezávisle na tom, zda je zařízení, na kterém aplikace běží, připojeno k internetu. Jelikož jsou data fyzicka uložena v zařízení, jsme omezeni velikostí podkladových map. Tato nevýhoda je výrazná především pro aplikace určené pro mobilní zařízení. V neposlední řadě nesmíme zapomenout na omezení licence Basic (kapitola 3.1.3.). Pokud tedy chceme využívat všechny nástroje knihovny ArcGIS Runtime SDK v offline režimu, musíme aplikace vydávat pod licencí Standard. Pokud se tedy rozhodneme podkladové mapy ukládádat přímo do lokálního zařízení, máme k dispozici dva formáty, které můžeme použít: Local Tiled Layer (*.tpk) Local Dynamic Layer (*.mpk) 5.1.1 Local Tiled Layer (*.tpk) V Local Tiled Layer je mapový podklad kešovaný. To znamená, že se mapa skládá z jednotlivých čtverců, které jsou generovány pro jednotlivá měřítka. Tento způsob nahrávání mapových podkladů je rychlejší než Local Dynamic Layer, jelikož aplikace načítá konkrétní předpřipravené čtverce pro určitá měřítka a jednotlivě nevykresluje všechny prvky výřezu mapy. 15

Mapové podklady Ukázka připojení formátu *.tpk v QML ArcGISLocalTiledLayer { path: ArcGISRuntime.installDirectory + "/sdk/samples/data/tpks/topographic.tpk" Z ukázky vyplývá, že připojení v QML probíhá přes třídu ArcGISLocalTiledLayer. Ukázka připojení formátu *.tpk v C++ HLAVIČKOVÝ SOUBOR: ------------------... namespace EsriRuntimeQt {... class Map; class ArcGISLocalTiledLayer;... #include <QMainWindow> class Testovaci_aplikace : public QMainWindow { Q_OBJECT public: Testovaci_aplikace (QWidget *parent = 0); ~Testovaci_aplikace (); private:... EsriRuntimeQt::Map* m_map; EsriRuntimeQt::MapGraphicsView* m_mapgraphicsview; EsriRuntimeQt::ArcGISLocalTiledLayer* m_tiledlayer;... ;... CPP SOUBOR: ----------- QString tiledbasemaplayer = pathsampledata + "tpks" + QDir::separator() + "Topographic.tpk"; m_tiledlayer = new EsriRuntimeQt::ArcGISLocalTiledLayer(tiledBaseMapLayer, this); m_map->addlayer(m_tiledlayer); 16

Podklady uložené v lokálním zařízení Jak je v příkladu pro C++ demonstrováno, pro připojení mapových podkladů ve formátu *.tpk musíme v hlavičkovém souboru definovat třídy EsriRuntimeQt::Map a Esri- RuntimeQt::ArcGISLocalTiledLayer. 5.1.2 Local Dynamic Layer (*.mpk) Jak z popisu Local Tiled Layer vyplývá, při použití metody Local Dynamic Layer se vykreslují veškeré prvky v aktuálním výřezu mapy, což ve srovnání s kešovanými mapovými formáty může způsobovat pomalejší načítání podkladových map. Pokud připojení podkladových dat v *.mpk chceme otestovat pomocí QML, v šabloně projektu ArcGIS Runtime QtQuick Application tuto možnost vůbec nenalezneme. V QML api nebyla ani nalezena žádná třída, která by toto připojení realizovala. Testování připojení podkladových dat ve formátu *.mpk tedy probíhalo v C++, u kterého byl použit podobný postup jako u připojení *.tpk. V hlavičkovém souboru byla definována třída EsriRuntimeQt::LocalFeatureService, a to pomocí připojení dalšího hlavičkového souboru "LocalFeatureService.h". Při sestavení programu a spuštění aplikace Qt vypisuje chybovou hlášku, jelikož tato služba není spustitelná pod licencí Developer. Pod jinou licencí testování neproběhlo. Obrázek 5.1: Omezení licence pro *.mpk 5.1.3 Zobrazování mapového podkladu na koncovém zařízení Při načítání map z lokálního uložiště definujeme absolutní cestu k podkladovým mapám. Pokud ale máme v plánu aplikaci publikovat na dalších zařízeních, musíme cestu nastavit tak, aby vždy odpovídala skutečnému adresáři, ve kterém jsou mapové pod- 17

Mapové podklady klady uloženy. Pro tyto účely máme možnost využít plug-in ArcGIS Extras, a to konkrétně dvěma způsoby. Relativní cesta mapového podkladu Pokud chceme na mapový podklad odkazovat relativním způsobem, musíme mapový podklad pomocí zmiňovaného pluginu zkopírovat do výchozího adresáře, ve kterém je aplikace nainstalována. Pro každý operační systém se výchozí adresář liší. Android /sdcard/arcgis/runtime/data Windows %userprofile%\arcgis\runtime\data Linux $HOME/ArcGIS/Runtime/Data Za předpokladu, že mapové podklady jsou nakopírovány ve stejném adresáři jako je aplikace nainstalovaná, můžeme mapové podklady volat přes funkci System.userHomeFolder. import ArcGIS.Extras 1.0 property string runtimepath: System.userHomeFolder.filePath("ArcGIS/Runtime/Data") property string localtpk: runtimepath + "/Topographic.tpk" Zabalit mapový podklad jako Qt resource Qt standardně podporuje čtení z vložených zdrojů (embedded resources). ESRI Runtime Core ovšem tento způsob nepodporuje. Plug-in ArcGIS Extras ale obsahuje funkci copyfile, pomocí které můžeme podkladová data z qrc zkopírovat do konkrétního umístění na disku. Nejdříve musíme v Qt pravým tlačítkem kliknout na qrc soubor a zvolit možnost "Add an existing file"(přidat existující soubory) a vybrat mapové podklady. Poté prostřednictvím javascriptové funkce copyfile nakopírujeme data do adresáře. 18

Podklady uložené v lokálním zařízení import QtQuick 2.3 import QtQuick.Controls 1.2 import ArcGIS.Runtime 10.25 import ArcGIS.Extras 1.0 ApplicationWindow { id: appwindow width: 800 height: 600 title: "offline_test" property string runtimepath: System.userHomeFolder.filePath("ArcGIS/Runtime") property string datapath: runtimepath + "/Data" property string inputtpk: "Topographic.tpk" property string outputtpk: datapath + "/" + inputtpk function copylocaldata(datapath) { System.userHomeFolder.makePath(dataPath); resourcefolder.copyfile(inputtpk, outputtpk); return outputtpk FileFolder { id: resourcefolder path: ":/Data" Map { anchors.fill: parent ArcGISLocalTiledLayer { path: copylocaldata(inputtpk) Volba výchozího adresáře System.userHomeFolder.filePath() opět záleží na operačním systému. Princip správného zvolení výchozího adresáře je totožný jako u načítání mapových podkladů pomocí relativní cesty. Tato metoda je určená pouze pro menší mapové podklady, jelikož je náročná na výkon zařízení. Doporučuje se tedy používat jen pro formát tpk nebo geodatabáze menšího rozsahu. 19

Mapové podklady 5.2 Podklady stahované z ArcGIS Online ArcGIS Online je webová služba, která umožňuje tvorbu map, jejich sdílení a zobrazování v internetovém prohlížeči, ArcGIS Desktop nebo mobilních zařízeních. V rámci ArcGIS Online můžeme nahrávat jak kešované, tak dynamické mapové podklady. Rozdíl mezi těmito dvěma způsoby je totožný jako v lokálních podkladech. Jelikož se data do výřezu zobrazované mapy načítají přímo z ArcGIS Online, můžeme si při stabilním internetovém připojení dovolit pracovat s datově náročnějšími mapovými podklady. 5.3 Podklady připojené přes službu WMS WMS je anglická zkratka pro Web Map Service. Jedná se o standard vyvinutý OGC (Open Geospatial Consortium) a využívá se pro sdílení mapových podkladů v rastrové podobě. Pro tyto účely se používají především formáty *.jpg, *.png, *.tiff. Obrazová data jsou georeferencovaná, je v nich tedy jasně určen referenční souřadnicový systém a hrany obdélníku ohraničujícího obrazová data jsou definována souřadnicemi. Připojení WMS serveru v QML probíhá prostřednictvím třídy WmsDynamicMap- ServiceLayer: WmsDynamicMapServiceLayer { url: "http://services.cuzk.cz/wms/wms.asp?" 20

KAPITOLA ŠESTÁ UKÁZKOVÉ APLIKACE ESRI pro knihovnu ArcGIS Runtime SDK pro Qt připravila řadu ukázkových kódů, na kterých demonstruje jednotlivé možnosti této knihovny. Příklady jsou s interaktivním náhledem, zdrojovými kódy a popisem k dispozici jako samostatné aplikace, a to jak pro C++, tak pro QML: ArcGIS Runtime Qt Samples 10.2.5 ArcGIS Runtime Qml Samples 10.2.5 Ukázkové aplikace jsou obsaženy v instalačním balíčku ArcGIS Runtime SDK pro Qt. Jak již bylo zmíněno ve čtvrté kapitole, jejich instalace není povinná. Například pro Qt Samples existuje prezentace na oficiálních webových stránkách ArcGIS Developers. [7] V rámci této bakalářské práce bylo původně zamýšleno ukázkové aplikace testovat v Qt pro programovací jazyk C++. V průběhu testování bylo zjištěno, že společnost ESRI pro tyto ukázkové kódy neuvolnila důležité hlavičkové soubory. Jak je z příkladu pod odstavcem vidět, většina ukázkových kódů napsaných v C++ využívá hlavičkový soubor rtsample.h. Na ten samý problém bohužel narazíme i u dalších hlavičkových souborů. Testování knihovny v C++ tedy vyžaduje kompletní znalost uživatelské příručky, což není předmětem této bakalářské práce. #ifndef TILED_LAYER_VIEWER_H #define TILED_LAYER_VIEWER_H #include "pch.h" #include "rtsample.h" namespace Ui { class tiled_layer_viewer; class tiled_layer_viewer : public RTSample { Q_OBJECT... 21

Ukázkové aplikace Na základě výše uvedených důvodů testování ukázkových aplikací proběhlo v Qt pomocí QML a níže si představíme několik základních, přesto zajímavých, výstupů. [8] 6.1 Aplikace s kešovaným mapovým podkladem Aplikace zobrazí předem nadefinovaný kešovaný mapový podklad ve formátu *.tpk, a to pomocí třídy ArcGISLocalTiledLayer. V tomto příkladu je také znározněno, jakým způsobem fungují zaškrtávací tlačítka. import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 import ArcGIS.Extras 1.0 import ArcGIS.Runtime 10.25 ApplicationWindow { id: appwindow width: 800 height: 600 title: "Tiled layer" property double scalefactor: System.displayScaleFactor Map { anchors.fill: parent wraparoundenabled: checkboxwraparound.checked esrilogovisible: checkboxlogo.checked focus: true ArcGISLocalTiledLayer { path: "~/ArcGIS/Runtime/Data/tpks/Topographic.tpk" Rectangle{ color : "lightgrey" radius: 5 * scalefactor border.color: "black" opacity : 0.77 anchors{ fill: columncontrols margins: -10 * scalefactor 22

Aplikace s kešovaným mapovým podkladem Column { id: columncontrols anchors { left: parent.left top: parent.top margins: 20 * scalefactor spacing: 10 * scalefactor CheckBox { id: checkboxwraparound text: "Wrap Around Enabled" checked: true style: CheckBoxStyle { label: Text { text: control.text color:"black" CheckBox { id: checkboxlogo text: "ESRI Logo Visible" checked: true style: checkboxwraparound.style Rectangle { id: rectangleborder anchors.fill: parent color: "transparent" border { width: 0.5 * scalefactor color: "black" 23

Ukázkové aplikace 6.2 Prohlížeč kešovaných mapových podkladů Tato ukázková aplikace vychází z předchozího příkladu, jelikož také zobrazuje kešované mapové podklady pomocí třídy ArcGISLocalTiledLayer. Uživatel v ní má ale možnost prostřednictvím dialogového okna připojit jakýkoliv kešovaný mapový podklad. Pomocí funkce ArcGISRuntime.createObject("ArcGISLocalTiledLayer") a přidělením cesty získané z dialogového okna se do aplikace přidá nový mapový podklad. import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 import QtQuick.Dialogs 1.2 import ArcGIS.Extras 1.0 import ArcGIS.Runtime 10.25 ApplicationWindow { id: appwindow width: 800 height: 600 title: "Tiled layer viewer" property ArcGISLocalTiledLayer loadedtilelayer property double scalefactor: System.displayScaleFactor Map { id: mainmap anchors.fill: parent Rectangle { color: "lightgrey" radius: 5 border.color: "black" opacity: 0.77 anchors { fill: columncontrols margins: -10 * scalefactor Column { id: columncontrols spacing: 10 anchors { left: parent.left 24

Prohlížeč kešovaných mapových podkladů top: parent.top margins: 20 * scalefactor Text{ text: "Click on the Open Tiled Layer..." Button { text: qstr("open Tile Layer") style: ButtonStyle { label: Text { text: control.text color:"black" horizontalalignment: Text.AlignHCenter onclicked: filedialogbrowser.open(); FileDialog { id: filedialogbrowser namefilters: "(*.tpk)" onaccepted: { if (loadedtilelayer) mainmap.reset(); var layername = = System.resolvedPath(fileDialogBrowser.fileUrl); loadedtilelayer = = ArcGISRuntime.createObject("ArcGISLocalTiledLayer"); loadedtilelayer.path = layername; mainmap.addlayer(loadedtilelayer); Connections { target: loadedtilelayer onstatuschanged: { if (loadedtilelayer.status === Enums.LayerStatusErrored){ messagedialog.text += loadedtilelayer.error; messagedialog.text += " \n"; messagedialog.visible = true; 25

Ukázkové aplikace MessageDialog { id: messagedialog title: "Error" icon: StandardIcon.Warning modality: Qt.WindowModal standardbuttons: StandardButton.Ok Rectangle { anchors.fill: parent color: "transparent" border { width: 0.5 * scalefactor color: "black" 6.3 Kešované a dynamické mapové podklady v jedné aplikaci V rámci vývoje mapové aplikace můžeme služby, které do aplikace připojují jednotlivé mapy, kombinovat. V ukázce je dále znázorněno, jakým způsobem můžeme docílit toho, aby po načtení mapových podkladů do aplikace se okno aplikace zaostřilo na vybranou oblast. import QtQuick 2.3 import QtQuick.Controls 1.2 import ArcGIS.Extras 1.0 import ArcGIS.Runtime 10.25 ApplicationWindow { id: appwindow width: 800 height: 600 title: "Dynamic and Tiled layer online" Map { id: mainmap anchors.fill: parent hidingnodatatiles: false wraparoundenabled: true 26

Přidání grafických prvků do mapy focus: true ArcGISTiledMapServiceLayer { url: "http://server.arcgisonline.com/arcgis/rest/ /services/world_street_map/mapserver" ArcGISDynamicMapServiceLayer { url: "http://sampleserver1.arcgisonline.com/arcgis/rest/ /services/specialty/esri_statecityhighway_usa/mapserver" onstatuschanged: { if (status === Enums.MapStatusReady) mainmap.zoomto(usextent); Envelope { id: usextent xmax: -15000000 ymax: 2000000 xmin: -7000000 ymin: 8000000 spatialreference: SpatialReference { wkid: 102100 Rectangle { anchors.fill: parent color: "transparent" border { width: 0.5 * scalefactor color: "black" 6.4 Přidání grafických prvků do mapy Pomocí této aplikace můžeme do mapy přidávat různé bodové symboly. Pro zobrazování grafiky máme možnost použít třídu graphiclayer. Typy symbolů si nadefinujeme s využitím některého fontu (např. esrisms) a vložíme je do ComboBoxu. Pomocí Spin- 27

Ukázkové aplikace Boxu si můžeme nastavit velikost symbolu. Pro nastavení barvy symbolu použijeme colordialog. Po kliku do mapy si musíme určit aktuální polohu kurzoru myši a poté můžeme symbol prostřednictvím funkce graphicslayer.addgraphic(graphic) do mapy zaznamenat. import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 import QtQuick.Dialogs 1.2 import ArcGIS.Extras 1.0 import ArcGIS.Runtime 10.25 ApplicationWindow { id: appwindow width: 800 height: 600 title: "Add graphics" property double scalefactor: System.displayScaleFactor property alias graphiccolor: colorrectangle.color property alias graphicsize: sizespinbox.value GraphicsLayer { id: graphicslayer Map { id: map anchors.fill: parent wraparoundenabled: true focus: true ArcGISLocalTiledLayer { path: "~/ArcGIS/Runtime/Data/tpks/Topographic.tpk" onstatuschanged: { if(map.status === Enums.MapStatusReady) { graphicslayer.renderingmode = Enums.RenderingModeStatic; addlayer(graphicslayer); onmouseclicked: { var graphic = { 28

Přidání grafických prvků do mapy geometry: { spatialreference: {latestwkid: 3857,wkid:102100, x: mouse.mapx, y: mouse.mapy, symbol: { type: "esrisms", size: graphicsize, style: styles.get(stylescombo.currentindex).style, color: graphiccolor ; var id = graphicslayer.addgraphic(graphic); Rectangle { id: rectanglecontrols anchors { fill: columncontrols margins: -10 * scalefactor color: "lightgrey" radius: 5 * scalefactor border.color: "black" opacity: 0.77 MouseArea { anchors.fill: parent onclicked: (mouse.accepted = true) Row { id: columncontrols anchors { left: rootrectangle.left leftmargin: 20 * scalefactor top: rootrectangle.top topmargin: 20 * scalefactor spacing: 10 * scalefactor ComboBox { id: stylescombo width: 100 * scalefactor 29

Ukázkové aplikace model: ListModel { id: styles ListElement {name:"circle"; style: "esrismscircle" ListElement {name:"cross"; style: "esrismscross" ListElement {name:"x"; style: "esrismsx" ListElement {name:"square"; style: "esrismssquare" ListElement {name:"diamond"; style: "esrismsdiamond" textrole: "name" style: ComboBoxStyle { textcolor: "black" Rectangle { id: colorrectangle anchors.verticalcenter: parent.verticalcenter width: 20 * scalefactor height: 20 * scalefactor color: "red" MouseArea { anchors.fill: parent onclicked: { colordialog.color = graphiccolor; colordialog.open(); Label { text: "Size" color: "black" anchors.verticalcenter: parent.verticalcenter SpinBox { id: sizespinbox minimumvalue: 1 maximumvalue: 50 value: 15 style: SpinBoxStyle { textcolor:"black" 30

Aplikace s připojeným WMS serverem ColorDialog { id: colordialog title: "Graphic color" color: graphiccolor onaccepted: { graphiccolor = currentcolor; Rectangle { anchors.fill: parent color: "transparent" border { width: 0.5 * scalefactor color: "black" 6.5 Aplikace s připojeným WMS serverem Do aplikace je WMS server připojen pomocí třídy WmsDynamicMapServiceLayer. V ukázce je konkrétně připojen mapový podklad "Správní členění ČR"z ČÚZK. Na základě aktuální polohy kurzoru myši se vypisují souřadnice bodu. import QtQuick 2.3 import QtQuick.Controls 1.2 import ArcGIS.Runtime 10.25 ApplicationWindow { id: appwindow width: 800 height: 600 title: "WMS server" property double scalefactor: System.displayScaleFactor Map { id: mainmap anchors.fill: parent wraparoundenabled: true focus: true 31

Ukázkové aplikace WmsDynamicMapServiceLayer { url: "http://geoportal.cuzk.cz/wms_sph_pub/wmservice.aspx" MouseArea { anchors.fill: parent hoverenabled: true onpositionchanged: { var mappoint = mainmap..tomapgeometry(maptoitem(mainmap, mousex, mousey)); var normalpoint = mappoint..normalizecentralmeridianofgeometry(); coordstextdecimal.text = normalpoint.todecimaldegrees(6); utmtext.text = " UTM: " + normalpoint.toutm(0,true) + " "; mousetext.text = "Mouse: X=" + mousex.tostring() + + " Y=" + mousey.tostring(); Rectangle { id: rectanglecontrols color: "white" radius: 5 anchors { fill: rowcontrols margins: 10 * scalefactor Row { id: rowcontrols anchors { bottom: parent.bottom left: parent.left Text { id: coordstextdecimal visible: true Text { id: utmtext visible: false 32

Aplikace s připojeným WMS serverem Text { id: mousetext visible: false Button { id: buttonshowcoords text: Show more coordinates onclicked: { coordstextdecimal.visible = true; utmtext.visible = true; mousetext.visible = true; buttonshowcoords.visible = false; buttonhidecoords.visible = true; Button { id: buttonhidecoords text: Hide coordinates visible: false; onclicked: { utmtext.visible = false; mousetext.visible = false; buttonshowcoords.visible = true; buttonhidecoords.visible = false; 33

Ukázkové aplikace Obrázek 6.1: Aplikace s kešovaným mapovým podkladem Obrázek 6.2: Prohlížeč kešovaných mapových podkladů 34

Aplikace s připojeným WMS serverem Obrázek 6.3: Kešované a dynamické mapové podklady v jedné aplikaci Obrázek 6.4: Přidání grafických prvků do mapy 35

Ukázkové aplikace Obrázek 6.5: Připojení WMS serveru 36

KAPITOLA SEDMÁ ZÁVĚR Cílem mé bakalářské práce bylo otestovat možnosti knihovny ArcGIS Runtime SDK pro Qt. Samotná instalace knihovny pod Linuxem (verze 10.2.3.) proběhla v pořádku. Po sestavení programu bylo potřeba upravit soubor projektu *.pro (viz. kapitola 4.1.3.). Pod MS Windows byla testována nová verze knihovy, která vyšla v únoru 2015 (10.2.5.). Instalace i sestavení testovacího projektu při vhodně zvoleném kompilátoru (viz. kapitola 4.2.5.) proběhlo bez problémů. Příprava Qt pro vývoj aplikací pro operační systém Android se bohužel nepovedla (viz. kapitola 4.2.6.). V rámci dalšího seznámení s knihovnou byly vyzkoušeny různé způsoby připojení mapových podkladů. Původně měla být knihovna testována v programovacím jazyku C++. Po zjištění, že ESRI neposkytuje k ukázkovým aplikacím potřebné hlavičkové soubory (viz. kapitola 6.), bylo testování ukázkových kódů provedeno v QML. Tímto krokem nebyla knihovna otestována tak důkladně, jak bylo původně zamýšleno. Na druhou stranu se ukázal poměrně jednoduchý způsob, jak pomocí QML vytvářet základní mapové aplikace nezávisle na operačním systému a větších znalostí programovacích jazyků C++ nebo Java. Toto téma mě zaujalo a knihovně ArcGIS Runtime SDK pro Qt, případně jejím alternativám, bych se rád podrobněji věnoval v navazujícím magisterském studiu, například v rámci diplomové práce. 37

KAPITOLA OSMÁ LITERATURA [1] Root.cz: Qt DeveloperDays 2014 [online]. 2014 [cit. 2015-05-15]. Dostupné z: http://www.root.cz/clanky/qt-developerdays-2014-berlinskymedved-mruci-nad-prichazejici-verzi-qt-5-4/ [2] ArcGIS SDK for Qt: ArcGIS for Developers [online]. 2015 [cit. 2015-05-15]. Dostupné z: https://developers.arcgis.com/qt/ [3] ArcGIS for Developers [online]. 2015 [cit. 2015-05-15]. Dostupné z: https://developers.arcgis.com/ [4] Download Qt: Open Source and Commercial [online]. 2015 [cit. 2015-05-15]. Dostupné z: http://www.qt.io/download/ [5] Visual Studio: Microsoft Developer Tools [online]. 2015 [cit. 2015-05-15]. Dostupné z: https://www.visualstudio.com/ [6] WDK and WinDbg downloads [online]. 2015 [cit. 2015-05-15]. Dostupné z: https://msdn.microsoft.com/en-us/windows/hardware/hh852365 [7] ArcGIS for Developers: C++ Samples [online]. 2015 [cit. 2015-05-15]. Dostupné z: https://developers.arcgis.com/qt/cpp/sample-code/ [8] ArcGIS for Developers: QML Samples [online]. 2015 [cit. 2015-05-15]. Dostupné z: https://developers.arcgis.com/qt/qml/sample-code/ 39

SEZNAM OBRÁZKŮ 1.1 Internetové stránky ArcGIS Developers for Qt................ 1 4.1 Neznámý hlavičkový soubor Map.h..................... 10 4.2 Stažení a instalace Microsoft Visual Studio................. 11 4.3 Stažení WinDbg................................. 12 4.4 Nastavení proměnného prostředí pro Windows............... 13 5.1 Omezení licence pro *.mpk.......................... 17 6.1 Aplikace s kešovaným mapovým podkladem................ 34 6.2 Prohlížeč kešovaných mapových podkladů................. 34 6.3 Kešované a dynamické mapové podklady v jedné aplikaci........ 35 6.4 Přidání grafických prvků do mapy...................... 35 6.5 Připojení WMS serveru............................. 36 41