Vazby mezi vrstvami v QGISu

Každý kdo pracuje s daty ví, že jednotlivé datasety mají mezi sebou závislosti. Některé z nich jsou jasné na první pohled při zobrazení prvků v mapovém okně a některé z nich můžou být složitější. Pokud máme jasně definován vztah mezi dvěma datasety (vrstvami), tak si tento vztah můžeme jednoduše interpretovat pomocí QGIS projektu.

Jako příklad použijeme vztah mezi ukázkovými daty s městskými částmi a městskými obvody pro území hl. m. Prahy. Na obrázku jsou zobrazeny jednotlivé městské obvody (Praha 1 až Praha 10) a jejich hranice jsou vykresleny hrubší černou linií. Městské části jsou vykresleny pouze hranicí – šedou barvou.

layersZobrazení pražských obvodů se zobrazením hranic městských částí

Když si vyrobíme hezkou legendu pro zobrazení tak můžeme opticky, ale i z atributové tabulky jednoduše určit, které části patří pod který obvod.
Co když ale potřebujeme rychle určit přesný seznam i s podrobnými informacemi?

QGIS projekt nám umožňuje definovat vztah mezi tabulkami tak, abychom se mohli jednoduše vidět prvky, které k sobě patří a na základě tohoto vztahu je pak mohli i editovat.

Jak se s vazbami pracuje?

Pracujeme s vektorovými vrstvami momc(městské části) a mop (městské obvody), které jsou součástí výukového datasetu pro QGIS (RÚIAN Praha). Na prvním obrázku je atributová tabulka vrstvy s mop kde je 10 záznamů s jednotlivými  městskými obvody. Každý záznam má vyplěn atribut ‘kod’. Tento atribut označujeme jako primání klíč – unikátní identifikátor záznamu v tabulce.

layersAtributová tabulka vrstvy městskýh obvodů – ‘mop’

Na dalším obrázku je vidět, že vrstva s městkými částmi obsahuje mimo jiné atribut ‘mopkod’. Tento atribut je tzv. cizí klíč, který určuje záznam z první tabulky, na který se daný cílový záznam váže. Jednoduše řečeno teď vidím které části patří pod obvod “Praha – 8”.

layersAtributová tabulka vrsvty městských částí – ‘momc’

Jak tyto vazby jednoduše nastavit

Z předešlé části tedy zhrneme, že vrstva mop obsahuje atribut ‘kod’, který odpovídá atributu ‘mopkod’ ve vrstvě momc. V menu Projekt -> Vlastnosti projektu je záložka Vztahy. Přes tlačítko přidat vztah si otevřeme formulář. Zde je ntuné nadefinovat název: prislusne_casti, referenční vrstva (dítě): momc, referenční pole: ‘mopkod’, referencovaná vrstva: mop, referencované pole: ‘kod’.

layersNastavení vazeb mezi vrstvami

Po uložení nastavení této relace a celého projektu můžeme vyzkoušet jak relace funguje.

Jaké části patří pod obvod Praha – 8 ?

Stačí pomocí nástroje identifikovat prvky klinknout na obvod Praha – 8. Po otevření detailu prvku vidíme standardní atributy, ale i speciální atribut, s názvem ‘prislusne_casti’, kde jsou vypsané všechny prvky z tabulky momc, kterých hodnota cizího klíče odpovídá hodnotě klíče ’86’.

layersDetail prvku s ‘příslučnými částmi’ – tabulkou

layersDetail prvku s ‘příslučnými částmi’ – formulářem

Jaké funkce máme dostupné?

Zobrazení navázaných prvků z druhé tabulky lze přepnout do formuláře, nebo do běžné atributové tabulky, jak je vidět na obrázcích. Jednotlivé záznamy lze jednoduše editovat přímo v této tabulce, není potřebné jít do tabulky samotné, data se přepíšou autmaticky. Pokud pracujeme se statickými daty, tak není pravděpodobné, že by jsme je potřebovali nějak ručně upravovat. Pokud by ale přišla modelová situace, kdy by se Praha-Dolní Chabry oddělili od obvodu Praha-8, tak stačí prvek označit a pomocí tlačítka s ikonkou rozdělených kruhů odstranit z vazby.

layersOdstranění navázaného prvku

Takovýto prvek již není navázán na žádný obvod, ale v tabulce s části stále figuruje.

layersDetail prvku v tabulce s hondnotou ‘NULL’ u atributu ‘mopkod’

Pokud by jsme ho chtěli přidat k jinému obvodu tak je to opět možné pomocí tlačítka s ikonkou spojených kruhů a následného výběru v množině všech prvků ve vrstvě momc. Pomocí dalších nástrojů s ikonami křížku a plusového znaménka lze v tabulce přidávat anebo mazat záznamy přímo. U všech těchto operací je zamozřejmě nutné být v editačním módu a provedené zmény pak uložit.

Jen pro zajímavost dodám, že takto lze pracovat se všemi vektorovými vrstvami, které jsou součástí projektu, ale i s tabulkami bez geometrie, což posouvá využitelnost této funkcionality i k datům, se kterými možná běžně v QGISu nepracujete, ale mohou poskytovat potřebné údaje. Vazby lze kombinovat mezi vrstvami libovolně a je tak možné pracovat i přes větší počet vrstev. Nezapomeňte však, že relace tak jak jsme si je ukázali jsou nadefinovány v projektu a nejsou součástí dat, tam pořád zůstávají jenom primární a cizí klíče.

Za GISMentors Alžbeta Gardoňová