GIS – Geografické informační systémy
GIS – Spatial SQL Dotazy nad prostorovými daty 11 požadavků na prostorový dotazovací jazyk Prostorové operace Prostorové predikáty Příklad užití
Spatial SQL Potřeba vhodného jazyka pro kladení dotazů v prostorových databázích různá řešení. Pro dotazování existují tři typy dotazů: prostorové dotazy (pouze prostorové vlastnosti)
Vypiš města vzdálená více než 50 km od Ostravy.
atributové dotazy (pouze na neprostorové
vlastnosti)Kolik lidí žije v Moravskoslezském kraji?
kombinované dotazy (jsou zahrnuty obě složky)
Vypiš všechny typy hnojiv použité na pozemcích sousedících s pozemkovým blokem 510786.
Spatial SQL Klasické relační dotazovací jazyky není vhodné použít – není zde podpora pro prostorová data (chybí predikáty i operace). Některé GIS obsahují funkce pro nahrazení takových operací. Řešením se jeví rozšíření funkcionality SQL o práci s prostorovými daty.
Spatial SQL požadavky M. J. Egenhofer v roce 1994 v článku Spatial SQL: A Query and Presentation Language specifikoval minimální rozšíření SQL, tak aby: 1. byly zachovány principy SQL 2. bylo možné zacházet s prostorovými objekty na vysoké úrovni 3. byly vybudovány prostorové operace a vztahy
Spatial SQL komponenty Na základě uvedených požadavků dvě komponenty prostorového jazyka 1. dotazovací jazyk pro popis informací, 2. prezentační jazyk pro zobrazení výsledků dotazu. Prostorový ADT abstraktní geometrický datový typ "Spatial" s vhodnými operacemi a vztahy (uživatel nepracuje s přesnou strukturou prostorových dat, ale s abstrakcí). Grafická presentace výsledku presentace výsledku dotazu je v grafické formě i s vizualizací odpovídajících neprostorových dat.
Spatial SQL – 11 požadavků Podle průzkumů bylo zjištěno 11 požadavků na prostorový dotazovací jazyk oproti konvenčním dotazovacím jazykům.
Spatial SQL – 11 požadavků 1. Abstraktní datový typ “Spatial” zavedení ADT včetně odpovídajících operací a vztahů tak, aby uživatelé mohli zacházet s prostorovými daty na úrovni nezávislé na vnitřním kódování (bez znalosti x, y souřadnic). 2. Zobrazení výsledku dotazu v grafické podobě musí dovolit zobrazení i neprostorových atributů uložených v databázi.
Spatial SQL – 11 požadavků 3. Kombinování výsledku možnost kombinace výsledku dotazu s výsledkem předchozích/ho dotazu/ů vede k dynamické interakci. 4. Kontext pro zobrazení kontextu je u grafické prezentace nutná informace, která nebyla explicitně požadována, ale je nutná k interpretaci výsledku dotazu v umístění v prostoru. (Hledámli v mapě Ostravu, je nutno ji mít zobrazenu s okolím, nikoli jako zobrazení tečky s nápisem Ostrava na bílé ploše.)
Spatial SQL – 11 požadavků 5. Ověřování obsahu uživatelé potřebují mít kontrolu nad obsahem výsledku dotazu zjištění, jakému dotazu odpovídá vykreslení kvůli kombinování výsledku. 6. Výběr ukázáním použití ukazovacího zařízení na výběr z výsledku dotazu umožňuje vytvořit referenci pro příští dotaz typicky myší. 7. Manipulace se zobrazováním rozlišení grafické reprezentace prostorových objektů i jejich částí pomocí barev, vzorů, intenzity a symbolů je mnohem komplexnější než popis pomocí tabulky a vyžaduje speciální jazykové nástroje.
Spatial SQL – 11 požadavků 8. Vysvětlivky je nutná popisující legenda k jednotlivým druhům zobrazovaných objektů (jako u mapy). 9. Popisky – hrají pro uživatele důležitou roli při porozumění grafickému zobrazení uživatel musí být schopen vybrat na jejich základě objekty i pomocí dotazovacího jazyka. 10. Volba měřítka – uživatelům musí být umožněna volba měřítka pro generování vhodné mapy. 11. Vymezení oblasti – vhodné nástroje pro volbu oblasti zájmu (nikoli celé mapy), nad kterou budou prováděny další dotazy.
Spatial SQL požadavky Snaha o oddělení dotazovacích a zobrazovacích (presentačních) instrukcí, neboť zabudování instrukcí přímo do dotazovacího jazyka by znamenalo přílišnou složitost jazyka, tím jeho obtížnou použitelnost. Řešení rozdělení každé instrukce do několika menších (typově různých) instrukcí. Rozlišujeme 3 typy instrukcí.
Spatial SQL instrukce Vlastní uživatelský dotaz (user query) popis množiny dat, která se mají zobrazit. Dotazy pro rozdělení výsledku (display queries) dotazu do množin, z nichž každá bude zobrazena jiným způsobem (různé barvy apod.). Vlastní popis jak zobrazit data (display description). 3 typy instrukcí se spojí do dvou jazyků vlastního dotazovacího a presentačního.
Spatial SQL – práce s instrukcemi Postup při použití instrukcí: 1. Uživatel nastaví parametry zobrazovacího prostředí (zobrazovací instrukce). 2. Uživatel pokládá dotazy (výsledky se zobrazují dle předchozího nastavení, zobrazovací prostředí se nemění). 3. Uživatel (případně) změní parametry zobrazovacího prostředí (ale zobrazovaný obsah se nezmění).
Spatial SQL Prezentační jazyk udává, jak zobrazit výsledky dotazu (“Ukaž budovy z výsledku dotazu jako černé čtverečky.”) včetně možnosti použít výrazy podobné klasickým dotazům pro detailní popis. (“Ukaž budovy z výsledku dotazu a červené čtverečky jsou rezidence a modré čtverečky komerční budovy”).
Dotazovací jazyk může sloužit jako část prezentačního jazyka.
Spatial SQL Návrh Egenhofera z roku 1994 ponechává práci s příkazy ve formátu SELECT FROM – WHERE stejně jako v klasickém SQL, výsledky dotazu jsou relace. Spatial SQL neobsahuje funkcionalitu pro editování dat.
Spatial SQL SQL je rozšířeno o prostorovou doménu. Zajišťuje se tak vysoká úroveň abstrakce prostorových dat, realizace pomocí řady prostorových operací a predikátů. Spatial atribut (prostorový atribut) atribut z domény spatial (bez závislosti na dimenzi) Spatial relation (prostorová relace) relace s tímto atributem
Spatial SQL prostorové operace Jsou definovány jako funkce na prostorových objektech. Unární prostorové operátory přistupují k jedné prostorové položce prostorové relace – buď topologické nebo aritmetické. Topologické unární operátory určují dimension dimenze objektu (0 pro body, 1 pro
přímky/úsečky atd.),
boundary hranice objektu, interior celý objekt mimo svou hranici (doslovně
"všechny části objektu, které nejsou v jeho hranici").
Spatial SQL – unární operátory Topologické operátory mají specializované varianty pro jednotlivé dimenze. Například plocha má definovány operace boundingNodes a boundingEdges pro určení ohraničujících bodů/úseček. Pro 1D a 2D objekty jsou definovány boundary, boundingNodes, boundingEdges, interior, interiorNodes, interiorEdges, interiorAreas.
Spatial SQL – unární operátory Aritmetické operace unární operátory, závisí na dimenzi objektu: lenght (délka) pro 1D objekty area (plocha) pro 2D objekty volume (objem) pro 3D objekty
Spatial SQL – prostorové operace Kombinací topologických a aritmetických vlastností lze získat složitější operátory : Například: perimeter (obvod) pro mnohoúhelník (the sum of
the lengths of the boundingEdges),
extreme coordinates (extrémní souřadnice), complement (doplněk). convex hull (konvexní obal).
Spatial SQL – prostorové operace Binární prostorové operátory počítají hodnotu ze 2 prostorových položek prostorové relace. Například: distance (vzdálenost) výsledkem je nezáporné
reálné číslo, direction (směr) úhel udávající azimut.
Na výsledky těchto operací je možné použít standardní agregační funkce SQL (min, avg).
Spatial SQL – prostorové operace Prostorové operátory se zapisují v prefixové notaci jako funkce. Například: distance(city.geometry, highway.geometry) Operátory se mohou vyskytnout v klauzulích
SELECT nebo WHERE jako část neprostorového predikátu. Používají se v dotazech na stejných místech jako agregační funkce.
Spatial SQL – prostorové predikáty Binární prostorové predikáty (binary spatial relationships) jsou relace (v matematickém smyslu) mezi dvěma prostorovými atributy. Výsledkem je Boolean hodnota. Mohou být použity jako predikáty v klauzuli WHERE. Zapisují se infixově; jsou definovány přímo nad generalizovanou doménou spatial.
Spatial SQL – prostorové predikáty Binární topologické predikáty jsou založeny na množině průniku hranic a vnitřku dvou objektů. Specifikace jsou nezávislé na dimenzi a predikáty mohou být použity na dva objekty libovolných dimenzí:
disjoint (disjunktnost objektu),
meet (sousednost),
overlap (překrývání),
inside/contains (obsahování),
covers/coveredBy (překrytí),
equal (totožné objekty).
Ukázky implementací intersect protíná are within a distance of je do určité vzdálenosti od share a line segment with sdílí část linie contain/completely contain obsahuje (částečně, úplně) are contained by/are completely within je obsaženo (částečně, úplně) are crossed by the outline of je protnuto obrysem touch the boundary of dotýká se hranice are identical to je identické have their centoid in má centroid (těžiště) v
Výběr úseků železnice procházejícíc lesem. Použito z http://gis.zcu.cz/
Spatial SQL – prostorové predikáty Začlenění predikátů do Spatial SQL bylo požadováno nutností zvýšit úroveň abstrakce.Uživatelé se obejdou bez větších matematických znalostí. Jeli použito uspořádání, pak je možné používat predikáty: left/right, north/south, over/under.
Definice prostorových dat Podobně jako v klasickém SQL. Definice tabulky cit y s neprostorovým atributem n am e a prostorovým geometry, kde cit y chápeme jako 2D objekt. CREATE TABLE cit y ( n am e ch ar (2 0 ) geo m et r y s p at ial_2 );
Definice tabulky s prostorovými daty Definice tabulky cit y s dvojím chápáním jeho dimenze. Polygon pro rozlišní 1:10,000 a jako bod ve středu pro 1:1,000,000. CREATE TABLE cit y ( n am e ch ar (2 0 ) geo m et r y s p at ial_2 gen er aliz ed Geo m et r y s p at ia l_0 );
Predikát PICK výběr ukázáním Predikát PICK možnost formulovat dotazy s referencí na prostorové objekty viditelné na obrazovce. Lze jím kvalifikovat každý prostorový atribut ve WHERE klauzuli. Sémantika výběru závisí na prostorové dimenzi cíle při odkazování na objekty vykreslené v 2D plánu může být cílem 0 či 1rozměrný objekt nejblíže ukázání a nebo 2D objekt, který místo bod při ukázání obsahuje.
Predikát PICK výběr ukázáním Nejasnosti jsou řeseny dle toho, jaký typ objektu uživatel v dotazu používá. Jsouli 2 objekty požadovaného typu od ukázání stejně daleko (řídký případ), je uživateli nabídnut seznam možností, ze kterého může zvolit.
Predikát PICK výběr ukázáním Máme k dispozici mapu států s hranicemi a velkými městy (zde jako body). Uživatel se dotazuje kliknutím do stejného bodu. SELECT n a m e FROM cit y WHERE geo m et r y = PICK;
jm én o m ě s t a
SELECT n a m e FROM co u n t r y WHERE geo m et r y = PICK;
jm én o s t át u
GPL (Graphical presentation language) GPL je zalozeno na myšlence tzv. display environment. Je to oddělený presentační jazyk pro manipulaci s grafickou presentací výsledku dotazu. Klíčovým pojmem je zde zobrazovací prostředí (graphical environment), které obsahuje nastavení způsobu, jak zobrazovat položené dotazy. V průběhu zpracovávání dotazu jsou tyto informace spojeny s uživatelským dotazem, aby podle nich mohl být vyrenderován výsledek.
GPL Pokud uživatel zobrazovací prostředí nezmění pomocí GPL instrukce, každý dotaz produkuje výsledek (mapu) zobrazený stejným stylem. GPL je možno chápat jako nadmnožinu SQL. SQL dotazy jsou používány pro specifikaci, k čemu se vlastní GPL instrukce vztahuje.
GPL GPL obsahuje instrukce: SET k nastavení konkrétních parametrů
zobrazení CANCEL ke zrušení nastavení parametrů SHOW ukáže aktuální hodnotu daného
parametru SET, CANCEL – PERMANENT, IMMEDIATELY
GPL (Graphical presentation language) GPL obsahuje modifikátory: PERMANENT příslušné SET/CANCEL se
uloží pro příští práci se systémem. IMMEDIATELY podle změny se překreslí
aktuální výsledek dotazu (jinak jsou parametry použity až pro další dotaz).
GPL GPL obsahuje i parametry pro nastavení zobrazovacího módu (the display mode), grafické prezentace(the graphical presentation), měřítko (the scale of the drawing), výřez (the window to be shown), kontext (the spatial context), zjištění obsahu kresby (the examination of the
content).
Spatial SQL ukázka Je dána geografická databáze ČR obsahující: města (tabulka mesta), ulice (tabulka ulice), pozemky (tabulka pozemky), budovy (tabulka budovy), údaje o městské hromadné dopravě (tabulka
mhd). Prostorový atribut zmíněných tabulek je vždy p o lo h a .
Spatial SQL příklad Zadání zobrazit mapu Naší ulice v Ostravě, včetně všech pozemků, budov. Obytné budovy červeně, komerční budovy zeleně, hranice pozemku černou čarou, ulice širší 6m zobrazit šrafovaně.
Spatial SQL příklad Nastavení černé barvy hranic pozemku. (GPL) SET LEGEND COLOR black FOR SELECT boundary(poloha) FROM pozemky;
Spatial SQL příklad Obytné budovy červeně, komerční budovy zeleně. (GPL) SET LEGEND COLOR red, green FOR SELECT obytne.poloha, komercni.poloha FROM obytne budovy, komercni budovy WHERE komercni.typ="Komercni" and obytne.typ="Obytny";
Spatial SQL příklad Šrafování ulic širších než 6 m. (GPL) SET LEGEND PATTERN crosshatched FOR SELECT interior(poloha) FROM ulice WHERE sirka > 6;
Spatial SQL příklad Nastavení výřezu jako obal všech ulic v Ostravě. (GPL) SET WINDOW SELECT poloha FROM ulice WHERE mesta.jmeno="Ostrava";
Spatial SQL příklad Nastavení kontextu ulic pro zobrazení přilehlých pozemků a budov pro každou dotazovanou ulici a jmen ulic. (GPL) SET CONTEXT FOR ulice.poloha SELECT pozemky.poloha, budovy.poloha, ulice.jmeno FROM ulice, pozemky, budovy;
Spatial SQL příklad Nastavení módu pro vykreslování nové mapy. SET MODE new; Tím je ukončeno vše pro zobrazovací prostředí. Budeme pokládat konkrétní dotaz na Naši ulici.
Spatial SQL příklad Vykresli ulici "Naši" v Ostravě. (Spatial SQL) SELECT ulice.poloha FROM ulice, mesta WHERE mesta.jmeno="Ostrava" and ulice.jmeno="Naše" and ulice.poloha INSIDE mesto.poloha;
Spatial SQL příklad Nastavíme mód pro zvýraznení výsledku následujícího dotazu. (GPL) SET MODE highlight;
Spatial SQL příklad Zvýraznění budovy na adrese "Naše 15". (Spatial SQL) SELECT budovy.poloha FROM budovy WHERE adresa="Naše 15";
M. J. Egenhofer: Spatial SQL: A Query and
Presentation Language. (IEEE Transactions on Knowledge and Data Engineering, 6(1):8695, 1994) Troch, J.: http://jt.sf.cz J. Pokorný: Prostorové objekty a SQL. GIS Ostrava,
2001