Difference between revisions of "Prostorové databáze - cvičení"

From Wikivyuka
Jump to: navigation, search
m (SDO_Geometry)
m (Cvičení 1 - Instalace prostorové databáze a vizualizačního nástroje)
 
(95 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==Obsah a cíle cvičení z předmětu Prostorové databáze==
 
==Obsah a cíle cvičení z předmětu Prostorové databáze==
 +
 +
Data a jejich zpracování hrají významnou roli při práci geoinformatika. Cílem tohoto kurzu je předvést možnosti, které jsou k dispozici mimo "klasické" GIS prostředí.
 +
 +
Cvičení z předmětu Prostorové databáze je proto zaměřeno na získání zkušenosti se zpracováním prostorových dat v prostředí SŘBD.
 +
K pochopení principů využitých pro ukládání a manipulaci s prostorovou složkou dat, které jsou v databázích implementovány, slouží Oracle Locator. V něm je předvedena řada úloh s použitím SpatialSQL. K vizualizaci zpracovaných úloh slouží extenze v klientském prostředí SQLDevelopera s názvem GeoRaptor. Následně je požadováno využití SpatialSQL při samostatně řešených úlohách, kde je nutno principy uplatnit buď provedením úprav dle typu dat nebo vhodným způsobem zakomponovat jinou kombinaci prostorových operátorů.
 +
 +
Důraz je kladen na semestrální projekt, ve kterém studenti získané dovednosti předvedou v tematicky zaměřené úloze.
  
 
==Požadavky na zápočet==
 
==Požadavky na zápočet==
Line 5: Line 12:
 
Zápočet (33 bodů) je rozdělen následujícím způsobem:
 
Zápočet (33 bodů) je rozdělen následujícím způsobem:
  
#Písemný test - 9 bodů - v průběhu semestru
+
#Písemný test v průběhu semestru - 9 bodů
 
#Semestrální projekt - úlohy s prostorovými operátory - 24 bodů
 
#Semestrální projekt - úlohy s prostorovými operátory - 24 bodů
 +
 +
Body za aktivitu:
 +
Schreier 1
 +
Šajer 1
 +
Karas 1
 +
Frohlich 2 (bonusove za sql dotaz)
 +
 +
Bodove hodnoceni 2015 lze nalezt v souboru [[Media:Body2015.pdf | BodyPDB]].
  
 
Zadání zápočtového projektu je uvedeno na stránce s popisem [http://gis.vsb.cz/wikivyuka/index.php/Z%C3%A1po%C4%8Dtov%C3%A9_%C3%BAkoly úkolů].
 
Zadání zápočtového projektu je uvedeno na stránce s popisem [http://gis.vsb.cz/wikivyuka/index.php/Z%C3%A1po%C4%8Dtov%C3%A9_%C3%BAkoly úkolů].
Line 12: Line 27:
 
==Cvičení 1 - Instalace prostorové databáze a vizualizačního nástroje==
 
==Cvičení 1 - Instalace prostorové databáze a vizualizačního nástroje==
  
Instalace image v prostředí Virtual PC, XE server, SQLDeveloper, GeoRaptor
+
Nejprve si připravíme pracovní prostředí, které si stejným způsobem můžete nainstalovat i na svých počítačích. Dodržte uvedené pořadí při instalování produktů, jednotlivé kroky na sebe navazují. Vše potřebné najdete na našem datovém uložišti: adelka-nas.vsb.cz\Temp.
 +
 
 +
*''Instalace databázového prostředí''
 +
Spustíte Virtual PC a ze stránek společnosti Oracle zvolíte [http://www.oracle.com/us/downloads/index.html download databáze]. V případě, že budete  poprvé používat produkt Oracle, je nutno odsouhlasit licenční podmínky a zaregistrovat se jako nový uživatel jejich produktů. Dále budete postupovat  podle pokynů instalátoru. Jako velmi důležité je zapamatovat nebo si někam zapsat heslo administrátora, které bude během instalace požadováno. Bez tohoto hesla nebude možnost zpřístupnit demo databázi a pracovat nad připravenými daty.
 +
 
 +
*''Instalace SQLDeveloper''
 +
Společnost Oracle nabízí nejnovější verzi klientského prostředí pro přístup k databázovému serveru. V našem případě budeme potřebovat verzi trojkovou, ve které pak bude možno využít vizualiční nástroj GeoRaptor. Lze stáhnout ze stránek [http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/sqldev-downloads-v322-2080107.html SQLDeveloper 3]. Po rozbalení zip souboru bude stačit spustit .exe soubor a klientské prostředí bude k dispozici.
 +
 
 +
*''Instalace GeoRaptor''
 +
Posledním produktem je nástroj pro vizualizaci a manipulaci s prostororovými daty. Tento nástroj je ve Free licenci a je k dispozici na adrese
 +
[http://sourceforge.net/projects/georaptor/ GeoRaptor]. Postup instalace je popsán na stránce [[Instalace GeoRaptor]].
 +
 
 +
Vymezení funkčnosti Oracle Locator lze nalézt buď pro verzi [http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_locator.htm  10.2] nebo pro verzi [http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_locator.htm#SPATL340 11.2] v příloze B v dokumentaci k Oracle Database.
 +
 
 +
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
 
==Cvičení 2 - Přístupy k databázi, prostředí klienta==
 
==Cvičení 2 - Přístupy k databázi, prostředí klienta==
  
"Zprovoznění" uživatele HR, vyzkoušení přístupů k databázi - cmd, APEX, SQLDeveloper
+
=====Odemknutí uživatele HR=====
 +
 
 +
Pro práci s databází nejprve připojíme klientskou stranu k serveru. V prvním připojení změníme práva již definovaného uživatele "HR" a využijeme jej jako přístupový bod do databáze. Jak postupovat je popsáno v části [[Jak zprovoznit uživatele HR]].
  
Tutoriál SQLDeveloper
+
=====Přístupy k databázi=====
  
=====Tvorba tabulky=====
+
Ukážeme si různé možnosti, jak lze k databázi, uložené v prostředí Oracle přistupovat. Po instalaci Oracle, je možno komunikovat s prostředím databázového stroje přes webový prohlížeč. Jedná se o součást instalace a popis najdeme pod označením [[APEX]].
  
Příkazem jazyka DDL pro vytvoření nové tabulky je CREATE TABLE. V příkazu pojmenujeme tabulku (dle významu obashu dat, předchozí analýzy), její sloupce (atributy), ke kterým nadefinujeme datové typy.  
+
Další možností je spojit se s databází přes příkazovou řádku, uvedeno na stránce [[Příkazová řádka]] nebo přes nainstalovaného klienta SQLDeveloper. Ke zvládnutí tohoto prostředí vytvořila firma Oracle tutoriál, který je umístěn na jejich stránkách [http://download.oracle.com/oll/tutorials/SQLDeveloper/index.htm Tutoriál SQLDeveloper].
  
Syntaxe příkazu CREATE TABLE:
+
=====Tvorba tabulky=====
  
'''CREATE TABLE''' [nazev_databaze.]nazev_tabulky
+
Příkazem jazyka DDL pro vytvoření nové tabulky je CREATE TABLE. Způsob práce s tímto příkazem je uveden na stránce [[Tvorba tabulky]].
    (<nazev sloupce> <datovy typ>
 
      [DEFAULT <konstantni vyraz>]
 
      [NULL | NOT NULL]
 
      [<omezeni pro sloupec>]
 
      |[<omezeni pro tabulku>]
 
      [,...n]
 
    )
 
  
V [] jsou uvedeny nepovinné údaje - například [nazev_databaze.]. Za () je uvedena povinná část <nazev sloupce> <datovy typ> s možným opakováním až n-krát [,...n].
+
=====Samostatný úkol=====
  
=====Datové typy=====
+
V prostředí SQLDeveloper vytvořte
 +
*příkaz SELECT, který k vytvořené tabulce OSOBA naváže tabulku ODDELENI v souladu s již definovaným cizím klíčem.
 +
*příkaz SELECT, kterým vytvoříte tabulku DITE, jako seznam dětí jednotlivých osob.
 +
*příkaz INSERT, kterým vložíte do každé tabulky alespoň 5 záznamů.
 +
Výsledky své práce ukažte pedagogovi.
  
Kompletní popis datových typů je  možno nalézt [http://docs.oracle.com/cd/B10501_01/server.920/a96540/sql_elements2a.htm v dokumentaci Oracle].
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
 
==Cvičení 3 - SQL I.==
 
==Cvičení 3 - SQL I.==
 +
 +
Vyhledávání je silnou stránkou databázových systémů. Příkaz SELECT, který je v různých SŘBD implementován, je součástí jazyka SQL. Popis implementace SQL SELECT v Oracle lze najít [http://docs.oracle.com/cd/B10501_01/server.920/a96540/intro.htm zde].
 +
Zopakujeme znalost základů SQL a tím položíme základ k porozumění jeho použití při prostorových dotazech.
  
 
=====Dotazování nad jednou tabulkou=====
 
=====Dotazování nad jednou tabulkou=====
 +
Použití příkazu SELECT nad jednou tabulkou je popsáno na stránce [[Dotazy nad jednou tabulkou]].
 +
 +
=====Agregační funkce=====
 +
Po zopakování základního použití příkazu SELECT jej rozšíříme o [[Agregační funkce]].
  
Structured Query Language (SQL) představuje sadu příkazů, které umožňují pracovat s databází. Základem jazyka SQL je příkaz SELECT. Popis jeho plné notace je uveden na stránce [[Vyhledávání]].
+
=====Samostatný úkol=====
  
Opakování budeme provádět nad databází HR, ke které jsme získali přístup aktivací uživatele ''hr''. Schema databáze je uvedeno na obrázku [[Schema HR]].
+
V prostředí SQLDevelopera sestavte dotazy, kterými si vyzkoušíte své znalosti. Zadání dotazů je uvedeno na [[Opakování SQL]]. Výsledky své práce ukažte pedagogovi.
  
Nejjednodušší forma dotazu - získáme obsah celé tabulky Zamestnanci:
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
SELECT * FROM employees;
+
==Cvičení 4 - SQL II.==
  
V ORACLE se nerozlišuje psaní malými a velkými písmeny, takže název tabulky i klíčová slova lze psát různým způsobem - employees x EMPLOYEES, select x SELECT.
+
Při zjišťování údajů z databáze je často nutné využít propojení dat mezi sebou, i když jsou uložené v několika tabulkách. K tomu se využívá referenční integrita zajištěná cizím klíčem nebo propojení tabulek na základě nadefinovaných podmínek.
  
Výběr některých sloupců dosáhneme použitím ''projekce'', tj. uvedením názvů sloupců za klíčové slovo SELECT. Zde je uveden dotaz, jehož výsledkem je jmenný seznam zaměstnanců:
+
=====Dotazy nad více tabulkami=====
  
SELECT FIRST_NAME, LAST_NAME FROM employees;
+
Dotazování nad více tabulkami je popsáno na stránce [[Dotazy nad více tabulkami]].
  
V případě, že bychom chtěli pouze seznam příjmení všech zaměstanců bez opakování stejných jmen, použijeme klíčové slovo ''DISTINCT'', které eliminuje výstup - bude bez opakování stejných řádků:
+
=====Vnořené dotazy=====
  
SELECT DISTINCT LAST_NAME FROM employees;
+
[[Vnořené dotazy]]
  
Budeme-li chtít ve výsledku změnit číselné hodnoty nějakého sloupce, lze je přímo dopočítat a na výstupu sloupec také přejmenovat pomocí tzv. ''alias'', za slovem ''AS'':
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
SELECT LAST_NAME, SALARY + 100 AS "Vyplata s odmenou" FROM employees;
+
==Cvičení 5 - Principy práce s prostorovými daty==
 +
=====Definice SDO_GEOMETRY=====
 +
Princip práce s prostorovými daty v prostředí SŘBD Oracle je postaven na objektovém datovém typu SDO_GEOMETRY. Jeho definice a význam struktury je popsán na stránce [[SDO_GEOMETRY]].
  
Pro výběr záznamů z tabulky, které vyhovují určité podmínce, použijeme operaci ''selekce''. Zapisujeme ji za klíčové slovo WHERE a podle datového typu atributu volíme zápis podmínky. Pro jmenný seznam zaměstnanců z oddělení 80 pak příkaz vypadá následně:
+
=====Samostatný úkol=====
  
SELECT FIRST_NAME, LAST_NAME FROM employees WHERE DEPARTMENT_ID=80;
+
Navrhněte tabulku, která bude obsahovat několik sloupců, z nichž jeden bude typu SDO_GEOMETRY. V prostředí Oracle tuto tabulku vytvořte a naplňte ji daty. Vytvořte záznamy, které budou obsahovat dvoudimenzionální geoobjekty. Uloženy budou bod, linie, řtězec linií, kruh, obdélník, polygon a polygon s dírou. Výsledky své práce ukažte pedagogovi.
  
V podmínce je možno použít ''operátory'':
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
=   rovná se                        AND      a současně
+
==Cvičení 6 - Tvorba a ukládání v ORACLE definovaných geometrií==
<  je menší než                    OR        nebo
 
>  je větší než                    NOT      negace
 
<= je menší nebo rovno            BETWEEN  pro intervalové hodnoty
 
>= je větší nebo rovno            IS (NOT)  ne/shoda s hodnotou NULL
 
<>  není rovno (dle standardu ISO)  LIKE      shoda s maskou v řetězci
 
  
Například vyhledání všech zaměstanců, jejichž jméno začíná na K využije operátor ''LIKE'' pro porovnání s maskou řetězce a navíc zástupný znak % za jakékoli jiné znaky (i žádný znak).
+
=====Ukládání geometrií=====
  
SELECT LAST_NAME AS "Zamestnanci s příjemním na 'K'" FROM employees WHERE last_name LIKE 'K%' ;
+
Specifické kódy, které používá Spatial Oracle pro ukládání různých tvarů geometrií vyzkoušíme tvorbou tabulky jednoduchou strukturou a předpřipravenými ukázkami na stránce
 +
[[Ukázky geometrií]]. Pro vyjasnění kódů používaných v Spatial Oracle pro různé tvary geometrií použijeme příklad z dokumentace Oracle a prvky zobrazíme v prostředí Prohlížeče.
  
Pro vyhledání zaměstnanců, kteří nejsou přiděleni k žádnému oddělení, použijeme podmínku, kde zjistíme hodnotu ''NULL'' u atributu DEPARTMENT_ID.
+
=====Samostatný úkol=====
  
SELECT FIRST_NAME, LAST_NAME FROM employees WHERE DEPARTMENT_ID IS NULL;
+
V prostředí Oracle napište příkaz insert, který do vytvořené tabulky T1 vloží Vaše vlastní geometrie. Fantazii se meze nekladou. Výsledky své práce ukažte pedagogovi.
  
Budeme-li chtít získat jmenný seznam zaměstnanců oddělení 80, využijeme možnosti setřídít výsledek podle příjmení, případně i podle dvou atributů současně, nejprve dle příjmení a pak křestního jména:
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
SELECT FIRST_NAME, LAST_NAME FROM employees WHERE DEPARTMENT_ID=80 ORDER BY LAST_NAME;
+
==Cvičení 7 - Vizualizace dat s prostorovým kontextem==
  
SELECT FIRST_NAME, LAST_NAME FROM employees WHERE DEPARTMENT_ID=80 ORDER BY LAST_NAME, FIRST_NAME;
+
=====Vizualizace v prostředí GeoRaptor=====
  
=====Agregační funkce=====
+
Extenze GeoRaptor nainstalovaná v SQLDeveloperu umožňuje vizualizovat prostorová data podobně, jako v GIS aplikacích. První seznámení s tímto prostředím je popsáno na stránce [[Zobrazení prostorových dat v GeoRaptoru]].
  
Agregační funkce představují možnost sloučit záznamy či hodnoty do skupin a nad nimi provézt aritmetickou či statistickou operaci. Výsledkem jsou například počty záznamů (COUNT), součet hodnot (SUM), maximální hodnota (MAX) ze sady numerických hodnot apod.
+
=====Úpravy a práce v prostředí GeoRaptor=====
Seznam a význam agregačních funkcí:
 
  
COUNT(*) navrací počet počet řádků ve výsledku dotazu
+
GeoRaptor nabízí možnost různých úprav zobrazených dat a zpracování různých úloh nad prostorovými daty. Blíže uvedeno na stránce [[Prostředí GeoRaptor]].
COUNT(DISTINCT)  počet jedinečných výskytů hodnot
 
SUM()            součet numerických hodnot ze zadaného sloupce/pole hodnot
 
AVG()            aritmetický průměr z numerických platných hodnot
 
MIN()            minimální hodnotu z numerických platných hodnot
 
MAX()            maximální hodnota z numerických platných hodnot
 
STD()            směrodatnou odchylku
 
GROUP BY sloučí záznamy se stejnými hodnotami určeného atributu a vytvoří souhrnnou hodnotu
 
  
Chceme-li zjistit počet všech zaměstnanců, použijeme operaci ''COUNT'':
+
=====Samostatný úkol=====
SELECT COUNT(*) FROM employees;
 
Chceme-li zjistit kolik zaměstnanců dostává provizi, použijeme operaci ''COUNT'' s názvem sloupce:
 
SELECT COUNT(commission_pct) FROM employees;
 
Počet je jiný, protože ve sloupci ''commission_pct'' jsou i hodnoty NULL, které funkce nezapočítává.
 
  
Jaký je nejvyšší plat v oddělení 80?
+
V prostředí GeoRaptor vyhledejte ve vlastnostech vrstvy záložku "Labelling". Změňte atribut "Label" tak, aby
SELECT MAX(salary) FROM employees WHERE DEPARTMENT_ID=80;
+
*barva textu byla modrá,
 +
*typ písma ''Italic'',
 +
*bezpatkové písmo,
 +
*a umístěte popisek do levého dolního rohu.
 +
Výsledky své práce ukažte pedagogovi.
  
Agregační funkce nelze použít v podmínce za WHERE, ale je možné je použít při seskupování za klauzulí GROUP BY. Chceme-li zjistit minimální platy v každém oddělení, seskupíme palty podle oddělení a v každé skupině je pak zjištěno minimum:
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
SELECT MIN(salary), department_id FROM employees GROUP BY department_id;
 
  
=====Samostatný úkol=====
+
==Cvičení 8 - Práce s bodovými geoobjekty==
  
V prostředí SQLDevelopera sestavte dotazy, kterými si vyzkoušíte své znalosti. Zadání dotazů je uvedeno na [[Opakování SQL]]. Výsledky své práce ukažte pedagogovi.
+
=====Zpracování bodových dat=====
  
==Cvičení 4 - SQL II==
+
Princip tvorby prostorových dat uživatelem, jejich uložení do databáze a další manipulace s nimi je na příkladu bodových dat popsáno na stránce [[Points]].
  
Dotazování nad více tabulkami
+
=====Samostatný úkol=====
  
==Cvičení 5 - Principy práce s prostorovými daty==
+
V prostředí Oracle napište
 +
*příkaz insert, který do vytvořené tabulky STORES vloží Vaše vlastní souřadnice v souladu s použitým SS a další informace o obchodu.
 +
*příkaz insert, který do vytvořené tabulky CUSTOMERS vloží Vámi vytvořené informace o dalších zákaznících včetně souřadnic v souladu s použitým SS.
 +
*příkaz vyhledávající nejbližšího zákazníka a zobrazíte, jak velká je vzdálenost od obchodu 101,
 +
*příkaz, kterým najdete KOLIK zákazníků je v dosahu 50 km.
 +
Výsledky své práce ukažte pedagogovi.
  
Princip práce s prostorovými daty v prostředí SŘBD Oracle.  
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
 +
==Cvičení 9 - Prostorové dotazy==
  
====SDO_Geometry====
+
=====Použití prostorových operátorů=====
 +
Pro analýzy nad prostorovými daty budeme používat možnosti, které nabízí rozšíření SQL o prostorové funkce a operátory. [[Prostorové operátory]] ve formě seznamu a jejich významu převzatý ze stránek Oracle nám poslouží jako vodítko pro další práci. Na příkladu "minikatastru" [[Parcely]] si předvedeme využití vybraných operátorů.
  
Databázový server Oracle je rozšířen o objektový prostorový datový typ s názvem SDO_GEOMETRY. Prefix SDO pochází z doby, kdy Oracle spolupracoval s Canadian Hydrographic Service a tehdejší změny v jádru Oracle vedly k označení "Spatial Data Option" (SDO). Jedním z atributů tohoto objektu je geometrie prostorového prvku, která může být tvořena základním geometrickým elementem - bodem, úsečkou, křivkou, kruhem nebo polygonem, případně jejich kombinacemi. V dané tabulce je možné mít neomezený počet sloupců s prostorovými daty.
+
=====Samostatný úkol=====
  
Oracle Spatial definuje objektový typ SDO_GEOMETRY s následujícími atributy:
+
V prostředí Oracle si vyzkoušejte následující:
 +
*Proveďte kontrolu validnosti pomocí metody SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT (viz [[Ukázky geometrií]]). V případě chyby najděte význam chybové hlášky a pokuste se chybu opravit. Zdůvodněte případnou chybu a v datech ji nahraďte validními hodnotami.
 +
*Příkaz insert, který do vytvořené tabulky PARCELA vloží parcelu ve tvaru obdélníka se souřadnicemi jednoho rohu
 +
(0,0). Může mít tento úkol dvě různá řešení?
 +
*Vložte do vytvořené tabulky PARCELA parcelu ve tvaru kruhu v souladu s již použitým SS.
 +
*Příkaz insert, kterým vlastníkovi Janu Volnému přidělíte vlastnictví parcely s id=24. Zjistěte dále, zda na této parcele existuje nějaká stavba?
 +
*Příkaz, kterým zjistíte všechny sousedy nové parcely pana Volného.
 +
Výsledky své práce ukažte pedagogovi.
  
CREATE TYPE sdo_geometry AS OBJECT (
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  SDO_GTYPE NUMBER,
 
  SDO_SRID NUMBER,
 
  SDO_POINT SDO_POINT_TYPE,
 
  SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
 
  SDO_ORDINATES SDO_ORDINATE_ARRAY);
 
  
Struktura a základní metody u objektu SDO_Geometry je vidět na třídním diagramu [[Image:SDOGeom.png]].
+
==Cvičení 10 - Import dat s prostorovým kontextem==
  
Je nutné vnímat "skladbu" tohoto objektu. Při zadávání dat potřebujeme znát význam atributů, které určují geometrii či koordinační (souřadnicový) systém. Dále jsou definovány datové typy SDO_POINT_TYPE, SDO_ELEM_INFO_ARRAY, SDO_ORDINATE_ARRAY použité v definici SDO_GEOMETRY:
+
=====Import prostorových dat v prostředí GeoRaptor=====
  
CREATE TYPE sdo_point_type AS OBJECT (
+
Často se stává, že potřebujeme importovat prostorová data mezi různými aplikacemi. V prostředí GeoRaptoru je připraven uživatelsky přívětivý způsob, jak formát shapefile naimportovat do prostředí Oracle. Postup je popsán na stránce [[Loading shapefiles into Oracle Spatial]].
  X NUMBER,
 
  Y NUMBER,
 
  Z NUMBER);
 
  
CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER;
+
=====Import prostorových dat v režimu příkazové řádky=====
 +
Pokud prostředí GeoRaptor nemáme k dispozici, můžeme postupovat pomocí skriptu či příkazy z příkazové řádky, viz [[Import prostorových dat]].
  
CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;
+
Vyzkoušejte si použití prostorových operátorů/funkcí nad importovanými daty, několik příkladů včetně vizualizace výstupů je uvedeno na stránce [[Hledání v MS kraji]].
  
Sloupec, který je definován pomocí datového typu SDO_GEOMETRY lze vnímat jako vrstvu, v níž jsou obsaženy prostorové prvky nesoucí informace o své geometrii, mohou být vztažené  k určitému souřadnicovému systému a jsou určeny souřadnicemi, kterými je prvek lokalizován.
+
=====Samostatný úkol=====
  
Význam a možnosti použití jednotlivých atributů objektového typu SDO_GEOMETRY objasní jejich popis.
+
Do prostředí Oracle naimportujte data z ArcCR, kraje, okresy a řeky.
 +
*Vytvořte příkaz, který vyhledá všechny okresy v Severomoravském kraji.
 +
*Vytvořte příkaz, který nalezne řeky, protékající okresem Vsetín.
 +
Výsledky své práce ukažte pedagogovi.
  
=====Atribut SDO_GTYPE=====
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
SDO_GTYPE je datového typu NUMBER. Atribut je tvořen 4 číselným kódem, kterým je určen geometrický typ prostorového prvku. Typ geometrie koresponduje se specifikací modelu "Geometry Object Model" definovanou organizací OGC jako OGIS - Simple Features for SQL specification, blíže [http://www.opengeospatial.org/standards/sfs].
+
==Cvičení 11 - Zpracování vlastního projektu==
Kód je označován jako ''dltt'', kde
 
d – určuje počet dimenzí (2, 3 nebo 4),
 
l – vykazuje spojení na LRS (lineární referenční systém), pro 3 nebo 4 dimenzionální hodnoty. V případě geometri bez LRS nebo při akceptaci nastavení Spatial je ponechána hodnota 0,
 
tt – lze chápat jako číselník geometrií Oracle, kde jsou definovány hodnoty 00 – 09, 10 a jsou rezervovány pro další rozšíření.
 
  
Seznam útvarů je vypsán v tabulce [[Geometrické typy]].
+
Semestrální projekt je koncipován jako samostatně navržený tématický případ, kdy nad prostorovými daty bude vypracováno několik úloh s prostorovými operátory. Možnost výběru zadání je specifikována na stránce s popisem [http://gis.vsb.cz/wikivyuka/index.php/Z%C3%A1po%C4%8Dtov%C3%A9_%C3%BAkoly úkolů].
  
Podrobně viz [http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28400/sdo_objrelschema.htm#g1013735].
+
Ukázky předchozích projektů si lze prohlédnout na stránce [[Ukázkový zápočtový úkol]].
  
Například:
+
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Zpět na začátek stránky]
  
2001 dvoudimenzionální bod
+
==PostgreSQL a PostGIS==
3001 třídimenzionální bod
 
2002 dvoudimenzionální linie nebo křivka
 
2003 dvoudimenzionální polygon nebo povrch
 
2004 kolekce (Geometry is a heterogeneous collection of elements. COLLECTION is a superset that includes all other types.)
 
2005 multipoint (Geometry has one or more points. (MULTIPOINT is a superset of POINT.))
 
  
Pro zjištění obsažených informací je možné použít metody pro navrácení těchto hodnot: Get_Dims, Get_LRS_Dim, Get_Gtype
+
[[Nahrnuto]]
xxxxxxxxxxxxxxxxx
 
  
Příklad vytvoření tabulky s prostorovými daty, včetně tvorby prostorového indexu: příklad [[Parcely]]
+
<!-- ==Cvičení 12 - GeoRaster==
  
==Cvičení 5 - Prostorové dotazy==
+
GeoRaster
==Cvičení 6 - Import dat s prostorovým kontextem==
 
==Cvičení 7 - Vizualizace dat s prostorovým kontextem==
 
==Cvičení 8 - ==
 
==Cvičení 9 - ==
 
==Cvičení 10 - Zpracování vlastního projektu==
 
<!--==Cvičení 11 - ==
 
==Cvičení 12 - x== -->
 
  
 +
http://www.gis.zcu.cz/studium/pdb/referaty/2007/Rehak_GeoRaster/ar01s05.html
 +
-->
 
------------------------------
 
------------------------------
Výuková podpora pro cvičení z předmětu Objektově orientované technologie vznikla za podpory projektu Inovace bakalářských a magisterských studijních oborů na Hornicko-geologické fakultě VŠB-TUO pod číslem CZ.1.07/2.2.00/28.0308. Tento projekt je realizován za spoluúčasti EU.
+
Financováno z projektu CZ.1.07/2.2.00/28.0308 Inovace bakalářských a magisterských studijních oborů na Hornicko-geologické fakultě VŠB-TUO, spolufinancovaného Evropským sociálním fondem a státním rozpočtem České republiky.

Latest revision as of 10:47, 10 April 2015

Obsah a cíle cvičení z předmětu Prostorové databáze

Data a jejich zpracování hrají významnou roli při práci geoinformatika. Cílem tohoto kurzu je předvést možnosti, které jsou k dispozici mimo "klasické" GIS prostředí.

Cvičení z předmětu Prostorové databáze je proto zaměřeno na získání zkušenosti se zpracováním prostorových dat v prostředí SŘBD. K pochopení principů využitých pro ukládání a manipulaci s prostorovou složkou dat, které jsou v databázích implementovány, slouží Oracle Locator. V něm je předvedena řada úloh s použitím SpatialSQL. K vizualizaci zpracovaných úloh slouží extenze v klientském prostředí SQLDevelopera s názvem GeoRaptor. Následně je požadováno využití SpatialSQL při samostatně řešených úlohách, kde je nutno principy uplatnit buď provedením úprav dle typu dat nebo vhodným způsobem zakomponovat jinou kombinaci prostorových operátorů.

Důraz je kladen na semestrální projekt, ve kterém studenti získané dovednosti předvedou v tematicky zaměřené úloze.

Požadavky na zápočet

Zápočet (33 bodů) je rozdělen následujícím způsobem:

  1. Písemný test v průběhu semestru - 9 bodů
  2. Semestrální projekt - úlohy s prostorovými operátory - 24 bodů

Body za aktivitu:

Schreier 1
Šajer 1
Karas 1
Frohlich 2 (bonusove za sql dotaz)

Bodove hodnoceni 2015 lze nalezt v souboru BodyPDB.

Zadání zápočtového projektu je uvedeno na stránce s popisem úkolů.

Cvičení 1 - Instalace prostorové databáze a vizualizačního nástroje

Nejprve si připravíme pracovní prostředí, které si stejným způsobem můžete nainstalovat i na svých počítačích. Dodržte uvedené pořadí při instalování produktů, jednotlivé kroky na sebe navazují. Vše potřebné najdete na našem datovém uložišti: adelka-nas.vsb.cz\Temp.

  • Instalace databázového prostředí

Spustíte Virtual PC a ze stránek společnosti Oracle zvolíte download databáze. V případě, že budete poprvé používat produkt Oracle, je nutno odsouhlasit licenční podmínky a zaregistrovat se jako nový uživatel jejich produktů. Dále budete postupovat podle pokynů instalátoru. Jako velmi důležité je zapamatovat nebo si někam zapsat heslo administrátora, které bude během instalace požadováno. Bez tohoto hesla nebude možnost zpřístupnit demo databázi a pracovat nad připravenými daty.

  • Instalace SQLDeveloper

Společnost Oracle nabízí nejnovější verzi klientského prostředí pro přístup k databázovému serveru. V našem případě budeme potřebovat verzi trojkovou, ve které pak bude možno využít vizualiční nástroj GeoRaptor. Lze stáhnout ze stránek SQLDeveloper 3. Po rozbalení zip souboru bude stačit spustit .exe soubor a klientské prostředí bude k dispozici.

  • Instalace GeoRaptor

Posledním produktem je nástroj pro vizualizaci a manipulaci s prostororovými daty. Tento nástroj je ve Free licenci a je k dispozici na adrese GeoRaptor. Postup instalace je popsán na stránce Instalace GeoRaptor.

Vymezení funkčnosti Oracle Locator lze nalézt buď pro verzi 10.2 nebo pro verzi 11.2 v příloze B v dokumentaci k Oracle Database.

Zpět na začátek stránky

Cvičení 2 - Přístupy k databázi, prostředí klienta

Odemknutí uživatele HR

Pro práci s databází nejprve připojíme klientskou stranu k serveru. V prvním připojení změníme práva již definovaného uživatele "HR" a využijeme jej jako přístupový bod do databáze. Jak postupovat je popsáno v části Jak zprovoznit uživatele HR.

Přístupy k databázi

Ukážeme si různé možnosti, jak lze k databázi, uložené v prostředí Oracle přistupovat. Po instalaci Oracle, je možno komunikovat s prostředím databázového stroje přes webový prohlížeč. Jedná se o součást instalace a popis najdeme pod označením APEX.

Další možností je spojit se s databází přes příkazovou řádku, uvedeno na stránce Příkazová řádka nebo přes nainstalovaného klienta SQLDeveloper. Ke zvládnutí tohoto prostředí vytvořila firma Oracle tutoriál, který je umístěn na jejich stránkách Tutoriál SQLDeveloper.

Tvorba tabulky

Příkazem jazyka DDL pro vytvoření nové tabulky je CREATE TABLE. Způsob práce s tímto příkazem je uveden na stránce Tvorba tabulky.

Samostatný úkol

V prostředí SQLDeveloper vytvořte

  • příkaz SELECT, který k vytvořené tabulce OSOBA naváže tabulku ODDELENI v souladu s již definovaným cizím klíčem.
  • příkaz SELECT, kterým vytvoříte tabulku DITE, jako seznam dětí jednotlivých osob.
  • příkaz INSERT, kterým vložíte do každé tabulky alespoň 5 záznamů.

Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 3 - SQL I.

Vyhledávání je silnou stránkou databázových systémů. Příkaz SELECT, který je v různých SŘBD implementován, je součástí jazyka SQL. Popis implementace SQL SELECT v Oracle lze najít zde. Zopakujeme znalost základů SQL a tím položíme základ k porozumění jeho použití při prostorových dotazech.

Dotazování nad jednou tabulkou

Použití příkazu SELECT nad jednou tabulkou je popsáno na stránce Dotazy nad jednou tabulkou.

Agregační funkce

Po zopakování základního použití příkazu SELECT jej rozšíříme o Agregační funkce.

Samostatný úkol

V prostředí SQLDevelopera sestavte dotazy, kterými si vyzkoušíte své znalosti. Zadání dotazů je uvedeno na Opakování SQL. Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 4 - SQL II.

Při zjišťování údajů z databáze je často nutné využít propojení dat mezi sebou, i když jsou uložené v několika tabulkách. K tomu se využívá referenční integrita zajištěná cizím klíčem nebo propojení tabulek na základě nadefinovaných podmínek.

Dotazy nad více tabulkami

Dotazování nad více tabulkami je popsáno na stránce Dotazy nad více tabulkami.

Vnořené dotazy

Vnořené dotazy

Zpět na začátek stránky

Cvičení 5 - Principy práce s prostorovými daty

Definice SDO_GEOMETRY

Princip práce s prostorovými daty v prostředí SŘBD Oracle je postaven na objektovém datovém typu SDO_GEOMETRY. Jeho definice a význam struktury je popsán na stránce SDO_GEOMETRY.

Samostatný úkol

Navrhněte tabulku, která bude obsahovat několik sloupců, z nichž jeden bude typu SDO_GEOMETRY. V prostředí Oracle tuto tabulku vytvořte a naplňte ji daty. Vytvořte záznamy, které budou obsahovat dvoudimenzionální geoobjekty. Uloženy budou bod, linie, řtězec linií, kruh, obdélník, polygon a polygon s dírou. Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 6 - Tvorba a ukládání v ORACLE definovaných geometrií

Ukládání geometrií

Specifické kódy, které používá Spatial Oracle pro ukládání různých tvarů geometrií vyzkoušíme tvorbou tabulky jednoduchou strukturou a předpřipravenými ukázkami na stránce Ukázky geometrií. Pro vyjasnění kódů používaných v Spatial Oracle pro různé tvary geometrií použijeme příklad z dokumentace Oracle a prvky zobrazíme v prostředí Prohlížeče.

Samostatný úkol

V prostředí Oracle napište příkaz insert, který do vytvořené tabulky T1 vloží Vaše vlastní geometrie. Fantazii se meze nekladou. Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 7 - Vizualizace dat s prostorovým kontextem

Vizualizace v prostředí GeoRaptor

Extenze GeoRaptor nainstalovaná v SQLDeveloperu umožňuje vizualizovat prostorová data podobně, jako v GIS aplikacích. První seznámení s tímto prostředím je popsáno na stránce Zobrazení prostorových dat v GeoRaptoru.

Úpravy a práce v prostředí GeoRaptor

GeoRaptor nabízí možnost různých úprav zobrazených dat a zpracování různých úloh nad prostorovými daty. Blíže uvedeno na stránce Prostředí GeoRaptor.

Samostatný úkol

V prostředí GeoRaptor vyhledejte ve vlastnostech vrstvy záložku "Labelling". Změňte atribut "Label" tak, aby

  • barva textu byla modrá,
  • typ písma Italic,
  • bezpatkové písmo,
  • a umístěte popisek do levého dolního rohu.

Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 8 - Práce s bodovými geoobjekty

Zpracování bodových dat

Princip tvorby prostorových dat uživatelem, jejich uložení do databáze a další manipulace s nimi je na příkladu bodových dat popsáno na stránce Points.

Samostatný úkol

V prostředí Oracle napište

  • příkaz insert, který do vytvořené tabulky STORES vloží Vaše vlastní souřadnice v souladu s použitým SS a další informace o obchodu.
  • příkaz insert, který do vytvořené tabulky CUSTOMERS vloží Vámi vytvořené informace o dalších zákaznících včetně souřadnic v souladu s použitým SS.
  • příkaz vyhledávající nejbližšího zákazníka a zobrazíte, jak velká je vzdálenost od obchodu 101,
  • příkaz, kterým najdete KOLIK zákazníků je v dosahu 50 km.

Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 9 - Prostorové dotazy

Použití prostorových operátorů

Pro analýzy nad prostorovými daty budeme používat možnosti, které nabízí rozšíření SQL o prostorové funkce a operátory. Prostorové operátory ve formě seznamu a jejich významu převzatý ze stránek Oracle nám poslouží jako vodítko pro další práci. Na příkladu "minikatastru" Parcely si předvedeme využití vybraných operátorů.

Samostatný úkol

V prostředí Oracle si vyzkoušejte následující:

  • Proveďte kontrolu validnosti pomocí metody SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT (viz Ukázky geometrií). V případě chyby najděte význam chybové hlášky a pokuste se chybu opravit. Zdůvodněte případnou chybu a v datech ji nahraďte validními hodnotami.
  • Příkaz insert, který do vytvořené tabulky PARCELA vloží parcelu ve tvaru obdélníka se souřadnicemi jednoho rohu

(0,0). Může mít tento úkol dvě různá řešení?

  • Vložte do vytvořené tabulky PARCELA parcelu ve tvaru kruhu v souladu s již použitým SS.
  • Příkaz insert, kterým vlastníkovi Janu Volnému přidělíte vlastnictví parcely s id=24. Zjistěte dále, zda na této parcele existuje nějaká stavba?
  • Příkaz, kterým zjistíte všechny sousedy nové parcely pana Volného.

Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 10 - Import dat s prostorovým kontextem

Import prostorových dat v prostředí GeoRaptor

Často se stává, že potřebujeme importovat prostorová data mezi různými aplikacemi. V prostředí GeoRaptoru je připraven uživatelsky přívětivý způsob, jak formát shapefile naimportovat do prostředí Oracle. Postup je popsán na stránce Loading shapefiles into Oracle Spatial.

Import prostorových dat v režimu příkazové řádky

Pokud prostředí GeoRaptor nemáme k dispozici, můžeme postupovat pomocí skriptu či příkazy z příkazové řádky, viz Import prostorových dat.

Vyzkoušejte si použití prostorových operátorů/funkcí nad importovanými daty, několik příkladů včetně vizualizace výstupů je uvedeno na stránce Hledání v MS kraji.

Samostatný úkol

Do prostředí Oracle naimportujte data z ArcCR, kraje, okresy a řeky.

  • Vytvořte příkaz, který vyhledá všechny okresy v Severomoravském kraji.
  • Vytvořte příkaz, který nalezne řeky, protékající okresem Vsetín.

Výsledky své práce ukažte pedagogovi.

Zpět na začátek stránky

Cvičení 11 - Zpracování vlastního projektu

Semestrální projekt je koncipován jako samostatně navržený tématický případ, kdy nad prostorovými daty bude vypracováno několik úloh s prostorovými operátory. Možnost výběru zadání je specifikována na stránce s popisem úkolů.

Ukázky předchozích projektů si lze prohlédnout na stránce Ukázkový zápočtový úkol.

Zpět na začátek stránky

PostgreSQL a PostGIS

Nahrnuto


Financováno z projektu CZ.1.07/2.2.00/28.0308 Inovace bakalářských a magisterských studijních oborů na Hornicko-geologické fakultě VŠB-TUO, spolufinancovaného Evropským sociálním fondem a státním rozpočtem České republiky.