Select to view content in your preferred language

Přizpůsobení metadatového editoru ArcGIS Pro

713
0
08-09-2023 11:49 PM
RobertSpal
New Contributor II
5 0 713

Potřebovala by vaše organizace upravit metadatový editor ArcGIS Pro tak, aby bylo možné uchovávat si vlastní metadatové položky, které nejsou standardně k dispozici? Pak jsou následující řádky určené právě vám. 

Pro správu a editaci metadat využíval Institut plánování a rozvoje hlavního města Prahy (dále jen IPR) dlouhé roky metadatový editor ArcMap. Vzhledem k pomalému ale jistému zániku ArcMapu však vyvstala nutnost přemigrovat metadata do prostředí ArcGIS Pro. 

Jelikož má IPR několik vlastních metadatových položek, které nejsou standardní součástí žádného z metadatových profilů ArcGIS Pro, bylo nutné tyto změny doprogramovat a vytvořit doplňek pro ArcGIS Pro, který by tyto potřeby reflektoval. Následující odstavce se vám proto pokusí přiblížit, jak takové změny můžeme dosáhnout a na co vše si dát pozor, když potřebujeme přidat vlastní metadatová pole do ArcGIS Pro. Jelikož IPR musí mít metadata v souladu s českou lokalizací INSPIRE, tak zde nakousneme také řešení problému, kdy bylo nutné upravit příslušný .xslt soubor tak, aby naše metadata mohla být validována oproti českému INSPIRE.

RobertSpal_0-1691404462824.png

Obr. 1. Metadatový editor ArcGIS Pro.

Příprava, instalace a nastavení

Pro začátek je nutné stáhnout a nainstalovat metadata toolkit, který naleznete na GitHubu Esri. Je to vlastně souhrn různých souborů, pomocí kterých dokážeme upravit předmětný editor v ArcGIS Pro vytvořením vlastního add-inu (doplňku). Na stejné stránce naleznete i podrobný návod, jak krok za krokem postupovat. 

Po stažení a instalaci je také nutné správně nastavit celý projekt, s čímž vám opět pomůže návod

Důležité je vědět, že pro práci budete potřebovat Microsoft Visual Studio a měli byste také mít alespoň základní znalosti fungování .xslt a .xaml. V menší míře budete potřebovat také základy C#. 

Přidávání a editace vlastních položek

Jakmile máme instalaci hotovou, měli bychom mít celý projekt se všemi soubory otevřený a přístupný ve Visual Studiu, kde budeme dále pracovat. Projekt obsahuje velké množství souborů, ale pro naše účely jsou důležité Config.daml, obsah složky Pages a Resources.resx ve složce Properties. Config.daml kromě jiného kontroluje, jaké stránky se mají zobrazovat v editoru, které z nich jsou povinné nebo nepovinné, využití exportérů, importérů atd. Představte si jej jako menu pro nastavení editoru. Složka Pages pak obsahuje zdrojový kód pro konkrétní stránky editoru. Soubory, které zde najdete, vám umožňují kontrolovat, jak budou jednotlivé stránky vypadat a jak se budou chovat. Resources.resx zase kontroluje textové popisy tlačítek, polí a jiných prvků stránky.

Vzhledem k velmi výrazné hloubce problému zde bohužel nemůžeme popisovat krok po kroku jednotlivá nastavení položek Config.daml nebo jiných souborů. Doporučujeme si je proto podrobně projít z předešlých linků z návodu toolkitu, abyste se dozvěděli, jak přidávat, upravovat nebo odebírat jednotlivé prvky editoru. Samotný návod obsahuje také několik ukázek přidávání vlastních položek jednoduchého typu a pro lepší pochopení problematiky doporučujeme projít si alespoň jednu z nich. 

Na následujících řádcích se budeme věnovat přidání složitějšího metadatového prvku do editoru a zvládnutí příkladů z ukázek nám tak může v mnohém pomoci pochopit celý problém.

Přidání vícenásobného vyskakovacího menu

Řekněme, že do editoru potřebujeme přidat vlastní metadatovou položku, která musí splňovat následující parametry:

  • Je to vícenásobná položka, tzn. že může být použita 0 až n-krát.
  • Položka je kontrolovaná, tzn. že může nabývat jen předem definované hodnoty.

