UNICORN COLLEGE Katedra informačních technologií
BAKALÁŘSKÁ PRÁCE
Využití mapových služeb v aplikacích pro iPhone
Autor BP: Vít Bareš Vedoucí BP: Mgr. Peter Buchlák
2014 Praha
PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma „Využití mapových služeb v aplikacích pro iPhone“ jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou též uvedeny v seznamu literatury a použitých zdrojů. Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb.
V Praze dne
…….………………. Vít Bareš
PODĚKOVÁNÍ Děkuji vedoucímu bakalářské práce Mgr. Peteru Buchlákovi za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce. Rád bych také na tomto místě poděkoval Mgr. Jiřímu Čtyrokému, PhD. a Mgr. Bohdanu Baronovi za odbornou pomoc v oblasti geografických informačních systémů a v neposlední řadě své rodině za psychickou podporu.
Využití mapových služeb v aplikacích pro iPhone
The Usage of Map Services in iPhone Applications
6
ABSTRAKT Cílem této bakalářské práce je pomocí současných technologií a dostupných mapových podkladů vytvořit pilotní aplikaci Cenové mapy stavebních pozemků hl. m. Prahy, která bude vyvíjena nativně pro mobilní telefony iPhone. Aplikace bude využívat mapových podkladů vytvořených pomocí nástrojů ArcGIS od společnosti Esri a také ArcGIS SDK pro iOS. Tato aplikace bude vyvinuta pro potřeby Institutu plánování a rozvoje hlavního města Prahy (IPR Praha), aby bylo možné zjistit, jaké jsou možnosti využití institutem vyvíjených a spravovaných mapových služeb v aplikacích pro chytré telefony. Uživatelé budou moci pomocí této mobilní aplikace zjistit aktuální cenu stavebních pozemků přímo na místě v „terénu“, kde se nacházejí. V první části bakalářské práce popíši technologie týkající se vývoje aplikací pro telefony iPhone, zmíním historii mapových aplikací na telefonech iPhone a následně popíši geografické informační systémy GIS a způsob vytváření, ukládání a spravování dat potřebných k vytvoření mapových služeb, které je následně možné využít v mapových aplikacích jak v mobilních telefonech, tak i ve webových aplikacích. V druhé praktické části mé práce popíšu vlastní proces vývoje samotné aplikace.
Klíčová slova: iOS, iPhone, Apple Inc., Xcode, mapové aplikace, mapové služby, GIS, Esri, ArcGIS
7
ABSTRACT The goal of my bachelor‘s thesis is to create a pilot application for the Cenova mapa stavebnich pozemku hl. m. Prahy using contemporary technologies and available map services. The application will be developed as a native iPhone application. This application will use map sources that were created using ArcGIS mapping tools provided by the Esri company, as well as ArcGIS SDK for iOS. This application will be developed for the internal use of the Prague Institute of Planning and Development (IPR Praha), so the possibilities of using map services produced and maintained by the institute in mobile phone applications can be determined. The users of the application will be able to see the up-‐to-‐date price of a property right at the location they are standing at. In the first part of the thesis I will describe the technologies being used for iPhone application development and will mention the history of map applications for iPhone. In addition I will describe the geographic information systems-‐GIS and the procedure of creating, saving and maintaining data used for creating map services that are then being used in mobile or web map applications. In the second practical part of the thesis I will describe the actual process of creating the application itself. Keywords: iOS, iPhone, Apple Inc., Xcode, map applications, map services, GIS, Esri, ArcGIS
8
OBSAH 1. Úvod ..................................................................................................................................... 11 2. Teoretická část ................................................................................................................. 13 2.1 IPhone .........................................................................................................................................13 2.2 iOS .................................................................................................................................................14 2.2.1 Důležité milníky ve verzích iOS.................................................................................................. 14 2.3 Cocoa Touch ..............................................................................................................................16 2.4 iOS SDK........................................................................................................................................17 2.5 Xcode............................................................................................................................................18 2.6 Objective-C .................................................................................................................................19 2.7 GPS a Location Services .........................................................................................................20 2.8 GIS .................................................................................................................................................21 2.9 Esri................................................................................................................................................21 2.10 Geodatabáze............................................................................................................................23 2.10.1 Feature classes – třídy prvků.................................................................................................... 25 2.10.2 Rasterové datasety........................................................................................................................ 26 2.11 Geodatabáze v prostředí Oracle .......................................................................................28 2.11.1 Popis ukládání features............................................................................................................... 29 2.12 ArcMap ......................................................................................................................................30 2.13 Map service..............................................................................................................................30 2.14 ArcGIS Runtime SDK for iOS...............................................................................................32 3. Praktická část.................................................................................................................... 33 3.1 Popis problému a návrh řešení...........................................................................................33 3.1.1 Současný stav..................................................................................................................................... 33 3.1.2 Řešení .................................................................................................................................................... 33 3.2 Cenová mapa stavebních pozemků hl. m. Prahy ...........................................................36 3.3 Specifikace nefunkčních požadavků .................................................................................37 3.4 Mapové služby ..........................................................................................................................37 3.5 Seznam use case.......................................................................................................................38 3.5.1 UC 01 – Načtení mapových služeb ............................................................................................ 40 3.5.2 UC 02 – Zjištění aktuální ceny pozemku ................................................................................ 40 3.5.3 UC 03 – Vyhledání adresy ............................................................................................................. 41 3.5.4 UC 04 – Zpět na aktuální pozici.................................................................................................. 41 3.5.5 UC 05 – Změna průhlednosti ortofotomapy ......................................................................... 42 3.5.6 UC 06 – Zpět na výchozí lokalitu................................................................................................ 42 3.6 Využití MVC................................................................................................................................43 3.7 Třídní model .............................................................................................................................44 3.8 Implementace ...........................................................................................................................45 3.8.1 Příprava vývojového prostředí .................................................................................................. 46 3.8.2 Implementace UC 01 – Načtení mapových služeb ............................................................. 46 3.8.3 Implementace UC 02 – Zjištění aktuální ceny pozemku.................................................. 49 3.8.4 Implementace UC 03 – Vyhledání adresy .............................................................................. 50 3.8.5 Implementace UC 04 – Zpět na aktuální pozici ................................................................... 55 3.8.6 Implementace UC 05 – Změna průhlednosti ortofotomapy .......................................... 56 3.8.7 Implementace UC 06 – Zpět na výchozí lokalitu................................................................. 56 3.9 Nasazení......................................................................................................................................57 3.9.1 Licence .................................................................................................................................................. 58 3.10 Další možnosti vylepšení aplikace a optimalizace mapových služeb..................59 4. Závěr .................................................................................................................................... 61
9
5. Conclusion.......................................................................................................................... 62 6. Seznam použité literatury ............................................................................................ 63 7. Seznam použitých symbolů a zkratek ...................................................................... 66 8. Seznam obrázků ............................................................................................................... 67 9. Seznam tabulek ................................................................................................................ 68 10. Seznam příloh ................................................................................................................. 69
10
1.
ÚVOD
V současnosti si nelze představit jakýkoliv smartphone bez alespoň jedné mapové aplikace. Vždyť právě možnost zjištění hledané informace podle místa, kde se právě nacházíme, je jednou z nejsilnějších zbraní chytrých mobilních telefonů oproti nepřenosným desktopům. Již v minulosti bylo možné využívat mapových aplikací na GPS navigačních zařízeních třeba v automobilu. Data v těchto přístrojích byla ale v drtivé většině statická, předem uložená v zařízení, a tedy dynamické načítání aktuálních dat nebylo možné. Mapy v těchto zařízeních bylo nutné, většinou přes USB kabel, aktualizovat. Díky rychlejším procesorům, novým výkonnějším technologiím, levnějším a dostupnějším datovým tarifům mobilních operátorů, lepšímu pokrytí Wi-Fi signálem, vývojem nových aplikací využívajících lokalizaci, je používání smartphonů a tabletů stále oblíbenější. Již v říjnu 2012 v rozhovoru pro Lidové noviny se zmiňuje Karel Kršák z nakladatelství SHOCart, že pokles prodeje plánů měst a automap přisuzuje právě nástupu nových technologií.1 Díky mapovým aplikacím a location services (služby, pomocí kterých je možné lokalizovat mobilní zařízení) máme v současné době možnost například sledovat, kde se nachází náš iPhone, když jsme ho ztratili (aplikace Find My iPhone). Pokud iPhone vlastní i naše děti, můžeme sledovat, zda-‐li se třeba bezpečně dostaly do školy. Díky mapovým aplikacím můžeme najít i své auto na prostorném parkovišti u nákupního centra, pokud si nemůžeme vzpomenout, kde jsme ho zaparkovali. Pokud budeme na dovolené fotit pomocí iPhone, je ke každé fotce možné přiřadit i souřadnice místa, kde jsme snímek pořídili. V aplikacích na prohlížení fotek, je pak snadné na mapě vybrat místo, které zobrazí všechny fotografie na tomto místě pořízené. Fotografie tedy již nemusíme prohlížet podle popisku nebo data pořízení, ale podle lokality. Lokalizace mobilního přístroje je samozřejmě také důležitá z marketingového hlediska. Konkrétně pro iAds, reklamy v aplikacích na zařízeních s iOS. Podle lokalizace přístroje může reklama obsahovat informace obsahující nabídky 1
NEVYHOŠTĚNÝ, Martin. Klasické mapy v ohrožení. Pohřbívají je mobily, navigace i politici. Lidovky.cz [online]. 12. 10. 2012 [cit. 2014-03-15]. ISSN 1213-1385. Dostupné z: http://byznys.lidovky.cz/klasicke-mapy-v-ohrozeni-pohrbivaji-je-mobily-navigace-i-politici-p91/firmy-trhy.aspx?c=A121010_154238_firmy-trhy_mev
11
z bezprostředního okolí uživatele. Dle vyjádření firmy Apple jsou z hlediska soukromí uživatele inzerentům poskytovány údajně pouze údaje o ZIP kódu (ekvivalent PSČ).2 Využití mapových zdrojů v mobilních aplikacích je tedy široké. Možnost lokalizace přístroje umožňuje zrychlit, zpřesnit a zefektivnit služby, které jsou uživateli mobilního telefonu poskytovány. Z těchto důvodů jsem se také rozhodl vytvořit pilotní mapovou aplikaci, v které by bylo možné využít a otestovat dostupné technologie a mapové podklady, případně zjistit, kde a jak by bylo možné tyto podklady vylepšit nebo optimalizovat. Cílem mojí bakalářské práce je tedy pomocí současných technologií a dostupných mapových podkladů vytvořit pilotní aplikaci Cenové mapy stavebních pozemků hl. m. Prahy, která bude vyvíjena nativně pro mobilní telefony iPhone. Aplikace bude využívat mapových podkladů vytvořených pomocí nástrojů ArcGIS od společnosti Esri a také ArcGIS SDK pro iOS. Bakalářská práce je rozdělena na teoretickou a praktickou část. V teoretické části nejprve popíši technologie týkající se vývoje aplikací pro mobilní telefony iPhone a následně popíši geografické informační systémy GIS a způsob vytváření, ukládání a spravování dat potřebných k vytvoření mapových služeb, které je následně možné využít v mapových aplikacích jak v mobilních telefonech, tak i ve webových aplikacích. V druhé praktické části mé práce popíši vlastní proces vývoje samotné aplikace.
2
FORESMAN, Chris. Apple responds to Congress, swears location data is private. Ars Technica [online]. 20. 7. 2010 [cit. 2014-03-15]. Dostupné z: http://arstechnica.com/apple/2010/07/appleresponds-to-congress-swears-location-data-is-private/
12
2.
TEORETICKÁ ČÁST
Pro vývoj mapové aplikace jsem využil technologie, které v následujících kapitolách detailněji popíši. Dále popíši, co se za samotnou mapovou službou skrývá, co je potřeba k jejímu vytvoření a jak jsou samotná data uložena v databázi.
2.1
IPhone
9. ledna 2007 oznámil Steve Jobs na Macworld Conference and expo práci na vývoji mobilního telefonu iPhone. První iPhone si mohli zákazníci v USA koupit 29. června 2007. Na tento první iPhone s verzí firmware 1.x.x nebylo však možné instalovat žádné aplikace třetích stran. To se změnilo až příchodem nového modelu iPhone 3G s předinstalovanou verzí firmware 2.0 , kdy pomocí nové služby AppStore již aplikace třetích stran instalovat možné bylo. Kromě toho již tento model uměl lokalizovat přístroj pomocí GPS, dřívější verze prováděli lokalizaci pouze podle nejbližších přístupových bodů Wi-‐Fi a BTS – základnových převodních stanic mobilních operátorů.3 Během let se stal iPhone jedním z nejprodávanějších mobilních telefonů telefonů na světě. Jen ve fiskálním roce 2013 se prodalo celosvětově 150 milionů přístrojů iPhone.4 V současné době (jaro 2014) je na trhu dostupný model iPhone 5s a levnější varianta iPhone 5c. Oba modely disponují 4-‐palcovým Retina displejem s rozlišením 1136x640 při 326ppi. Model iPhone 5s je vybaven dvoujádrovým čipem A7 s 64bitovou architekturou a M7 koprocesorem. Tyto telefony jsou dodávané s předinstalovaným systémem iOS 7.5
3
Apple Introduces the New iPhone 3G. Apple [online]. 9. 7. 2008 [cit. 2014-03-15]. Dostupné z: http://www.apple.com/pr/library/2008/06/09Apple-Introduces-the-New-iPhone-3G.html
4
Apple iPhone global sales 2007-2014, by quarter. Statista [online]. [cit. 2014-04-15]. Dostupné z: http://www.statista.com/statistics/263401/global-apple-iphone-sales-since-3rd-quarter-2007/
5
Apple - iPhone - Compare Models. Apple [online]. [cit. 2014-04-10]. Dostupné z: http://www.apple.com/iphone/compare/
13
2.2
iOS
Operační systém iOS je postaven na jádře XNU, které je základem i operačního systému Mac OS. Jedná se o hybridní jádro unixového typu. Jádro XNU (X is Not Unix)6 bylo původně vyvinuto firmou NeXT, založenou Stevem Jobsem v roce 1995 po jeho odchodu z firmy Apple, pro její operační systém NeXTSTEP. Systém byl představen v roce 1988 a NeXTSTEP verze 1.0 se dostal na trh 18. září 1989.7 Po návratu Steva Jobse do Apple a skoupení firmy NeXT firmou Apple v roce 1997 bylo využito jádra XNU pro vývoj systému Darwin, který je základem Mac OS a iOS. Systém Darwin, stejně jako XNU, je poskytován jako open source v rámci licence Apple Public Source License 2.0. 2.2.1 Důležité milníky ve verzích iOS První verze OS, byla uvedena na trh spolu s prvním modelem iPhone, a to 29. června 2007. Až do verze iOS 4 byl používán název iPhone OS. Představení nové verze s novým jménem iOS 4 došlo 7. června 2010 na konferenci WWDC v Kalifornii. Od označení iPhone OS se upustilo, neboť nový operační systém byl instalován nejen na iPhonu, ale nyní i na zařízeních iPod touch a iPad.8 S příchodem verze iOS 5 došlo ke změně správy paměti. Až doposud bylo nutné ručně naprogramovat každému objektu jak přistupovat k sdílené paměti. To se ale změnilo příchodem nového kompilátoru LLVM 3.0, který nabízí automatickou správu paměti, neboli automatické počítání referencí ARC. V červnu 2012 na konferenci WWDC v San Franciscu v Kalifornii představil Apple novou verzi operačního systému iOS 6. Tato verze znamenala průlom v poskytovateli mapových podkladů pro nativní aplikaci Maps. Až do této chvíle byla hlavním poskytovatelem firma Google, která je zároveň jedním z konkurentů Apple. Apple tedy rozvázal spolupráci s Google a rozhodl se investovat do vývoje nových 6
Porting UNIX/Linux Applications to OS X. Apple [online]. [cit. 2014-04-10]. Dostupné z: https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/glossary /glossary.html
7
SINGH, Amit. What is Mac OS X?. Osxbook.com [online]. prosinec 2003 [cit. 2014-03-15]. Dostupné z: http://osxbook.com/book/bonus/ancient/whatismacosx/history.html
8
CHARTIER, David. iPhone OS gets new name, video calling. Macworld [online]. 7. 6. 2010, 11:56 [cit. 2014-04-15]. Dostupné z: http://www.macworld.com/article/1151812/iphone_os_4_wwdc.html
14
map, jejichž hlavním dodavatelem se stala společnost TomTom, která již od roku 2009 vyvíjela navigační aplikaci přímo pro iPhone.9 Nová verze maps přinášela nové pěkné funkcionality, třeba právě turn-‐by-‐turn navigaci nebo 3D režim FlyOver, kdy je využíváno snímkování velkých měst z vrtulníků (Poznámka: FlyOver je dostupný pouze na iPhone 4s a vyšší).10 S novým dodavatel ovšem došlo i k velkému množství nepřesností v mapách, které se staly terčem posměchu mnoha uživatelů i konkurence. Výčet některých chyb třeba popisoval článek na serveru mobil.idnes.cz11, jednalo se o chyby v popisu měst a států, špatný popis oceánů, neaktuální informace ohledně ulic a podobně. Uživatelé si přáli zpět mapy od firmy Google jako nativní aplikaci od iPhone. Toto však v dané chvíli nebylo možné, a uživatel mohl tyto mapy prohlížet pouze v okně prohlížeče Safari, nebo si vytvořit na ploše iPhone přímo odkaz na tuto stránku. Obrázek 1: Chyby v prvních mapách systému iOS6 - Runway ve Vilniusu, Litva
Zdroj: www.delfi.lt
9
MIKUDÍK, Radek a Adam POSPÍŠIL. Nové mapy v iPhonu navigují: po padesáti metrech skočte z mostu. iDnes.cz [online]. 14. 6. 2012, 15:35 [cit. 2014-03-15]. Dostupné z: http://mobil.idnes.cz/nove-mapy-v-iphonu-naviguji-po-padesati-metrech-skocte-z-mostu-p71/iphone.aspx?c=A120614_000509_iphone_ram
10
MIKUDÍK, Radek. Inovace pro iPhone: iOS 6 má nové mapy s úplnou navigací. iDnes.cz [online]. 11. 6. 2012, 23:22 [cit. 2014-03-15]. Dostupné z: http://mobil.idnes.cz/ios-6-vlastni-mapyfacetime-i-pres-3g-vylepsene-volani-i-ppx-/iphone.aspx?c=A120611_223435_iphone_ram
11
MIKUDÍK, Radek a Adam POSPÍŠIL. Nové mapy v iPhonu navigují: po padesáti metrech skočte z mostu. iDnes.cz [online]. 14. 6. 2012, 15:35 [cit. 2014-03-15]. Dostupné z: http://mobil.idnes.cz/nove-mapy-v-iphonu-naviguji-po-padesati-metrech-skocte-z-mostu-p71/iphone.aspx?c=A120614_000509_iphone_ram
15
Firma Apple byla nucena se omluvit12 uživatelům a zároveň povolila firmě Google opět dodávat svoji nativní aplikaci map jako alternativu k Apple Maps. Od 13. 12. 2012 mohli tedy uživatelé iPhone opět plně využívat aplikaci Google Maps.13 Poslední verze iOS 7.0 přinesla především nový design uživatelského rozhraní. Zmizelo stínování, textury, plastický vzhled a byly nahrazeny plnou barvou a typografií. Někteří uživatelé byli novým vzhledem nadšeni, někteří volali po starém vzhledu. V současné době (duben 2014) je dostupná verze iOS 7.1.
2.3
Cocoa Touch
Cocoa Touch je jednou z vrstev architektury operačního systému iOS, pomocí kterých je možné vyvíjet aplikace pro operační systém iOS (iPhone, iPod Touch, iPad). Jednotlivé vrstvy jsou uspořádány hierarchicky. Stejně jako Cocoa (pro operační systém Mac OS X), je Cocoa Touch psán převážně v jazyce Objective-‐C a respektuje architekturu MVC (Model-‐View-‐Controller). Obsahuje frameworky, které jsou běžně používány programátory při vývoji aplikací. Hlavním frameworkem je pak UIKit Framework, který je jakýmsi základem pro vytváření aplikací pro iOS.14 Cocoa Touch jako nejvyšší vrstva nabízí díky objektově orientované abstrakci využití i dalších frameworků z nižších vrstev iOS technologií, jako například Core Location, Core Data, Core Audio a další. Při vývoji aplikací je doporučováno užití frameworku vyšší vrstvy před nižší.15
12
A letter from Tim Cook on Maps. Apple [online]. [cit. 2014-04-09]. Dostupné z: https://www.apple.com/letter-from-tim-cook-on-maps/
13
SCHÖN, Otakar. Google vydal mapy pro iOS, nechybí nic, ani streetview, informace o dopravě nebo navigace. IHNED.cz [online]. 13. 12. 2012, 10:24 [cit. 2014-03-15]. ISSN 1213 – 7693. Dostupné z: http://tech.ihned.cz/google/c1-58960560-google-mapy-pro-iphone
14
iOS 4 Architecture and SDK Frameworks (iOS 4 Xcode 4). Techotopia [online]. [cit. 2014-04-15]. Dostupné z: http://www.techotopia.com/index.php/IOS_4_Architecture_and_SDK_Frameworks_%28iOS_4_ Xcode_4%29
15
Cocoa Touch Frameworks. Apple [online]. [cit. 2014-04-09]. Dostupné z: https://developer.apple.com/technologies/ios/cocoa-touch.html
16
Obrázek 2: Jednotlivé vrstvy iOS
Zdroj: Vlastní zpracování
2.4
iOS SDK
„iOS Development Kit (SDK) obsahuje nástroje a rozhraní potřebné k vytváření, instalaci, běhu a testování nativních aplikací, které jsou zobrazeny na domovské stránce iOS zařízení. Nativní aplikace jsou vyvíjeny pomocí iOS systémových frameworků a jazyka Objective-C a jsou spouštěny přímo v iOS. Na rozdíl od webových aplikací jsou tyto nativní aplikace fyzicky nainstalovány na zařízení a jsou proto uživateli dostupné vždy, i když je zařízení v režimu Airplane mode, tedy bez přístupu k internetu.“16 V říjnu roku 2007 oznámil Steve Jobs v otevřeném dopise v rámci weblogu Apple Hot News uvolnění iOS SDK (Software development kit) pro vývojáře třetích stran. První verze iOS SDK (tehdy ještě pod názvem iPhone SDK) byla zveřejněna 6. března 200817. Tímto dnem bylo umožněno programátorům vyvíjet a testovat aplikace pro iPhone a iPod Touch v nativním prostředí firmy Apple. Jednotlivé verze SDK bývají zveřejňovány s novými verzemi iOS. Vývojářům, registrovaným v programu iOS Developer Program, jsou k dispozici beta verze 16
About the iOS Technologies. Apple [online]. [cit. 2014-04-15]. Dostupné z: https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTec hOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898-CH1-SW1
17
iOS SDK. In: Wikipedie: the free encyclopedia [online]. St. Petersburg (Florida): Wikimedia Foundation, 8. 3. 2008, 12:40, stránka byla naposledy editována 11. 4. 2014, 14:06 [cit. 201404-16]. Dostupné z: http://en.wikipedia.org/wiki/IOS_SDK
17
nových operačních systémů ještě před jejich oficiálním zveřejněním, tím mají možnost testovat kompatibilitu svých aplikací s novým systémem. V současné době (duben 2014) je k dispozici iOS 7.1 SDK.
2.5
Xcode
Vývojové prostředí Xcode je vývojové prostředí (IDE – Integrated Development Environment), které je v současné době dostupné zdarma v Mac App Store, což je distribuční platforma firmy Apple . Jedná se o ucelený nástroj pro vývoj nativních aplikací nejen pro iOS, tedy iPad, iPhone respektive iPod Touch, ale i pro OSX. Obrázek 3: Aplikace CMP 2014 v prostředí Xcode
Zdroj: Vlastní zpracování Díky prostředí Xcode je možné snadno definovat uživatelské rozhraní, psát optimalizovat a testovat zdrojový kód. Díky iOS Simulátoru je možné testovat chování vyvíjené aplikace na rozdílných zařízeních, aniž bychom museli aplikaci nahrávat na fyzický přístroj. Hotovou aplikaci je pak možné prostřednictvím Xcode nahrát a distribuovat v App Store. V současné době (duben 2014) je poslední dostupná stabilní verze Xcode 5.1.
18
2.6
Objective-C
Počátky vzniku Objective-‐C sahají do počátku 80. let minulého století, kdy Brad Cox a Tom Love, inspirováni jazykem Smalltalk, začali vyvíjet nový programovací jazyk Objective-‐C. Jedním z důvodů, proč se rozhodli pro vývoj nového jazyka, byla přílišná složitost a náročnost jazyka Smalltalk a jeho nekompatibilita s jazykem C, který obsahoval celou řadu užitečných knihoven, které bylo dobré využít. Cox s Lovem se tedy snažili propojit jazyk C s řešením objektů v Smalltalku a posílání zpráv mezi těmito objekty. Ve svých počátcích Objective-‐C v porovnání s jazykem C, respektive C++ příliš populární nebyl, o jeho využití a popularitu se však zasadil Steve Jobs, který hledal vhodný programovací jazyk pro vývoj systému NeXTSTEP. Stalo se tak poté, co opustil firmu Apple a založil svou novou firmu NeXT. Od roku 1988 je programovací jazyk Objective-‐C součástí systému NeXTStep.18 V roce 1997 firma Apple koupila NeXT i s jeho systémem, vyřešila tím své problémy se svým zastaralým operačním systémem Mac OS19. Současný operační systém Mac OS X je tedy potomkem systému NeXTStep. Objective-‐C je slabě typovaný programovací jazyk. Jeho syntaxe je založená na posílání zpráv objektům. Tyto zprávy mají svoje jméno, parametry, a je-‐li třeba i návratovou hodnotu. Zprávy je možné ukládat a zpracovávat až v momentě, kdy je to potřeba, nebo je možné poslat je jako celek jinému objektu. Zpráva se tedy chová jako samostatná jednotka. Objective-‐C nepoužívá rozdělení tříd do jmenných prostorů (namespaces), ale místo toho používá v názvech jednotlivých tříd prefixy se dvěma, či třemi písmeny pro rozlišení tříd se shodným jménem. Tyto třídy se shodným prefixem jsou pak organizovány do jednotlivých frameworků. Jako například třída UILabel náleží do frameworku UIKit. Třídy NSArray a NSString patří do Foundation frameworku. Právě
18 PAVT. Programování na OS X – Objective C a jeho výhody. In: Blog Živě.cz [online]. 19. 9. 2010 [cit. 2014-03-24]. Dostupné z: http://switch2mac.blog.zive.cz/2010/09/programovani-naos-x-–-objective-c-a-jeho-vyhody/ 19
ČADA, Ondřej. Cocoa: úvod do programování počítačů Apple. 1. vyd. Praha: Grada Publishing, 2009, s. 14. ISBN 978-80-247-2778-3.
19
prefix NS odkazuje na systém NeXTSTEP, pro který byly tyto třídy poprvé vyvinuty a celý systém NeXTSTEP se stal základem systému OS X a iOS.20
2.7
GPS a Location Services
Mobilní telefony v současné době používají ke svojí lokalizaci několik zdrojů. Vedle GPS (Global Positioning Systém) jsou to informace o Wi-‐Fi hotspotech, IP adresy, Bluetooth MAC adresy a triangulace GSM respektive CDMA buněk. Tomuto způsobu geolokace, neboli informace o zeměpisné šířce a délce, kde se mobilní zařízení právě nachází, se říká Assisted GPS (A-‐GPS). Důvod proč kombinovat tyto technologie je jednoduchý, vyšší rychlost zjištění polohy a přesnost. Zjištění přesné polohy přístroje použitím čistě pomocí GPS by zabralo i několik minut. Jak zmiňuje článek na serveru Macworld, starším GPS přístrojům trvalo až 12,5 minuty, než získaly přesnou pozici ze satelitů.21 Co se týká mobilních telefonů iPhone, ty až do modelu iPhone 3G touto technologií nedisponovaly. Ke své lokalizaci využívaly pouze informace z location-‐ based služeb, neboli databáze, která mimo jiné obsahuje informace o Wi-‐Fi hotspotech a vysílačích mobilních operátorů. Jak je popsáno v článku na serveru Techcrunch.com22, tyto databáze s informacemi byly firmě Apple na prvních přístrojích iPhone (konkrétně iPhone OS verze 1.1.3 až 3.1) dodávány firmami Google a Skyhook Wireless. To se změnilo v dubnu 2010 s verzí iOS 3.2, kde již Apple nevyužívá geolokační služby třetích stran a využívá vlastních databází a má tedy plnou kontrolu nad obsahem a službami poskytovanými koncovým zákazníkům. Způsob jakým mobilní aplikace získá údaje o lokalitě, kde se uživatel nachází je následující: Pokud jsou na přístroji povoleny Location Services, aplikace zažádá o lokalizaci přístroje. V té chvíli Apple shromáždí anonymně údaje o GPS souřadnicích, Wi-‐Fi hotspotech a buňkách GSM/CDMA nacházejících se v blízkosti 20
CONWAY, Joe a Aaron HILLEGASS. IOS programming: the big merd ranch guide. Atlanta: Big Nerd Ranch, 2012, s. 59. ISBN 978-0-321-82152-2.
21
FLEISHMAN, Glenn. How the iPhone knows where you are. Macworld [online]. 28. 4. 2011, 7:00 [cit. 2014-04-15]. Dostupné z: http://www.macworld.com/article/1159528/how_iphone_location_works.html
22
SIEGLER, MG. In April, Apple Ditched Google And Skyhook In Favor Of Its Own Location Databases. TechCrunch [online]. 29. 7. 2010, 7:00 [cit. 2014-04-15]. Dostupné z: http://techcrunch.com/2010/07/29/apple-location/
20
přístroje a o síle signálu vůči těmto bodům. Z těchto informací jsou následně odeslány aplikaci zpět údaje se souřadnicemi, kde se přístroj nachází.
2.8
GIS
Definice pojmu GIS není jednoznačná. existuje několik definic. Použiji tedy jen některé definice. Ján Tuček ve své knize cituje definici podle Esri, kde GIS je organizovaný soubor počítačového hardwaru, softwaru a geografických údajů (naplněné báze dat) navržený na efektivní získávání, ukládání, upravování, obhospodařování, analyzování a zobrazování všech forem geografických informací.23 „Ve zkratce je možné říct, že GIS je počítačový systém schopný ukládat, udržovat a využívat údaje popisující místa na zemském povrchu.“24
2.9
Esri
Společnost Esri (Environmental Systems Research Institute, Inc.) je jedním z nejvýznamějších vývojářů GIS nástrojů. Byla založena Jackem Dagermondem a jeho ženou Laurou v Kalifornském městě Redlands roku 1969 s jasným cílem uspořádat, spravovat a analyzovat geografická data, která budou využívána jako podklad pro územní plánování a jako zdroj používaný pro důležitá územní rozhodnutí. V polovině 70. let minulého století začala Esri na žádost okrsku San Diego v Kalifornii vyvíjet PIOS (Polygon Information Overlay System), který se vlastně stal základem budoucího GIS (Geografický informační systém). Roku 1982, vytvořila Esri první komerční geografický informační systém ARC/INFO, díky kterému bylo uživatelům umožněno jednodušeji a efektivněji propojit geografická data uložená v databázích s mapovými features, jako jsou body, linie a polygony.
23
TUČEK, Ján. Geografické informační systémy. Principy a praxe. 1. vyd. Brno: Computer Press, 1998, s. 20. ISBN 80-722-6091-X.
24
TUČEK, Ján. Geografické informační systémy. Principy a praxe. 1. vyd. Brno: Computer Press, 1998, s. 20. ISBN 80-722-6091-X.
21
V devadesátých letech zaznamenala společnost Esri raketový růst, způsobený především rozvojem nových technologií, stále více cenově dostupnější výpočetní technikou, nástupem internetu a uvolněním globálního polohovacího systému -‐ GPS pro veřejnost. Výsledkem bylo nové řešení pro desktopy – ArcView. Koncem 90. let došlo redesignu produktu ARC/INFO, při němž byl kladen důraz na vytvoření modulárního a škálovatelného systému určeného nejen pro desktop, ale také jako enterprise řešení. Výsledkem vývoje byl produkt ArcGIS. V roce 2004 byla vydána verze ArcGIS9, která mimo desktopové řešení přinesla i řešení pro servery a vedle toho i framework pro vývojáře. Byla také vytvořen The Esri Developer Network, který poskytuje zdroje a pomoc pro rostoucí komunitu vývojářů.25 Zatím poslední komerčně dostupná verze je ArcGIS10, tato verze je v prodeji od roku 2010. Produkt ArcGIS10 v sobě obsahuje mimo jiné: ArcMap – jedná se o hlavní aplikaci produktu ArcGIS10 Desktop. Díky ArcMap můžeme provádět editace, analýzy prostorových dat, vizualizace, mapové kompozice a vytvářet mapové výstupy k dalšímu využití. ArcCatalog – v ArCatalogu probíhá správa dat, vyhledávání a prohlížení datasetů – tříd prvků. Jsou zde vytvářena a spravována metadata. ArcToolbox – pomocí této aplikace, můžeme provádět transformace souřadnicových systémů, prostorové analýzy, tzv. geoprocessing. Podle výše licence jsou možné i konverze dat. ArcGIS Explorer – jedná se o prohlížečku geoprostorových dat, jak 2D, tak i 3D. Nad těmito daty je i možné provádět analýzy. ArcGIS Explorer je volně dostupný i samostatně, plní vlastně podobnou funkci jako Adobe Acrobat Reader. Mimo desktopové řešení je k dispozici i řešení pro server, díky kterému je možné prohlížet, editovat i spravovat GIS data pomocí webových nebo mobilních aplikací. ArcGIS Server – umožňuje vytvořit pomocí průvodců jednoduché webové mapové aplikace, které jsou velmi snadno konfigurovatelné. ArcGIS Server také nabízí doplňkové služby jako jsou geocoding, geoprocessing, 2D i 3D mapové služby a v neposlední řadě webové služby, například SOAP, REST, JSON, WMS, KML. Díky těmto službám mohou být GIS data dostupná i v jiných mapových aplikacích třeba na 25
History Up Close. Esri [online]. [cit. 2014-04-11]. Dostupné z: http://www.esri.com/aboutesri/history/history-more
22
mobilních zařízeních, ale také třeba v nástrojích pro CAD (Computer-‐aided design), jako jsou AutoCAD či Microstation. Esri také nabízí vývojářům ArcGIS Runtime SDKs for Smartphones and Tablets, díky kterému je možné jednoduše vyvíjet mapové aplikace pro chytré telefony a tablety. Tyto aplikace pak využívají data dostupná přes webové služby, která jsou poskytována právě ArcGIS Serverem. V současné době jsou k dispozici tato SDK (software development kit): !
ArcGIS Runtime SDK for Android,
!
ArcGIS Runtime SDK for Windows Phone,
!
ArcGIS Runtime SDK for iOS.
Právě poslední z nabízených SDK pro iOS použiji ve své práci.
2.10 Geodatabáze Mnou vyvíjená aplikace je závislá na práci s geodaty. Geodata jsou informace o geografických lokalitách, které jsou uložené ve formátu, který je použitelný v geografických informačních systémech (GIS).26 Geodata mohou být uložena v různých formátech, jako například běžná databáze, geodatabáze, rastrový obrázek, shapefile, v excelových či DBF tabulkách, nebo coverage souborech. Moje vzorová aplikace bude využívat právě připojení ke geodatabázi. Geodatabáze je datová struktura vytvořená pro použití a práci v ArcGIS. Geodatabáze obsahuje geodata. Ve své podstatě je ArcGIS geodatabáze kolekcí geografických datasetů různých typů uložených v běžných systémových adresářích, v databázi Microsoft Access nebo v mnohouživatelských (multiuser) relačních databázích DBMS (jako například Oracle, Microsoft SQL Server, PostgreSQL, Informix, nebo IBM DB2).27
26
What is geodata?. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/What_is_geodata/019r00000002000 000/
27
What is a geodatabase?. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#//003n00000001000000
23
Geodatabáze je nativní datová struktura pro ArcGIS, který ji využívá pro editaci a správu geografických informací. Tyto informace mohou být prohlíženy a editovány nejen v prostředí ArcGIS, ale i pomocí běžného SQL dotazování. Geodatabáze je založena na konceptu relační databáze a plně využívá silné stránky systému řízení báze dat (DBMS podle anglického database management systém). Základem geodatabáze je standardní schéma relační databáze, které je tvořeno standardními databázovými tabulkami, typy databázových sloupců, indexy, a dalšími databázovými objekty. Geodatabáze obsahuje dva základní typy tabulek, tabulky systémové a tabulky datasetů. Obrázek 4: Způsob uložení geodatabáze v relačních databázích.
Zdroj: http://resources.arcgis.com Systémové tabulky ve formátu XML, udržují informace o obsahu geodatabáze. Tyto systémové tabulky obsahují metadata, která definují vlastnosti datasetů, práva, validační pravidla a další. Každá geodatabáze je tvořena datovými sadami – datasety, které jsou základními mechanismy pro správu a využití geografických dat v ArcGIS. Základními typy datasetů v geodatabázi jsou: !
feature class,
!
rastrové datasety,
!
tabulky.
Tabulky datasetů – uživatelských dat geodatabáze jsou uloženy v jedné, či více tabulkách a spolu se systémovými tabulkami jsou využívány ke správě dat.
24
Pro ještě lepší názornost, jak je geodatabáze uložena v prostředí relační databáze podívejme se na způsob zápisu feature -‐ prvku ve tvaru polygonu do tabulky databáze viz následující obrázek. Obrázek 5: Polygonová feature class, zapsaná jako business table v databázi.
Zdroj : http://resources.arcgis.com 2.10.1
Feature classes – třídy prvků
Feature classes jsou ucelené kolekce jednotlivých features -‐ prvků, kterými mohou být hlavně body (points), linie (lines), polygony (polygones) a annotace, neboli textové prvky, popisky. Obrázek 6: Reprezentace jednotlivých features v mapě
Zdroj: http://resources.arcgis.com
25
Tyto features jsou ve vektorovém formátu a jsou reprezentací mapových prvků s jasně danými hranicemi, nebo souřadnicovým vymezením jako jsou: !
hydranty, památné stromy, památky, stanice Hasičského záchranného sboru – body,
!
inženýrské sítě (například plyn, voda, slabo/silnoproud), linie ulic, železnice a další – linie,
!
hranice parcel, správních celků, plošná vymezení určitých prvků (údaje veřejně prospěšných staveb, funkční plochy a další) – polygon,
!
názvy ulic, států, pohoří, oblastí – anotace.
Každá z těchto features je pak spolu se svými atributy uložena jako jeden řádek v tabulce databáze. Feature classes jsou tedy chápány jako homogenní kolekce features se stejnou prostorovou reprezentací a sadou atributů uložených v databázové tabulce, jako například liniová feature class reprezentující osy ulic.28 2.10.2
Rasterové datasety
Rastrové datasety reprezentují geografické features rozdělením světa do oddělených čtverců nebo obdélníkových buněk uspořádaných do mřížky. Každá buňka má svou hodnotu, která reprezentuje nějakou charakteristiku dané lokality, jako například teplotu, nadmořskou výšku nebo prostorovou hodnotu.29 Rastrové datasety mohou být používany jak pro zobrazování rastrových fotografií v mapě (například satelitní snímky, ortofotomapa, kterou mnou vyvíjená aplikace také používá nebo třeba mapa císařských otisků stabilního katastru30, ale i k reprezentaci hodnot, které se vyskytují v dané lokalitě, jsou rozložené rovnoměrně a jsou spojité. Jako příklad mohu uvést hlukové mapy, mapy znečištění ovzduší, mapy průměrných srážek na vybraném území a další.
28
Feature class basics. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#//003n00000005000000
29
Raster basics. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/Raster_basics/003n00000006000000
30
Mapová aplikace Císařské povinné otisky map stabilního katastru je dostupná na adrese: http://wgp.urm.cz/app/tms/aplk/arcgis_api/ck_1842/index.html
26
Obrázek 7: Hluková mapa Prahy
Zdroj: Geoportal Praha Při analýze rastrových dat dochází k relativně snadnému a rychlému porovnávání hodnot v jednotlivých buňkách. V porovnání s vektorovým formátem dat je ukládání v rastrovém formátu jednodušší. Ukládá se vlastně jen tabulka hodnot. Rastrové datasety jsou ukládány jak v klasických formátech TIFF, BMP, JPG, PNG, tak i ve specifických formátech jako například formát ENVI (formát pro software ENVI od americké společnosti Exelis Visual Information Solution, který je využíván především pro zobrazování, analýzy a sdílení dat dálkového průzkumu Země) a optimalizovaný rastrový formát Esri Grid, který se používá pro analýzy rastrových dat v prostředí Esri. Ukládání rastrů do databáze nám přináší několik výhod. Pro simultánní multiuser přístup k velkým rastrovým souborům, je vhodné využít dobře navrženou, optimalizovanou databázi, nežli přímý přístup k rastrovým souborům. Rastrová data v databázi jsou lépe chráněna a uživatelům, kteří k těmto datům přistupují mohou být grantována přístupová práva dle potřeby. Rastrová data mohou být lépe dotazovatelná ve spojení s metadaty a rastrovými katalogy. Díky technologii ArcSDE je možné aktualizovat jen část rastrového datasetu bez potřeby jeho znovuvytvoření jako celku.31
31
ARCTUR, David a Michael ZEILER. Designing geodatabase: case studies in GIS data modeling. Redlands: ESRI Press, 2004, s. 282. ISBN 1-58948-021-x.
27
2.11 Geodatabáze v prostředí Oracle Enterprise geodatabáze je kolekcí tabulek, view-‐pohledů a uložených procedur uvnitř systému řízení dat (database management systém-‐DBMS). Oracle je právě jedním ze systémů DBMS, v kterém můžeme ukládat geodatabáze. Geodatabáze vytvářené a spravované v Institutu plánování a rozvoje hlavního města Prahy jsou ukládány v systému Oracle. V současné době (přelom 2013/2014) se jedná o verzi Enterprise Geodatabáze verze 10.0, která je instalována na Oracle 11g, 64bitová verze. Geodatabáze v prostředí Oracle využíva jak nativní datové typy Oracle, tak i speciální datové typy, které ArcGIS využívá k ukládání prostorových dat. V následující tabulce je výčet datových typů používaných v ArcGIS a jejich ekvivalent ve formátu Oracle. Tabulka 1: Datové typy Oracle podporované v ArcGIS ArcGIS datový typ
Datový typ vytvořený ORACLE
Další datové typy ORACLE, které mohou být prohliženy
Poznámky
BLOB
BLOB
DATE
DATE
8,7
DOUBLE
DECIMAL(31,8)
DECIMAL(p,s)
Precision (počet číslic) a scale (počet desetiných míst) definované v ArcGIS mohou ovlivnit výsledný datový typ vytvořený v databázi. Více informací viz ArcGIS datové typy: http://resources.arcgis.com/en/help/ main/10.1/index.html#//003n0000001m000000
FLOAT
DECIMAL(31,8)
DECIMAL(p,s)
Precision (počet číslic) a scale (počet desetiných míst) definované v ArcGIS mohou ovlivnit výsledný datový typ vytvořený v databázi. Více informací viz ArcGIS datové typy: http://resources.arcgis.com/en/help/ main/10.1/index.html#//003n0000001m000000
GEOMETRY
ST_GEOMETRY NUMBER(38) nebo SDO_GEOMETRY
Datový typ Oracle závisí na specifikaci uložení geometrie při vytváření feature class. Compressed binary nebo wellknown binary (pouze enterprise geodatabáze) = NUMBER(38); Oracle Spatial = SDO_GEOMETRY; prostorový (spatial) datový typ = ST_GEOMETRY. ST_Geometry je superclass. V případě, kdy vytváříme feature class v ArcGIS pro Desktop , je vždy použito ST_Geometry. Pokud vytváříme prostorový sloupec pomocí SQL, použije se subtyp (jako například ST_Multilinestring nebo ST_Point) podle toho, jaký subtyp zvolíme. Abychom mohli v databázi používat ST_Geometry, je třeba ji nejdříve nainstalovat. Více informací viz Adding the ST_Geometry type to an Oracle database: http://resources.arcgis.com/en/help/ main/10.1/index.html#//019v0000000s000000
28
GUID nebo Global ID
CHAR nebo NCHAR (UUID LEN)
Pole s unikátním identifikátorem bude v enterprise geodatabázi vytvořeno jako NCHAR, pokud jako klíčové slovo,specifikované při vytvoření tabulky , má parametr UNICODE_STRING nastaven naTRUE.
LONG INTEGER
NUMBER(38)
OBJECTID
NUMBER(38) pokud je vytvořeno v enterprise database NUMBER(38) v sekvenci a triggeru,když je vytvořeno v databázi
ArcGIS datový typ ObjectID je sloupec registered row ID pro tabulku (nebo feature class.) V tabulce může existovat pouze jednou. Pro tabulky vytvořené mimo ArcGIS, budou sloupce interpretovány jaoko ObjectID až poté, co budou zaregistrovány v geodatabázi.
RASTER
BLOB, LONG RAW, SDO_GEORASTER, or ST_RASTER
Rastry jsou podporovány pouze v enterprise geodatabázi. Datatyp, který bude vytvořen v Oracle závisí na konfiguraci klíčového slova DBTUNE v okamžiku tvorby raster katalogu, raster datasetu nebo mozaikového datasetu (mosaic dataset).
SHORT INTEGER
NUMBER(5)
TEXT
VARCHAR2, CLOB, NVARCHAR2, or NCLOB
NUMBER(n)
Hodnota n může být v rozmezí od 5 do 10. Pokud při vytváření v ArcGIS for Desktop nebo ArcObjects je precision nastaveno na 0, bude v databázi vytvořeno NUMBER(38), v případě, že nastavíme precision, bude použito námi specifikované nastavení.
NUMBER(n)
Hodnota n může být v rozmezí od 1 do 5. Nicméně sloupec SHORT INTEGER mohou uchovávat pouze hodnoty v rozmezí -32,768 až 32,767. Dokonce i když precision v NUMBER je nastaveno na 5, nelze ve sloupci SHORT INTEGER ukládat čísla větší než 32,767, nebo menší než -32,768. Pokud vytváříme v ArcGIS for Desktop, pak je n = 5. To nám umožňuje ukládat short integery, které spadají do povoleného rozmezí. Pole VARCHAR2 je vytvořeno, pokud není databáze nastavena na kódování Unicode Pokud nastavíme textové pole na velikost větší než 4000 a databáze je nastavena na kódování Unicode, výsledný datový typ Oracle bude CLOB. Pokud je databáze nastavena na kódování Unicode, bude vytvořeno pole jako NVARCHAR2. (Jedná se o defaultní nastavení enterprise geodatabáze v Oracle) Pokud nastavíme textové pole na velikost větší než 2000 a databáze je nastavena na kódování Unicode, výsledný datový typ Oracle bude NCLOB.
.
Zdroj: http://resources.arcgis.com 2.11.1
Popis ukládání features
Feature class je zapsaná v databázi jako tzv. base nebo bussiness table. Každý řádek v tabulce obsahuje informace o jedné feature (jednom prvku). Všimněme si sloupců SHAPE v obrázku č.5, ty obsahují právě informace o geometrii polygonů jednotlivých feature a jsou v databázi uložena jako spatial datový typ ST_XXX, nativní Esri datový typ, nebo SDO_XXX, který je nativní pro Oracle. Díky tomu mohou být všechny sloupce tabulky dotazovány pomocí SQL. Jako příklad uvádím jednoduchý prostorový dotaz, který vrací vybrané prvky, které se nacházejí na území vytyčeném polygonem: 29
SELECT TIE_PLN_ROP_OP_P."ENTID" AS TIE_PLN_ROP_OP_P_ENTID, TIE_PLN_ROP_OP_P."SHAPE" AS TIE_PLN_ROP_OP_P_SHAPE FROM "TIE_CUR"."TIE_PLN_ROP_OP_P" TIE_PLN_ROP_OP_P WHERE sde.st_envintersects(SHAPE, SDE.ST_GEOMFROMTEXT('polygon((743008.818843451 -1040296.19194639,-741156.7318059437 1039925.7745388885,-740415.8969909407 -1040944.4224095176,742731.005787825 -1041870.4659282713,-743008.818843451 1040296.19194639))',2)) = 1
2.12 ArcMap Pro vytvoření mapových podkladů, které budou využívány jak v nástrojích ArcGIS, tak i v on-‐line webových aplikacích i mobilních aplikacích, se využívá nástroje ArcMap. ArcMap představuje geografické informace jako kolekci vrstev a dalších prvků v mapě. Běžné mapové prvky zahrnují datový rámec obsahující mapové vrstvy pro daný extent spolu s posuvníkem měřítka mapy, ukazatelem severu, titulem, popisným textem, legendou symbolů a dalšími32. V samotném ArcMap je možné vytvářet, editovat a spravovat mapové podklady.
2.13 Map service Mapové služby jsou standardní webové služby publikovány pro potřebu on-‐line prohlížení, vyhledávání, nebo editování geografických dat. Tyto služby jsou publikovány pomocí mapového serveru, který následně funguje jako prostředník mezi webovým serverem, který přijímá http požadavky od klienta (například webová prohlížečka map v rámci webového prohlížeče) a předává je databázi, která obsahuje geodata. Získaná geodata jsou následně předána zpět mapovým serverem webovému serveru, který je zobrazí v klientské aplikaci. Podle typu mapové služby (viz tabulka standardy mapových služeb podle OGC) jsou klientovi předány buď data v podobě rastrového obrázku, nebo přímo samotná geodata. Tato komunikace probíhá vždy, kdy v klientské aplikaci dojde k akci, jako například vyhledání adresy, posun v mapě, změna měřítka, a podobně. 32
What is ArcMap?. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/What_is_ArcMap/018q00000003000 000/
30
Mapové služby mohou být publikovány několika způsoby, a to pomocí technologií ArcGIS Server, Intergraph WebMap, Bentley Geospatial Server, které jsou komerční, nebo pomocí volně dostupných technologií, jako jsou UMN MapServer, OSGeo MapServer a GeoServer. Při generování a poskytování mapových služeb je nutné dodržovat standardy OGC.33 Tabulka 2: Standardy služeb nad prostorovými daty dle OGC Název služby
Popis
WMS
Web Map Service je základní službou, která uživateli vrátí vždy mapovou kompozici v podobě rastru. Je sice možné požadovat několik vrstev najednou (jak vektorových, tak rastrových), ale výsledná reprezentace je vždy rastrová, data tudíž nelze žádným způsobem editovat nebo je použít v návazných analýzách. Tato služba je vhodná, pokud chceme uživateli dát možnost si data prohlížet, ale ne s nimi dále pracovat. V případě publikování objemných vrstev (např. ortofoto) je možné využít službu WMTS (Web Map Tile Service), která urychluje načítání obrazu v prohlížeči tím, že jsou na serveru uloženy připravené mapové dílce (Tiles) pro definovaná měřítka. WMS může uživateli také poskytovat informace o objektech nacházejících se v daném bodě, pokud to vybrané vrstvy umožňují.
WFS
Web Feature Service na rozdíl od WMS neposkytuje pouze rastrový obraz, ale umožňuje s daty následnou manipulaci - data jsou uživateli předávána formou objektů. WFS specifikace definuje čtyři základní operace s geografickými prvky (Features), které by měl mapový server umožňovat: get, create, update a delete
WCS
Web Coverage Service podporuje získání prostorových dat popisujících v čase nebo prostoru proměnlivé objekty. Takovéto vícerozměrné vrstvy bývají nazývány jako Coverages - jedná se např. o družicové snímky vegetačního pokryvu (Land Cover), data týkající se počasí nebo klimatu, digitální modely terénu. Služba WCS umožňuje komplexní analýzy a zahrnutí dat do složitých modelů.
WPS
Web Processing Service poskytuje prostřednictvím mapového serveru předdefinované analytické nástroje - od jednoduchých kalkulací s atributy vybraných objektů až po složité výpočetní modely. Uživatel v tomto případě definuje, jaká data chce použít, jaká operace se má provést a jak se má zobrazit požadovaný výsledek. Prakticky se pak jedná o (částečný) přenos funkcionality geografických informačních systémů na web.
Zdroj: http://www.geoportalpraha.cz
Vedle standardů služeb dle OGC, které lze využít v jakémkoliv klientské aplikaci podporující tyto standardy, jsou také k dispozici služby, které jsou nativní produktům Esri a jsou dostupné pomocí rozhraní REST a SOAP. Jedná se například o Map service, Feature service, Geocode service a další. Map service reprezentuje mapu dostupnou pomocí ArcGIS Serveru ostatním uživatelům, kteří ji mohou využít v prostředí ArcGIS for Desktop, ve webových nebo mobilních aplikacích. Map service umí uživateli poskytnout cachované mapy, které jsou z hlediska zobrazení na webu nejrychlejší. Tento druh map je využíván nejen 33
zkratka pro Open Geospatial Consortium – www.opengeospatial.org
31
v ArcGIS Online, ale i například v Google maps a Bing maps. Další možností jsou dynamické mapy, které jsou oproti cachovaným mapám pro načítání pomalejší, ale poskytují aktuální data, neboť jsou generovány v reálném čase. Dále je možné poskytnout pouze jednotlivé vrstvy map nebo samotné features, které mohou být výsledkem dotazů na mapovou službu.34 Feature service oproti Map service dovoluje uživateli, kromě dotazování na požadované features, také jejich editaci a následný zápis změn na server. Geocode service je speciální služba, která poskytuje uživatelům možnost vyhledávat adresy a její souřadnice, plánování trasy a podobně. Ve své aplikaci budu používat právě Map service pro jednotlivé vrstvy mapy a pro vyhledávání adres použiji Geocode service.
2.14 ArcGIS Runtime SDK for iOS ArcGIS Runtime SDK poskytuje sadu vývojových nástrojů umožňujících rychlou tvorbu mapových a GIS aplikací, určených k nasazení na řadu desktopových a mobilních platforem. Tyto SDK vám umožňují integrovat mapy a modely geoprocessingu do vývoje rich aplikací.35 Pro práci s ArcGis SDK for iOS je třeba nejdříve jej stáhnout a nainstalovat do počítače, kde bude probíhat vývoj. Aktuální verze je dostupná na adrese developers.arcgis.com. Pro stažení instalačního balíčku je nutné se zaregistrovat do Esri Developer program . Poslední dostupná verze ArcGIS Runtime SDK for iOS ke dni 26. 3. 2014 je verze 10.2.2, která byla publikována v březnu 2014.
34
Common reasons for using map services. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/Common_reasons_for_using_map_s ervices/015400000435000000/
35
ArcGIS Runtime SDKs. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://www.esri.com/software/arcgis/runtime/features
32
3.
PRAKTICKÁ ČÁST
Tato kapitola a její podkapitoly obsahují praktickou část bakalářské práce. Bude zde popsána analýza i samotný postup tvorby mapové aplikace.
3.1
Popis problému a návrh řešení
3.1.1 Současný stav Institut plánování a rozvoje hlavního města Prahy (IPR Praha) je příspěvková organizace, zřizovatelem je hlavní město Praha. Tato organizace mimo jiné vytváří, spravuje a poskytuje odborné i laické veřejnosti mapové podklady a dokumenty týkající se území hlavního města Prahy. Tyto podklady jsou využívány v oblasti strategického plánování a rozvoje, územního plánování a rozvoje, infrastruktury města, veřejného prostoru a další. Vybrané tematické mapové podklady jsou dostupné uživateli pomocí on-‐line mapových aplikací na webových stránkách Geoportálu Praha36. Tyto aplikace jsou dostupné uživateli ve webovém prohlížeči. V současné době však bohužel neexistuje v rámci aplikací IPR Praha žádná aplikace pro mobilní telefony, která by byla vytvořena pro zobrazování mapových podkladů, kterými IPR Praha disponuje. 3.1.2 Řešení Řešením bude vytvoření pilotní aplikace pro telefony iPhone, která bude v první fázi zobrazovat údaje z mapové služby Cenová mapa stavebních pozemků na území hlavního města Prahy. Aplikaci můžeme pracovně nazývat CMP 2014. Aplikace umožní uživateli získat informace o aktuální ceně stavebního pozemku v Kč/m2 na území, kde se uživatel nachází nebo na adrese, kterou bude možné vyhledat. Uživatel tedy získává informaci ihned, nemusí čekat, až na návrat do kanceláře. Následující obrázek nám pomocí náčrtku lépe přiblíží myšlenku budoucí aplikace před samotným programováním aplikace.
36
http://www.geoportalpraha.cz/cs/mapove-aplikace
33
Obrázek 8: Náčrtek aplikace Cenová mapa Prahy
Zdroj – Vlastní zpracování Aplikace bude přistupovat k mapovým službám, které jsou dostupné veřejnosti prostřednictvím ArcGIS Serveru. Výhodou těchto služeb je, že jsou nepřetržitě kontrolovány a aktualizovány správci geografických informací. Uživatel má tedy možnost prohlížet stále aktuální data.
34
Obrázek 9: Návrh řešení
Zdroj: Vlastní zpracování Hlavní features aplikace jsou popsány v následující tabulce. Tabulka 3: Hlavní features aplikace CMP 2014 Název feature
Popis
Základní UC
Zobrazení map
Aplikace zobrazí předem definované mapy ve vrstvách
UC01
Nalezení aktuální pozice telefonu
Aplikace automaticky zobrazí na mapě aktuální pozici přístroje po stisku tlačítka tomu určenému
UC04
Zjištění ceny pozemku
Aplikace zobrazí aktuální cenu stavebního pozemku
UC02
Vyhledání adresy
Aplikace umožní vyhledat adresy podle zadaných kritériií a zobrazí ji v mapě
UC03
Přepínání mezi podkladovými mapami
Aplikace umožní výběr mezi různými podkladovými mapami
UC05
Zdroj: Vlastní zpracování Pokud se toto řešení v budoucnu osvědčí, bude možné jej rozšířit a využít i pro další mapové služby buď v podobě samostatných aplikací na konkrétní téma, jako například hluková mapa Prahy, Územní plán a další, nebo v rámci jediné aplikace, kde bude možné mezi různými tématy přepínat.
35
3.2
Cenová mapa stavebních pozemků hl. m. Prahy
Cenová mapa stavebních pozemků hl. m. Prahy obsahuje údaje o aktuální ceně stavebních pozemků v Kč/m2. Samotná cenová mapa je složena z grafické části, která obsahuje 132 mapových listů v měřítku 1:5000 spolu se schématem kladu mapových listů, a z textové části. Originál cenové mapy je autorizován Magistrátem hlavního města Prahy37. Na základě těchto podkladů byla vytvořena mapová služba cenové mapy, která je využita ve webové aplikaci Cenové mapy stavebních pozemků hl. m. Prahy. Tato aplikace je hojně využívána například soudními znalci, kteří potřebují zjistit aktuální cenu pozemků, realitními makléři a dalšími uživateli. Od 19. března 2014, kdy byla publikována nová aktualizovaná verze webové aplikace Cenové mapy Prahy38, byla tato aplikace do 4. dubna 2014 již navštívena celkem bezmála 5000krát. O tuto službu je velký zájem a je proto zřejmé, že vytvoření této služby uživatelům v podobě mobilní aplikace by bylo přínosem. Obrázek 10: Výpis Google Analytics zobrazující přístup na mapovou aplikaci Cenová mapa stavebních pozemků hl. m. Prahy od 20. 3. 2014 do 4. 4. 2014
Zdroj: Institut plánování a rozvoje hlavního města Prahy
37
viz Vyhláška o cenové mapě Prahy pro rok 2014 na adrese http://www.praha.eu/file/1645720/vyhlaska_c._20.pdf
38
http://mpp.praha.eu/app/map/cenova-mapa/
36
3.3
Specifikace nefunkčních požadavků
V následující tabulce jsou vypsány nejdůležitější nefunkční požadavky na aplikaci CMP 2014. Nefunkční požadavky popisují vlastnosti a omezení služeb, které jsou na aplikaci kladeny. Tabulka 4: Specifikace nefunkčních požadavků Název požadavku
Popis požadavku
Kategorie (URPS+)
Dostupnost mapových dat
Data využívaná aplikací Cenová mapa Prahy (dále jen CMP 2014) budou dostupná 24/7 v 99,5% případů
R
Programovací jazyk
Aplikace CMP 2014 bude vyvíjena jazykem Objective-C
+
Operační systém
Aplikace bude optimalizována pro verzi iOS 7.0 a vyšší
+
SDK
Aplikace bude využívat ArcGIS Runtime SDK for iOS verze 10.2.2
+
Komunikace s externími sytémy
Aplikace CMP bude komunikovat s ArcGIS Serverem, který obsahuje mapové služby přes REST webové služby, informace budou předávány ve výměnném formátu JSON
+
Lokalizace
V současné chvíli je aplikace vyvíjena jen v českém jazyce S
Dokumentace
Samotný kód obsahuje inline dokumentaci, která je psaná v anglickém jazyce z důvodu možného sdílení zdrojového kódu celosvětově
U
Zdroj: Vlastní zpracování Legenda k tabulce : •
U -‐ Usability -‐ vhodnost k použití
•
R -‐ Reliability -‐ spolehlivost
•
P -‐ Performance -‐ výkon
•
S -‐ Supportability -‐ schopnost být udržována
•
+ -‐ Implementace, rozhraní, operační systémy, obchodní a právní aspekty
3.4
Mapové služby
Data poskytovaná IPR Praha jsou spravována prostřednictvím ArcGIS Serveru, který odesílá informace zpět ke klientovi běžnou formou výstupu jako je rastrový obrázek nebo text.
37
Pro potřebu tvorby aplikace Cenová mapa stavebních pozemků hl. m. Prahy budu využívat jako mapové podklady mapových služeb, které jsou vytvořeny a aktualizovány Institutem plánování a rozvoje hl. m. Prahy a pro geolokátor službu společnosti Esri. Jednotlivé mapové služby jsou tedy následující: !
Základní mapa MTVU -‐ Služba ve formě mapové cache zobrazuje území Stc. kraje a je základní podkladovou vrstvou pro prezentaci tematických dat. Vychází z mapového projektu, ve kterém jsou v okolí Prahy data ZABAGEDu (polohopis poskytovaný ČÚZK). Na území města Prahy jsou malá měřítka zastoupena vrstvami ZABAGEDu (1:750000 -‐ 1:75000), střední měřítka Souborem kartografických prezentací Digitální mapy Prahy (1:50000 -‐ 1:15000) a velká měřítka Mapou technického využití území (1:10000 -‐ 1:500). Dostupné
na
adrese:
http://mpp.praha.eu/arcgis/rest/services/DMP/MTVU/MapServer. !
Cenová mapa stavebních pozemků na území hlavního města Prahy -‐ grafická
část.
Dostupné
na:
http://mpp.praha.eu/arcgis/rest/services/MAP/letecke_snimky_posledni_sni mkovani_cache/MapServer. !
The World Geocoding Service poskytovaný firmou Esri – dočasné řešení jen pro účely testování pilotní aplikace. Dostupné pouze přes API: http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer.
3.5
Seznam use case
Tato kapitola obsahuje diagram popisující nejdůležitější use case aplikace CMP 2014 a základní popis těchto use case v tabulce. Následně jsou jednotlivé use case detailněji popsány v samostatných podkapitolách. Implementace jednotlivých use case je popsána v samostatné kapitole a jejích podkapitolách v další části bakalářské práce.
38
Obrázek 11: Seznam use case
Zdroj: Vlastní zpracování Tabulka 5: Popis use case Název
Popis
Rizikovost
Priorita
UC 01 – Načtení mapových služeb
Po spuštění aplikace se načtou mapové služby a v mapě je zobrazena základní lokalita podle daného extentu
!!
!!!
UC 02 – Zjištění aktuální ceny pozemku
Dotekem na zvolenou lokalitu se uživateli zobrazí aktuální cena pozemku této lokality
!!
!!!
UC 03 – Vyhledání adresy
Po zadání adresy se tato adresa vyhledá a zobrazí na mapě
!!!
!!
UC 04 – Zpět na aktuální pozici uživatele
Po klepnutí na tlačítko mapa zobrazí aktuální pozici uživatele a tuto pozici v mapě vycentruje
!
!!
UC 05 – Změna průhlednosti ortofotomapy
Pohybem prstu po posuvníku se změní průhlednost ortofotomapy
!
!
UC 06 – Zpět na výchozí lokalitu
Po klepnutí na tlačítko mapa zobrazí výchozí extent v mapě
!
!!
Zdroj: Vlastní zpracování 39
Legenda k tabulce: Rizikovost: ! – malá rizikovost Priorita: ! – malá priorita
!! – střední rizikovost
!! – střední priorita
!!! – velká rizikovost
!!! – velká priorita
3.5.1 UC 01 – Načtení mapových služeb Jelikož se jedná o pilotní aplikaci, která má za účel zjistit možnosti využití v tuto chvíli dostupných mapových podkladů, budeme se snažit využít stávající mapové služby poskytované IPR Praha a zjišťovat možnosti budoucí optimalizace. Vstupní podmínky !
Uživatel je připojen k internetu.
!
V mobilním telefonu musí být povoleny Location services.
Hlavní tok #
Uživatel
1
Uživatel spustí aplikaci cenové mapy v mobilním telefonu
Systém
2
Systém načte z mapového serveru potřebné mapové služby
3
Systém zobrazí v mapě výchozí extent
Výstupní podmínky !
V aplikaci jsou načteny mapy a je zobrazen výchozí extent v mapě.
3.5.2 UC 02 – Zjištění aktuální ceny pozemku Vstupní podmínky !
Uživatel je připojen k internetu a aplikace je spuštěna.
Hlavní tok #
Uživatel
Systém
1
Uživatel dotykem určí území, kde chce zjistit aktuální cenu pozemku v Kč/m2
2
Systém načte z mapového serveru aktuální cenu pozemku a zobrazí ji v calloutu v mapě
40
Alternativní tok !
Pokud mapový server vrátí hodnotu pozemku jako null, bude zobrazeno „Cena nestanovena“.
Výstupní podmínky !
Uživatelem je zobrazena aktuální cena vybraného pozemku.
3.5.3 UC 03 – Vyhledání adresy Vstupní podmínky !
Uživatel je připojen k internetu a aplikace je spuštěna, jsou načteny mapové služby.
Hlavní tok #
Uživatel
1
Uživatel zadá ve vyhledávacím políčku požadovanou adresu
Systém
2
Systém načte z mapového serveru aktuální cenu pozemku a zobrazí ji v calloutu v mapě
Alternativní tok 1 !
Pokud mapový server vrátí hodnotu pozemku jako null, bude zobrazeno „Cena nestanovena“.
Alternativní tok 2 !
Pokud geolokační služba nenajde hledanou adresu bude zobrazeno „Adresa nenalezena“.
Výstupní podmínky !
Na displeji je zobrazena hledaná adresa zadaná uživatelem.
3.5.4 UC 04 – Zpět na aktuální pozici Vstupní podmínky !
Uživatel je připojen k internetu a aplikace je spuštěna, jsou načteny mapové služby.
41
Hlavní tok #
Uživatel
1
Uživatel se dotkne tlačítka pro návrat na aktuální pozici přístroje
Systém
2
Systém vycentruje mapu na aktuální polohu přístroje
Výstupní podmínky !
Je zobrazena aktuální poloha uživatele.
3.5.5 UC 05 – Změna průhlednosti ortofotomapy Vstupní podmínky !
Uživatel je připojen k internetu a aplikace je spuštěna.
!
Jsou načteny mapové služby.
Hlavní tok #
Uživatel
Systém
1
Uživatel pomocí posuvníku (slideru), zvolí požadovanou průhlednost ortofotomapy
2
Systém změní průhlednost vrstvy s ortofotomapou
Výstupní podmínky !
Je nastavena požadovaná průhlednost ortofotomapy.
3.5.6 UC 06 – Zpět na výchozí lokalitu Vstupní podmínky !
Uživatel je připojen k internetu a aplikace je spuštěna.
!
Jsou načteny mapové služby.
Hlavní tok #
Uživatel
1
Uživatel se dotkne tlačítka pro návrat na výchozí extent aplikace
Systém
2
Systém zobrazí výchozí extent aplikace
42
Výstupní podmínky !
3.6
Je zobrazen výchozí extent mapy v aplikaci.
Využití MVC
Aplikace plně využívá návrhového vzoru Model-‐View-‐Controller. Tento vzor a jeho varianty existují již od ranných dob Smalltalku a je základem mnohým mechanismům a technologiím v Cocoa Touch.39 Jednotlivé objekty v iOS projektu jsou v rámci modelu MVC rozděleny do jedné ze tří skupin. Návrhový vzor MVC také určuje, jak budou tyto objekty mezi sebou komunikovat. Vrstva modelu reprezentuje správu samotných dat s nimiž aplikace pracuje. Nejedná se o data jako taková, ale vlastně o správce těchto dat, který poskytuje služby umožňující data načítat ze souborů, ukládat je, editovat a podobně. Vrstva view se stará o samotnou interakci s uživatelem. Obsahuje objekty grafického rozhraní a jejich služby. Pomocí těchto objektů uživatel „ovládá“ aplikaci. Tyto objekty můžeme kdykoliv změnit, aniž bychom nějak zasahovali do aplikační logiky. Vrstva controlleru implementuje funkční logiku aplikace. Tato vrstva reaguje na události, které z větší části pocházejí od uživatele a podle potřeby a požadavků provede změny ve vrstvě modelu nebo vrstvě view. Díky controlleru jsou objekty view informovány o změnách v objektech modelu a naopak. Díky rozdělení objektů do jednotlivých skupin jsou tyto objekty snadněji rozšiřitelné a znovupoužitelné.
39
CHUNG, Carlo. Pro Objective-C design patterns for iOS. New York: Distributed to the book trade worldwide by Springer Science Business Media, c2011, s. 6. ISBN 1430233303.
43
3.7
Třídní model
V této kapitole jsou v diagramu zobrazeny hlavní třídy aplikace CMP 2014. Jednotlivé objekty jsou rozmístěny podle logiky architektury Model-‐View-‐Controller do příslušných vrstev. Jednotlivé objekty a třídy jsou popsány v tabulce pod diagramem. Obrázek 12: Třídní model
Zdroj: Vlastní zpracování
44
Tabulka 6: Popis jednotlivých tříd aplikace CMP 2014 Třída / Protocol
Instance
Popis
AGSMapView
mapView
Mapový kontejner, který obsahuje jednotlivé mapové vrstvy, reaguje na interakci uživatele, zobrazuje callouty.
UIButton
Tlačítko po jehož kliknutí aplikace zobrazí aktuální polohu přístroje.
UISearchBar
Vyhledávací pole k zadávání hledané adresy.
UISlider
Posuvník, pomocí kterého je možné měnit průhlednost vybrané vrstvy.
UIViewController
CMPViewController
Jádro aplikace. Tento controller.zajišťuje komunikaci mezi objekty modelu a objekty grafického uživatelského rozhraní.
AGSTiledMapServiceLayer
tiledLayer
Instance zobrazí mapu z cachované mapové služby ArcGIS Serveru – mapu MTVU
AGSTiledMapServiceLayer
ortofotoLayer
Instance zobrazí mapu z cachované mapové služby ArcGIS Serveru – mapu Ortofotomapy
AGSDynamicMapServiceLayer
dynamicLayer
Instance zobrazí mapu z dynamické mapové služby ArcGIS Serveru – mapu hranic parcel
AGSFeatureLayer
featureLayer
Instance zobrazí feature layer, zobrazí vybrané features z individuální vrstvy mapové služby. Bude zobrazovat cenu stavebního pozemku.
AGSGraphicsLayer
graphicsLayer
Instance této třídy bude představovat vrstvu, která bude zobrazovat výsledky hledání adresy.
AGSCalloutTemplate
calloutTemplate
Instance této třídy bude zobrazovat callout s výsledky hledání adresy.
AGSLocator
locator
Instance bude provádět samotný geokóding. Vyhledávání adresy a její souřadnice.
AGSMapViewLayerDelegate
Protokol potřebný pro zpracování akcí z instance AGSMapView
AGSLocatorDelegate
Protokol potřebný k zjištění, zda geokóding proběhl v pořádku, nebo s chybou.
AGSCalloutDelegate
Protokol potřebný pro zobrazení a interakci calloutu.
AGSLayerCalloutDelegate
Protokol potřebný k zobrazování jednotlivých features mapové služby v calloutu.
UISearchBarDelegate
Protokol potřebný pro zpracování akcí z vyhledávacího pole adresy.
Zdroj: Vlastní zpracování
3.8
Implementace
Tato kapitola popisuje způsob, jakým byla aplikace CMP 2014 vytvořena. Každá podkapitola popisuje implementaci konkrétního use case. Pro přehlednost jsou jednotlivé 45
části zdrojového kódu, jakož i názvy tříd, objektů i metod od normálního textu odlišeny jiným fontem. Aplikace jsem vyvíjel a testoval pomocí prostředí Xcode verze 5.1, ArcGIS SDK for iOS verze 10.2.2 a iPhone 4 s verzí systému iOS 7.1. 3.8.1 Příprava vývojového prostředí Než začneme vytvářet nový mapový projekt, je nutné v Xcode v rámci nového projektu provést několik málo úprav. Zejména nalinkovat ArcGIS framework, který je možno stáhnout a nainstalovat ze stránek Esri, v současné době, v březnu 2014, je dostupná verze 10.2.2.40 V záložce Build Settings v poli Framework Search Paths nastavíme cestu k ArcGIS frameworku, který se defaultně instaluje do adresáře $(HOME)/Library/SDKs/ArcGIS/iOS/. Dále je nutné nastavit opět v Build Settings v poli Other Linker Flags –ObjC –framework ArcGIS –l c++ a zkontrolovat, zda je položka Enable Modules (C and Objective-‐C) nastavena na YES. Nyní již můžeme vytvářet náš mapový projekt. 3.8.2 Implementace UC 01 – Načtení mapových služeb V interface builderu musíme nejprve vytvořit objekt mapView, do kterého budeme jednotlivé mapové služby načítat. Způsob načtení těchto služeb se bude lišit podle toho, zdali je mapová služba dynamická, či již připravena jako cache v podobě mapových dlaždic. Samotné mapView je instancí třídy AGSMapView (potomek třídy UiView). Abychom mohli využít metod delegáta AGSMapViewLayerDelegate, přiřadíme jej objektu mapView. Tento delegát pak bude informován, když v mapView dojde k nějaké akci. Delegace je objektově orientovaný přístup k funkcim typu callback.41 self.mapView.layerDelegate = self; Jako první načteme mapu MTVU. Tato mapa je již vytvořena jako cache služba, aplikaci jsou tedy předávány obrazové dlaždice území. Proto pro její načtení použijeme třídu AGSTiledMapServiceLayer. Nejdříve připravíme URL mapové 40
ArcGIS Runtime SDK for iOS. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/ios/
41
CONWAY, Joe a Aaron HILLEGASS. IOS programming: the big merd ranch guide. Atlanta: Big Nerd Ranch, 2012, s. 87. ISBN 978-0-321-82152-2.
46
služby MTVU a tuto adresu předáme parametru url (NSURL) v inicializační metodě. Pokud by naše mapová služba byla zabezpečena a bylo by nutné zadat přihlašovací údaje, je tak možné učinit pomocí parametru credential. Vytvořený objekt základní mapy MTVU poté přiřadíme objektu mapView. NSURL* url = [NSURL URLWithString:@"http://mpp.praha.eu/arcgis/rest/services/DMP/ MTVU/MapServer"]; AGSTiledMapServiceLayer *tiledLayer = [AGSTiledMapServiceLayer tiledMapServiceLayerWithURL:url]; [self.mapView addMapLayer:tiledLayer withName:@"Zakladni mapa MTVU"]; Stejným způsobem vytvoříme vrstvu ortofotomapy. Tato mapová služba je taktéž
cachovaná
proto
použijeme
pro
její
vytvoření
třídu
AGSTiledMapServiceLayer. Tato vrstva bude mít při načtení nastavenu průhlednost na 50%. Změna průhlednosti pak bude implementována v rámci use case UC05. NSURL* urlOrtofotoLayer = [NSURL URLWithString: @"http://mpp.praha.eu/arcgis/rest/services/MAP/letecke_snimky _posledni_snimkovani_cache/MapServer"]; self.ortofotoLayer = [AGSTiledMapServiceLayer tiledMapServiceLayerWithURL: urlOrtofotoLayer]; self.ortofotoLayer.opacity = .5; [self.mapView addMapLayer:self.ortofotoLayer withName:@"Ortofoto mapa"]; Další vrstvou bude vrstva hranic parcel. Na rozdíl od předchozích dvou vrstev je tato vrstva načítána jako dynamická, nikoliv jako cache. Jednotlivé obrázky mapy jsou dynamicky generované podle toho, kde se uživatel v mapě nachází. Nejsou tedy na serveru připraveny již hotové obrazové dlaždice. Vrstvu hranic parcel získáme z mapové služby Cenové mapy Prahy. Hranice parcel v této mapové službě jsou ve vrstvě číslo 2, proto vytvoříme instanci třídy AGSDynamicMapServiceLayer právě s touto vrstvou. Pozn.-‐ vrstva podle nastavení v mapové službě je viditelná pouze do měřítka 1:5000. Při menším měřítku se již mapa z důvodu přehlednosti nezobrazuje a není tedy aktivní.
47
NSURL* urlDynamic = [NSURL URLWithString: @"http://mpp.praha.eu/arcgis/rest/services/SED/Cenova_mapa/Ma pServer/"]; self.dynamicLayer = [AGSDynamicMapServiceLayer dynamicMapServiceLayerWithURL: urlDynamic]; //show only selected layer :layer 2 - PARCELY self.dynamicLayer.visibleLayers = [NSArray arrayWithObject:[NSNumber numberWithInt:2]]; [self.mapView addMapLayer:self.dynamicLayer withName:@"Cenova mapa - parcely"]; Jako poslední vytvoříme vrstvu s hranicemi skupin pozemků, pomocí které budeme zobrazovat informace o aktuální ceně pozemků. Jelikož budeme chtít zobrazovat jednotlivé features z této vrstvy, konkrétně cenu pozemků, vytvoříme tuto vrstvu jako instanci třídy AGSFeatureLayer. Tato třída, pokud je napojena na službu Feature Service na ArcGIS serveru, je schopna s jednotlivými features provádět operace jako je editace, update, vytvoření či mazání. (Pozn. – Feature Service je dostupný pouze na verzi ArcGIS Server 10.X). V našem případě je možné jednotlivé features pouze prohlížet, neboť používáme jako zdroj Map Service. A to konkrétně opět vrstvu z Cenové mapy Prahy, tentokrát vrstvu číslo 1. Vrstvu tedy vytvoříme jako instanci třídy AGSFeatureLayer a načteme ji v módu AGSFeatureLayerModeOnDemand, což znamená, že data se budou načítat jako lazy. A jelikož má v map service tato vrstva nastavenou viditelnost jako false, je třeba ji v naší mapě zviditelnit. NSURL* myUrl = [NSURL URLWithString: @"http://mpp.praha.eu/arcgis/rest/services/SED/Cenova_mapa/Ma pServer/1"]; self.featureLayer = [AGSFeatureLayer featureServiceLayerWithURL: myUrl mode: AGSFeatureLayerModeOnDemand]; self.featureLayer.visible = TRUE; Aby byla naše mapa přehlednější a hranice skupin pozemků byly viditelnější, použijeme tzv. rendering a změníme barvu linií na zelenou pomocí tříd AGSSimpleLineSymbol, respektive AGSSimpleRenderer. AGSSimpleLineSymbol *featureLineSymbol = [AGSSimpleLineSymbol simpleLineSymbolWithColor:[UIColor colorWithRed:0 green:1 blue:0 alpha:1]]; featureLineSymbol.width = 2.0; 48
// Create Renderer and add symbols self.featureLayer.renderer = [AGSSimpleRenderer simpleRendererWithSymbol:featureLineSymbol]; // Add My Dynamic Feature Layer to Map View [self.mapView addMapLayer:self.featureLayer withName:@"Feature Layer"]; Abychom byli schopni zobrazovat aktuální cenu pozemku v calloutu, je nutné objektu featureLayer přiřadit delegáta AGSLayerCalloutDelegate. self.featureLayer.calloutDelegate = self; Tím máme všechny potřebné vrstvy připraveny v aplikaci a stačí mapu zazoomovat na výchozí extent. Je to z toho důvodu, že mapa zobrazuje pouze mapy území města Prahy. Pokud by někdo aplikaci spouštěl mimo území Prahy a bylo nastaveno automatické vyhledání polohy přístroje, uživatel by neviděl žádný mapový podklad.
Proto
při
spuštění
aplikace
využijeme
metodu
showImitialExtentOfPrague, kterou detailněji popíšu v UC 06 -‐ Zpět na výchozí lokalitu. Obrázek 13: Jednotlivé mapové vrstvy tak, jak jsou uspořádány ve vzorové aplikaci Cenová mapa Prahy
Zdroj: Vlastní zpracování 3.8.3 Implementace UC 02 – Zjištění aktuální ceny pozemku Pro tuto funkcionalitu jsme již připravili objekt featureLayer, který adoptuje protokol delegáta
AGSLayerCalloutDelegate
a
implementujeme
callout:willShowForFeature:layer:mapPoint. 49
V této
metodu
metodě
dále
provedeme úpravy zobrazení informací z features, které nás zajímají. Nyní to je cena pozemku a pro referenční účely i ID záznamu. -(BOOL)callout:(AGSCallout*)callout willShowForFeature:(id
)feature layer:(AGSLayer*)layer mapPoint:(AGSPoint*)mapPoint{ //Specify the callout's contents if ([(NSString*)[feature attributeForKey:@"CENA"] isEqualToString:@"N" ]) { self.mapView.callout.title =[NSString stringWithFormat:@"Cena nestanovena"]; }else{ //prepare the superscript for square metre and display the value for feature CENA NSString *squareMeterSymbol = @"\u00B2"; self.mapView.callout.title =[NSString stringWithFormat:@"Cena : %@Kč/m%@", (NSString*)[feature attributeForKey:@"CENA"], squareMeterSymbol]; } self.mapView.callout.detail =[NSString stringWithFormat:@"ID: %@", (NSString*)[feature attributeForKey:@"OBJECTID"]]; self.mapView.callout.accessoryButtonType = FALSE; return YES; }
3.8.4 Implementace UC 03 – Vyhledání adresy Pro tuto funkcionalitu je potřeba implementovat tzv. geocoding. Geocoding znamená vyhledání uživatelem zadané adresy, bodu zájmu (POI – Points of Interest), zeměpisného místa a jejich následné zobrazení v mapě. Čili přiřazení textovému vstupu na souřadnice zeměpisné šířky a zeměpisné délky. Opačný postup, kdy z daných souřadnic zjišťujeme adresu (ulice, číslo domu, město, stát, atd.), se nazývá reverse geocoding. Ten ale v této aplikaci používat nebudeme. Funkčnost geocodingu lze implementovat pomocí knihoven Apple (třída CLGeocoder), Google (Google Maps API), Esri (třída AGSLocator), nebo lze využít i vlastní zdroje. Jelikož se snažíme vytvořit aplikaci, která by nebyla závislá na službách třetích stran, ale plně využívala pouze vlastní datové zdroje, bylo by vhodné vytvořit geocode službu na mapových serverech spravovaných IPR Praha. Tato služba která by splňovala podmínky geolocatoru však v současné době není IPR Praha vytvořena a proto dočasně budeme muset využít geocode službu dostupnou na 50
serverech Esri. Tím ovšem budeme limitováni licenčními podmínkami Esri, které popíšu v jedné z dalších kapitol. Vytvoření vlastní geocode služby, která by splnila podmínky pro využití v ArcGIS API pro iOS, není bohužel snadné, neboť při exportu dat do geocode služby v prostředí ArcCatalog 10 neexistuje geokódovací šablona pro české adresy.42 Pro
vyhledání
adresy
implementujeme
metodu
konkrétně
UISearchBarDelegate,
delegáta metodu
searchBarSearchButtonClicked. Nejdříve si vytvoříme instanci třídy AGSGraphicsLayer. Jedná se o grafickou vrstvu, která bude obsahovat a graficky zobrazovat výsledky vyhledávání adresy. Pomocí třídy AGSSimpleRenderer, podobně jako v UC01 při vytváření feature layer, vytvoříme symbol v podobě modrého špendlíku. Ten bude označovat na mapě námi hledanou adresu. Jako další je nutné vytvořit instanci třídy AGSLocator. Jak již bylo řečeno v současné době budeme využívat geokódovací služby firmy Esri, ale v budoucnu bude tato služba nahrazena vlastní službou IPR Praha. Tomuto objektu lokátoru přiřadíme delegáta AGSLocatorDelegate, který bude informován o tom, zda proběhla operace vyhledávání v pořádku, či došlo k nějaké chybě. K tomuto účelu implementujeme konkrétně tyto metody: - locator:operation:didFind: - locator:operation:didFailLocationsForAddress: Samotnému objektu lokátoru jsou ve zprávě findWithParameters předány tyto parametry: !
text -‐ textový řetězec s hledanou adresou z vyhledávacího políčka,
!
outFields – obsahuje seznam možných kandidátů, které jsou vráceny geokódovací službou jako odpověď na dotaz vyhledávání adresy. Seznam možných kandidátů je detailněji popsán na stránkách Esri43,
!
outSpatialReference – definice souřadnicového systému. Pokud není definován, je použit souřadnicový systém geokódovací služby.
42
ČTYROKÝ, J. Ústní sdělení, Institut plánování a rozvoje hl. m. Prahy, Praha, leden 2014.
43
Service output. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#//02r300000017000000
51
Pro zpřesnění vyhledání adresy je možné předat i parametr sourceCountry. Tento parametr předá geokódovací službě i kód nastavení národního prostředí telefonu ve formátu ISO 3166-‐1 nebo ISO 3166-‐1. Problém ovšem nastane, pokud je telefon nastaven na národní prostředí jiné, nežli CZE. Při mých pokusech, kdy byl můj iPhone nastaven na národní prostředí US, nebyla adresa v českém formátu bohužel nalezena. - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { ... //Add a graphics layer to the map to hold geocoding results self.graphicsLayer = [AGSGraphicsLayer graphicsLayer]; [self.mapView addMapLayer:self.graphicsLayer withName:@"Výsledek hledání adresy"]; ... //Create the AGSLocator self.locator = [AGSLocator locatorWithURL:[NSURL URLWithString:@"http://geocode.arcgis.com/arcgis/rest/service s/World/GeocodeServer"]]; //Set the delegate so we can implement AGSLocatorDelegate methods self.locator.delegate = self; ... //Set the parameters AGSLocatorFindParameters* params = [[AGSLocatorFindParameters alloc]init]; params.text = [searchBar.text stringByAppendingString:@", Praha"]; params.outFields = @[@"*"]; params.outSpatialReference = self.mapView.spatialReference; params.location = [AGSPoint pointWithX:0 y:0 spatialReference:nil]; //Make finding address faster and more precise in CZE locale params.sourceCountry = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; //Start geocoding [self.locator findWithParameters:params]; ... Nyní implementujeme metody delegáta AGSLocatorDelegate. Jako první je metoda locator:operation:didFind:, tedy pokud nedojde k chybě při
52
geokódingu a jsou vráceny výsledky vyhledávání. Nejdříve zjistíme, zdali vrácené pole obsahuje nějaké prvky. Pokud ne, je zobrazena zpráva, že adresa nebyla nalezena. - (void)locator:(AGSLocator *)locator operation:(NSOperation *)op didFind:(NSArray *)results { //pokud nebyla nalezena adresa if (results == nil || [results count] == 0) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Adresa nenalezena" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } Pokud adresa, nebo adresy nalezeny byly, zobrazíme je pomocí třídy AGSCalloutTemplate. Uživatel tedy bude mít možnost po klepnutí na modrý špendlík v mapě zobrazit detail ohledně nalezené adresy. V titulku calloutu se bude zobrazovat nalezená adresa z výsledku hledání a v detailu calloutu budou uvedené souřadnice nalezené adresy. Všimněme si placeholderů ${Match_addr}, ${DisplayY} a ${DisplayX}. Jedná se o názvy polí kandidátů, které je možné definovat v parametru outFields v rámci lokátoru. Tyto placeholdery budou následně nahrazeny konkrétní hodnotou z výsledku hledání. Aby bylo možno zobrazovat callouty v naší grafické vrstvě, kterou jsme vytvořili pro zobrazování výsledků, je nutné této vrstvě přiřadit delegáta AGSCalloutDelegate. self.calloutTemplate = [[AGSCalloutTemplate alloc]init]; self.calloutTemplate.titleTemplate = @"${Match_addr}"; self.calloutTemplate.detailTemplate = [NSString stringWithFormat:@"${DisplayY}%@ ${DisplayX}%@", @"\u00b0", @"\u00b0"]; //Assign the callout template to the layer so that all graphics within this layer //display their information in the callout in the same manner self.graphicsLayer.calloutDelegate = self.calloutTemplate; Nyní se můžeme rozhodnout, zda zobrazíme všechny vrácené výsledky geokódovací službou, nebo pouze jeden nejpřesnější výsledek s nejlepším score, které 53
je výsledkům přiděleno podle toho, jak se shodují se zadáním. Pokud bychom chtěli zobrazit všechny možné výsledky našeho dotazu, je třeba iterovat pole výsledků a vytvořit z nich instance třídy AGSGraphic a tyto instance přiřadit grafické vrstvě, aby je bylo možné zobrazit. for (AGSLocatorFindResult* result in results) { AGSGraphic* graphic = result.graphic; [self.graphicsLayer addGraphic:graphic]; } Tento postup je vhodný pokud bychom chtěli vyhledávat třeba všechna divadla v Praze. Problém ovšem může nastat, pokud chceme vyhledat konkrétní adresu a jsou nám nabídnuty všechny výsledky, které by mohly našemu dotazu vyhovovat. Obrázek 14: Vyhledání zájmového bodu a zobrazení všech výsledků
Obrázek 15: Vyhledání konkrétní ulice a zobrazení všech výsledků
Zdroj: Vlastní zpracování
Zdroj: Vlastní zpracování
Jelikož chceme primárně vyhledávat jednu konkrétní adresu, rozhodl jsem se zvolit druhý postup, a to zobrazovat jen nejlepší výsledek vrácený geokódovací službou. 54
AGSLocatorFindResult *topResult = results[0]; [self.graphicsLayer removeAllGraphics]; [self.graphicsLayer addGraphic:topResult.graphic]; [self.mapView zoomToEnvelope:topResult.extent animated:YES]; Obrázek 16: Vyhledání konkrétní ulice a zobrazení všech výsledků
Zdroj: Vlastní zpracování Funkcionalita vyhledávání adres je tedy implementována plně dle doporučení příručky pro vývoj aplikací využitím ArcGIS SDK pro iOS. Jelikož dle dokumentace, platné
pro
verzi
ArcGIS
SDK
for
iOS
verze
10.2.2.44,
je
operace
findWithParameters možná pouze s použitím defaultní geokódovací služby firmy Esri, je možné, že v budoucnu budeme muset pro vlastní geokódovaci službu některé metody přetížit, nebo najít jiné řešení. 3.8.5 Implementace UC 04 – Zpět na aktuální pozici Implementace je velmi jednoduchá. Je jen potřeba vytvořit nové tlačítko (UIButton) a implementovat metodu akce. 44
ArcGIS iOS SDK - API Reference. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/ios/api-reference/
55
- (IBAction)zoomToMyLocation:(UIButton *)sender { self.mapView.locationDisplay.autoPanMode = AGSLocationDisplayAutoPanModeDefault; [self.mapView.locationDisplay startDataSource]; }
3.8.6 Implementace UC 05 – Změna průhlednosti ortofotomapy Abychom uživateli umožnili plynulé přecházení mezi podkladovou základní mapou a ortofotomapou, která ji překrývá, implementujeme její zprůhlednění pomocí slideru. Při načtení mapových podkladů je vrstva s ortofotomapou načtena s průhledností nastavenou na 50 %. Nastavit tuto hodnotu můžeme na přání zadavatele samozřejmě změnit. Pomocí slideru je pak možné tuto vrstvu buď zneviditelnit tak, aby byla viditelná pouze vrstva s MTVU, nebo naopak nastavit průhlednost tak, aby byla podkladová mapa MTVU zcela překryta. Z use case UC01 máme již připravený objekt ortofotoLayer a stejně jako v předchozím případě implementujeme metodu akce slideru (UISlider). - (IBAction)changeAlphaOfOrtofotoLayer:(UISlider *)sender { // set the Ortofoto layer's opacity based on the value of the slider self.ortofotoLayer.opacity = ((UISlider *)sender).value; }
3.8.7 Implementace UC 06 – Zpět na výchozí lokalitu Pro tuto funkcionalitu přípravíme metodu showInitialExtentOfPrague, kterou bude volat akce tlačítka (UIButton). Metoda samotná nejdříve vytvoří instanci AGSSpatialReference s parametrem WKID, což je well-‐known ID, které definuje souřadnicový system dané mapové služby. V našem případě je toto ID 102067, které je v systémech Esri přiřazeno souřadnicovému systému S-‐JTSK / Krovak East North.45 Dále definujeme dva páry souřadnic. xMin a yMin reprezentují dolní levy roh a xMax a yMax horní pravý roh požadovaného výřezu v mapě.
45
Souřadnicové systémy. ČÚZK [online]. [cit. 2014-04-15]. Dostupné z: http://geoportal.cuzk.cz/%28S%28d5owbfjthi40vhj2daicrn45%29%29/Default.aspx?mode=Text Meta&side=sit.trans&text=souradsystemy
56
Jako poslední definujeme instanci třídy AGSEnvelope, které předáme v parametrech požadováné souřadnice a definovaný souřadnicový system. Mapu zazoomujeme na tuto obálku. //set the spatial reference of map service MTVU AGSSpatialReference *sr = [AGSSpatialReference spatialReferenceWithWKID:102067]; double xMin= -742667.5056608246; double yMin= -1043562.0383790532; double xMax= -742270.629867073; double yMax= -1043548.8091859282; //set the envelope AGSEnvelope *env = [AGSEnvelope envelopeWithXmin:xMin ymin:yMin xmax:xMax ymax:yMax spatialReference:sr]; //zoom to the envelope [self.mapView zoomToEnvelope:env animated:YES];
3.9
Nasazení Obrázek 17: Diagram nasazení
Zdroj: Vlastní zpracování Jak je patrné z předchozího obrázku, aplikace je nainstalována na zařízení iPhone s operačním systémem iOS. Aplikace komunikuje s aplikačním serverem pomocí 57
výměnného formátu JSON. Pomocí tohoto formátu je aplikace schopná získávat mapové služby z ArcGIS Serveru. Aplikační server obsahuje ArcGIS Server, který je nainstalován na Apache Tomcat aplikačním serveru. ArcGIS Server se stará právě o poskytování mapových služeb a jejich komunikaci s geodatabází. ArcGIS Enterprise Geodatabáze je instalována na instanci Oracle, který je v našem případě provozován na Red Hat Enterprise Linux Server. 3.9.1 Licence Pro stažení aktuální verze ArcGIS SDK for iOS je třeba zřídit účet ArcGIS for Developers. Tento účet je zdarma a umožňuje vývojářům vyvíjet a testovat aplikace pomocí ArcGIS SDK. Spolu s účtem je každý měsíc k dispozici 50 kreditů, kterých lze použít například pro geokóding, vyhledávání tras, reportování, analýza dat a další.46 V aplikaci musíme zmínit použití ArcGIS SDE a to následovně: „Mapping API provided by Esri ArcGIS Runtime SDK for iOS“. Pokud bychom v budoucnu byli nuceni používat mapových podkladů přímo ze serverů Esri je nutné se i tom zmínit a to podle definice atributu Copyright text jednotlivých mapových služeb. Esri též vyžaduje použití loga na mapách ze serveru ArcGIS Online. Nakonec je třeba informovat Esri o záměru distribuce mapové aplikace skrze AppStore.47 K tomu je potřeba mít zřízen účet iOS Developer Standard Program, který je zpoplatněn částkou 99 $ za rok. Díky účtu můžeme aplikaci vyvíjet, analyzovat a testovat na našem zařízení IPhone a následně jí zveřejnit prostřednictvím Apple AppStore.48
46
Credits. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/en/credits/
47
License your app. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/ios/guide/license-yourapp.htm#ESRI_SECTION1_290852BC60EC4A4D842F9EF17C14CA44
48
iOS Developer Programs. Apple [online]. [cit. 2014-04-15]. Dostupné z: https://developer.apple.com/programs/ios/
58
3.10 Další možnosti vylepšení aplikace a optimalizace mapových služeb Po vytvoření pilotní aplikace jsem vyhodnotil několik možností, jak v budoucnu aplikaci a její mapové zdroje vylepšit nebo optimalizovat. Jedná se především o: Vytvoření vlastní geokódovací služby – Pro mobilní aplikaci, ale i pro již stávající webové aplikace jakož i práci v samotném ArcGIS Desktopu bude přínosem vytvoření vlastní geokódovací služby, která bude plně odpovídat požadavkům IPR Praha. Aktualizace dat v této službě bude možné provádět okamžitě, proto přesnost a aktuálnost dat bude mnohem vyšší, nežli ve službě World Geocoding Service firmy Esri. Je samozřejmé, že služba Esri, která obsahuje geolokační údaje z více než 100 států světa49, nemůže být zpřesňována a aktualizována stejným způsobem, jako služba vytvořená pro vlastní účely. Prozkoumat možnost využití mapových služeb v režimu offline – funkcionalita práce s mapovými podklady v režimu offline byla poprvé představena v ArcGIS SDK for iOS ve verzi 10.2. S příchodem nové verze 10.2.2, která byla uvolněna v březnu 2014, je možné tuto funkcionalitu již plně využívat.50 Uživatelům by tedy bylo umožněno pracovat i v případě, kdy by byl telefon z nějakého důvodu mimo dosah signálu. Dle slov Mgr. Jiřího Čtyrokého, PhD., ředitele sekce prostorových informací v IPR Praha51 by byla tato možnost vítána například zastupiteli města při územním rozhodování, a to právě v případě, kdy potřebují informace znát na místě, které není pokryto signálem mobilního operátora, nebo signálem Wi-‐Fi pro jejich notebook či mobilní telefon. Optimalizace mapových služeb – jelikož má mapová aplikace v současné době používá stávající mapové služby, které jsou primárně určeny pro desktopovou prezentaci, bylo by v budoucnu vhodné optimalizovat tyto služby pro použití v mobilních telefonech. Zejména se jedná o optimalizaci velikosti přenášených dat, kde již v současné době vidím pro použití v iPhone potřebu této optimalizace, ale
49
ArcGIS iOS SDK - API Reference. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/ios/api-reference/
50
Release notes for 10.2.2. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/ios/info/whats-new.htm
51
ČTYROKÝ, J. Ústní sdělení, Institut plánování a rozvoje hl. m. Prahy, Praha, leden 2014.
59
třeba i použití jiných barev, či symbologie. Jakým způsobem optimalizovat mapové služby je popsáno na stránkách ArcGIS Resources.52 Rozšíření funkcionalit mapové aplikace – Je možné přemýšlet, jak rozšířit mapovou aplikaci o další možnosti, které by usnadnily uživatelům ovládání mapy, ale třeba i detailněji výpsat informací o vybraném prvku v mapě a podobně. Vytvoření aplikace i pro další mapové služby -‐ Pokud se pilotní mapová aplikace osvědčí, bylo by vhodné rozšířit nabídku o další tematické mapové podklady. Může se jednat o samostatné aplikace na jednotlivá témata, nebo vytvořit jedinou aplikaci s možností přepínání mezi jednotlivými tématy. Například Cenová mapa, Hluková mapa, Cyklomapa, Atlas životního prostředí a jiné mapové aplikace dostupné na Geoportálu Praha53. Vytvoření verze pro iPad – Vytvoření verze pro iPad přinese uživateli větší přehlednost a lepší orientaci v mapě. Uživatel bude mít možnost využít dalších prvků uživatelského rozhraní, které by třeba na menším displeji iPhone překážely.
52
Designing and creating mobile maps using ArcGIS for Desktop. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/windowsmobile/app/index.html#//007v00000006000000
53
http://www.geoportalpraha.cz
60
4.
ZÁVĚR
Cílem této bakalářské práce bylo pomocí současných technologií a dostupných mapových podkladů vytvořit pilotní aplikaci Cenové mapy stavebních pozemků hl. m. Prahy, která je vyvíjena nativně pro mobilní telefony iPhone.
Ve své práci jsem popsal technologie, které bylo třeba k vývoji této aplikace
využít a shrnul tak problematiku propojení nativních mapových aplikací pro platformu iOS s mapovými službami vyvíjených v prostředí produktů Esri.
Díky této bakalářské práci jsem zjistil, jaké jsou možnosti vytvoření mobilních
mapových aplikací pro iPhone použitím stávajících mapových zdrojů.
Přínos vytvořené pilotní mapové aplikace vidím v možnosti rozhodnout, jak
konkrétně dále zlepšovat a optimalizovat poskytované mapové služby tak, aby co nejvíce vyhovovaly požadavkům využití v aplikacích mobilních telefonů.
V budoucnu budou aplikace vytvořené na základě této pilotní aplikace
užitečným a žádaným rozšířením nabídky poskytovaných služeb Institutu plánování a rozvoje hl. m. Prahy v rámci jeho Geoportálu, kde jsou v současné době dostupná pouze řešení v podobě webových aplikací.
V rámci bakalářské práce došlo ke splnění daných cílů a proto ji považuji za
úspěšnou.
61
5.
CONCLUSION
The goal of my bachelor‘s thesis was to create a pilot application for the Cenova mapa stavebnich pozemku hl. m. Prahy using contemporary technologies and available map services. The application has been developed as a native iPhone application.
In my thesis I have described the technologies used for this application devel-‐
opment and have summarized the problematics of interconnecting the native map applications for the iOS platform with the map services developed in Esri products.
Through this thesis I have discovered the possibilities of developing native
map applications for iPhone using available map services.
The benefit I believe of creating a pilot map application is in the possibility to
decide how to further improve and optimize the provided map services so that they best meet the requirements for usage in mobile applications.
In the future, new applications developed on this pilot application background
will be a useful and highly demanded extension to the portfolio of offered services of the Prague Institute of Planning and Development (IPR Praha) offered through its Geoportal, where at this time only web applications are available.
I consider all of the goals set in this bachelor‘s thesis to have been fulfilled and
I therefore consider this thesis to be successful.
62
6.
SEZNAM POUŽITÉ LITERATURY
A letter from Tim Cook on Maps. Apple [online]. [cit. 2014-04-09]. Dostupné z: https://www.apple.com/letter-from-tim-cook-on-maps/ About the iOS Technologies. Apple [online]. [cit. 2014-04-15]. Dostupné z: https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneO STechOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898-CH1SW1 Apple - iPhone - Compare Models. Apple [online]. [cit. 2014-04-10]. Dostupné z: http://www.apple.com/iphone/compare/ Apple Introduces the New iPhone 3G. Apple [online]. 9. 7. 2008 [cit. 2014-03-15]. Dostupné z: http://www.apple.com/pr/library/2008/06/09Apple-Introduces-the-NewiPhone-3G.html Apple iPhone global sales 2007-2014, by quarter. Statista [online]. [cit. 2014-04-15]. Dostupné z: http://www.statista.com/statistics/263401/global-apple-iphone-sales-since-3rdquarter-2007/ ArcGIS Runtime SDK for iOS. Esri [online]. [cit. 2014-04-15]. Dostupné z: https://developers.arcgis.com/ios/ ArcGIS Runtime SDKs. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://www.esri.com/software/arcgis/runtime/features ARCTUR, David a Michael ZEILER. Designing geodatabase: case studies in GIS data modeling. Redlands: ESRI Press, 2004, xiii, 393 s. ISBN 15-‐894-‐8021-‐X. Cocoa Touch Frameworks. Apple [online]. [cit. 2014-04-09]. Dostupné z: https://developer.apple.com/technologies/ios/cocoa-touch.html Common reasons for using map services. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/Common_reasons_for_using_m ap_services/015400000435000000/ CONWAY, Joe a Aaron HILLEGASS. IOS programming: the big nerd ranch guide. Atlanta: Big Nerd Ranch, 2012, xviii, 589 s. ISBN 978-0-321-82152-2. ČADA, Ondřej. Cocoa: úvod do programování počítačů Apple. 1. vyd. Praha: Grada Publishing, 2009, 199 s. ISBN 978-80-247-2778-3. FLEISHMAN, Glenn. How the iPhone knows where you are. Macworld [online]. 28. 4. 2011, 7:00 [cit. 2014-04-15]. Dostupné z: http://www.macworld.com/article/1159528/how_iphone_location_works.html
63
FORESMAN, Chris. Apple responds to Congress, swears location data is private. Ars Technica [online]. 20. 7. 2010 [cit. 2014-03-15]. Dostupné z: http://arstechnica.com/apple/2010/07/apple-responds-to-congress-swears-location-data-isprivate/ History Up Close. Esri [online]. [cit. 2014-04-11]. Dostupné z: http://www.esri.com/aboutesri/history/history-more CHARTIER, David. iPhone OS gets new name, video calling. Macworld [online]. 7. 6. 2010, 11:56 [cit. 2014-04-15]. Dostupné z: http://www.macworld.com/article/1151812/iphone_os_4_wwdc.html CHUNG, Carlo. Pro Objective-C design patterns for iOS. New York: Distributed to the book trade worldwide by Springer Science Business Media, c2011, xiv, 375 p. ISBN 14302-3330-3. iOS 4 Architecture and SDK Frameworks (iOS 4 Xcode 4). Techotopia [online]. [cit. 2014-04-15]. Dostupné z: http://www.techotopia.com/index.php/IOS_4_Architecture_and_SDK_Frameworks_%28i OS_4_Xcode_4%29 iOS SDK. In: Wikipedie: the free encyclopedia [online]. St. Petersburg (Florida): Wikimedia Foundation, 8. 3. 2008, 12:40, stránka byla naposledy editována 11. 4. 2014, 14:06 [cit. 2014-04-16]. Dostupné z: http://en.wikipedia.org/wiki/IOS_SDK MIKUDÍK, Radek a Adam POSPÍŠIL. Nové mapy v iPhonu navigují: po padesáti metrech skočte z mostu. iDnes.cz [online]. 14. 6. 2012, 15:35 [cit. 2014-03-15]. Dostupné z: http://mobil.idnes.cz/nove-mapy-v-iphonu-naviguji-po-padesati-metrech-skocte-z-mostup71-/iphone.aspx?c=A120614_000509_iphone_ram MIKUDÍK, Radek. Inovace pro iPhone: iOS 6 má nové mapy s úplnou navigací. iDnes.cz [online]. 11. 6. 2012, 23:22 [cit. 2014-03-15]. Dostupné z: http://mobil.idnes.cz/ios-6vlastni-mapy-facetime-i-pres-3g-vylepsene-volani-i-ppx/iphone.aspx?c=A120611_223435_iphone_ram NEVYHOŠTĚNÝ, Martin. Klasické mapy v ohrožení. Pohřbívají je mobily, navigace i politici. Lidovky.cz [online]. 12. 10. 2012 [cit. 2014-03-15]. ISSN 1213-1385. Dostupné z: http://byznys.lidovky.cz/klasicke-mapy-v-ohrozeni-pohrbivaji-je-mobily-navigace-ipolitici-p91-/firmy-trhy.aspx?c=A121010_154238_firmy-trhy_mev PAVT. Programování na OS X – Objective C a jeho výhody. In: Blog Živě.cz [online]. 19. 9. 2010 [cit. 2014-03-24]. Dostupné z: http://switch2mac.blog.zive.cz/2010/09/programovani-na-os-x-–-objective-c-a-jehovyhody/ Porting UNIX/Linux Applications to OS X. Apple [online]. [cit. 2014-04-10]. Dostupné z: https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/gl ossary/glossary.html
64
Raster basics. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/Raster_basics/003n0000000600 0000/ SCHÖN, Otakar. Google vydal mapy pro iOS, nechybí nic, ani streetview, informace o dopravě nebo navigace. IHNED.cz [online]. 13. 12. 2012, 10:24 [cit. 2014-03-15]. ISSN 1213 – 7693. Dostupné z: http://tech.ihned.cz/google/c1-58960560-google-mapy-proiphone SIEGLER, MG. In April, Apple Ditched Google And Skyhook In Favor Of Its Own Location Databases. TechCrunch [online]. 29. 7. 2010, 7:00 [cit. 2014-04-15]. Dostupné z: http://techcrunch.com/2010/07/29/apple-location/ SINGH, Amit. What is Mac OS X?. Osxbook.com [online]. prosinec 2003 [cit. 2014-0315]. Dostupné z: http://osxbook.com/book/bonus/ancient/whatismacosx/history.html TUČEK, Ján. Geografické informační systémy. Principy a praxe. 1. vyd. Brno: Computer Press, 1998, 424 s. ISBN 80-722-6091-X. Vyhláška o cenové mapě Prahy pro rok 2014. Dostupné z: http://www.praha.eu/file/1645720/vyhlaska_c._20.pdf What is a geodatabase?. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#//003n00000001000000 What is ArcMap?. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/What_is_ArcMap/018q0000000 3000000/ What is geodata?. Esri [online]. [cit. 2014-04-15]. Dostupné z: http://resources.arcgis.com/en/help/main/10.1/index.html#/What_is_geodata/019r0000000 2000000/
65
7.
SEZNAM POUŽITÝCH SYMBOLŮ A ZKRATEK
Zkratka
Popisek
A-GPS
Asistovaná GPS
ARC
Automatic Reference Counting – automatická správa paměti
CMP 2014
Mapová aplikace Cenová mapa stavebních pozemků hl. m. Prahy
ČUZK
Český úřad zeměměřický a katastrální
DBMS
Database management systems, jako například v našem případě Oracle
Esri
Společnost zabývající se vývojem softwaru určeného pro práci s GIS
Feature class
Třída prvků
GIS
Geografický informační systém
IDE
Integrated Development Environment – vývojové prostředí
IPR
Institut plánování a rozvoje hlavního města Prahy
OGC
Open Geospatial Consortium
SDK
Software development kit
ZABAGED
Základní báze geografických dat České republiky - polohopis
66
8.
SEZNAM OBRÁZKŮ
Obrázek 1: Chyby v prvních mapách systému iOS6 - Runway ve Vilniusu, Litva ............ 15 Obrázek 2: Jednotlivé vrstvy iOS ........................................................................................ 17 Obrázek 3: Aplikace CMP 2014 v prostředí Xcode ............................................................ 18 Obrázek 4: Způsob uložení geodatabáze v relačních databázích. ....................................... 24 Obrázek 5: Polygonová feature class, zapsaná jako business table v databázi.................... 25 Obrázek 6: Reprezentace jednotlivých features v mapě...................................................... 25 Obrázek 7: Hluková mapa Prahy ......................................................................................... 27 Obrázek 8: Náčrtek aplikace Cenová mapa Prahy............................................................... 34 Obrázek 9: Návrh řešení ...................................................................................................... 35 Obrázek 10: Výpis Google Analytics zobrazující přístup na mapovou aplikaci Cenová mapa stavebních pozemků hl. m. Prahy od 20. 3. 2014 do 4. 4. 2014 ........................ 36 Obrázek 11: Seznam use case.............................................................................................. 39 Obrázek 12: Třídní model.................................................................................................... 44 Obrázek 13: Jednotlivé mapové vrstvy tak, jak jsou uspořádány ve vzorové aplikaci Cenová mapa Prahy ..................................................................................................... 49 Obrázek 14: Vyhledání zájmového bodu a zobrazení všech výsledků................................ 54 Obrázek 15: Vyhledání konkrétní ulice a zobrazení všech výsledků .................................. 54 Obrázek 16: Vyhledání konkrétní ulice a zobrazení všech výsledků .................................. 55 Obrázek 17: Diagram nasazení ............................................................................................ 57
67
9.
SEZNAM TABULEK
Tabulka 1: Datové typy Oracle podporované v ArcGIS...................................................... 28 Tabulka 2: Standardy služeb nad prostorovými daty dle OGC ........................................... 31 Tabulka 3: Hlavní features aplikace CMP 2014.................................................................. 35 Tabulka 4: Specifikace nefunkčních požadavků ................................................................. 37 Tabulka 5: Popis use case .................................................................................................... 39 Tabulka 6: Popis jednotlivých tříd aplikace CMP 2014 ...................................................... 45
68
10.
SEZNAM PŘÍLOH
1. CD se zdrojovými kódy aplikace CMP 2014 a elektronickou verzí bakalářské práce Struktura CD je následující: !
source_code/ - adresář s aplikací CMP 2014 o source_code/CMP2014/ - zdrojový kód aplikace CMP 2014 o source_code/readme.txt – nápověda k instalaci aplikace CMP 2014
!
BP_Bares_Vit_ucl6932-1.pdf – elektronická verze této bakalářské práce
69