Často je požadavkem v mapách, aby byly prvky vrstvy zobrazeny různými symboly, aby bylo možné je vizuálně odlišit. Například ve vrstvě s prvky stromů. Pokud není nic jiného nakonfigurováno, mají stromy na mapě vždy stejný symbol. Pomocí Unique Value Symbology lze však vrstvu upravit tak, že například pro každý typ stromu se zobrazí vlastní symbol, viz následující obrázek:<\/P>
<\/P>
Unique Value Symbology<\/span><\/P>Toto je doporučené řešení, pokud není příliš mnoho rozlišení (permutací). Ale co když počet dosahuje stovek/tisíců a možná jsou potřeba i složité symboly? <\/P>Od tohoto bodu by se mělo uvažovat o použití Dictionary Symbology. Nejznámějším příkladem jsou zde Military Symbology Styles s tisíci různých a částečně velmi složitých symbolů, které jsou v armádní oblasti potřebné pro taktické mapy.<\/P> <\/P>
Dictionary Symbology – Military Symbology Styles<\/span><\/P>Abych to řekl hned na začátku, vrstvy s Dictionary Symbology nelze zobrazit v legendě mapy, jako například na screenshotu Unique Value Symbology výše. Legenda se stovkami symbolů by také nebyla příliš užitečná.<\/P> <\/H4>Styl Dictionary Symbology<\/H4>S Dictionary Symbology Styles jsou symboly dynamicky generovány za běhu na základě vstupních hodnot. Existují různé typy stylů, v tomto blogu se vše dále vztahuje na Mobile Styles a Web Styles. Ve stylu mohou být symboly pro různé geometrie (bod, linie, polygon). Vstupní hodnoty jsou typicky atributové informace prvků, které mají obdržet odpovídající symbol na mapě. To znamená, že styl musí být předem vytvořen se všemi potřebnými komponentami, aplikační logikou a možnostmi konfigurace. Jak to lze realizovat, je velmi pěkně popsáno v tomto ArcGIS Blogu.<\/P>Výsledkem je Mobile Style, což je SQLite databáze s příponou souboru .stylx. Ta může být přímo použita v ArcGIS Pro a v ArcGIS Maps SDKs for native (také ArcGIS Runtime) offline, ale také publikována jako Web Style Service a tím použita jak v desktopových aplikacích, tak ve webových aplikacích.<\/P>Tolik k teorii. Pro lepší pochopení Dictionary Symbology je stejně jako u všeho vhodné si vše vyzkoušet v praxi. K tomu jsem mírně upravil Mobile Style pro restaurace od autora výše zmíněného ArcGIS Blogu a zpřístupnil ho:<\/P>ke stažení jako Mobile Style (stylx soubor)<\/LI>publikovaný jako Web Style Service v ArcGIS Online<\/LI>a odpovídající Restaurant-FeatureService pro testování stylu v aplikacích.<\/LI><\/UL>Náš Restaurant Mobile Style generuje na základě atributů složité symboly, které na první pohled ukazují název, typ restaurace (zde Pizzerie), hodnocení, otevírací dobu a další informace bez nutnosti otevírat popup.<\/P> <\/P>
Komponenty symbolu restaurace<\/span><\/P> <\/H4>Vytvoření nebo úprava Mobile Style<\/H4>Mobile Styles se vytvářejí nově v ArcGIS Pro. Existující lze také použít jako šablonu pro nové styly, protože mají stejnou strukturu. Mobile Styles lze samozřejmě také upravovat. K tomu je potřeba ArcGIS Pro pro tvorbu/upravení grafických a textových komponent symbolů a SQLite DB Editor (např. DB Browser for SQLite) pro aplikační logiku a konfiguraci stylu.<\/P>V ArcGIS Pro stačí přetáhnout Restaurant Mobile Style do katalogu, kde se zobrazí pod Styly. Pravým kliknutím na něj se zobrazí možnost správy stylů. Po dvojkliku na Restaurant Style ve správci lze upravovat existující komponenty nebo vytvářet nové.<\/P>Po otevření stylu v SQLite DB Editoru jsou možnosti úprav v tabulce meta. Pod dictionary_configuration jsou konfigurace, v našem stylu pouze možnost zapnout/vypnout zobrazení názvu restaurace ve symbolu. A pod dictionary_script je aplikační logika jako ArcGIS Arcade skript, v našem případě mimo jiné výpočet hvězdičkových komponent na základě hodnot hodnocení.<\/P> <\/H4>Publikování Web Style Service<\/H4>Mobile Styles lze publikovat pomocí ArcGIS Pro do ArcGIS Online a ArcGIS Enterprise. Stačí v katalogu kliknout pravým tlačítkem na požadovaný styl a vybrat Share as Web Style. Už jsem to připravil, ale každý si může z Restaurant Mobile Style publikovat svůj vlastní Web Style Service. Při publikování se vytvoří struktura několika JSON souborů obsahujících všechny informace o stylu a přístupných přes URL. Web Style tedy nepoužívá Mobile Style na pozadí žádným způsobem.<\/P>Zde malý tip: Web Styles lze také hostovat na vlastním webovém serveru. Stačí pomocí AGOL Assistant stáhnout JSON soubory pomocí Download All (kliknout na tři tečky u položky stylu a vybrat View Item Resources) a rozbalenou strukturu publikovat tak jak je. Pravděpodobně bude potřeba ještě pár nastavení na straně webserveru pro přístup.<\/P> <\/H4>Použití Dictionary Symbology v ArcGIS Pro<\/H4>V ArcGIS Pro mohou vrstvy používat jak Mobile Styles tak Web Styles pro symbologii. Pro naše restaurace by to byly následující kroky:<\/P>Přidat mapu<\/LI>Přidat nofollow noreferrer">Restaurant-FeatureService v Ribbon-Item Přidat data s Data from Path jako vrstvu přidatPravým tlačítkem myši klikněte na vrstvu a vyberte SymbologyV nabídce Symbology vyberte pod Primary Symbology DictionaryV rozbalovací nabídce More klikněte na možnost Add dictionaryZde lze vybrat buď Restaurant Mobile Style ze souborového systému, nebo Web Style (vyhledat podle názvu nebo ID Web Style v Portal/ArcGIS Online)Pod Symbology Fields a Text Fields lze zadat odpovídající názvy polí atributů prvků, pokud se liší od definovaných vstupních hodnot stylu. V našem případě může vše zůstat tak, jak je.Pokud chcete, změňte konfiguraci (text zapnuto/vypnuto)
Dictionary Symbology in ArcGIS Pro
Využití Dictionary Symbology v ArcGIS Maps SDKs for native
Ve všech ArcGIS Maps SDKs for native, stejně jako v ArcGIS Pro, lze pro vrstvy používat jak Mobile Styles, tak i Web Styles pro symbologii. Pro naše restaurace jsou k dispozici odpovídající ukázky v dokumentaci, například zde pro .NET. Kód lze převzít kompletně, pouze cesty/ID k našim vlastním stylům je třeba případně vyměnit. V ukázkových prohlížečích příslušných SDK si to můžete také vyzkoušet živě. Tento prohlížeč je dostupný v příslušných App Stores (Microsoft, Apple, Google, tam hledejte ArcGIS Samples) a ke stažení pro Java a Qt. Naše ukázka se všude jmenuje Custom dictionary style.
Dictionary Symbology in ArcGIS Maps SDKs for native
Metody pro přepsání názvů polí atributů prvků, pokud nevyhovují, nebo nastavení konfigurace (text zapnuto/vypnuto) jsou popsány v dokumentaci příslušného SDK, například zde opět pro .NET.
Zajímavá je také možnost získat symboly ze stylu přímo bez mapy. To by bylo řešení například pro symboly pro „jednotlivé grafiky“ v GraphicsOverlays bez rendereru, vlastní výběr symbolů pro editaci nebo použití symbolových obrázků mimo mapové ovládací prvky v tabulkách či na tlačítkách. Jak na to, je také popsáno v dokumentaci, zde pro .NET. Obrázky k použití mimo mapové ovládací prvky lze následně vytvořit pomocí metod Symbol.CreateSwatchAsync() a RuntimeImageExtensions.ToImageSourceAsync().
Využití Dictionary Symbology v ArcGIS Maps SDKs for JavaScript
Pro Dictionary Symbology ve webových aplikacích lze použít pouze Web Styles. S ArcGIS Maps SDKs for JavaScript lze v zásadě dělat totéž co v nativních SDK. Pro jednoduchost jsem zveřejnil JS kód pro náš příklad restaurace na CodePen.
Dictionary Symbology in ArcGIS Maps SDKs for JavaScript
I s ArcGIS Maps SDKs for JavaScript lze získat symboly stylu pro „jednotlivé použití“ ve GraphicsLayer nebo jako obrázky mimo mapu v jiných ovládacích prvcích. K tomu jsem také připravil malý příklad na CodePen. Trik spočívá v tom, že se DictionaryRenderer pomocí metody GetSymbolAsync() předá Graphic pouze s tabulkou atributů. Ta vrátí odpovídající symbol, který lze použít jako symbol nové Graphic ve GraphicsLayer nebo jako obrázek mimo mapu pomocí metod objektu symbolUtils.
Pokud máte otázky nebo návrhy k tomuto tématu, jednoduše použijte funkci komentářů. Jinak přejeme hodně zábavy a úspěchů při zkoušení!