RobertSpal_1-1691404502473.png

Obr. 2. Příklad kontrolované a vícenásobné metadatové položky „Datový sklad“. Datový sklad může nabývat jen hodnoty obsažené v rozbalovací nabídce. Pro zadání libovolného počtu dalších hodnot z nabídky je nutné položku přes ovladač plus „+“ zduplikovat, v případě potřeby křížkem „x“ zrušit.

Položku potřebujeme přidat do existující stránky editoru (návod pro vytvoření zcela nové stránky najdete zde). V případě IPR jsme potřebovali takovou položku přidat do stránky Overview > Topics & Keywords (Přehled > Kategorie & Klíčová slova). Musíme tak lokalizovat příslušný soubor .xaml ve složce Pages v našem projektu ve Visual Studiu. Jelikož názvy souboru .xaml nejsou identické jako názvy stránek editoru, je nutné najít takový, který alespoň přibližně odpovídá. V našem případě to je keywords.xaml. Kontrolou obsahu souboru pak dokážeme identifikovat, jestli jsme zvolili správně. 

Soubor má dvě hlavní části, UserControl.Resources a Grid. UserControl.Resources slouží pro definici XML data providerů, tedy xml elementů, které se do metadat mají zapsat. Grid pak kontroluje, co a jak se zobrazí na stránce. Když si obě části projedeme, shledáme, že grid obsahuje dané elementy editoru a UserControl.Resources obsahuje k nim náležící xml elementy. Prvky gridu musí odkazovat na xml element v UserControl.Resources. Bez této provazby by se námi zvolené hodnoty nazapsaly do metadat.

 

Prvním krokem, který proto musíme udělat, je vytvořit si xml element v UserControl.Resources, do kterého se zvolené hodnoty budou zapisovat. Na IPR jsme si takto vytvořili xml element s názvem DatastoreInfo, který obsahuje subelement DatastoreDescription. Další důležitou součástí je také x:Key, který slouží jako identifikátor xml prvku a slouží k spárování s prvkem v gridu. V našem případě je to XmlRecord_DatastoreDesc a výsledný xml element tak vypadá následovně:

RobertSpal_2-1691404536724.png

Obr. 3. Vytvoření příslušného xml elementu.

V sekci UserControl.Resources máme hotovo a teď se přesuneme do gridu. Zvolíme si, do které části gridu chceme, aby byl náš nový prvek umístěn (tak jak prvky v gridu následují po sobě v kódu, tak jsou poskládány v editoru), a máme dvě možnosti, jak takový prvek vytvořit. Buďto si jej kompletně napíšeme sami, anebo můžeme zkopírovat už existující prvek a jenom si ho upravit dle potřeb. Jelikož metadatový editor obsahuje všechny možné variace metadatových elementů, tak je jednodušší identifikovat, který z nich chceme, kde se ve složce Pages nachází, zkopírovat ho a vložit do stejné stránky, v jaké jsme si vytvořili xml element a ve které pracujeme. Obdobný prvek, jaký chceme přidat, najdete například na stránce Metadata > Maintenance (Metadata > Údržba) a jmenuje se Update Scope. Když si proto identifikujeme daný prvek ve souboru .xaml ve složce Pages, tak ho stačí zkopírovat a vložit do naší stránky. Následně je ještě potřebné upravit některé části tohoto elementu.

RobertSpal_3-1691404568567.png

Obr. 4. Kód pro nový element datového skladu. Části zvýrazněné červenou barvou je třeba upravit. Výsledkem je nový prvek v editoru na obrázku č. 2.

Úpravy kódu můžeme rozdělit na tři části. Nejprve musíme navázat náš kód na xml element vytvořený dříve. Propojení dosáhneme úpravou prvního, třetího a pátého zvýrazněného prvku z obrázku (červená barva). První a třetí prvek na obrázku mají definovaný parametr binding path pro listbox. Tento parametr rozhoduje o tom, kam se budou metadata zapisovat v rámci xml elementu. Pátý prvek dělá v podstatě to stejné, jenom pro tlačítko přidání nového záznamu.

