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

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

Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 1 / 30 Prostorové databáze PDB demonstrační cvičení.

Podobné prezentace


Prezentace na téma: "Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 1 / 30 Prostorové databáze PDB demonstrační cvičení."— Transkript prezentace:

1 Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 1 / 30 Prostorové databáze PDB demonstrační cvičení Oracle [ ]http://www.fit.vutbr.cz/~chmelarp/pdb/ [ ]http://www.fit.vutbr.cz/study/courses/PDB

2 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 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‘ ) ); INSERT INTO person_tab VALUES ( Employee( 'Jim Smith', '15 Jun 1965', 5000 ) );

4 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 Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 5 / 30 Vytvoření tabulky  Tabulka s metadaty  Vložení metadat  Vytvoření tabulky s prostorovými daty  Vložení dat  Vytvoření indexu [ ]http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14255.pdf

6 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), DIMINFOMDSYS.SDO_DIM_ARRAY, SRIDzadá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 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), DIMINFOMDSYS.SDO_DIM_ARRAY, SRIDzadává se NULL );

8 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 9 SDO_GEOMETRY Předdefinováno jako: CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPENUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY );

10 10 SDO_GTYPE 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 CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPENUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY );

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

12 12 SDO_POINT 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 CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPENUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY );

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

14 14 CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPENUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY ); SDO_ORDINATES 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 15 Příklad dat 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 ) ) ); A=40,20 B=110,90 exterior rectangle ETYPE=1003E_INTERPRETATION=3 MDSYS.SDO_ORDINATE_ARRAY(A,B)

16 16 Příklad dat 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,) ) ); A=75,15 B=115,55 exterior circle ETYPE=1003E_INTERPRETATION=4 MDSYS.SDO_ORDINATE_ARRAY(A,B,C) C=75,95

17 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 18 Ukázka

19 Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 19 / 30 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 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 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 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 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 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 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 FROM VECIKDE A, VECIKDE C WHERE C.GID='Stul' AND A.GID<>C.GID AND SDO_RELATE(A.geometrie, C.geometrie, 'mask=anyinteract') = 'TRUE' );

26 Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 26 / 30 GeoRaster Rastrová data (grid, buňky, pixely) Vzdálené pozorování Fotogrammetrie Mapové podklady GIS [ ]http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14254.pdf

27 27 Vytvoření tabulky CREATE TABLE georaster_table ( georid VARCHAR2(32), georaster SDO_GEORASTER ); CREATE TYPE SDO_GEORASTER AS OBJECT ( rasterTypeNUMBER, spatialExtentMDSYS.SDO_GEOMETRY, rasterDataTable VARCHAR2(32), rasterID NUMBER, metadataSYS.XMLType );

28 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 8192 CACHE READS NOLOGGING PCTVERSION 0 STORAGE (PCTINCREASE 0) ) );

29 29 Manipulace  SDO_GEOR  SDO_GEOR_UTL [ ]http://www.oracle.com/technology/sample_code/products/spatial/htdocs/georaster.html

30 Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 30 / 30 Díky Otázky?


Stáhnout ppt "Dušan kolář Petr Chmelař UIFS FIT VUT PDB Spatial OR koncept Vytvoření tabulky Dotazy a operace GeoRaster 1 / 30 Prostorové databáze PDB demonstrační cvičení."

Podobné prezentace


Reklamy Google