<\/HEAD>
Požadavky se mění. Zatímco dříve byla digitální zpracování dat výhradně omezena na kancelář, dnes máte stále více možností tuto práci vykonávat i na cestách.<\/SPAN><\/P><\/P>V mnoha scénářích je to také nezbytné: například kontrola poškození silnic správcem silnic – žádné dodatečné zpracování informací zaznamenaných na papíře. Místo toho lokalizované sbírání dat, obohacené o snímky poškození a okamžitý tok informací, na který může dispečer okamžitě reagovat.<\/SPAN><\/P><\/P>Nebo na příkladu lesní správy: Kde nejsou k dispozici adresní údaje, potřebujete GPS data pro správu a nalezení skladovacích míst dřeva. To umožňuje i řidičům nákladních vozidel neznalým oblasti nabídnout popis polohy nebo dokonce navigaci.<\/SPAN><\/P><\/P>Technologie pro to existuje již několik let a je nabízena společností Esri v různých produktech, které ideálně odpovídají požadavkům. Jedním z nejnovějších členů této produktové rodiny je ArcGIS Runtime SDK for .NET<\/A>. Jedná se o vývojářský nástroj pro platformu Microsoft, pomocí kterého lze vytvářet aplikace pro Windows Desktop, Windows Store a Windows Phone – tedy pro celé spektrum od telefonu přes tablet až po klasický desktop. A to vše s jediným frameworkem.<\/SPAN><\/P><\/P>
Všechny "ArcGIS Runtime" SDK mají společnou offline funkčnost. Tato jádrová funkce zavedená ve verzi 10.2.3 přináší všechny nástroje pro správu dat lokálně a bez síťového připojení a následnou synchronizaci s centrální databází (jako je
ArcGIS Online Cloud<\/A>). Jsou možné architektury kombinující různé produkty ArcGIS: V jedné z realizací Esri Deutschland Collector Light Demo<\/A><\/STRONG> je ukázáno, že .Net klient a Java klient – každý založený na ArcGIS Runtime SDK – mohou spravovat data offline. Tato demo dokonce dosahuje toho, že offline cache je jednotně strukturovaná a tím pádem stejně využitelná pro oba klienty.<\/SPAN><\/P><\/P>
Na příkladu .NET demo budou vysvětleny některé postupy a poskytnuty tipy, které mohou pomoci při realizaci vlastní aplikace. Všechny ukázané části kódu a screenshoty najdete v demoprojektu tak či podobně.<\/SPAN><\/P><\/P>Demoprojekt je postaven podle konceptu MVVM a využívá 3rd Party Toolkit nazvaný
MVVM Light<\/A>. Koncept předpokládá oddělení UI od business logiky, což umožňuje vyměnitelnost rozhraní a opětovné použití logické vrstvy v různých aplikacích na různých platformách.<\/SPAN><\/P><\/P>
Krátce k myšlence demo aplikace: Můžete se přihlásit do Esri Cloud přes ArcGIS Online účet a následně vyhledávat mapy připravené pro offline použití. Pokud se pohybujete s účtem v organizaci, uvidíte nejen své vlastní mapy, ale všechny, které byly sdíleny kolegy pro společné použití. Libovolně si můžete vybrat mapu a zpřístupnit její verzi offline, kterou pak můžete používat i bez síťového připojení. Je možná i editace dat.<\/SPAN><\/P><\/P>
Má někdo mapu?\
\n
\nTo byla první část příprav, máme už uživatelský účet i Client ID pro naši aplikaci. Co ale ještě chybí jsou mapy, které pak můžeme používat offline. Protože kdybychom teď začali pracovat s demem, mohli bychom se sice úspěšně přihlásit, ale při hledání bychom nenašli žádné výsledky.<\span>\n\nTakže si nyní vytvoříme mapu, přesněji řečeno Web Mapu. Přejděte do "Vlastního obsahu", kde už vidíte svou registrovanou aplikaci.<\span>\n\n
\n\nNovou mapu vytvoříte kliknutím na "Vytvořit->Mapa". V následujícím okně zadáme mapě název (pro zachování jednotného schématu: "My cool Map") a definujeme tagy. Tagy jsou opět nutné, protože podle nich lze mapy později vyhledat pomocí klíčových slov. Doporučují se tematické a místní klíčová slova jako "offline" a "Mnichov".<\span>\n\nPo potvrzení vytvoření mapy tlačítkem "Ok", uvidíte prázdnou světovou mapu. Zde můžete základní mapu libovolně měnit a hlavně přidávat vrstvy s daty. Mohou to být vaše vlastní data nebo veřejně dostupná data.<\span>\n\nKlikněte na " Přidat->Vyhledat vrstvu ". Zadejte do zadejte do vyhledávání „Schadensmeldung Freising“ a u místa „ArcGIS Online“. Odstraňte zaškrtnutí u „Innerhalb der Kartenausdehnung“, pokud nedostanete žádný výsledek. Přidejte tato data do své mapy pomocí „Hinzufügen“. Vyberte vrstvu škod a klikněte na „Zoomen auf“, čímž se změní aktuální i budoucí výchozí rozsah mapy. Uložte mapu a přepněte zpět do zobrazení „Eigene Inhalte“.<\/SPAN><\/P><\/P>Nyní uvidíte další položku typu Web Map, právě vytvořenou mapu. Klikněte na název mapy, čímž se dostanete do zobrazení vlastností. Jedna z těchto vlastností se nazývá „Offline-Modus“, za kterou již stojí „Aktiviert“. Pro možnost offline použití mapy je toto nastavení nutné. Pokud u vás stojí „Deaktiviert“, klikněte na „Bearbeiten“ a zaškrtněte „Offline-Modus aktivieren".<\/SPAN><\/P><\/P>Kdo jsem?<\/SPAN><\/H1>Potřebné přípravy jsou tímto dokončeny, nyní se můžeme věnovat demo aplikaci. Při prvním spuštění požaduje zadání App ID. Zadejte zde Client ID, kterou jsme obdrželi při registraci aplikace.<\/SPAN><\/P>
<\/SPAN><\/P>Po uložení App ID se dostanete na úvodní obrazovku.<\/SPAN><\/P><\/P>První cesta vede k přihlášení, kde to bude poprvé zajímavé. Zobrazí se totiž přihlašovací stránka:<\/SPAN><\/P>
<\/SPAN><\/P>Co je na tom zajímavého? Přihlašovací stránka je dynamicky načítaný webový obsah, který se zobrazuje v ovládacím prvku prohlížeče. Podle požadované URL se obsah může mírně lišit od zobrazené obrazovky, například co se týče názvu aplikace, autora nebo jazyka. V zásadě je však struktura stejná.<\/SPAN><\/P><\/P>Používá se standardní postup pro přihlášení, který je podrobně popsán na stránkách ArcGIS Developer. Je požadována pouze jedna ArcGIS URL:<\/SPAN><\/P>https:\/\/www.arcgis.com\/sharing\/oauth2\/authorize?client_id=P61TE38ydg2L7y30&response_type=code&redirect_uri=urn:ietf:wg:ooob<\/SPAN><\/P><\/P>Jedná se o Rest Endpoint, který autorizuje uživatele vůči ArcGIS. Tento vyžaduje Client ID, kterou jsme registrovali pod naším účtem a která je součástí URI. Zbytek URL je pevně definován a vysvětlen na developerské webové stránce.<\/SPAN><\/P><\/P>Tento postup má několik výhod: výrazně snižuje vývojovou námahu, protože stránka je automaticky generována serverem a přizpůsobuje se konfiguraci. Přihlašovací oblast je také zahrnuta, jako vývojář nemusím řešit chybové stavy při nesprávných pokusech o přihlášení a nezáleží na tom, zda chci autorizovat vůči ArcGIS Cloud nebo portálovému řešení.<\/SPAN><\/P><\/P>Po provedení autorizace je token, který přijde jako odpověď z platformy ArcGIS, uložen do centrálního, sdíleného (=statického singleton) objektu IdentityManager:<\/SPAN><\/P>
<\/SPAN><\/P>Jak název napovídá, funguje jako centrální správa identity. Jakmile je požadována služba ArcGIS, automaticky se kontroluje, zda existuje uložené oprávnění pro tuto službu. Pokud neexistuje nebo pokud oprávnění vypršelo, přístup ke službě není povolen.<\/SPAN><\/P><\/P>Ukaž mi, co máš<\/SPAN><\/H1>Jsme tedy nyní schopni se v aplikaci přihlásit. Nyní chceme zjistit hlavní účel aplikace: možnost používat mapy offline.<\/SPAN><\/P><\/P>Nejprve musíme vyhledat dostupné objekty, které může naše aplikace použít. To probíhá v metodě SearchArcgisOnline()<\/SPAN> třídy ArcGisPortalWebMapItemsViewModel<\/SPAN>. Nejprve je vytvořena instance ArcGIS Portalu, která obecně slouží k dotazům vůči platformě ArcGIS (tedy ArcGIS Online nebo Portal for ArcGIS):<\/SPAN><\/P>
Když se podíváte na objekt _arcGisPortal po vykonání příkazu , zjistíte , že přihlášení proběhlo pod naším dříve použitým loginem : < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> < img __jive_id = " 55830 " alt = " 8.png " class = " image-8 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 55830_8.png " style = " height : auto ; " /> < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> Přiřazení zde provedl IdentityManager , který našel vhodné přihlašovací údaje pro dotaz vůči ArcGIS Online . < / span > < / p > < p > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> Dále chceme v aplikaci zobrazit všechny mapy , které lze uložit offline . Následující dotaz hledá všechny mapy (= Web Maps), které jsou určeny k offline ukládání . Abychom ukázali , jak lze vyhledávání dále omezit , hledáme pouze v rámci organizace takové mapy . Text vyhledávání „ SearchText “ pochází z uživatelského rozhraní aplikace a umožňuje další omezení vyhledávání : < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> < img __jive_id = " 55831 " alt = " 9.png " class = " image-9 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 55831_9.png " style = " height : auto ; " /> < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> Nakonec zadáme několik nastavení vyhledávání a odešleme dotaz : < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> < img __jive_id = " 55832 " alt = " 10.png " class = " image-10 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 55832_10.png " style = " height : auto ; " /> < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> Protože jsme na začátku vytvořili Web Map s názvem „My cool Map“, hledáme klíčové slovo „cool“. Vyhledávání nám v našem případě vrací přesně jeden výsledek : < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> < img __jive_id = " 55833 " alt = " 11.png " class = " image-11 jive-image " src = " https : // us.v-cdn.net / 6038851 / uploads / legacyfs / online / 55833_11.png " style = " width : 620px ; height : 477px ; " /> < / span > < / p > < p > < span style = " font-family : trebuchet ms , geneva ; "> Proč právě jeden výsledek? Samozřejmě vidíme naši vlastní mapu, kterou jsme vytvořili. Určitě mnoho dalších lidí také považuje práci s ArcGIS za „cool“, takže by pravděpodobně existovalo více „cool map“. Ty však ve výsledcích vyhledávání nejsou zobrazeny, protože část našich kritérií vyhledávání omezuje výsledky pouze na objekty naší vlastní organizace. I když nejsme součástí velké firmy, ale jen jednočlenné společnosti („1-Mann“ Unternehmen), jsme vedeni jako vlastní organizace.< / span > < / p > < p >< / p >< h1 id=„toc-hId-401840446“ >< span style=„font-family: trebuchet ms,geneva;“>Dej sem to!< / span >< / h1 >< p >< span style=„font-family: trebuchet ms,geneva;“>Tak – jdeme na to. Nyní si tuto Web Map stáhneme lokálně. Klikněte na tlačítko „Get the map offline“ uvnitř objektu mapy a hned přejdeme na novou stránku, kde se zobrazí obsah Web Mapy. V třech krocích získáme naši offline mapu: Nejprve našemu budoucímu Cache dáme jedinečný název, poté označíme (částečnou) oblast, která má být dostupná offline, a stahování spustíme tlačítkem „Export Map“:<\/SPAN><\/P>
<\/SPAN><\/P>Další přechod na stránku nás automaticky přenese do zobrazení všech offline dostupných Cache. Tato sbírka je – v závislosti na tom, kolik jste s aplikací již pracovali – více či méně rozsáhlá, v mém případě už existuje několik Cache. Cache jsou seskupeny podle Web Maps, protože je zcela možné pro stejnou Web Map načíst různé Cache (například s různými výřezy mapy). Skupinu lze minimalizovat tak, že jsou viditelné pouze některé informace o Web Map.<\/SPAN><\/P><\/P>Nový Cache, který se právě stahuje, je aktivně označen pomocí běžícího pruhu, navíc stavový řádek v objektu Cache poskytuje informace o aktuálním procesu. Každý objekt Cache má také tlačítka pro odstranění, synchronizaci a načtení Cache.<\/SPAN><\/P>
<\/SPAN><\/P>Zatímco čekáme na Cache, podíváme se krátce do kódu, co se vlastně děje.<\/SPAN><\/P><\/P>Hlavní roli hraje třída CreateOfflineMapViewModel<\/SPAN>. Ta je zodpovědná za vytváření Cache. Centrálním vstupním bodem je metoda ExportMap()<\/SPAN>, která byla vyvolána kliknutím na „Export Map“. Samozřejmě zde najdeme centrální funkce, které ukládají to nejdůležitější z Web Map:#_msocom_1<\/A> <\/SPAN>geografická data, tedy základní mapu a data prvků.<\/SPAN><\/P>
<\/SPAN><\/P>Kdo už pracoval s Esri Offline daty (např. s ArcGIS for Windows MobileSDK nebo aplikací Collector for ArcGIS), ten tento proces zná v zásadě již. Základní mapa a vektorová data jsou ukládána odděleně. To je jednak kvůli odlišnému zpracování rastrových a dat prvků, ale samozřejmě také kvůli rozdílné datové struktuře: Základní mapa je ve formátu tzv. Tiled Package, což je zipovaná složka se strukturou dlaždicových obrázků. Vektorová data jsou naopak uložena ve struktuře databáze, konkrétně ve formátu SQLite. V našem případě končí SQLite databáze v souborovém systému příponou „geodatabase“, což je však volitelné.<\/SPAN><\/P>
<\/SPAN><\/P>Než však začne samotný export geodat, stane se ještě něco jiného:<\/SPAN><\/P>
<\/SPAN><\/P>Zde jsou informace o Web Map uloženy lokálně. Je třeba vědět, že Web Map je v podstatě
konfigurační soubor ve formátu JSON<\/A>, který sám neobsahuje data, ale spíše informace o tom, kde data leží. Také jsou zde uloženy informace o samotné definici mapy jako Id, titul, vlastník, datum vytvoření atd. Tyto dvě informace získáte od Web Map, což je online definovaný objekt, ke kterému nemáte přístup při práci offline. Aby byly tyto informace dostupné i offline, byl v demo aplikaci zabudován mechanismus, který při exportu ukládá definice Web Map lokálně a tím je zpřístupňuje za všech okolností.<\/SPAN><\/P><\/P>
Všechno nové dělá App<\/SPAN><\/H1>Mezitím je Cache plně stažený. Nyní s ním můžeme dělat tři věci: Můžeme ho zobrazit na mapě, synchronizovat a odstranit.<\/SPAN><\/P><\/P>Nejprve se zaměříme na zobrazení načteného Cache a proto klikneme na „Load map“.<\/SPAN><\/P>
<\/SPAN><\/P>Otevře se nová záložka nazvaná „Map“ a v zobrazení vidíme mapu a seznam všech editovatelných vrstev. Pokud vyberete vrstvu, můžete na mapě kliknout na bod a tak vytvořit nové objekty v této vrstvě. Pro jednoduchost demo nevyžaduje zadávání atributů, vytváří se pouze geometrie, což by ale byl další krok ve kompletní aplikaci.<\/SPAN><\/P><\/P>To, že byly na vrstvě provedeny změny, je indikováno tím, že za příslušnými vrstvami v seznamu vrstev je uveden počet úprav. Jakmile dojde ke změnám v Cache, má smysl jej synchronizovat, což je poslední krok, který chce demo ukázat.<\/SPAN><\/P><\/P>Pro tento účel se opět přepneme do záložky „Config“ a vybereme u našeho Cache funkci „Sync“. Opět se zobrazí načítací pruh, tentokrát však ne s popisem exportu, ale s názvem synchronizace. Na rozdíl od exportu se při synchronizaci porovnávají provedené změny a ty jsou centrálně aplikovány. Lokální změny jsou nahrány nahoru a změny od ostatních klientů staženy dolů.<\/SPAN><\/P>
Finále, oh oh<\/>\
\Co chtěl tento článek dosáhnout? Za prvé by měly být ilustrovány některé typické otázky a postupy offline aplikace. Ve spojení s odkazem na Collector Light Demo aplikaci jste tak schopni si jednotlivé kroky prohlédnout a také pochopit. To vám může pomoci vyřešit vaše otázky nebo vám alespoň dát pár nápadů, jak byste mohli některé věci řešit.<\/>\K demu ještě toto poznamenání: Vývoj začal již na základě beta verze ArcGIS Runtime for .NET. Tak jsme u Esri Deutschland získali brzy náhled do vývoje a mohli jsme také získat zkušenosti. Od raných beta verzí vyšlo několik nových verzí přinášejících řadu cenných změn. Kromě toho existují nyní další
Toolkits<\/> a příklady<\/> ukazující řadu řešení. Nebuďte proto překvapeni, pokud pro jeden problém najdete různá řešení. Někdy jsou rovnocenná, jindy mají řešení různé výhody.<\/>\Pokud máte další otázky nad rámec těchto informací a chcete individuální poradenství, neváhejte kontaktovat Esri Deutschland – náš konzultační tým vám rád kompetentně pomůže.<\/>