Kromě toho musíme také upravit popisky, a to změnou druhého a šestého (posledního) zvýrazněného prvku v obrázku. Popisky kontroluje prvek Resources. Data_Store z obrázku je pak námi vytvořený název popisku v souboru Resources.resx, o kterém už byla řeč. Jak správně zavést nový popisek do Resources.resx a následně ho pak použít se můžete dozvědět také v návodu toolkitu.

Posledním krokem je definice samotného obsahu vyskakovací nabídky. Jelikož se jedná o složitější prvek, který může být použit vícenásobně, nebo vůbec, tak jej nemůžeme definovat přímo v Keywords.xaml, jako se to dá udělat u jednodušších prvků, ale musíme vytvořit nové xaml soubory obsahující asociované C# soubory kontrolující chování prvků. Tvorba těchto souborů je poněkud náročná, vy ale můžete využít odkazu na zdrojový kód našeho projektu a jen si zkopírovat předmětné xaml i s cs podsoubory (Custom_Datastore.xaml a Custom_DatastoreBase.xaml), mírně si je poupravit, přejmenovat a dostanete funkční prvek metadat. Podrobnosti fungování těchto souborů bohužel není v rozsahu článku možné pokrýt, avšak pomocníkem, který vám může ulehčit práci, je sledování všech výskytů klíčového slova Datastore a jeho nahrazení vlastní hodnotou ve všech .xaml a souvisejících podsouborech. Zkrátka je nutné nastudovat si logiku daných souborů, jejich provazby a fungování, a pak zjistíte, co je nutné upravit, aby vám prvek fungoval.

Kontrolovat, zdali se všechno přepisuje a funguje, jak má, můžete přímo v ArcGIS Pro při zobrazení metadat. Abyste změny mohli vidět, je v Config.daml nutné změnit nastavení pro xml viewer na XML.XSL.

RobertSpal_4-1691404614065.png

Obr. 5. Zobrazení zápisu datového centra v metadatech ArcGIS Pro.

Validace oproti INSPIRE – využití .xslt souborů

Kromě přidání nových elementů/prvků do metadatového editoru ArcGIS Pro bylo pro IPR také nezbytné, aby byla metadata zasílána na validaci oproti české verzi INSPIRE. Pro export metadat do xml, které se validuje, využíva ArcGIS Pro .xslt soubory sloužící k transformaci z jednoho xml zápisu do jiného. Museli jsme si proto vytvořit vlastní .xslt soubor (ArcGIS_2ISO19139_CustomExporter.xslt), na který jsme pak v Config.daml odkázali. Podrobný návod je opět možné najít zde. Kromě toho můžete v našem projektu na GitHubu také pozorovat všechny změny v souboru ArcGIS_2ISO19139_CustomExporter.xslt a případně je použít či zkopírovat pro vaše účely. Jak projekt na GitHubu, tak upravované soubory obsahují další komentáře upřesňující některé části kódu.

Závěrem

Posledním a nejjednodušším krokem celého procesu, který vás čeká, je vybuildování celého projektu a následné přidání samotného add-inu do ArcGIS Pro. Pokud vaše organizace přechází se správou metadat do ArcGIS Pro a zároveň máte vlastní metadatové položky, které v žádném z defaultních metadatových profilů nenajdete, tak je úprava editoru vhodným řešením vaší situace. Rozsah a možnosti toolkitu jsou samozřejmě mnohem mnohem větší a i samotné úpravy vzpomínaných souborů mohou jít do mnohem větší hloubky, než je zde nastíněno. Můžete například kontrolovat dokonce i popisky tooltipů pomocí Definitions.resx nebo upravovat jazykové mutace vašich prvků. 

Vzhledem k limitacím článku jsme sice nemohli jít do přílišných detailů, avšak pokud budete potřebovat přidat vaše vlastní prvky do metadatového editoru, všechno je velmi dobře popsané v návodu na githubu, případně se můžete inspirovat také naším repozitářem, kde najdete podrobnější vysvětlení a další typy vlastních prvků, které jsme přidávali.