Pokročilé techniky pro vytváření geoprocessingových nástrojů v aplikaci Model Builder

16. 12. 2013
  • Desktopový GIS
  • ArcGIS 10.0
  • ArcGIS 10.1
  • ArcGIS 10.2
  • ArcGIS 10.3

Aplikace Model Builder, která je standardní součástí software ArcGIS for Desktop, představuje jednu z možností jak vytvářet vlastní geoprocessingové nástroje formou tzv. modelů (pozn. pod pojmem model si můžeme představit sekvenci po sobě jdoucích nástrojů z ArcToolbox). Použití této aplikace oceníme především ve chvíli, kdy potřebujeme zautomatizovat určitou opakující se úlohu, která se skládá z několika po sobě jdoucích operací. Hlavní výhodou vytváření nástrojů v Model Builder je především v rychlosti a jednoduchosti, kdy model skládáme pomocí přetahování jednotlivých nástrojů z ArcToolbox do okna Model Builder a následně takto vložené nástroje mezi sebou logicky propojíme (pozn. tento přístup je velice podobný vizuálnímu programování).

Pojďme se nyní podívat na jednotlivé techniky, které nám mohou zefektivnit funkčnost našich modelů (pozn. ke každé probírané technice je vždy přiložen i jednoduchý příklad).

Dynamické proměnné
Dynamická proměnná v rámci modelu umožňuje předávat svůj obsah do dalších proměnných popř. geoprocessingových nástrojů. Pro předání hodnoty proměnné se používá syntaxe, kdy název proměnné uzavřeme do znaku procenta, viz %NazevPromenne%. Aplikaci této techniky můžeme použít např. pro substituci textové hodnoty. V příkladě níže využíváme dynamickou proměnnou pro vložení textové hodnoty uživatelem do SQL výrazu v atributovém dotazu.

Dynamické proměnné

Předpoklady
Předpoklady slouží pro explicitní definici pořadí spouštění jednotlivých nástrojů v rámci modelu. Typickým příkladem pro použití předpokladů může být situace, kdy v modelu vytváříme novou souborovou geodatabázi s prázdným datasetem prvků, do kterého chceme uložit výsledek operace Oříznout. V tomto případě je potřeba zajistit, aby se v rámci modelu spustil nejprve proces vytvářející příslušné úložiště, do kterého následně můžeme uložit výsledek operace Oříznout. V obráceném případě spuštění nástrojů by zřejmě daný model skončil chybovou zprávou. Předpoklady je možné nastavit ve vlastnostech daného nástroje na kartě Předpoklady pro spuštění nástroje nebo pomocí nástroje Připojit, který se používá pro grafické propojení nástrojů v modelu.

Iterátory
Iterátory zpřístupňují v aplikaci Model Builder možnost opakovat určitý proces. V rámci modelu můžeme požadovat opakování pouze jedné jeho části nebo celého modelu. Prostředí Model Builder nabízí celkem 12 iterátorů. Jediné omezení související s jejich použitím je maximální počet iterátorů vložených do modelu, kdy v rámci jednoho modelu můžeme využít maximálně jeden iterátor (pozn. v případě nutnosti použití více iterátorů najednou, je možné situaci řešit pomocí „vložených“ modelů). V našem praktickém příkladu si představíme iterátor Iterovat třídy prvků, který slouží pro procházení tříd prvků v pracovní oblasti (pod pracovní oblastí si můžeme představit geodatabázi nebo také adresářovou strukturu se soubory shapefile). Cílem tohoto modelu je projít adresář Data, který obsahuje jak geodatabázi, tak i soubory shapefile uložené v podadresářích (pozn. pro procházení podadresářů je potřeba v iterátoru Iterovat třídy prvků zaškrtnout možnost Procházet podsložky) a tyto data transformovat do souřadnicového systému WGS 1984 UTM Zone 33N. Pro generování názvu transformované třídy prvků použijeme parametr Nazev, který uchovává jméno aktuálně zpracovávané třídy prvků, a který je tedy možné použít jako dynamickou proměnnou.

Iterátory

Podmínky
Konstrukce podmínek v Model Builder je založena na Booleovské logice, tak jak známe z programovacích jazyků. Pomocí podmínky můžeme v modelu rozhodovat, jaký sled operací má být vykonán v případě pravdy a jaký sled operací v případě nepravdy (pozn. tato konstrukce je známa z programování jako If-Then-Else podmínka). Pro tvorbu podmínky v rámci Model Builder můžeme použít nástroj Vypočítat hodnotu, který je přístupný z menu Vložit > Nástroje pouze pro model nebo vlastní skriptovací nástroj – v obou případech je však potřeba vytvořit vlastní python skript.

V naší ukázce si představíme kombinaci prostorového a atributového výběru, kdy v podmínce vyhodnocujeme, zda prostorový výběr (např. vyskytuje se v zadané oblasti silnice) existuje (tzn. průnik vybrané oblasti s vrstvou silnic je neprázdný), nebo neexistuje. Na základě vyhodnocení podmínky následně provádíme atributový dotaz (např. vyber silnice 1. třídy), nebo uživateli vracíme varovné hlášení (např. průnik je prázdný).


Podmínky

Realizace této podmínky může v python skriptu vypadat následovně (pozn. python skript je potřeba ještě začlenit jako skriptovací nástroj do toolboxu tak, aby jej bylo možné přidat do prostředí Model Builder):

Python skript

 

 

Autor: Ondrej Chlup