Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Prostorové databáze PDB demonstrační cvičení Oracle

Podobné prezentace


Prezentace na téma: "Prostorové databáze PDB demonstrační cvičení Oracle"— Transkript prezentace:

1 Prostorové databáze PDB demonstrační cvičení Oracle
[ ] [ ]

2 Objekty v databázi CREATE TYPE Person AS OBJECT ( name VARCHAR(30), birthdate DATE, MEMBER FUNCTION getAge RETURN NUMBER ) NOT FINAL; CREATE TYPE Employee UNDER Person ( salary NUMBER, manager REF Employee, MEMBER PROCEDURE incrSalary (increment NUMBER) ); SELECT REF(p) INTO x FROM person_tab p WHERE ... … p.manager.name … ; [ Kuba ]

3 Objektově relační schizofrenie
CREATE TABLE person_tab OF Person; INSERT INTO person_tab VALUES ( 'Jim Smith', '15 Jun 1965' ); INSERT INTO person_tab VALUES ( Person( 'Jim Smith', '15 Jun 1965‘ ) ); VALUES ( Employee( 'Jim Smith', '15 Jun 1965', 5000 ) );

4 Kolekce CREATE TYPE WeekDays AS VARRAY(7) OF VARCHAR(10);
CREATE TYPE PhoneNumberTable AS TABLE OF PhoneNumber; CREATE TYPE Person AS OBJECT ( ... phoneNumbers PhoneNumberTable ); = CREATE TABLE person_tab OF Person NESTED TABLE phoneNumbers STORE AS phoneNumbers_tab;

5 Vytvoření tabulky Tabulka s metadaty Vložení metadat
Vytvoření tabulky s prostorovými daty Vložení dat Vytvoření indexu [ ]

6 Tabulka s metadaty Nevytváří se, od verze 9.X.Y již součástí systému (pohled v MDSYS) CREATE TABLE USER_SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30), DIMINFO MDSYS.SDO_DIM_ARRAY, SRID zadává se NULL ); Listing Information about Schema Objects ALL_OBJECTS, USER_OBJECTS ALL_CATALOG, USER_CATALOG ALL_TABLES, USER_TABLES ALL_TAB_COLUMNS, USER_TAB_COLUMNS ALL_TAB_COMMENTS, USER_TAB_COMMENTS ALL_COL_COMMENTS, USER_COL_COMMENTS ALL_VIEWS, USER_VIEWS ALL_MVIEWS, USER_MVIEWS ALL_INDEXES, USER_INDEXES ALL_IND_COLUMNS, USER_IND_COLUMNS USER_CLUSTERS USER_CLU_COLUMNS ALL_SEQUENCES, USER_SEQUENCES ALL_SYNONYMS, USER_SYNONYMS ALL_DEPENDENCIES, USER_DEPENDENCIES

7 Vložení metadat Nutné zaregistrovat informace o tom, kde jsou prostorová data – neděje se automaticky, jako u relačních dat INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'TABULKA', 'geometrie', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT( 'X', 0, 400, ), MDSYS.SDO_DIM_ELEMENT( 'Y', 0, 300, ) ), NULL ); CREATE TABLE USER_SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30), DIMINFO MDSYS.SDO_DIM_ARRAY, SRID zadává se NULL );

8 Vytvoření tabulky Jméno a sloupec musí korespondovat s metadaty
CREATE TABLE TABULKA ( jméno_věci VARCHAR2(32), geometrie MDSYS.SDO_GEOMETRY );

9 SDO_GEOMETRY Předdefinováno jako:
CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY );

10 SDO_GTYPE 4 číslice: dltt d: dimenze (1-4 (2))
CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY ); 4 číslice: dltt d: dimenze (1-4 (2)) l: lineární reference (0) tt: typ (00-07) 00: neznámý 01: bod 02: úsečka / křivka 03: polygon 04-07: viz manuál

11 SDO_SRID Souřadný systém Euklidovský typicky NULL
CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY ); Souřadný systém Euklidovský typicky NULL

12 SDO_POINT Objekt – bod X, Y, Z Jen pokud „l“ z GTYPE je 0
CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY ); Objekt – bod X, Y, Z Jen pokud „l“ z GTYPE je 0 Typicky ve 2D Další dvě položky MUSÍ být NULL Pokud geometrie není bod je NULL

13 SDO_ELEM_INFO Pole trojic Offset v dalším parametru SDO_ORDINATES
CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY ); Pole trojic Offset v dalším parametru SDO_ORDINATES Typ elementu Interpretace 1-1 Bod 2-1 Řetězec úseček 1003/ Polygon 1003/ Obdélník (rovnoběžný) 1003/ Kružnice

14 SDO_ORDINATES Pole (n-tic)
CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY ); Pole (n-tic) Seznam bodů, které tvoří objekt definovaný v SDO_ELEM_INFO X, Y, Z Důležitý offset Musí odpovídat definici

15 Příklad dat A = 40 , 20 B 110 90 exterior rectangle ETYPE 1003 E _ INTERPRETATION 3 MDSYS . SDO ORDINATE ARRAY ( ) Obdélník INSERT INTO TABULKA VALUES ( 'PC', MDSYS.SDO_GEOMETRY ( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY( 1,1003,3 ), MDSYS.SDO_ORDINATE_ARRAY( 40,20, 110,90 ) ) );

