Modelování geoprostorové báze dat na úrovni datového modelu KN

Modelování geoprostorové báze dat na úrovni datového modelu KN Modelování geoprostorové báze dat na úrovni datového modelu KN

27.06.2015 Views

Modelování geoprostorové báze dat na úrovni datového modelu KN 6 Testování generalizačních funkcí v Oracle Spatial 10g V kapitole 3.7 a 3.8 jsem teoreticky popsal tři funkce a jednu proceduru, které se v prostředí Spatial nechají přímo či vhodnou volbou vstupních parametrů použít ke geometrickým generalizačním účelům. Tyto podprogramy jsem otestoval na datech uložených v tabulce KATASTRALNI_HRANICE_MAT ve sloupci hranice. Návratovou hodnotou otestovaných funkcí je generalizovaný geometrický popis katastrální hranice uložený v objektovém datovém typu SDO_GEOMETRY. Pro uchování generalizovaných dat jsem v tabulce KATASTRALNI_HRANICE_MAT definoval nový sloupec typu SDO_GEOMETRY, do kterého jsem uložil výsledky použité funkce. V jazyce PL/SQL jsem naprogramoval postup, během kterého došlo k načtení vstupních hodnot (záznamy ve sloupci hranice), k aplikování generalizační funkce na každý vybraný záznam a uložení zjednodušeného popisu zpět do tabulky KATASTRALNI_HRANICE_MAT do nově definovaného sloupce a odpovídajícího řádku. Nový sloupec byl definován pro každou nově použitou funkci a zároveň pro různé hodnoty parametrů jedné a té samé funkce. Ukázka zmíněného programu v jazyce PL/SQL: DECLARE pom_geom HRANICE_VIEW.HRANICE_VIEW%TYPE; smpl_geom HRANICE_VIEW.HRANICE_VIEW%TYPE; pom_id HRANICE_VIEW.id%TYPE; pocet NUMBER; pom NUMBER; CURSOR k1 IS SELECT id,HRANICE FROM KATASTRALNI_HRANICE_MAT WHERE id BETWEEN 1 AND 5; BEGIN pom:=0; pocet:=5; OPEN k1; LOOP FETCH k1 INTO pom_id,pom_geom; SELECT sdo_util.SIMPLIFY(hranice,50) INTO smpl_geom FROM KATASTRALNI_HRANICE_MAT WHERE id=pom_id; UPDATE KATASTRALNI_HRANICE_MAT SET simplify_50=smpl_geom WHERE id=pom_id; pom:=pom+1; IF pom=pocet THEN EXIT; END IF; END LOOP; CLOSE k1; END; / Př. 27: Generalizace geometrických popisů uložených ve sloupci hranice. 64

Modelování geoprostorové báze dat na úrovni datového modelu KN Uvedená ukázka aplikuje na načtené záznamy funkci SDO_UTIL.SIMPLIFY s hodnotou parametru treshold rovno 50 a výsledný zjednodušený geometrický popis uloží do sloupce simplify_50. Jediným případem, kdy jsem postupoval odlišně od uvedeného způsobu získávání a ukládání generalizovaných dat, bylo použití procedury SDO_SAM.SIMPLIFY_LAYER. Zde stačilo vytvořit nový sloupec v tabulce KATASTRALNI_HRANICE_MAT a jedním voláním procedury SDO_SAM.SIMPLIFY_LAYER naplnit celý sloupec novými záznamy bez nutnosti využití volání procedury v cyklu. Do tabulky KATASTRALNI_HRANICE_MAT jsem přidal oproti její původní definici celkem devět nových sloupců, do nichž jsem uložil data podle následující tabulky: Název nově definovaného Použitý podprogram sloupce simplify_20 Funkce SDO_UTIL.SIMPLIFY s hodnotou parametru treshold rovno 20. simplify_50 Funkce SDO_UTIL.SIMPLIFY s hodnotou parametru treshold rovno 50. Funkce SDO_SAM.SIMPLIFY_GEOMETRY simpl_geom_5 s hodnotou parametru pct_area_change_limit rovno 5 a hodnotou parametru tol rovno 0,005. Funkce SDO_SAM.SIMPLIFY_GEOMETRY simpl_geom_10 s hodnotou parametru pct_area_change_limit rovno 10 a hodnotou parametru tol rovno 0,005. Funkce SDO_SAM.SIMPLIFY_GEOMETRY simpl_geom_20 s hodnotou parametru pct_area_change_limit rovno 20 a hodnotou parametru tol rovno 0,005. simpl_duplic_1 Funkce SDO_UTIL.REMOVE_DUPLICATE_VERTICES s hodnotou parametru tolerarance rovno 1. simpl_duplic_10 Funkce SDO_UTIL.REMOVE_DUPLICATE_VERTICES s hodnotou parametru tolerarance rovno 10. simpl_duplic_50 Funkce SDO_UTIL.REMOVE_DUPLICATE_VERTICES s hodnotou parametru tolerarance rovno 50. Procedura SDO_SAM.SIMPLIFY_LAYER s hodnotou simpl_layer_10 parametru pct_area_change_limit rovno 10 a hodnotou parametru tol rovno 0,005. Tab. 5 Nově přidané sloupce do tabulky KATASTRALNI_HRANICE_MAT. 65

Modelování geoprostorové báze <strong>dat</strong> <strong>na</strong> úrovni <strong>dat</strong>ového <strong>modelu</strong> <strong>KN</strong><br />

Uvedená ukázka aplikuje <strong>na</strong> <strong>na</strong>čtené záz<strong>na</strong>my funkci<br />

SDO_UTIL.SIMPLIFY s hodnotou parametru treshold rovno 50 a<br />

výsledný zjednodušený geometrický popis uloží do sloupce<br />

simplify_50. Jediným případem, kdy jsem postupoval odlišně od<br />

uvedeného způsobu získávání a ukládání generalizovaných <strong>dat</strong>, bylo<br />

použití procedury SDO_SAM.SIMPLIFY_LAYER. Zde stačilo vytvořit nový<br />

sloupec v tabulce KATASTRALNI_HRANICE_MAT a jedním voláním<br />

procedury SDO_SAM.SIMPLIFY_LAYER <strong>na</strong>plnit celý sloupec novými<br />

záz<strong>na</strong>my bez nutnosti využití volání procedury v cyklu.<br />

Do tabulky KATASTRALNI_HRANICE_MAT jsem přidal oproti její<br />

původní definici celkem devět nových sloupců, do nichž jsem uložil <strong>dat</strong>a<br />

podle následující tabulky:<br />

Název nově<br />

definovaného<br />

Použitý podprogram<br />

sloupce<br />

simplify_20<br />

Funkce SDO_UTIL.SIMPLIFY s hodnotou parametru<br />

treshold rovno 20.<br />

simplify_50<br />

Funkce SDO_UTIL.SIMPLIFY s hodnotou parametru<br />

treshold rovno 50.<br />

Funkce<br />

SDO_SAM.SIMPLIFY_GEOMETRY<br />

simpl_geom_5 s hodnotou parametru pct_area_change_limit<br />

rovno 5 a hodnotou parametru tol rovno 0,005.<br />

Funkce<br />

SDO_SAM.SIMPLIFY_GEOMETRY<br />

simpl_geom_10 s hodnotou parametru pct_area_change_limit<br />

rovno 10 a hodnotou parametru tol rovno 0,005.<br />

Funkce<br />

SDO_SAM.SIMPLIFY_GEOMETRY<br />

simpl_geom_20 s hodnotou parametru pct_area_change_limit<br />

rovno 20 a hodnotou parametru tol rovno 0,005.<br />

simpl_duplic_1<br />

Funkce SDO_UTIL.REMOVE_DUPLICATE_VERTICES<br />

s hodnotou parametru tolerarance rovno 1.<br />

simpl_duplic_10<br />

Funkce SDO_UTIL.REMOVE_DUPLICATE_VERTICES<br />

s hodnotou parametru tolerarance rovno 10.<br />

simpl_duplic_50<br />

Funkce SDO_UTIL.REMOVE_DUPLICATE_VERTICES<br />

s hodnotou parametru tolerarance rovno 50.<br />

Procedura SDO_SAM.SIMPLIFY_LAYER s hodnotou<br />

simpl_layer_10 parametru pct_area_change_limit rovno 10 a<br />

hodnotou parametru tol rovno 0,005.<br />

Tab. 5 Nově přidané sloupce do tabulky KATASTRALNI_HRANICE_MAT.<br />

65

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!