16 Příklad dat A = 75 , 15 B 115 55 exterior circle ETYPE 1003 E _ INTERPRETATION 4 MDSYS . SDO ORDINATE ARRAY ( C ) 95 Kružnice INSERT INTO TABULKA VALUES ( 'Kvetinac1', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY( 1,1003,4 ), MDSYS.SDO_ORDINATE_ARRAY( 75,15, 75,95, 115,55,) ) );

17 Vytvoření indexu Až po vložení dat Ne nad prázdnou tabulkou
Detaily viz dokumentace CREATE INDEX TABULKA_I ON TABULKA(geometrie) INDEXTYPE IS MDSYS.SPATIAL_INDEX; CREATE INDEX TABULKA_I ON TABULKA(geometrie) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('SDO_LEVEL = 6, SDO_NUMTILES=12');

18 Ukázka

19 Dotazování a operace SQL
Funkce z objektů prostorové nadstavby nad objektově-relačním schématem Operátory Geometrické funkce Agregační funkce Nelze bez indexu

20 Ukázka operací SDO_GEOM.SDO_AREA(geom, tol, [,unit])
geom je geometrie (jak ji ukládáme do DB) vytažená z DB dotazem, nebo je to konstanta stejného tvaru tol je číselná přesnost, s jakou se má pracovat v rámci sítě bodů (zásadně stejná, nebo hrubější, než jak je objekt uložen) nepovinná je textová položka udávající jednotky Výsledek: Výsledkem je číselná hodnota udávající plochu 2D polygonu.

21 Ukázka operací SDO_GEOM.SDO_CENTROID(geom, tol)
geom je geometrie (jak ji ukládáme do DB) vytažená z DB dotazem, nebo je to konstanta stejného tvaru tol je číselná přesnost, s jakou se má pracovat v rámci sítě bodů (zásadně stejná, nebo hrubější, než jak je objekt uložen) Výsledek: Výsledkem je geometrie – bod. Jedná se o těžiště a je aplikovatelné na polygon, multi-polygon, bod, bodový shluk (cluster).

22 Ukázka operací SDO_GEOM.SDO_DISTANCE(geom1, geom2, tol, [,unit])
geom1/geom2 je geometrie (jak ji ukládáme do DB) vytažená z DB dotazem, nebo je to konstanta stejného tvaru tol je číselná přesnost, s jakou se má pracovat v rámci sítě bodů (zásadně stejná, nebo hrubější, než jak je objekt uložen) nepovinná je textová položka udávající jednotky Výsledek: Výsledkem je číselná hodnota udávající vzdálenost dvou nejbližších bodů, nebo segmentů daných objektů.

23 Ukázka operací SDO_GEOM.SDO_INTERSECTION(geom1, geom2, tol) // UNION, XOR, DIFERENCE geom1/geom2 je geometrie (jak ji ukládáme do DB) vytažená z DB dotazem, nebo je to konstanta stejného tvaru tol je číselná přesnost, s jakou se má pracovat v rámci sítě bodů (zásadně stejná, nebo hrubější, než jak je objekt uložen) Výsledek: Výsledkem je geometrický obrazec daný topologickým průnikem obou zadaných objektů.

24 Ukázka dotazu SELECT A.jméno_věci FROM TABULKA A, TABULKA D WHERE D.jméno_věci='Kvetinac3' AND A.jméno_věci<>D.jméno_věci AND MDSYS.SDO_WITHIN_DISTANCE( A.geometrie, D.geometrie, 'distance=50') = 'TRUE';

25 Ukázka dotazu SELECT V.GID, W.GID, SDO_GEOM.SDO_DISTANCE(V.geometrie, W.geometrie, 0.005) "Vzdalenost” FROM VECIKDE V, VECIKDE W WHERE W.GID <> V.GID AND W.GID IN ( SELECT A.GID FROM VECIKDE A, VECIKDE C WHERE C.GID='Stul' AND A.GID<>C.GID AND SDO_RELATE(A.geometrie, C.geometrie, 'mask=anyinteract') = 'TRUE' ) AND V.GID IN (SELECT A.GID SDO_RELATE(A.geometrie, C.geometrie, 'mask=anyinteract') = 'TRUE' );

26 GeoRaster Rastrová data (grid, buňky, pixely) Vzdálené pozorování
Fotogrammetrie Mapové podklady GIS [ ]

27 Vytvoření tabulky CREATE TABLE georaster_table ( georid VARCHAR2(32), georaster SDO_GEORASTER ); CREATE TYPE SDO_GEORASTER AS OBJECT ( rasterType NUMBER, spatialExtent MDSYS.SDO_GEOMETRY, rasterDataTable VARCHAR2(32), rasterID NUMBER, metadata SYS.XMLType );

28 Vytvoření rastru CREATE TABLE rasterDataTable_1 OF SDO_RASTER ( PRIMARY KEY (rasterID, pyramidLevel, bandBlockNumber, rowBlockNumber, columnBlockNumber)) TABLESPACE geor_tbs NOLOGGING LOB(rasterBlock) STORE AS rdt_1_rbseg( TABLESPACE geor_tbs_2 CHUNK CACHE READS NOLOGGING PCTVERSION 0 STORAGE (PCTINCREASE 0) ) );

29 Manipulace SDO_GEOR SDO_GEOR_UTL
[ ]

30 Díky Otázky?


Stáhnout ppt "Prostorové databáze PDB demonstrační cvičení Oracle"

Podobné prezentace


Reklamy Google