You are on page 1of 103

Zarz dzanie danymi przestrzennymi

z uwzgl dnieniem mo liwo ci bazy danych Oracle 11g

Krzysztof Jankiewicz
Krzysztof.Jankiewicz@cs.put.poznan.pl

Politechnika Pozna ska, Instytut Informatyki, KJ

Plan wyst pienia


Koncepcja danych przestrzennych Przetwarzanie danych przestrzennych w praktyce Standard SQL/MM Part 3: Spatial Implementacja standardu SQL/MM Part 3: Spatial w bazie danych Oracle 11g Zagadnienia uzupeniaj ce

Politechnika Pozna ska, Instytut Informatyki, KJ

Koncepcja danych przestrzennych


Zastosowanie i powody wykorzystywania Terminologia Model danych i metadane Indeksowanie danych przestrzennych

Politechnika Pozna ska, Instytut Informatyki, KJ

Dane przestrzenne zastosowania


Zastosowania
GIS Geographic Information System CAM Computer-Aided Manufacturing CAD Computer-Aided Design

A co poza tym?
Wszelkie systemy zawieraj ce dane pochodz ce z rozproszonych geograficznie lub przestrzennie miejsc (urz dy pracy, ZUS, marketing, reklama, spedycja, lecznictwo, )
Politechnika Pozna ska, Instytut Informatyki, KJ 4

Dane przestrzenne dlaczego?


Relacje Dlaczego nie tak:
fips_cntry cntry_name

Dane przestrzenne A tak:

PL EZ GM
fips_cntry

Poland Czech Republic Germany


city_name

PL PL GM GM EZ

Szczecin Gorzow Wielkopolski Berlin Potsdam Prague


5

Politechnika Pozna ska, Instytut Informatyki, KJ

Dane przestrzenne dlatego


Pytanie
W jakim pa stwie le y Praga? Czy Praga jest w tym samym pa stwie co Pilzno? Co le y bli ej Berlina, Gorzw Wielkopolski czy Szczecin? Czy Polska graniczy z Republik Czesk ? Jakie Pa stwa s siaduj z Polsk ? Jakie miasta znajduj si w odlego ci do 200 km od Poznania? Ktre pa stwo jest wi ksze Republika Czeska czy Sowacja?
Politechnika Pozna ska, Instytut Informatyki, KJ 6

Relacje

Spatial Option

Dane przestrzenne
hierarchia obiektw
Warstwa przestrzenna

Geometria

...

Geometria

...

Geometria

Element

...

Element

...

Element

Punkt

Ci g linii

Wielok t

Zo ony ci g linii ...

Politechnika Pozna ska, Instytut Informatyki, KJ

Warstwa przestrzenna (layer)


Jest zbiorem geometrii posiadaj cych podobny zestaw atrybutw (np. zwi zanych znaczeniowo) Przykady warstw przestrzennych:
Mapy krajw, miast; Sie drg, sie wodoci gw, obszary le ne, obszary zurbanizowane, obszary o okre lonej g sto ci zaludnienia; Sie sklepw, sie hurtowni; Sie no nikw reklamowych, obiekty okre lonego typu znacz cego dla reklamodawcw;

W bazie danych Oracle warstwa jest z reguy to sama z pojedyncz kolumn w tabeli.

Politechnika Pozna ska, Instytut Informatyki, KJ

Geometria
Jest struktur przestrzenn zbudowan ze zbioru prostych elementw geometrycznych, takich jak uki, proste czy punkty. Jest atomowa z punktu widzenia wi kszo ci operacji dost pnych w ramach Opcji Przestrzennej (Oracle Spatial) Reprezentowana przez obiekt typu SDO_GEOMETRY Przykady geometrii:
Wyspa, jezioro, wojewdztwo, obszar zalesiony; Ulica, rzeka, granica; Sklep, hurtownia, no nik reklamowy, apteka, szkoa Konstelacja gwiazd, zbir szk, archipelag

SDO_GEOMETRY(2007, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 277, 1003, 1, 421, 1003, 1, 609, 1003, 1, 695, 1003, 1), SDO_ORDINATE_ARRAY(12.603676, 50.408755, 12.620972, 50.411942, 12.671389, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

Element
Skadowa geometrii fragment jej struktury Z reguy nie jest przetwarzany w oderwaniu od geometrii. Elementy mog by r nego typu:
Punkt, Linia, Wielok t

5 3

W zale no ci od typu elementu do jego opisu wykorzystywany jest jeden lub cay zbir punktw (wsprz dnych)
SDO_GEOMETRY(2007, 8307, NULL, 1 2 3

SDO_ELEM_INFO_ARRAY(1, 1003, 1, 277, 1003, 1, 421, 1003, 1, 609, 1003, 1, 695, 1003, 1), SDO_ORDINATE_ARRAY(12.603676, 50.408755, 12.620972, 50.411942, 12.671389, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

10

Typ obiektowy - SDO_GEOMETRY


Typ SDO_GEOMETRY pozwalaj cy na zdefiniowanie i przechowywanie geometrii Przechowywany w schemacie u ytkownika MDSYS
MDSYS.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); CREATE TABLE "COUNTRY_BOUNDARIES" ( "FIPS_CNTRY" VARCHAR2(2), "CNTRY_NAME" VARCHAR2(40), "GEOM" "MDSYS"."SDO_GEOMETRY");
Politechnika Pozna ska, Instytut Informatyki, KJ 11

SDO_GEOMETRY
atrybut SDO_GTYPE
SDO_GTYPE okre la typ geometrii w formacie dltt
d liczba wymiarw wykorzystywanych do opisu geometrii l dotyczy systemu LRS (linear referencing system) tt typ geometrii.
SDO_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES

Prawidowe warto ci to:


dl00 UNKNOWN_GEOMETRY geometria ignorowana przez funkcje i operatory przestrzenne dl01 POINT geometria skadaj ca si z jednego punktu. dl02 LINESTRING geometria skadaj ca si z jednego ci gu linii. dl03 POLYGON jeden wielok t. dl04 COLLECTION r norodna kolekcja elementw. dl05 MULTIPOINT geometria skadaj ca si z wielu punktw. dl06 MULTILINESTRING wiele ci gw linii. dl07 MULTIPOLYGON wiele roz cznych wielok tw lub powierzchni. dl08 SOLID brya geometria skadaj ca si z wielu paszczyzn zamykaj cych przestrze . dl09 MULTISOLID geometria skadaj ca si z wielu bry.

SDO_GEOMETRY(2007, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 277, 1003, 1, 421, 1003, 1, 609, 1003, 1, 695, 1003, 1), SDO_ORDINATE_ARRAY(12.603676, 50.408755, 12.620972, 50.411942, 12.671389, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

12

SDO_GEOMETRY
atrybut SDO_GTYPE przykady
insert into MAJOR_CITIES(FIPS_CNTRY, CITY_NAME, GEOM) values ('PL', 'Poznan', MDSYS.SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(16.8869994, 52.3960002, NULL), NULL, NULL);

insert into COUNTRY_BOUNDARIES(FIPS_CNTRY, CNTRY_NAME, GEOM) values ('PL','Poland', MDSYS.SDO_GEOMETRY(2003, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1), MDSYS.SDO_ORDINATE_ARRAY(22.686068, 49.577095, ) );

insert into RIVERS(ID, NAME, GEOM) values (51,'Vistula', MDSYS.SDO_GEOMETRY(2002, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(19.282881, 50.02301, ) );

Politechnika Pozna ska, Instytut Informatyki, KJ

13

SDO_GEOMETRY
atrybut SDO_SRID
SDO_SRID definiuje geodezyjny ukad odniesienia (odwzorowanie) Warto pusta oznacza, e aden ukad odniesienia nie jest wykorzystywany wsprz dne s wsprz dnymi kartezja skimi. SDO_SRID musi zawiera warto znajduj c si w kolumnie SRID w tabeli SDO_COORD_REF_SYS W bazie danych Oracle 11g dost pnych jest prawie 4,5 tysi ca ukadw odniesienia
SDO_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES
SRID 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 8307 4327 COORD_REF_SYS_NAME Pulkovo 1942(58) / Poland zone I Pulkovo 1942(58) / Poland zone II Pulkovo 1942(58) / Poland zone III Pulkovo 1942(58) / Poland zone IV Pulkovo 1942(58) / Poland zone V ETRS89 / Poland CS2000 zone 5 ETRS89 / Poland CS2000 zone 6 ETRS89 / Poland CS2000 zone 7 ETRS89 / Poland CS2000 zone 8 ETRS89 / Poland CS92 Longitude / Latitude (WGS 84) WGS 84 (geographic 3D)

SDO_GEOMETRY(2007, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 277, 1003, 1, 421, 1003, 1, 609, 1003, 1, 695, 1003, 1), SDO_ORDINATE_ARRAY(12.603676, 50.408755, 12.620972, 50.411942, 12.671389, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

14

SDO_GEOMETRY
atrybut SDO_POINT
SDO_POINT zoptymalizowana metoda przechowywania pojedynczych punktw przestrzennych Jest definiowany za pomoc typu SDO_POINT_TYPE posiadaj cego trzy atrybuty (X,Y,Z) Nie jest uwzgl dniany gdy parametry SDO_ELEM_INFO i SDO_ORDINATES s wypenione
SDO_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES

insert into MAJOR_CITIES(FIPS_CNTRY, CITY_NAME, GEOM) values ('PL', 'Poznan', MDSYS.SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(16.8869994, 52.3960002, NULL), NULL, NULL);

Politechnika Pozna ska, Instytut Informatyki, KJ

15

SDO_GEOMETRY
atrybut SDO_ELEM_INFO
Je eli geometria nie jest pojedynczym SDO_GTYPE punktem przechowywanym w SDO_SRID parametrze SDO_POINT wwczas SDO_POINT SDO_ELEM_INFO SDO_ELEM_INFO zawiera opis SDO_ORDINATES poszczeglnych elementw wchodz cych w skad geometrii. Ka dy element opisywany jest przez trzy parametry:
SDO_STARTING_OFFSET pozycja pierwszej koordynaty w SDO_ORDINATES SDO_ETYPE definiuj cy typ elementu SDO_INTERPRETATION interpretacja, posiada r ne znaczenie w zale no ci od typu elementu
SDO_GEOMETRY(2007, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 277, 1003, 1, 421, 1003, 1, 609, 1003, 1, 695, 1003, 1), SDO_ORDINATE_ARRAY(12.603676, 50.408755, 12.620972, 50.411942, 12.671389, ) )

SDO_GEOMETRY AS

Politechnika Pozna ska, Instytut Informatyki, KJ

16

SDO_ETYPE i SDO_INTERPRETATION
czyli typy elementw i ich interpretacje
Typ obiektu
nieznany element punkt

Warto ci SDO_ETYPE
0 1

Warto ci SDO_INTERPRETATION
1 punkt 0 orientacja (kierunek) dla punktu # liczba punktw w kolekcji 1 linie proste, 2 uki 1 linie proste, 2 uki, 3 zoptymalizowany prostok t, 4 koo # liczba skadowych (ci gw linii) tworz cych zo ony ci g linii # liczba skadowych (ci gw linii) tworz cych zo ony wielok t # liczba wielok tw tworz ca paszczyzn (wspdzielone kraw dzie mog nale e co najwy ej do dwch wielok tw) # liczba paszczyzn tworz ca bry brya mo e si skada z jednej paszczyzny zewn trznej oraz dowolnej liczby paszczyzn wewn trznych 3 zoptymalizowany prostopado cian 17

ci g linii wielok t

2 1003 zewn trzny 2003 wewn trzny

zo ony ci g linii zo ony wielok t paszczyzna

4 1005 zewn trzny 2005 wewn trzny 1006 zewn trzna 2006 wewn trzna 1007

brya

Politechnika Pozna ska, Instytut Informatyki, KJ

Pene wsparcie dla danych 3D pojawio si w wersji 11g (dotyczy to gwnie elementw, operatorw, indeksowania)

SDO_ETYPE i SDO_INTERPRETATION
przykady
(1,2,1) (1,1003,2) (1,1003,1)

(1,1,7)

(1,1005,8,)

(1,1003,3)

(1,2,2) (1,1003,4) (1,1005,2, ) (1,4,3, 1,2,1, 5,2,2, 13,2,1)


Politechnika Pozna ska, Instytut Informatyki, KJ

(1,1003,1, 9,2003,1)

18

SDO_GEOMETRY
atrybut SDO_ORDINATES
Zawiera koordynaty SDO_GEOMETRY AS SDO_GTYPE (wsprz dne poszczeglnych SDO_SRID SDO_POINT punktw) wszystkich SDO_ELEM_INFO SDO_ORDINATES elementw tworz cych geometri Liczba warto ci su cych do opisania wsprz dnych ka dego punktu jest uzale niona warto ci atrybutu SDO_GTYPE Atrybut SDO_ELEM_INFO wyznacza, ktre punkty w SDO_ORDINATES nale do ktrych elementw
Politechnika Pozna ska, Instytut Informatyki, KJ 19

SDO_GEOMETRY
atrybut SDO_ORDINATES przykady
(1,2,1) (1,2, 22,9, 41,2, 43,9, 71,1) (1,4,3, 1,2,1, 5,2,2, 13,2,1) (17,1, 1,1, 1,9, 2,14, 13,9, 15,5, 19,3, 31,3, 36, 8)

(1,1003,4) (10,20, 4,17, 1,10) (1,1,7) (1,12, 3,6, 14,6, 17,12, 22,15, 26,15, 30,13) (1,1003,1, 11,2003,1) (1,1, 30,5, 20,12, 7,12, 1,1, 8,5, 8,10, 18,10, 18,5, 8,5)
Politechnika Pozna ska, Instytut Informatyki, KJ 20

SDO_GEOMETRY
przykady
insert into MAJOR_CITIES(FIPS_CNTRY, CITY_NAME, GEOM) values ('PL', 'Poznan', MDSYS.SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(16.8869994, 52.3960002, NULL), NULL, NULL); insert into COUNTRY_BOUNDARIES(FIPS_CNTRY, CNTRY_NAME, GEOM) values ('PL','Poland', MDSYS.SDO_GEOMETRY(2003, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1), MDSYS.SDO_ORDINATE_ARRAY(22.686068,49.577095, 22.717216,49.604439,22.779999,49.674995,23.110828,49.954994, 23.146107,49.983047,23.228189,50.046661,23.303608,50.10083, )); insert into RIVERS(ID, NAME, GEOM) values (51,'Vistula', MDSYS.SDO_GEOMETRY(2002, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(19.282881, 50.02301, ) ); Politechnika Pozna ska, Instytut Informatyki, KJ 21

Metadane
Poszczeglne kolumny typu SDO_GEOMETRY mog zosta opisane (zarejestrowane) dzi ki umieszczeniu w bazie danych odpowiednich informacji w tzw. metadanych Metadane pozwalaj aplikacjom podejmowa decyzje odno nie technik obsugi (np. indeksacji, wizualizacji) okre lonych kolumn Dost p do metadanych jest mo liwy za pomoc perspektyw systemowych [USER|ALL|DBA]_SDO_GEOM_METADATA Struktura tych perspektyw jest nast puj ca:
Nazwa kolumny table_name column_name Typ kolumny varchar2(32) varchar2(1024) Opis nazwa tabeli nazwa zarejestrowanej kolumny informacja dotyczca kadego z wykorzystywanych wymiarw; dla kadego wymiaru przechowywane s nastpujce dane: nazwa wymiaru, warto wymiaru ograniczajca geometrie z dou, warto ograniczajca z gry, tolerancja. ukad odniesienia wykorzystywany przez wszystkie geometrie w kolumnie

diminfo

mdsys.sdo_dim_array

srid

number

Politechnika Pozna ska, Instytut Informatyki, KJ

22

Metadane
wskazwki i przykad
Rejestracja metadanych jest konieczna przed utworzeniem indeksu na kolumnie zawieraj cej geometrie 26.369824, Rejestracja jest realizowana tylko raz dla warstwy (czyli okre lonej kolumny w okre lonej tabeli)
INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'COUNTRY_BOUNDARIES', 'GEOM', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 12.603676, 26.369824, 1), MDSYS.SDO_DIM_ELEMENT('Y', 45.8464, 58.0213, 1) ), 8307 ); INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'MAJOR_CITIES', 'GEOM', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 12.603676, 26.369824, 1), MDSYS.SDO_DIM_ELEMENT('Y', 45.8464, 58.0213, 1) ), 8307 );
12.603676, 45.8464 58.0213

Politechnika Pozna ska, Instytut Informatyki, KJ

23

Indeksowanie danych przestrzennych


Dane przestrzenne wymagaj indywidualnych technik indeksowania Do wersji 10g Oracle wspiera dwa typy indeksw: R-tree i Quadtree Od wersji 11g wspierany jest jedynie R-tree, w tej samej wersji pojawio si pene wsparcie indeksw (a co za tym idzie operatorw) dla obiektw 3D (parametr sdo_indx_dims=3) Indeksy s niezb dne podczas wyznaczania zale no ci pomi dzy geometriami
Wasno Tworzenie i strojenie indeksu Wielko indeksu Proste Maa Szybsza realizacja Zmniejszenie wydajno ci indeksu Zalecany Do 4 Sabe Do 2 Dobre przy odpow. wa ciwo ciach indeksu 24 R-tree Quadtree Bardziej skomplikowane, dobranie odpowiednich warto ci mo e mie znacz ce skutki Du a Wolniejsza realizacja Nie ma wpywu na wydajno

Zapytania z wyk. operatora najbli szego s siedztwa Du a liczba modyfikacji Zapytanie z wykorzystaniem SDO_WITHIN_DISTANCE Indeksowanych wymiarw Przybli anie geometrii

Politechnika Pozna ska, Instytut Informatyki, KJ

R-tree indeks
3 1

a
2 6 7

A root B
9

b4
A

root B b c d

Indeks r-tree dokonuje przybli enia ka dej geometrii przez zastosowanie pojedynczego najmniejszego obejmuj cego prostok ta (MBR minimum bounding rectangle) Modyfikacje tabeli mog wpywa na degradacj jako ci indeksu Jako indeksu mo na przywrci za pomoc jego przebudowy Do analizy indeksu Oracle udost pnia nast puj ce funkcje i procedury:
SDO_TUNE.ESTIMATE_RTREE_INDEX_SIZE szacuje maksymaln liczb MB konieczn do zao enia indeksu SDO_TUNE.ANALYZE_RTREE procedura okre laj ca czy indeks wymaga przebudowy czy nie. Wylicza obecn jego jako i porwnuje z jako ci pocz tkow SDO_TUNE.RTREE_QUALITY zwraca jako indeksu SDO_TUNE.QUALITY_DEGRADATION zwraca stopie degradacji indeksu

Politechnika Pozna ska, Instytut Informatyki, KJ

25

Indeksowanie
przykad
create index COUNTRY_BOUNDARIES_IDX on COUNTRY_BOUNDARIES(GEOM) INDEXTYPE IS MDSYS.SPATIAL_INDEX; SELECT SDO_TUNE.RTREE_QUALITY(USER,'COUNTRY_BOUNDARIES_IDX') QUALITY from dual; QUALITY ------------------0,00167696496006595 SELECT SDO_TUNE.QUALITY_DEGRADATION(USER, 'COUNTRY_BOUNDARIES_IDX') DEGRADATION from dual; DEGRADATION ---------------1,00000295777237 RTREE_QUALITY obecnie QUALITY_DEGRADATION = ------------------------RTREE_QUALITY na pocz tku

begin SDO_TUNE.analyze_rtree(USER,'COUNTRY_BOUNDARIES_IDX'); end; Quality Statistics for Index table: MDRT_15BC4$ Current Perf. Index : ,00167696496006595 Previous Perf. Index: ,00167696 Approximate Increase in Query-time: 0 Rebuild ?: NO

"





'

&

&

&

&

Politechnika Pozna ska, Instytut Informatyki, KJ

'

26

Przykad podsumowuj cy (1/2)


CREATE TABLE geometrie1 ( id NUMBER PRIMARY KEY, nazwa VARCHAR2(32), geometria MDSYS.SDO_GEOMETRY); INSERT INTO geometrie1 VALUES( 1, 'figura_a', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), MDSYS.SDO_ORDINATE_ARRAY(1,1, 5,7) ) ); INSERT INTO geometrie1 VALUES( 2, 'figura_b', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1) ) ); INSERT INTO geometrie1 VALUES( 3, 'figura_c', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3) ) ); 27

Politechnika Pozna ska, Instytut Informatyki, KJ

Przykad podsumowuj cy (2/2)


INSERT INTO geometrie1 VALUES( 4, 'figura_d', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4), MDSYS.SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11) ) ); INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'geometrie1', 'geometria', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005), MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005) ), NULL );

CREATE INDEX figura_spatial_idx ON geometrie1(geometria) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

Politechnika Pozna ska, Instytut Informatyki, KJ

28

Przetwarzanie danych przestrzennych w praktyce


adowanie danych przestrzennych Interfejs dla danych przestrzennych
Sposb przetwarzania zapyta Metody podstawowe Operatory Funkcje jednowierszowe Funkcje grupuj ce

Politechnika Pozna ska, Instytut Informatyki, KJ

29

adowanie danych przestrzennych


Wiele narz dzi przetwarzaj cych dane przestrzenne umo liwia konwersj danych przestrzennych w tym konwersj do formatu danych przestrzennych w bazie danych Oracle. Zaadowanie danych przestrzennych mo e by zrealizowane tak e za pomoc SQLLoader'a. SQLLoader wymaga dokumentw zawieraj cych dane do zaadowania w okre lonym formacie Najcz stszym formatem dokumentw zawieraj cych dane przestrzenne s tzw. ShapeFile Aby mo na byo zaadowa pliki ShapeFile do wn trza bazy danych Oracle, nale y je przekonwertowa .
Politechnika Pozna ska, Instytut Informatyki, KJ 30

Konwersja danych przestrzennych (1/3)


Oracle Shapefile Converter narz dzie uatwiaj ce konwersj danych z pliku ShapeFile do struktur w bazie danych Oracle
C:\>shp2sdo.exe MajorCities MAJOR_CITIES2 The following files have been created: MAJOR_CITIES2.sql : SQL script to create the table MAJOR_CITIES2.ctl : Control file for loading the table MAJOR_CITIES2.dat : Data file C:\>sqlplus scott/tiger @MAJOR_CITIES2.sql Commit complete.

-- MAJOR_CITIES2.sql DROP TABLE MAJOR_CITIES2; CREATE TABLE MAJOR_CITIES2 ( FIPS_CNTRY VARCHAR2(2), CITY_NAME VARCHAR2(40), GEOM MDSYS.SDO_GEOMETRY); DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'MAJOR_CITIES2' AND COLUMN_NAME = 'GEOM' ; INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('MAJOR_CITIES2', 'GEOM', MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT('X', 12.854999448, 26.316667448, 0.000000050), MDSYS.SDO_DIM_ELEMENT('Y', 45.868000183, 57.785999183, 0.000000050) ), NULL); COMMIT;

Politechnika Pozna ska, Instytut Informatyki, KJ

31

Konwersja danych przestrzennych (2/3)


-- MAJOR_CITIES2.ctl LOAD DATA INFILE MAJOR_CITIES2.dat TRUNCATE CONTINUEIF NEXT(1:1) = '#' INTO TABLE MAJOR_CITIES2 FIELDS TERMINATED BY '|' TRAILING NULLCOLS ( FIPS_CNTRY NULLIF FIPS_CNTRY = BLANKS, CITY_NAME NULLIF CNTRY_NAME = BLANKS, GEOM COLUMN OBJECT ( SDO_GTYPE INTEGER EXTERNAL, SDO_POINT COLUMN OBJECT (X FLOAT EXTERNAL, Y FLOAT EXTERNAL) ) ) -- MAJOR_CITIES2.dat PL|Gdynia|2001|18,549999448|54,533298183| PL|Slupsk|2001|17,033000448|54,462002183| PL|Gdansk|2001|18,625000448|54,366001183| PL|Koszalin|2001|16,184999448|54,186001183| PL|Elblag|2001|19,405000448|54,159000183| PL|Suwalki|2001|22,940000448|54,103000183| PL|Olsztyn|2001|20,492000448|53,778000183| PL|Szczecin|2001|14,531000448|53,438000183| PL|Lomza|2001|22,080999448|53,172001183| PL|Pila|2001|16,745000448|53,145000183| PL|Bialystok|2001|23,159000448|53,130001183| PL|Bydgoszcz|2001|18,028999448|53,111999183| PL|Ostroleca|2001|21,568000448|53,080002183| PL|Torun|2001|18,611000448|53,011001183| PL|Ciechanow|2001|20,621999448|52,882000183| PL|Gorzow Wielkopolski|2001|15,236000448|52,736000183| PL|Wloclawek|2001|19,066999448|52,646999183| PL|Plock|2001|19,691999448|52,544998183| . . .

C:\>sqlldr scott/tiger MAJOR_CITIES2 SQL*Loader: Release 10.2.0.1.0 - Production on Cz Maj 15 15:36:25 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. Commit point reached - logical record count 62

Politechnika Pozna ska, Instytut Informatyki, KJ

32

Konwersja danych przestrzennych (3/3)


Aby mo na byo wykorzysta zaadowane dane nale y dokona ich konwersji zawarto ci typu SDO_GEOMETRY zgodnej z obecnie obowi zuj cymi reguami. Przykadowo, we wcze niejszych wersjach nie byy wykorzystywane zewn trzne i wewn trzne wielok ty (wykorzystywany by jedynie typ 3).
C:\>sqlplus scott/tiger SQL> create index MAJOR_CITIES2_IDX on MAJOR_CITIES2(GEOM) 2 INDEXTYPE IS MDSYS.SPATIAL_INDEX; Index created. SQL> EXECUTE SDO_MIGRATE.TO_CURRENT('MAJOR_CITIES2','GEOM'); PL/SQL procedure successfully completed.

Politechnika Pozna ska, Instytut Informatyki, KJ

33

Sposb przetwarzania zapyta


Zapytania przestrzenne wykorzystuj dwufazowe przetwarzanie. Podczas pierwszej fazy z penego zbioru danych na podstawie aproksymacji opartej na indeksie przestrzennym wybierane s te obiekty, ktre potencjalnie mog spenia warunki zapytania s to tzw. kandydaci. W fazie drugiej ze zbioru kandydatw wyznaczane s za pomoc metod dokadnych te obiekty, ktre rzeczywi cie speniaj zadany warunek.

Wej ciowy zbir danych

Filtr podstawowy (primary)

Zbir danych kandydatw

Filtr dokadny (secondary)

Zbir danych wynikowych

Politechnika Pozna ska, Instytut Informatyki, KJ

34

Sposb przetwarzania zapyta


przykad
Operator SDO_FILTER, ktry wykorzystuje jedynie pierwsz faz zapytania, czyli daje w wyniku zbir "kandydatw", dla indeksu r-tree uzna, e z punktem 3,3 maj "co wsplnego" wszystkie 3 geometrie. Operator SDO_RELATE, ktry wykorzystuje obie fazy zapytania, czyli dokonuje dodatkowej weryfikacji zbioru kandydatw, b dzie mia na ten temat "odmienne zdanie".
select ID from FIGURY where SDO_FILTER(KSZTALT, MDSYS.SDO_GEOMETRY(2001,null, MDSYS.SDO_POINT_TYPE(3,3,null), null,null),'querytype=WINDOW') = 'TRUE'; ID ---------3 2 1 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9

1 2

select ID from FIGURY where SDO_RELATE(KSZTALT, MDSYS.SDO_GEOMETRY(2001,null, MDSYS.SDO_POINT_TYPE(3,3,null), null,null), 'mask=ANYINTERACT querytype=WINDOW') = 'TRUE'; ID ---------2

Politechnika Pozna ska, Instytut Informatyki, KJ

35

Podstawowe metody typu SDO_GEOMETRY


Jak wi kszo wbudowanych typw obiektowych SDO_GEOMETRY oprcz atrybutw posiada rwnie metody. Wszystkie metody typu SDO_GEOMETRY s funkcjami. Do najbardziej podstawowych metod nale :
GET_GTYPE daje w wyniku typ geometrii (tt), GET_DIMS liczba wymiarw geometrii (d), GET_LRS_DIM liczba wymiarw zwi zana z LRS (l).

select T.CNTRY_NAME, T.GEOM.GET_GTYPE(), T.GEOM.GET_DIMS(), T.GEOM.GET_LRS_DIM() from COUNTRY_BOUNDARIES T


CNTRY_NAME Poland Czech Republic Germany Slovakia Russia Estonia Sweden T.GEOM.GET_GTYPE() T.GEOM.GET_DIMS() T.GEOM.GET_LRS_DIM() 3 2 0 3 2 0 7 2 0 3 2 0 7 2 0 7 2 0 7 2 0

Politechnika Pozna ska, Instytut Informatyki, KJ

36

Operatory i funkcje
Dane przestrzenne mo na przetwarza za pomoc bardzo bogatego zbioru operatorw i funkcji. Podzia ich jest nast puj cy:
Operatory przestrzenne (Spatial Operators) Funkcje geometryczne (Geometry Functions) Przestrzenne funkcje grupuj ce (Spatial Aggregate Functions)

Politechnika Pozna ska, Instytut Informatyki, KJ

37

Operatory przestrzenne
SDO_FILTER sprawdza czy dwa obiekty wyst puj w okre lonej zale no ci. Wykorzystuje tylko filtr podstawowy, wymaga indeksu. SDO_NN su y do identyfikacji najbli szego s siedztwa, wymaga indeksu. SDO_NN_DISTANCE funkcja zwracaj ca odlego od obiektw zwrconych przez operator SDO_NN. SDO_RELATE wykorzystuje indeks do wyznaczenia obiektw b d cych w okre lonym stosunku przestrzennym z geometri . SDO_WITHIN_DISTANCE wykorzystuje indeks do wyznaczenia zbioru geometrii znajduj cej si w ramach okre lonej odlego ci od obiektu. W przypadku ka dego z operatorw, pierwszym argumentem musi by kolumna na ktrej zosta zao ony indeks r-tree.

Politechnika Pozna ska, Instytut Informatyki, KJ

38

SDO_FILTER
SDO_FILTER( geometria1, geometria2, parametry)

Podstawowym i wymaganym parametrem jest querytype. Mo e on przyjmowa dwie warto ci: WINDOW i JOIN
WINDOW zalecany w wi kszo ci przypadkw, mo e su y do porwnywania pojedynczej geometrii (2) z kolumn w tabeli (1) JOIN su y do wykonywania po cze pomi dzy dwoma tabelami zawieraj cymi geometrie, rzadziej wykorzystywany
select from where and A.CNTRY_NAME A_NAME, B.CNTRY_NAME B_NAME COUNTRY_BOUNDARIES A, COUNTRY_BOUNDARIES B SDO_FILTER(A.GEOM, B.GEOM, 'querytype=JOIN') = 'TRUE' B.CNTRY_NAME = 'Poland'; A_NAME Lithuania Byelarus Russia Poland Ukraine Germany Slovakia Czech Republic B_NAME Poland Poland Poland Poland Poland Poland Poland Poland

Politechnika Pozna ska, Instytut Informatyki, KJ

39

SDO_NN i SDO_NN_DISTANCE
SDO_NN(geometria1, geometria2, parametry [, numer]) SDO_NN_DISTANCE(numer)

Parametr sdo_num_res operatora SDO_NN okre la liczb obiektw z najbli szego s siedztwa jak nale y zwrci w zapytaniu. Parametr unit operatora SDO_NN pozwala wyrazi odlego przez operator SDO_NN_DISTANCE w po danych jednostkach. Jedyny parametr operatora SDO_NN_DISTANCE musi by liczb podan w operatorze SDO_NN jako ostatni parametr.
select A.CITY_NAME, ROUND(SDO_NN_DISTANCE(1)) DISTANCE from MAJOR_CITIES A where SDO_NN(GEOM,MDSYS.SDO_GEOMETRY(2001, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1), MDSYS.SDO_ORDINATE_ARRAY(16.91673,52.38237)), 'sdo_num_res=4 unit=km',1) = 'TRUE'; CITY_NAME Pila Poznan Konin Leszno DISTANCE 86 3 93 65

Politechnika Pozna ska, Instytut Informatyki, KJ

40

SDO_RELATE
SDO_RELATE(geometria1, geometria2, parametry)

W operatorze SDO_RELATE wyr niamy dwa podstawowe parametry:


mask jedna z dziewi ciu zale no ci geometrycznych: TOUCH, OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT, EQUAL, INSIDE, COVEREDBY, CONTAINS, COVERS, ANYINTERACT, ON. Mo liwe jest czenie zale no ci za pomoc logicznego operatora OR np.: mask=inside OR touch querytype prawidowymi warto ciami s WINDOW lub JOIN (zosta omwiony wcze niej). Wymagany gdy geometria2 jest kolumn tabeli.
select B.CNTRY_NAME, count(*) from COUNTRY_BOUNDARIES B, MAJOR_CITIES C where SDO_RELATE(C.GEOM, B.GEOM, 'mask=INSIDE querytype=JOIN') = 'TRUE' group by B.CNTRY_NAME;
CNTRY_NAME Poland Slovakia Denmark Slovenia Austria Germany Byelarus Hungary Latvia Romania Czech Republic Russia Sweden Ukraine Lithuania COUNT(*) 50 3 1 1 6 3 2 19 1 13 7 1 7 7 1

Politechnika Pozna ska, Instytut Informatyki, KJ

41

Zale no ci pomi dzy geometriami


ANYINTERACT wwczas gdy obiekty nie s roz czne. CONTAINS je li drugi obiekt cakowicie zawiera si wewn trz pierwszego obiektu, granice obiektw si nie stykaj COVEREDBY je li pierwszy obiekt jest cakowicie zawarty wewn trz drugiego obiektu, granice obiektw stykaj si w jednym lub wielu punktach. COVERS je li drugi obiekt jest cakowicie wewn trz pierwszego obiektu, granice nakadaj si w jednym lub wielu miejscach. DISJOINT je li obiekty nie maj wsplnych granic ani wewn trznych elementw. EQUAL je li obiekty wspdziel ka dy punkt swoich granic i wn trza w czaj c w to dziury wewn trz obiektw. INSIDE je li pierwszy obiekt cakowicie zawiera si wewn trz drugiego obiektu, granice nie stykaj si . OVERLAPBDYDISJOINT je li obiekty zachodz na siebie lecz ich granice nie maj cz ci wsplnych. OVERLAPBDYINTERSECT je li obiekty zachodz na siebie a ich granice maj cz ci wsplne w jednym lub wielu fragmentach. TOUCH je li dwa obiekty wspdziel wsplne punkty graniczne, i jednocze nie nie wspdziel adnych punktw wewn trznych.
Politechnika Pozna ska, Instytut Informatyki, KJ SDO_RELATE(geometria1, geometria2,)

42

SDO_WITHIN_DISTANCE
SDO_WITHIN_DISTANCE(geometria1, geometria2, parametry);

Podstawowe parametry operatora SDO_WITHIN_DISTANCE:


distance odlego od geometria2 querytype deklaracja dotycz ca wykorzystania filtru dokadnego. Warto rwna FILTER powoduje wykorzystanie tylko filtru podstawowego
select C.CITY_NAME from MAJOR_CITIES C where SDO_WITHIN_DISTANCE(C.GEOM, SDO_GEOMETRY(2001, 8307, null, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1), MDSYS.SDO_ORDINATE_ARRAY(16.91673, 52.38237)), 'distance=100 unit=km') = 'TRUE'; CITY_NAME Pila Poznan Konin Leszno

Politechnika Pozna ska, Instytut Informatyki, KJ

43

Funkcje geometryczne (1/2)


Funkcje geometryczne mo na pogrupowa nast puj co:
Wyznaczaj ce relacje pomi dzy dwoma obiektami:
RELATE okre la zale no pomi dzy obiektami, WITHIN_DISTANCE sprawdza czy obiekty znajduj si w okre lonej odlego ci

Waliduj ce:
VALIDATE_GEOMETRY sprawdza poprawno geometrii, VALIDATE_LAYER sprawdza poprawno warstwy (wszystkich geometrii w kolumnie okre lonej tabeli)

Operacje na dwch obiektach:


SDO_DISTANCE oblicza odlego od geometrii SDO_DIFFERENCE r nica topologiczna dwch geometrii, SDO_INTERSECTION cz wsplna dwch geometrii, SDO_UNION suma topologiczna dwch geometrii, SDO_XOR symetryczna r nica dwch geometrii
44

Politechnika Pozna ska, Instytut Informatyki, KJ

Funkcje geometryczne (2/2)


Operacje na pojedynczych obiektach:
SDO_ARC_DENSIFY zamienia uki i okr gi na przybli one odpowiedniki wyra one za pomoc linii prostych, SDO_AREA wyznacza powierzchni dwuwymiarowej geometrii, SDO_BUFFER generuje wielok t otaczaj cy geometri , SDO_CENTROID zwraca punkt georeferencyjny obr bu (tzw. controid) geometrii, SDO_CONVEXHULL zwraca obiekt reprezentuj cy powok wypuk (convex hull) geometrii, SDO_LENGTH wylicza dugo obwodu, SDO_MBR wyznacza najmniejszy prostok t obejmuj cy geometri , SDO_[MIN|MAX]_MBR_ORDINATE wyznacza "doln " ("grn ") kraw d MBR obejmuj cego geometri dla okre lonego wymiaru, SDO_POINTONSURFACE zwraca punkt nale cy do powierzchni geometrii

Politechnika Pozna ska, Instytut Informatyki, KJ

45

Wyznaczaj ce relacje pomi dzy dwoma obiektami

SDO_GEOM.RELATE
SDO_GEOM.RELATE( geometria1 MDSYS.SDO_GEOMETRY, mask VARCHAR2, geometria2 MDSYS.SDO_GEOMETRY, tolerancja NUMBER ) RETURN VARCHAR2;

Wyniki dziaania funkcji SDO_GEOM.RELATE mog by nast puj ce:


Je li w parametrze mask okre lono oczekiwany zwi zek pomi dzy obiektami, wwczas funkcja zwraca ci g reprezentuj cy ten zwi zek lub ci g znakw FALSE Je li w parametrze mask zosta podany ci g DETERMINE wwczas funkcja daje w wyniku ci g reprezentuj cy zwi zek pomi dzy geometriami W przypadku mask rwnego CNTRY ANYINTERACT funkcja daje w wyniku Poland Poland TRUE pod warunkiem, e mamy do Poland czynienia z nieroz cznymi geometriami Poland
select distinct B.CNTRY_NAME, R.name, SDO_GEOM.RELATE(B.GEOM, 'DETERMINE', R.GEOM, 1) RELATION from COUNTRY_BOUNDARIES B, RIVERS R where B.CNTRY_NAME = 'Poland'
Poland Poland Poland Poland Poland Poland Poland Poland

NAME Nogat Vistula Odra Bug Dniester Oder-Spree-Kanal Vistula San Odra Morava Oder Oder-Havel-Kanal

RELATION CONTAINS CONTAINS CONTAINS CONTAINS DISJOINT DISJOINT OVERLAPBDYDISJOINT OVERLAPBDYDISJOINT OVERLAPBDYINTERSECT OVERLAPBDYINTERSECT OVERLAPBDYINTERSECT TOUCH

Politechnika Pozna ska, Instytut Informatyki, KJ

46

Funkcje waliduj ce

Zakres walidacji geometrii


Walidacja geometrii obejmuje dwa typy weryfikacji
Weryfikacj typu - odbywa si na etapie wstawiania obiektu do bazy danych Weryfikacj spjno ci geometrii mo liwa za pomoc przeznaczonych do tego funkcji

Weryfikacja typu
Prawidowa warto SDO_GTYPE Warto ci SDO_ETYPE musz by zgodne z SDO_GTYPE Czy SDO_ELEM_INFO_ARRAY posiada liczb warto ci podzieln przez trzy

Politechnika Pozna ska, Instytut Informatyki, KJ

47

Funkcje waliduj ce

Zakres walidacji geometrii


Spjno geometrii
Wielok t musi posiada co najmniej cztery punkty Wielok t musi by domkni ty adne dwa punkty w linii lub wielok cie nie s takie same Wielok t musi by opisany w odpowiednim kierunku (zewn trzna kraw d odwrotnie, wewn trzna zgodnie z ruchem wskazwek zegara) Wewn trzny wielok t nie mo e dotyka wi cej ni raz wielok ta zewn trznego Wewn trzne wielok ty nie mog si styka wi cej ni jednym punktem
Politechnika Pozna ska, Instytut Informatyki, KJ

Ci g linii zawiera co najmniej dwa punkty Jedno i czterocyfrowe warto ci SDO_ETYPE nie mog by wymieszane przy definiowaniu wielok tw Punkty w przypadku koa lub uku nie mog znajdowa si na linii prostej Geometrie musz znajdowa si w granicach wyznaczonych przez metadane Geometrie LRS posiadaj trzy lub cztery wymiary oraz prawidow pozycj liczby wymiarw

48

Funkcje waliduj ce

SDO_GEOM.VALIDATE_GEOMETRY
SDO_GEOM.VALIDATE_GEOMETRY( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER ) RETURN VARCHAR2;

Funkcja weryfikuj ca spjno geometrii. Sprawdza reprezentacj geometrii na podstawie definicji elementu Zalecanym jej odpowiednikiem jest funkcja GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT Wyniki dziaania funkcji s nast puj ce:
TRUE je li geometria jest prawidowa Je li posiada b dy wwczas uzyskujemy numer b du Oraclea okre laj cy przyczyn b du W przypadku funkcji GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT otrzymujemy dodatkowo kontekst b du informacje w jakim miejscu definicji geometrii b d zosta znaleziony

Funkcja weryfikuje zarwno spjno

typu jak i spjno

geometrii

SQL> select SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(WO_KSZTALT,0.01) VALID, 2 WO_NAZWA from SO_WOJEWODZTWA 3 where SDO_GEOM.VALIDATE_GEOMETRY(WO_KSZTALT,0.01) <> 'TRUE'; VALID WO_NAZWA ---------------------------------------- -------------------13367 [Element <1>] [Ring <1>] opolskie Politechnika Pozna ska, Instytut Informatyki, KJ
ORA-13367 Wrong orientation for interior/exterior rings

49

Funkcje waliduj ce

SDO_GEOM.VALIDATE_LAYER
SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT( tabela VARCHAR2, kolumna_geom VARCHAR2, tabela_wynikowa VARCHAR2[, cz sto _zatwierdzania NUMBER]);

Zalecanym odpowiednikiem jest SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT Procedura wypenia tabel wynikow informacjami o rezultatach walidacji wszystkich geometrii w warstwie Tabela wynikowa powinna by utworzona przed wywoaniem procedury
CREATE TABLE val_results (sdo_rowid ROWID, result varchar2(1000)); EXECUTE SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT('SO_WOJEWODZTWA','WO_KSZTALT','VAL_RESULTS'); PL/SQL procedure successfully completed. SQL> SELECT * from val_results; SDO_ROWID RESULT ------------------ ---------------------------------------Rows Processed <16> AAAKl7AABAAANMyAAD 13367 [Element <1>] [Ring <1>] ORA-13367 Wrong orientation for interior/exterior rings

Politechnika Pozna ska, Instytut Informatyki, KJ

50

Operacje na dwch obiektach

SDO_GEOM.SDO_DISTANCE
SDO_GEOM.SDO_DISTANCE( geometria1 MDSYS.SDO_GEOMETRY, geometria2 MDSYS.SDO_GEOMETRY, toleracja IN NUMBER [, jednostki IN VARCHAR2]) RETURN NUMBER; select A.CITY_NAME, B.CITY_NAME, ROUND(SDO_GEOM.SDO_DISTANCE(A.GEOM, B.GEOM, 1, 'unit=km')) ODL from MAJOR_CITIES A, MAJOR_CITIES B where A.CITY_NAME = 'Poznan' CITY_NAME CITY_NAME and B.CITY_NAME in ('Berlin', 'Warsaw'); Poznan Berlin
Poznan Warsaw

ODL 242 281

SDO_GEOM.SDO_INTERSECTION
SDO_GEOM.SDO_INTERSECTION( geometria1 MDSYS.SDO_GEOMETRY, geometria2 MDSYS.SDO_GEOMETRY, tolerancja NUMBER ) RETURN NUMBER; select from where and SDO_GEOM.SDO_INTERSECTION(A.GEOM, B.GEOM, 1) GRANICA COUNTRY_BOUNDARIES A, COUNTRY_BOUNDARIES B A.CNTRY_NAME = 'Poland' B.CNTRY_NAME = 'Germany';

SDO_GEOMETRY(2006, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1, 125, 2, 1), SDO_ORDINATE_ARRAY(14.275627, 53.699066, 14.309721, 53.55555, 14.413261, 53.33 8959, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

51

Operacje na dwch obiektach

SDO_GEOM.SDO_UNION
SDO_GEOM.SDO_UNION( geometria1 MDSYS.SDO_GEOMETRY, geometria2 MDSYS.SDO_GEOMETRY, tolerancja IN NUMBER ) RETURN MDSYS.SDO_GEOMETRY;
select from where and SDO_GEOM.SDO_UNION(A.GEOM, B.GEOM, 1) CZECHOSLOWACJA COUNTRY_BOUNDARIES A, COUNTRY_BOUNDARIES B A.CNTRY_NAME = 'Czech Republic' B.CNTRY_NAME = 'Slovakia';

CZECHOSLOWACJA -----------------------------------------------------SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(18.851246, 49.517357, 18.852219, 49.527771, 18.847775, 49.554161, 18.839443, 49.594994, 18.810831, 49.673328, 18.786942, 49.681938, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

52

Operacje na pojedynczych obiektach

SDO_GEOM.SDO_AREA
SDO_GEOM.SDO_AREA( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER[, jednostki VARCHAR2] ) RETURN NUMBER; select A.CNTRY_NAME, ROUND(SDO_GEOM.sdo_area(A.GEOM, 1, 'unit=SQ_KM')) POWIERZCHNIA from COUNTRY_BOUNDARIES A CNTRY_NAME POWIERZCHNIA order by 2 desc
Poland Ukraine Hungary Romania Czech Republic Austria 311664 100551 92498 84721 77447 68551

SDO_GEOM.SDO_BUFFER
SDO_GEOM.SDO_BUFFER( geometria MDSYS.SDO_GEOMETRY, odlego NUMBER, tolerancja NUMBER[, parametry VARCHAR2] ) RETURN MDSYS.SDO_GEOMETRY;

select SDO_GEOM.SDO_BUFFER(A.GEOM, 100, 1, 'unit=km') GEOM from COUNTRY_BOUNDARIES A where A.CNTRY_NAME = 'Poland'

Politechnika Pozna ska, Instytut Informatyki, KJ

53

Operacje na pojedynczych obiektach

SDO_GEOM.SDO_CENTROID
SDO_GEOM.SDO_CENTROID( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER) RETURN MDSYS.SDO_GEOMETRY;
select SDO_GEOM.SDO_CENTROID(B.GEOM,1) SRODEK_POLSKI from COUNTRY_BOUNDARIES B where B.CNTRY_NAME = 'Poland'; SRODEK POLSKI -------------------------------SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(19.4302985, 52.1100187, NULL), NULL, NULL)
Pomi dzy Go lubem a Siemieniczkami, na poudnie od Kutna

SDO_GEOM.SDO_LENGTH
SDO_GEOM.SDO_LENGTH( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER [, jednostki VARCHAR2]) RETURN NUMBER;
select A.CNTRY_NAME, B.CNTRY_NAME, ROUND(SDO_GEOM.SDO_LENGTH(SDO_GEOM.SDO_INTERSECTION(A.GEOM, B.GEOM, 1), 1, 'unit=km')) from COUNTRY_BOUNDARIES A, CNTRY_NAME CNTRY_NAME DLUGOSCI_GRANIC COUNTRY_BOUNDARIES B Poland Lithuania 82 where A.CNTRY_NAME = 'Poland';
Poland Poland Poland Poland Poland Poland Russia Byelarus Slovakia Germany Ukraine Czech Republic 197 322 374 376 391 525

Politechnika Pozna ska, Instytut Informatyki, KJ

54

Operacje na pojedynczych obiektach

SDO_GEOM.SDO_MBR
SDO_GEOM.SDO_MBR( geometria MDSYS.SDO_GEOMETRY [, definicje_wymiarw IN MDSYS.SDO_DIM_ARRAY] ) RETURN MDSYS.SDO_GEOMETRY;
select SDO_GEOM.SDO_MBR(A.GEOM) GEOM from COUNTRY_BOUNDARIES A where A.CNTRY_NAME = 'Poland' -------------------------------------------------------------------------------SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR AY(14.147637, 49.002914, 24.143469, 54.836037))

Politechnika Pozna ska, Instytut Informatyki, KJ

55

Przestrzenne funkcje grupuj ce


SDO_AGGR_CENTROID* zwraca punkt georeferencyjny ( rodek ci ko ci) zbioru geometrii SDO_AGGR_CONVEXHULL* obiekt reprezentuj cy powok wypuk (convex hull) zbioru geometrii, SDO_AGGR_LRS_CONCAT* wyznacza geometri LRS b d c konkatenacj zbioru geometrii LRS SDO_AGGR_MBR wyznacza najmniejszy prostok t obejmuj cy zbir geometrii SDO_AGGR_UNION* wyznacza topologiczn sum zbioru geometrii * - Wi kszo funkcji agreguj cych akceptuje parametr typu MDSYS.SDOAGGRTYPE a nie bezpo rednio MDSYS.SDO_GEOMETRY.
Politechnika Pozna ska, Instytut Informatyki, KJ 56

Typ MDSYS.SDOAGGRTYPE
Wiele funkcji agreguj cych przyjmuje jako parametr obiekt typu MDSYS.SDOAGGRTYPE Definicja typu MDSYS.SDOAGGRTYPE jest nast puj ca:
CREATE TYPE sdoaggrtype AS OBJECT ( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER);

Tolerancja ma wpyw na wyniki dziaania wielu funkcji przestrzennych, w tym funkcji agreguj cych. Definiuje ona odlego , ktra ma by "pomijana" w obliczeniach
SDO_AGGR_UNION Tolerancja SDO_AGGR_UNION

Politechnika Pozna ska, Instytut Informatyki, KJ

57

SDO_AGGR_UNION
SDO_AGGR_UNION( AggregateGeometry MDSYS.SDOAGGRTYPE) RETURN MDSYS.SDO_GEOMETRY;
select SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(B.GEOM,1)) GEOM from COUNTRY_BOUNDARIES B SDO_GEOMETRY(2007, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 31, 1003, 1, 219, 1003, 1, 269, 1003, 1, 277, 1003, 1, 381, 1003, 1, 703, 1003, 1, 805, 1003, 1, 843, 1003, 1, 865, 1003, 1), SDO_ORDINATE_ARRAY(12.900692, 54.442356, 12.803333, 54.442497, 12.680777, 54.444942, 12.660443, 54.44611, 12.63 8611, 54.448944, 12.603676, 54.452486, ) )

Politechnika Pozna ska, Instytut Informatyki, KJ

58

Badany zbir: 32047 wierszy Ukad odniesienia: SRID COORD_REF_SYS_NAME 30 8307 Longitude / Latitude (WGS 84)

COORD_REF_SYS_KIND GEOGRAPHIC2D

25

Szybko operacji
obszar SDO_FILTER IDX SDO_FILTER TAB SDO_NN SDO_WITHIN_DISTANCE

20 czas (sek.)

15

10

select SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(B.ODL_KSZTALT,1)) OBSZAR from A_OBIEKTY_ODL B where ODL_OBIEKT_ID between p_od_id and p_do_id;
200 400 600 800 1000 1200 1400 1600 1800 2000

select count(*) liczba punktw w obszarze from A_OBIEKTY_ODL OBSZAR LICZBA_PKT SDO_FILTER IDX SDO_FILTER TAB SDO_NN SDO_WITHIN_DISTANCE where SDO_FILTER(ODL_KSZTALT,r_obsz.OBSZAR,'querytype=WINDOW') = 'TRUE'; 200 0,162125 0,05175 0,07325 6,8281875 3,2773125 select from where select from where
400 0,5430625 0,057375 0,078125 8,665125 600 1,2598125 0,061625 0,08 10,905375 count(*) 800 2,461875 0,062375 0,0830625 12,997875 A_OBIEKTY_ODL 1000 4,2353125 0,062375 0,087125 15,12 SDO_NN(ODL_KSZTALT,r_obsz.OBSZAR,'sdo_num_res=1000',1) = 'TRUE'; 1200 6,8164375 0,065375 0,087875 17,2471875 1400 10,7823125 0,0673125 0,09175 18,7355 count(*) 1600 15,38275 0,0723125 0,09175 20,6963125 1800 20,307625 0,163 0,0879375 22,6435 A_OBIEKTY_ODL 2000 26,9638125 0,0655 0,0889375 24,7166875 SDO_WITHIN_DISTANCE(ODL_KSZTALT,r_obsz.OBSZAR,'distance=500 unit=m') 5,253875 7,450125 9,400625 11,51175 13,916875 16,4139375 18,557625 19,5323125 21,044 = 'TRUE';

Politechnika Pozna ska, Instytut Informatyki, KJ

59

Standard SQL/MM Part 3: Spatial


Standard SQL/MM Zakres SQL/MM Part 3: Spatial SQL/MM Part 3: Spatial
Typy danych i ich hierarchia Metody
Konwersje pomi dzy geometriami a zewn trznymi typami danych Pobieranie wasno ci lub miar z geometrii Porwnywanie geometrii w oparciu o wyst puj ce mi dzy nimi relacje przestrzenne Generowanie nowych geometrii z ju istniej cych

Schemat Informacyjny
Politechnika Pozna ska, Instytut Informatyki, KJ 60

SQL/MM
Standard ISO/IEC 13249 SQL/MM w skrcie SQL/MM obejmuje rozszerzenia multimedialne w SQL takie jak:
przetwarzanie du ych obiektw tekstowych, przetwarzanie obrazw, dane przestrzenne, eksploracja danych.

Ze wzgl du r norodn tematyk zosta on podzielony na kilka cz


Part 1 (ISO/IEC 13249-1:2007) Framework (podstawa dla pozostaych cz ci) Part 2 (ISO/IEC 13249-2:2003) Full-Text (tekstowe bazy danych) Part 3 (ISO/IEC 13249-3:2006) Spatial (przestrzenne bazy danych) Part 5 (ISO/IEC 13249-5:2003) Still Image (obrazy) Part 6 (ISO/IEC 13249-6:2006) Data mining (eksploracja danych)

ci.

Politechnika Pozna ska, Instytut Informatyki, KJ

61

Zakres SQL/MM Part 3: Spatial


SQL/MM Part 3: Spatial jest mi dzynarodowym standardem definiuj cym jak przechowywa , pobiera i przetwarza dane przestrzenne w SQL. Pierwsza jego wersja, ktra ukazaa si w 1999 roku, wywodzi si bezpo rednio z dokumentu OpenGIS Simple Features Specification For SQL, wydanego rwnie w roku 1999. W pracach nad OpenGIS Simple Features Specification For SQL w ramach Open Geospatial Consortium Inc. udzia wzi li: Environmental Systems Research Institute, Inc., IBM Corporation, Informix Software Inc., MapInfo Corporation, Oracle Corporation. SQL/MM Part 3: Spatial definiuje jak dane przestrzenne maj by reprezentowane, jakie funkcje powinny by dost pne do konwersji, porwna i przetwarzania danych przestrzennych. Standard SQL/MM Part 3: Spatial koncentruje si na:
Opisie typw danych wykorzystywanych dla danych przestrzennych Funkcjonalno ci i mo liwo ci przetwarzania danych przestrzennych Opisie perspektyw Schematu Informacyjnego (sownika danych)
Politechnika Pozna ska, Instytut Informatyki, KJ 62

SQL/MM Part 3: Spatial


typy danych (1/3)
Standard SQL/MM dla wszystkich wykorzystywanych tabel, perspektyw, typw danych, metod i funkcji stosuje prefiks ST_* Typy danych przestrzennych standardu SQL/MM i ich hierarchia wywodz z OpenGIS Simple Features Specification For SQL
ST_Geometry

ST_Surface

ST_Curve

ST_Point

ST_GeomCollection

ST_CurvePolygon

ST_MultiSurface

ST_MultiCurve

ST_MultiPoint

ST_Polygon

ST_MultiPolygon

ST_MultiLineString

ST_LineString

ST_CircularString

ST_CompoundCurve

ST* - pochodzi on od sw Spatial i Temporal lub SpatialType

Politechnika Pozna ska, Instytut Informatyki, KJ

63

SQL/MM Part 3: Spatial


typy danych (2/3)
Przykady danych przestrzennych (0 i 1-wymiarowe)
ST_Point pojedynczy punkt ST_MultiPoint kolekcja punktw (ST_Point) ST_LineString sekwencja punktw definiuj ca ci g linii. Ka de dwa s siaduj ce punkty definiuj pojedynczy segment ci gu linii. ST_CircularString sekwencja punktw definiuj ca ci g ukw. Ka dy segment (uk) definiowany jest za pomoc trzech punktw. ST_CompoundCurve kolekcja ci gw linii i ukw. ST_MultiCurve kolekcja ci gw linii i/lub ukw (ST_Curve) ST_MultiLineString kolekcja ci gw linii (ST_LineString)

ST_CircularString

ST_LineString

ST_CompoundCurve

Politechnika Pozna ska, Instytut Informatyki, KJ

64

SQL/MM Part 3: Spatial


typy danych (3/3)
Przykady danych przestrzennych (2-wymiarowe)
ST_CurvePolygon figura 2-wymiarowa zdefiniowana za pomoc sekwencji ci gw linii i/lub ukw (ST_Curve). ST_Polygon wielok t zdefiniowany za pomoc sekwencji ci gw linii (ST_LineString). ST_MultiSurface kolekcja figur 2-wymiarowych (ST_CurvePolygon) ST_MultiPolygon kolekcja wielok tw opartych na ci gach linii

ST_CurvePolygon ST_Polygon

Politechnika Pozna ska, Instytut Informatyki, KJ

65

SQL/MM Part 3: Spatial


metody Wi kszo metod standardu SQL/MM mo na pogrupowa nast puj co:
Konwersje pomi dzy geometriami a zewn trznymi typami danych Pobieranie wasno ci lub miar z geometrii Porwnywanie geometrii w oparciu o wyst puj ce mi dzy nimi relacje przestrzenne Generowanie nowych geometrii z ju istniej cych
Politechnika Pozna ska, Instytut Informatyki, KJ 66

SQL/MM Part 3: Spatial


konwersje pomi dzy geometriami a zewn trznymi typami danych (1/2)
Open Geospatial Consortium Inc. oprcz hierarchii typw danych przestrzennych opracowa r norodne reprezentacje danych przestrzennych Nale do nich mi dzy innymi:
well-known text (WKT) testowy format do reprezentacji danych przestrzennych well-known binary (WKB) binarny odpowiednik WKT geography markup language (GML) format XML
POINT(6 4) LINESTRING(3 4,10 50,20 25) POLYGON((1 1,5 1,5 5,1 5,1 1), (2 2, 3 2, 3 3, 2 3,2 2)) <gml:Point gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:coordinates>6, 4</gml:coordinates> </gml:Point> <gml:LineString gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:posList dimension="2">3 4 10 50 20 25</gml:posList> </gml:LineString > <gml:Polygon> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates>1 1,5 1,5 5,1 5,1 1</gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon>

Politechnika Pozna ska, Instytut Informatyki, KJ

67

SQL/MM Part 3: Spatial


konwersje pomi dzy geometriami a zewn trznymi typami danych (2/2)
Standard SQL/MM umo liwia dokonywanie konwersji do/z wszystkich wspomnianych wcze niej formatw reprezentacji. Konwersja jest mo liwa przy wykorzystaniu
Konstruktorw, ktre umo liwiaj utworzenie typw ST_* z przestawionych formatw Dla kompatybilno ci wstecz zdefiniowano funkcje takie jak ST_PointFromText lub ST_GeometryFromWKB, ktre rwnie tworz obiekty ST_* z zewn trznych formatw (funkcje te wywodz si z OpenGIS Simple Features Specification For SQL) Trzy metody ST_AsText, ST_AsBinary, ST_AsGML pozwalaj na konwersj odwrotn czyli uzyskanie formatw zewn trznych z geometrii ST_*
select B.CITY_NAME, B.STGEOM.ST_AsGML() GML from MAJOR_CITIES B where B.CITY_NAME = 'Gdynia'; CITY_NAME GML ---------- -----------Gdynia <gml:Point srsName="Longitude / Latitude (WGS 84)"> <gml:coord> <gml:X>18.549999448</gml:X> <gml:Y>54.533298183</gml:Y> </gml:coord> </gml:Point>

create table SOME_GEOMS( NAME varchar2(10), GEOM st_geometry); insert into SOME_GEOMS values ('M', ST_Geometry('multipoint M (1 1 5, 2 2 15, 1 2 10)', 0));

Politechnika Pozna ska, Instytut Informatyki, KJ

68

SQL/MM Part 3: Spatial


pobieranie wasno ci lub miar z geometrii (1/3)
Wszystkie geometrie posiadaj pewne wasno ci, ktre w standardzie SQL/XML dost pne s za pomoc metod Metody te mo emy podzieli na zwracaj ce informacje o:
typach danych (ST_GeometryType), miarach i wsprz dnych (ST_CoordDim, ST_IsMeasured, ST_IsValid, ST_Is3D, ST_M, ST_MaxM, ST_MaxX, ST_MaxY, ST_MaxZ, ST_MinM, ST_MinX, ST_MinY, ST_MinZ, ST_X, ST_Y, ST_Z), geometriach w geometrii (ST_Centroid, ST_EndPoint, ST_GeometryN, ST_LineStringN, ST_MidPoint, ST_NumGeometries, ST_NumLineStrings, ST_NumPoints, ST_NumPolygons, ST_PointN, ST_PolygonN, ST_StartPoint), ograniczeniach i obwiedniach (ST_Boundary, ST_Envelope, ST_EnvIntersects, ST_ExteriorRing, ST_InteriorRingN, ST_MBR, ST_MBRIntersects, ST_NumInteriorRing, ST_Perimeter), wymiarach geometrii (ST_Area, ST_Dimension, ST_Length), tym czy geometria jest pusta, zamkni ta, prosta (ST_IsClosed, ST_IsEmpty, ST_IsSimple), przestrzennym ukadzie odniesienia (ST_SrsId, ST_SrsName).
Politechnika Pozna ska, Instytut Informatyki, KJ 69

SQL/MM Part 3: Spatial


pobieranie wasno ci lub miar z geometrii (2/3)
Przykady:
ST_CoordDim daje w wyniku typy koordynat geometrii (coordinate dimension). ST_MaxX daje w wyniku maksymaln warto wsprz dnej X geometrii. ST_X daje w wyniku wsprz dn X punktu. ST_EndPoint dostaje jako parametr wej ciowy ci g linii i zwraca jego ostatni punkt. ST_NumGeometries dla kolekcji geometrii daje w wyniku liczb geometrii. ST_Boundary daje w wyniku kraw d geometrii. ST_ExteriorRing dla wielok ta daje w wyniku zewn trzny okr g w ktry wielok t jest wpisany. ST_Area jako parametr przyjmuje geometrie i ewentualnie jednostk miary, w wyniku daje warto powierzchni. ST_Length dla ci gu linii lub kolekcji ci gw linii (opcjonalnie jednostka miary) zwraca ich dugo . ST_IsSimple daje w wyniku 1 je li geometria jest prosta, 0 w przeciwnym przypadku. ST_SrsId w zale no ci od parametrw konwertuje geometri do zadanego ukadu odniesienia, lub podaje identyfikator odniesienia obowi zuj cy dla geometrii.

Politechnika Pozna ska, Instytut Informatyki, KJ

70

SQL/MM Part 3: Spatial


pobieranie wasno ci lub miar z geometrii (3/3)
insert into SOME_GEOMS values ('Z', ST_Geometry('multipoint Z (1 1 5, 2 2 15, 1 2 10, 1 3 11)', 0)); insert into SOME_GEOMS values ('MZ', ST_Geometry('multipoint MZ (1 1 5 7, 2 2 15 14, 1 2 10 21)', 0)); insert into SOME_GEOMS values('POL', ST_MultiPolygon('multipolygon (( (14 14, 4 16, 5 14, 14 14), (18 24, 9 25, 5 28, 18 24), (54 44, 7 46, 5 40, 25 44, 54 44) )), 1) ); select ID, GEOM.ST_ISMEASURED() IS_MEASURED, GEOM.ST_NUMGEOMETRIES() NUM_GEOMS_IN_COLL, GEOM.ST_MINZ() MINZ from SOME_GEOMS; NAME ------M Z MZ POL IS_MEASURED ----------1 0 1 0 NUM_GEOMS_IN_COLL ----------------3 4 3 3 MINZ ---5 7

Politechnika Pozna ska, Instytut Informatyki, KJ

71

SQL/MM Part 3: Spatial


porwnywanie geometrii (1/2)
Bez w tpienia jedne z wa niejszych metod zwi zane s z badaniem zale no ci przestrzennych pomi dzy geometriami. Funkcje nale ce do tej kategorii: ST_Contains, ST_Crosses, ST_Disjoint, ST_EnvIntersects, ST_EqualCoordsys, ST_Equals, ST_EqualSRS, ST_Intersects, ST_MBRIntersects, ST_Overlaps, ST_Relate, ST_Touches, ST_Within. Wszystkie powy sze funkcje daj w wyniku 0 je li test daje w wyniku fasz, lub 1 w przeciwnym przypadku. Przykadowo wymienione poni ej funkcje weryfikuj czy dwie porwnywane geometrie s :
ST_Equals identyczne ST_Disjoint roz czne ST_Intersects, ST_Crosses, ST_Overlaps posiadaj cz wsplne ST_Touches stykaj si kraw dziami ST_Within, ST_Contains zawieraj si jedna w drugiej. ci

Do przedstawianej kategorii mo na zaliczy tak e funkcj ST_Distance, ktra daje w wyniku odlego pomi dzy geometriami.
Politechnika Pozna ska, Instytut Informatyki, KJ 72

SQL/MM Part 3: Spatial


porwnywanie geometrii (2/2)
select ST_EQUALCOORDSYS((select DEFINITION from ST_COORDINATE_SYSTEMS where COORDSYS_NAME = 'Pulkovo 1942(58) / Poland zone V'), (select DEFINITION from ST_COORDINATE_SYSTEMS where COORDSYS_NAME = 'ETRS89 / Poland CS2000 zone 5')) TE_SAME from DUAL; TE_SAME -------------0

select A.NAME, B.NAME, ST_INTERSECTS(A.GEOM, B.GEOM) INTERSECTS, ST_ENVINTERSECTS(A.GEOM, B.GEOM) ENVELOPE_INTERSECTS from RIVERS A, RIVERS B where A.NAME = 'Vistula' and B.NAME = 'Odra' NAME NAME INTERSECTS ENVELOPE_INTERSECTS --------- ---------- ---------- ------------------Vistula Odra 0 1

Politechnika Pozna ska, Instytut Informatyki, KJ

73

SQL/MM Part 3: Spatial


generowanie nowych geometrii z ju istniej cych (1/2)
Wielo funkcji, ktre na podstawie istniej cych geometrii tworz nowe powoduje, e z reguy klasyfikowane s one w nast puj ce kategorie:
Funkcje konwersji (ST_Polygon, ST_ToGeomColl, ST_ToLineString, ST_ToMultiLine, ST_ToMultiPoint, ST_ToMultiPolygon, ST_ToPoint, ST_ToPolygon) Funkcje tworz ce geometrie o innej konfiguracji przestrzennej (ST_Buffer, ST_ConvexHull) Funkcje wywodz ce jedn geometrie z wielu (ST_Difference, ST_Intersection, ST_SymDifference, MBR Aggregate, ST_Union) Funkcje wywodz ce nowe geometrie na podstawie miar (ST_FindMeasure, ST_MeasureBetween) Funkcje tworz ce zmodyfikowane postacie istniej cych geometrii (ST_AppendPoint, ST_ChangePoint, ST_Generalize, ST_M, ST_PerpPoints, ST_RemovePoint, ST_X, ST_Y, ST_Z)
Politechnika Pozna ska, Instytut Informatyki, KJ 74

SQL/MM Part 3: Spatial


generowanie nowych geometrii z ju istniej cych (2/2)
Przykady:
ST_Polygon konstruuje wielok t z zamkni tego ci gu linii ST_ConvexHull konstruuje wielok t wypuky otaczaj cy geometri ST_SymDifference XOR geometrii ST_AppendPoint dodaje punkt do ci gu linii ST_Y wymienia wsprz dn Y w punkcie

select ST_LINESTRING('linestring (10 10, 10 0, 0 0 )', 0).ST_APPENDPOINT(ST_POINT(0, 10)).ST_ASTEXT() WYNIK from DUAL; WYNIK ----------------linestring (10 10, 10 0, 0 0, 0 10) select ST_LINESTRING('linestring (10 10,10 0,0 0 )',0).ST_CHANGEPOINT(ST_POINT(0,0),ST_POINT(0,10)).ST_ASTEXT() WYNIK from DUAL; WYNIK ----------------linestring (10 10, 10 0, 0 10) select ST_LINESTRING('linestring (10 10, 10 0, 0 0 )', 0).ST_REMOVEPOINT(ST_POINT(0, 0)).ST_ASTEXT() WYNIK from DUAL; WYNIK ----------------linestring (10 10, 10 0)

Politechnika Pozna ska, Instytut Informatyki, KJ

75

SQL/MM Part 3: Spatial


schemat informacyjny
W cz ci trzeciej standardu SQL/MM oprcz opisu typw przestrzennych i metod, znalaz si rwnie opis schematu informacyjnego jaki powinien by dost pny dla u ytkownikw danych przestrzennych Schemat informacyjny wywodzi si rwnie skada si z OpenGIS Simple Features Specification For SQL i skada si czterech perspektyw
ST_GEOMETRY_COLUMNS lista wszystkich kolumn typu ST_GEOMETRY (lub jednego z jego podtypw) istniej cych we wszystkich tabelach. Perspektywa udost pnia identyfikator kolumny, katalog, schemat, tabel , nazw kolumny, a tak e identyfikator i nazw przestrzennego ukadu odniesienia wykorzystywanego przez kolumn . ST_SPATIAL_REFERENCE_SYSTEMS perspektywa prezentuj ca przestrzenne ukady odniesienia opisane za pomoc dwch unikalnych identyfikatorw: nazwy i numerycznego identyfikatora. ST_UNITS_OF_MEASURE perspektywa zawieraj ca jednostki miar. Jednostki te mog wykorzystywane w funkcjach wyznaczaj cych dugo ci, powierzchnie itp. Informacje dotycz ce jednostek obejmuj nazw , typ (miara k ta, miara liniowa), wspczynnik konwersji. ST_SIZING perspektywa zawieraj ca specyficzne dla danych przestrzennych zmienne i ich warto ci. Przykadem takiej zmiennej mo e by ST_MaxGeometryAsText, ktrego warto okre la maksymaln dugo ci gu znakw jaka mo e by u yta dla reprezentacji WKT geometrii.
Politechnika Pozna ska, Instytut Informatyki, KJ 76

Standard SQL/MM Part 3: Spatial implementacja w bazie danych Oracle 11g Typ ST_GEOMETRY
Hierarchia typw Metody
Konwersje pomi dzy geometriami a zewn trznymi typami danych Pobieranie wasno ci lub miar z geometrii Porwnywanie geometrii w oparciu o wyst puj ce mi dzy nimi relacje przestrzenne Generowanie nowych geometrii z ju istniej cych

Wykorzystanie indeksw przestrzennych Sownik bazy danych Schemat Informacyjny


Politechnika Pozna ska, Instytut Informatyki, KJ 77

Typ ST_GEOMETRY w Oracle 11g


hierarchia typw
W bazie danych Oracle 11g mo emy do przechowywania danych przestrzennych wykorzysta typ ST_GEOMETRY Wa cicielem typu (podobnie jak SDO_GEOMETRY) jest MDSYS Hierarchia typw ST_GEOMETRY jest dokadnym odwzorowaniem hierarchii wymaganej przez standard SQL/MM Jedynym atrybutem ka dego z typw jest obiekt SDO_GEOMETRY Poszczeglne typy r ni si liczb metod fakt ten wynika z charakteru poszczeglnych typw
MDSYS.ST_GEOMETRY (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:41) |-MDSYS.ST_CURVE (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:52) | |-MDSYS.ST_CIRCULARSTRING (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:55) | |-MDSYS.ST_COMPOUNDCURVE (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:60) | |-MDSYS.ST_LINESTRING (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:56) |-MDSYS.ST_GEOMCOLLECTION (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:48) | |-MDSYS.ST_MULTICURVE (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:50) | | |-MDSYS.ST_MULTILINESTRING (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:50) | |-MDSYS.ST_MULTIPOINT (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:48) | |-MDSYS.ST_MULTISURFACE (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:49) | |-MDSYS.ST_MULTIPOLYGON (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:53) |-MDSYS.ST_POINT (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:49) |-MDSYS.ST_SURFACE (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:44) | |-MDSYS.ST_CURVEPOLYGON (FINAL:NO, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:54) | |-MDSYS.ST_POLYGON (FINAL:YES, INSTANTIABLE:YES, ATTRIBUTES:1, METHODS:63)

Politechnika Pozna ska, Instytut Informatyki, KJ

78

Typ ST_GEOMETRY w Oracle 11g


metody
Metody dost pne w ramach typu ST_GEOMETRY praktycznie obejmuj wszystkie zakresy funkcjonalne opisane przez standard SQL/MM Zatem znajdziemy w rd nich metody umo liwiaj ce:
Konwersje pomi dzy geometriami a zewn trznymi typami danych. Pobieranie wasno ci lub miar z geometrii. Porwnywanie geometrii w oparciu o wyst puj ce mi dzy nimi relacje przestrzenne. Generowanie nowych geometrii z ju istniej cych.
Politechnika Pozna ska, Instytut Informatyki, KJ 79

Typ ST_GEOMETRY w Oracle 11g


metody konwersje z/do repr. zew. (1/2)
W rd metod konwersji z/do zewn trznych reprezentacji danych przestrzennych brakuje wsparcia dla GML (geography markup language). Zostaa natomiast doo ona mo liwo konwersji z/do typu SDO_GEOMETRY. Konwersja z typu SDO_GEOMETRY mo liwa jest tak e za pomoc konstruktora Lista metod tej kategorii jest nast puj ca:
FROM_SDO_GEOM FROM_WKB FROM_WKT GET_SDO_GEOM GET_WKB GET_WKT
80

Politechnika Pozna ska, Instytut Informatyki, KJ

Typ ST_GEOMETRY w Oracle 11g


metody konwersje z/do repr. zew. (2/2)
SQL> create table MYST_MAJOR_CITIES ( 2 FIPS_CNTRY VARCHAR2(2), 3 CITY_NAME VARCHAR2(40), 4 STGEOM ST_POINT); Table created. SQL> insert into MYST_MAJOR_CITIES 2 select C.FIPS_CNTRY, C.CITY_NAME, 3 TREAT(ST_POINT.FROM_SDO_GEOM(C.GEOM) AS ST_POINT) STGEOM 4 from MAJOR_CITIES C; 123 rows created. SQL> select C.FIPS_CNTRY, C.CITY_NAME, 2 C.STGEOM.GET_WKT() WKT 3 from MYST_MAJOR_CITIES C 4 where CITY_NAME in ('Poznan','Warsaw'); FI -PL PL CITY_NAME --------------Poznan Warsaw WKT -------------------------------------POINT (16.886999448 52.396000183) POINT (21.011879448 52.244945183)
select C.STGEOM.GET_WKB() WKT from MYST_MAJOR_CITIES C where CITY_NAME in ('Poznan','Warsaw'); 00000000h: 00 00 00000010h: B0 22 00000000h: 00 00 00000010h: 5AKJ Instytut Informatyki, 5D 00 4D 00 1F 00 98 00 26 01 40 30 E3 12 65 54 BA E5 40 4A 32 ; .....@0 .eT @J2 F6 ; "M 01 40 35 03 0A 88 10 A7 8F 40 4A 1F ; .....@5.. . @J. 1C ; Z].&. 81

Politechnika Pozna ska,

Typ ST_GEOMETRY w Oracle 11g


metody pobieranie wasno ci lub miar (1/2)
Przykadowe metody typu MDSYS.ST_GEOMETRY pobieraj ce wasno ci lub miary wspieraj pozyskiwanie informacji o:
typach danych (ST_GeometryType), miarach i wsprz dnych (ST_CoordDim, ST_IsValid, ST_X, ST_Y, ST_Z), geometriach w geometrii (ST_Centroid, ST_EndPoint, ST_NumPoints, ST_PointN, ST_StartPoint, ST_Points), ograniczeniach i obwiedniach (ST_Boundary, ST_Envelope, ST_ExteriorRing, ST_InteriorRingN, ST_NumInteriorRing), wymiarach geometrii (ST_Area, ST_Dimension, ST_Length), tym czy geometria jest pusta, zamkni ta, prosta (ST_IsClosed, ST_IsEmpty, ST_IsSimple, ST_IsRing), przestrzennym ukadzie odniesienia (ST_SrId).
Politechnika Pozna ska, Instytut Informatyki, KJ 82

Typ ST_GEOMETRY w Oracle 11g


metody pobieranie wasno ci lub miar (2/2)
SQL> create table MYST_COUNTRY_BOUNDARIES ( 2 FIPS_CNTRY VARCHAR2(2), 3 CNTRY_NAME VARCHAR2(40), 4 STGEOM ST_MULTIPOLYGON); Table created. SQL> insert into MYST_COUNTRY_BOUNDARIES 2 select B.FIPS_CNTRY, B.CNTRY_NAME, ST_MULTIPOLYGON(B.GEOM) 3 from COUNTRY_BOUNDARIES B; 19 rows created. SQL> select CNTRY_NAME, 2 B.STGEOM.ST_GEOMETRYTYPE() STGTYPE, 3 B.STGEOM.ST_COORDDIM() COORDDIM, 4 B.STGEOM.ST_CENTROID().GET_WKT() CENTROID, 5 B.STGEOM.ST_ISSIMPLE() ISS, 6 B.STGEOM.ST_SRID() SRID 7 from MYST_COUNTRY_BOUNDARIES B;
CNTRY_NAME Poland Czech Republic Germany Slovakia Austria Russia Estonia STGTYPE ST_POLYGON ST_POLYGON ST_MULTIPOLYGON ST_POLYGON ST_POLYGON ST_MULTIPOLYGON ST_MULTIPOLYGON COORDDIM 2 2 2 2 2 2 2 CENTROID POINT (19.4302985046652 52.1100187092365) POINT (15.3940452065858 49.7413470389255) POINT (13.4582167461648 51.749945150421) POINT (19.48127675872 48.7134149754144) POINT (14.7844545858062 47.6742701601052) POINT (21.4465878123626 54.7068580593865) POINT (25.5174939960975 57.9147628617778) ISS 1 1 1 1 1 1 1 SRID 8307 8307 8307 8307 8307 8307 8307

Politechnika Pozna ska, Instytut Informatyki, KJ

83

Typ ST_GEOMETRY w Oracle 11g


metody porwnywanie geometrii (1/2)
Metody nale ce do tej kategorii zaimplementowane w Oracle 11g to: ST_Contains, ST_Crosses, ST_Disjoint, ST_Equals, ST_Intersects, ST_Relate, ST_Touches, ST_Within.
select B.CNTRY_NAME, count(*) from MYST_COUNTRY_BOUNDARIES B, MYST_MAJOR_CITIES C where C.STGEOM.ST_WITHIN(B.STGEOM) = 1 group by B.CNTRY_NAME;

select B.CNTRY_NAME, count(*) from MYST_COUNTRY_BOUNDARIES B, MYST_MAJOR_CITIES C where C.STGEOM.ST_CONTAINS(C.STGEOM) = 1 group by B.CNTRY_NAME;

CNTRY_NAME Poland Slovakia Denmark Slovenia Austria Germany Byelarus Hungary Latvia Romania Czech Republic Russia Sweden Ukraine Lithuania

COUNT(*) 50 3 1 1 6 3 2 19 1 13 7 1 7 7 1

Politechnika Pozna ska, Instytut Informatyki, KJ

84

Typ ST_GEOMETRY w Oracle 11g


metody porwnywanie geometrii (2/2)
select A.CNTRY_NAME A_NAME, B.CNTRY_NAME B_NAME from MYST_COUNTRY_BOUNDARIES A, MYST_COUNTRY_BOUNDARIES B where A.STGEOM.ST_TOUCHES(B.STGEOM) = 1 A_NAME and B.CNTRY_NAME = 'Poland'; Byelarus Czech Republic Ukraine Germany Slovakia Russia Lithuania

B_NAME Poland Poland Poland Poland Poland Poland Poland

select from where and

distinct B.CNTRY_NAME, R.name MYST_COUNTRY_BOUNDARIES B, RIVERS R B.CNTRY_NAME = 'Poland' ST_LINESTRING(R.GEOM).ST_INTERSECTS(B.STGEOM) = 1 CNTRY_NAME Poland Poland Poland Poland Poland Poland Poland Poland NAME Bug Morava Oder Odra San Nogat Oder-Havel-Kanal Vistula

Politechnika Pozna ska, Instytut Informatyki, KJ

85

Typ ST_GEOMETRY w Oracle 11g


metody generowanie geometrii (1/2)
Metody nale to: ce do tej klasy metod zaimplementowane w Oracle 11g
Funkcje konwersji (ST_Polygon) Funkcje tworz ce geometrie o innej konfiguracji przestrzennej (ST_Buffer, ST_ConvexHull) Funkcje wywodz ce jedn geometrie z wielu (ST_Difference, ST_Intersection, ST_SymDifference, ST_Union)

Niestety brakuje cakowicie funkcji, ktre:


wywodz nowe geometrie na podstawie miar, oraz tworz zmodyfikowane postacie istniej cych geometrii.

Brak funkcji z pierwszej kategorii wynika z faktu, i w ogle brak wsparcia w geometriach ST_* dla miar i ich warto ci. Brak metod z drugiej kategorii jest niestety dosy powa nym utrudnieniem. Brak funkcji takich jak: ST_AppendPoint, ST_ChangePoint czy ST_RemovePoint powoduje, e programista musi samodzielnie implementowa tego typu operacje je eli zamierza modyfikowa definicje przechowywanych obiektw przestrzennych.
Politechnika Pozna ska, Instytut Informatyki, KJ 86

Typ ST_GEOMETRY w Oracle 11g


metody generowanie geometrii (2/2)
select TREAT(B.STGEOM.ST_DIFFERENCE(ST_GEOMETRY(W.GEOM)) as ST_POLYGON).ST_AREA() WEGRY_BEZ, B.STGEOM.ST_AREA() WEGRY_POW, ROUND(TREAT(B.STGEOM.ST_DIFFERENCE(ST_GEOMETRY(W.GEOM)) as ST_POLYGON).ST_AREA() / B.STGEOM.ST_AREA(), 2) STOSUNEK from MYST_COUNTRY_BOUNDARIES B, WATER_BODIES W where B.CNTRY_NAME = 'Hungary' and W.name = 'Balaton'; WEGRY_BEZ WEGRY_POW STOSUNEK ---------- ---------- ---------9,1873E+10 9,2498E+10 ,99

select from where and

A.STGEOM.ST_UNION(B.STGEOM) CZECHOSLOWACJA MYST_COUNTRY_BOUNDARIES A, MYST_COUNTRY_BOUNDARIES B A.CNTRY_NAME = 'Czech Republic' B.CNTRY_NAME = 'Slovakia';

Politechnika Pozna ska, Instytut Informatyki, KJ

87

Typ ST_GEOMETRY w Oracle 11g


Wykorzystanie indeksw przestrzennych
Typ ST_GEOMETRY mo e by indeksowany za pomoc indeksu r-tree analogicznie jak typ SDO_GEOMETRY, czyli pod warunkiem zarejestrowania odpowiednich informacji w metadanych. Indeksy r-tree mog by z powodzeniem wykorzystywane za pomoc operatorw SDO_NN, SDO_WITHIN_DISTANCE. Przy wykorzystaniu powy szych operatorw nie jest konieczna adna konwersja. Nale y zauwa y , e wykorzystywanie metod typu ST_GEOMETRY nie jest uzale nione od istnienia indeksw przestrzennych.
insert into USER_SDO_GEOM_METADATA select 'MYST_MAJOR_CITIES', 'STGEOM', T.DIMINFO, T.SRID from USER_SDO_GEOM_METADATA T where T.TABLE_NAME = 'MAJOR_CITIES'; create index MYST_MAJOR_CITIES_IDX on MYST_MAJOR_CITIES(STGEOM) indextype IS MDSYS.SPATIAL_INDEX; select B.CNTRY_NAME A_NAME, count(*) from MYST_COUNTRY_BOUNDARIES B, MYST_MAJOR_CITIES C where SDO_WITHIN_DISTANCE(C.STGEOM, B.STGEOM, 'distance=100 unit=km') = 'TRUE' and B.CNTRY_NAME = 'Poland' group by B.CNTRY_NAME;
7 7 7 MYST_COUNTRY_BOUNDARIES 5 MYST_MAJOR_CITIES_IDX 1 1 1 1 55 55 55 19

SELECT STATEMENT, GOAL = ALL_ROWS SORT GROUP BY NOSORT NESTED LOOPS TABLE ACCESS FULL SCOTT DOMAIN INDEX SCOTT

Politechnika Pozna ska, Instytut Informatyki, KJ

88

Przestrzenny Schemat Informacyjny standardu SQL/MM w Oracle 11g


Oracle nie wprowadzi do sownika bazy danych perspektyw wynikaj cych z dyrektyw standardu SQL/MM dotycz cych przestrzennego Schematu Informacyjnego. Wynika to po cz ci z faktu, e analogiczne perspektywy sownikowe istniay ju wcze niej np.
SDO_COORD_REF_SYS zawiera przestrzenne ukady odniesienia SDO_UNITS_OF_MEASURE zawiera jednostki miar

Innym powodem braku implementacji Schematu Informacyjnego mo e by fakt, e Oracle umo liwi wprowadzanie opisw dotycz cych danych przestrzennych zgodnie ze specyfikacj "OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 1: Common architecture" Zosta zdefiniowany nowy typ danych ST_ANNOTATION_TEXT, ktry mo e by wykorzystywany do przechowywania opisw dotycz cych danych przestrzennych Informacje zdefiniowane za pomoc ST_ANNOTATION_TEXT s umieszczane (podobnie jak w przypadku metadanych w USER_SDO_GEOM_METADATA) w perspektywie USER_ANNOTATION_TEXT_METADATA.

Politechnika Pozna ska, Instytut Informatyki, KJ

89

Zagadnienia uzupeniaj ce
Przestrzenne ukady odniesienia
Typy ukadw odniesienia Funkcje su ce do transformacji ukadu odniesienia (Coordinate System Transformation Functions)

Funkcjonalno

LRS (Linear Referencing System)

Wst p i definicje Model danych LRS Operacje LRS (Linear Referencing Functions) Przykad aplikacji

Analiza i eksploracja danych przestrzennych


Politechnika Pozna ska, Instytut Informatyki, KJ 90

Przestrzenne ukady odniesienia


Oracle w wersji 11g wspiera wiele r nych ukadw odniesienia (2 i 3 wymiarowych):
Kartezja skie Geodezyjne oparte na dugo ci i szeroko ci geograficznej (istnieje wiele definicji ukadw odniesienia definiowanych dla poszczeglnych obszarw ziemi) Rzutowane (tylko 2 wymiarowe) w ktrych ka dy punkt jest rzutowany na paszczyzn Lokalne definiowane np. dla systemw CAD

Oracle 11g wspiera nie tylko definiowanie danych przestrzennych i ich przetwarzanie zgodnie z okre lonym ukadem odniesienia, ale tak e umo liwia transformacje obiektw pomi dzy r nymi (geodezyjnymi) ukadami odniesienia. Lista dost pnych ukadw odniesienia jest dost pna przykadowo za pomoc poni szych perspektyw:
SDO_COORD_REF_SYS wszystkie SDO_CRS_GEOGRAPHIC3D geodezyjne 3-wymiarowe

Politechnika Pozna ska, Instytut Informatyki, KJ

91

Przestrzenne ukady odniesienia


analiza
Wybr pomi dzy geodezyjnymi i rzutowanymi/kartezja skimi ukadami odniesienia powinien bra pod uwag dwa aspekty:
Dokadno dla maych obszarw (np. mapa Legionowa) rzutowane ukady odniesienia mog wprowadza pomijalne podczas przetwarzania niedokadno ci. Wydajno przetwarzanie uwzgl dniaj ce sferyczno powierzchni wymaga wi kszych zasobw obliczeniowych

Istniej pewne ograniczenia przy korzystaniu z geodezyjnych ukadw odniesienia


Nie zaleca si przechowywania zoptymalizowanych prostok tw (MBR). Mo liwe jest natomiast wykorzystanie geodezyjnych obiektw MBR podczas ograniczania wynikw zapyta np. za pomoc operatora SDO_FILTER. Nie ma mo liwo ci wykorzystania obiektw przestrzennych zdefiniowanych za pomoc ukw
Politechnika Pozna ska, Instytut Informatyki, KJ 92

Przestrzenne ukady odniesienia


transformacje
Funkcje umo liwiaj ce transformacje oparte na ukadach odniesienia posiadaj bardzo bogat funkcjonalno . Mi dzy innymi umo liwiaj :
Transformacje pojedynczych geometrii Transformacje caych warstw (czyli zawarto ci kolumn w tabeli) Konwersje pomi dzy 3 i 2 wymiarowymi ukadami
select from where and and C.CITY_NAME, MCP.GEOM, SDO_CS.TRANSFORM(MCP.GEOM, M.DIMINFO, 2174) TRANS MAJOR_CITIES C, USER_SDO_GEOM_METADATA M C.CITY_NAME = 'Poznan' GEOM = SDO_GEOMETRY(2001, 8307, M.TABLE_NAME = 'MAJOR_CITIES' SDO_POINT_TYPE(16.8869994, 52.3960002, NULL), NULL, NULL) M.COLUMN_NAME = 'GEOM'; TRANS = SDO_GEOMETRY(2001, 2174, SDO_POINT_TYPE(3717742.99, 5707733.29, NULL), NULL, NULL) Pulkovo 1942(58) / Poland zone IV

BEGIN SDO_CS.TRANSFORM_LAYER('MAJOR_CITIES','GEOM','MAJOR_CITIES_2174',2174); END; select CITY_NAME, rowid from MAJOR_CITIES where CITY_NAME in ('Poznan', 'Warsaw') CITY_NAME --------Poznan Warsaw ROWID -----------------AAARdUAAGAAAB1VAAg AAARdUAAGAAAB1VAAi

select from WHERE AND ODL -----282

ROUND(SDO_GEOM.SDO_DISTANCE(P.GEOMETRY, W.GEOMETRY, 1, 'unit=km')) ODL MAJOR_CITIES_2174 P, MAJOR_CITIES_2174 W P.SDO_ROWID = 'AAARdUAAGAAAB1VAAg' W.SDO_ROWID = 'AAARdUAAGAAAB1VAAi'

Politechnika Pozna ska, Instytut Informatyki, KJ

93

Badany zbir: 32047 wierszy Ukad odniesienia: SRID COORD_REF_SYS_NAME 2174 30 Pulkovo 1942(58) / Poland zone IV 100

COORD_REF_SYS_KIND PROJECTED

25
10

Szybko operacji
obszar obszar SDO_FILTER IDX SDO_FILTER IDX SDO_FILTER TAB SDO_FILTER TAB SDO_NN SDO_NN SDO_WITHIN_DISTANCE SDO_WITHIN_DISTANCE obszar 2174 obszar 2174 SDO_FILTER IDX 2174 SDO_FILTER IDX 2174 SDO_FILTER TAB 2174 SDO_FILTER TAB 2174 SDO_NN 2174 SDO_NN 2174 SDO_WITHIN_DISTANCE 2174 SDO_WITHIN_DISTANCE 2174

20
czas (sek.) czas (sek.)

15

1 200 400 600 800 1000 1200 1400 1600 1800 2000

10
0,1 5

0
0,01

select SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(B.ODL_KSZTALT,1)) OBSZAR from A_OBIEKTY_ODL B where ODL_OBIEKT_ID between p_od_id and p_do_id;
200 400 600 800 1000 1200 1400 1600 1800 2000

select count(*) liczba punktw w obszarze liczba punktw w obs zarze from A_OBIEKTY_ODL OBSZAR LICZBA_PKT SDO_FILTER IDX SDO_FILTER TAB SDO_NN SDO_WITHIN_DISTANCE where SDO_FILTER(ODL_KSZTALT,r_obsz.OBSZAR,'querytype=WINDOW') = 'TRUE'; 200 0,104375 0,0664375 0,0879375 5,1445 0,329125 select from where select from where
400 0,4071875 0,0693125 0,094 5,386625 600 1,0440625 0,072375 0,0985625 5,7324375 count(*) 800 2,1591875 0,073375 0,1035 5,9188125 A_OBIEKTY_ODL 1000 3,85375 0,085 0,1025 6,0253125 SDO_NN(ODL_KSZTALT,r_obsz.OBSZAR,'sdo_num_res=1000',1) = 5,964 'TRUE'; 1200 6,3418125 0,0801875 0,103375 1400 9,5331875 0,0771875 0,1043125 5,9825 count(*) 1600 13,761 0,104375 0,10825 6,128 1800 19,05175 0,0790625 0,1081875 6,1895625 A_OBIEKTY_ODL 2000 26,411125 0,0820625 0,110625 6,33275 SDO_WITHIN_DISTANCE(ODL_KSZTALT,r_obsz.OBSZAR,'distance=500 unit=m') 0,5829375 0,914 1,1904375 1,491125 1,8445625 2,1855625 2,6034375 2,9728125 3,401375 'TRUE';

Politechnika Pozna ska, Instytut Informatyki, KJ

94

LRS (Linear Referencing System)


wst p i definicje (1/3)
W przypadku wielu zastosowa danych przestrzennych, takich jak wszelkiego rodzaju transport (samochodowy, kolejowy, gazu, ropy itp.) rozmieszczenie, dugo i inne cechy przestrzenne s nie wystarczaj ce. W takich przypadkach z danymi przestrzennymi dodatkowo wi zane s r nego rodzaju miary, ktre razem z danymi przestrzennymi stanowi wymagan informacj . Oracle przedstawiaj c system LRS wprowadza kilka definicji:
Segment LRS jest prostym elementem b d cym: lini , ci giem linii lub wielok tem. Segment LRS musi posiada warto ci miar co najmniej dla swojego pocz tkowego i ko cowego punktu. Punkty ksztatu punkty za pomoc , ktrych segment LRS jest zdefiniowany. Punkty ksztatu definiuj kierunek (poo enie) segmentu LRS. W przypadku istotnych dla aplikacji punktw (zawr, prze cznik, zjazd z autostrady) le cych w ramach segmentu LRS mog by wykorzystywane do przechowywania warto ci miar.
Politechnika Pozna ska, Instytut Informatyki, KJ 95

LRS (Linear Referencing System)


wst p i definicje (2/3)
Kierunek segmentu kierunek wyznaczony jest przez pocz tkowy i ko cowy punkt segmentu. Miary przez miar punktu le cego w ramach segmentu LRS rozumiemy liniow odlego pomi dzy punktem pocz tkowym lub ko cowym segmentu LRS. Offset jest odlego ci pomi dzy dowolnym punktem, a segmentem LRS. Ujemna warto oznacza, e punkt le y po prawej stronie segmentu. Wypenianie miar wszystkie nieprzypisane miary s automatycznie wypeniane na podstawie odlego ci od punktw z miarami okre lonymi. Wykonywane jest to w ramach ka dej z funkcji LRS Zakres miar segmentu LRS wyznaczony jest przez miary pocz tkowego i ko cowego punktu segmentu. Projekcja jest dowolnego punktu na segmencie LRS jest punktem definiuj cym segment LRS istniej cym najbli ej. Punkty LRS to punkty definiuj ce segment LRS, ktre posiadaj okre lone warto ci miar.
Politechnika Pozna ska, Instytut Informatyki, KJ 96

LRS (Linear Referencing System)


wst p i definicje (3/3)
Segment LRS

Kierunek segmentu (X,Y,null) Miary (X,Y,null) (X,Y,95) (X,Y,0) start Offset (ujemny) (X,Y,80) koniec (X,Y,120)

Punkty ksztatu - Punkty w ktrych zdefiniowano miary czyli tzw. punkty LRS Zakres miar segmentu (0-120) - Punkty bez miar (miara zostanie okre lona w trakcie dziaania funkcji LRS)

Politechnika Pozna ska, Instytut Informatyki, KJ

97

LRS (Linear Referencing System)


model danych
Model danych LRS zosta zintegrowany z typem SDO_GEOMETRY. Miary mo na dodawa do dwu lub trzywymiarowych geometrii Miara zawsze wyst puje jako ostatnia wsprz dna
(13,6,null) (22,6,40) (31,6,null) (35,4,null) (46,2,95) (53,2,120) (0,0,0) (40,2,80)

(27,6,null)

insert into USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) values ('SIMPLE_LRS', 'GEOMETRY', SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 0, 55, 0.005), SDO_DIM_ELEMENT('Y', 0, 10, 0.005), SDO_DIM_ELEMENT('M', 0, 120, 0.005)), null); create table SIMPLE_LRS (GEOMETRY MDSYS.SDO_GEOMETRY);

insert into SIMPLE_LRS values ( SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1), SDO_ORDINATE_ARRAY(0,0,0, 13,6,NULL, 22,6,40, 27,6,NULL, 31,6,NULL, 35,4,NULL, 40,2,80, 46,2,95, 53,2,120)))

Politechnika Pozna ska, Instytut Informatyki, KJ

98

LRS (Linear Referencing System)


operacje
Podstawowym pakietem umo liwiaj cym przetwarzanie segmentw LRS jest SDO_LRS Funkcjonalno dost pnych za jego pomoc operacji jest bardzo bogata i obejmuje:
Definiowanie segmentw LRS okre lanie warto ci miar. Redefiniowanie segmentw LRS zmian warto ci miar. Wycinanie fragmentw segmentw LRS. Dzielenie segmentw LRS. czenie segmentw LRS. Skalowanie segmentw LRS. Przemieszczanie segmentw LRS. Znajdywanie pozycji punktw opisanych miar lub offsetem. Projekcje punktu na segment LRS. Konwersje segmentw LRS obejmuj ce pojedyncze punkty, linie, warstwy, metadane.
99

Politechnika Pozna ska, Instytut Informatyki, KJ

LRS (Linear Referencing System)


przykad aplikacji: A6 GdyniaGoleniw (1/3)
-- znajd my nasz przysz A6 select SR.ID, SDO_GEOM.SDO_LENGTH(SR.GEOM, 1, 'unit=km') DISTANCE, ST_LINESTRING(SR.GEOM) .ST_NUMPOINTS() ST_NUMPOINTS from STREETS_AND_RAILROADS SR, MAJOR_CITIES C where SDO_RELATE(SR.GEOM, SDO_GEOM.SDO_BUFFER(C.GEOM, 10, 1, 'unit=km'), 'MASK=ANYINTERACT querytype=JOIN') = 'TRUE' and C.CITY_NAME = 'Koszalin';

ID DISTANCE ST_NUMPOINTS --- ---------- -----------56 276,681 22 create table A6_LRS(GEOM MDSYS.SDO_GEOMETRY); -- zdefiniujmy segment LRS insert into A6_LRS select SDO_LRS.CONVERT_TO_LRS_GEOM(SR.GEOM, 0, 276.681) from STREETS_AND_RAILROADS SR where SR.ID = 56; select LRS.GEOM LRS_GEOM, SR.GEOM from A6_LRS LRS, STREETS_AND_RAILROADS SR where SR.ID = 56;

select SDO_GEOM.SDO_DISTANCE( MDSYS.SDO_GEOMETRY( 2001, 8307, MDSYS.SDO_POINT_TYPE(18.5, 54.51667, null), null, null), MDSYS.SDO_GEOMETRY( 2001, 8307, MDSYS.SDO_POINT_TYPE(18.32238, 54.595909, null), null, null), 1, 'unit=km') ODL from DUAL; ODL ---------------14,4865824103146

LRS_GEOM = SDO_GEOMETRY(3302, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(18.5, 54.51667, 0, 18.32238, 54.595909, 14.4865659, 18.261089, 54.62064, 19.3097798, 18.069981, 54.608749, 31.7272181, ... 14.87555, 53.60957, 276.681)) GEOM = SDO_GEOMETRY(2002, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(18.5, 54.51667, 18.32238, 54.595909, 18.261089, 54.62064, 18.069981, 54.608749, ... 14.87555, 53.60957))

Politechnika Pozna ska, Instytut Informatyki, KJ

100

LRS (Linear Referencing System)


przykad aplikacji: A6 GdyniaGoleniw (2/3)
-- Rejestrujemy metadane INSERT INTO USER_SDO_GEOM_METADATA VALUES ('A6_LRS','GEOM', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 12.603676, 26.369824, 1), MDSYS.SDO_DIM_ELEMENT('Y', 45.8464, 58.0213, 1), MDSYS.SDO_DIM_ELEMENT('M', 0, 300, 1) ), 8307); -- zakadamy indeks przestrzenny CREATE INDEX lrs_routes_idx ON lrs_routes(route_geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX; -- Testujemy wasno ci segmentu LRS select SDO_LRS.VALID_MEASURE(GEOM, 1000) VALID_1000, SDO_LRS.GEOM_SEGMENT_LENGTH(GEOM) LENGTH, SDO_LRS.GEOM_SEGMENT_START_MEASURE(GEOM) START_MEASURE, SDO_LRS.GEOM_SEGMENT_END_PT(GEOM) END_PT from A6_LRS; VALID_1000 LENGTH START_MEASURE END_PT = = = = FALSE 276681.315 0 SDO_GEOMETRY(3301, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(14.87555, 53.60957, 276.681))

Politechnika Pozna ska, Instytut Informatyki, KJ

101

LRS (Linear Referencing System)


przykad aplikacji: A6 GdyniaGoleniw (3/3)
--Wypadek 100 kilometrw od wjazdu na A6 tzn. gdzie? select SDO_LRS.LOCATE_PT(GEOM, 100, 0) KM100 from A6_LRS; SDO_GEOMETRY(3301,8307,NULL,SDO_ELEM_INFO_ARRAY(1,1,1),SDO_ORDINATE_ARRAY(17.068,54.472,100)) --Roboty drogowe na odcinku od 120 km do 155 km A6 licz c od Gdyni czyli? select SDO_LRS.CLIP_GEOM_SEGMENT(GEOM, 120, 155) CLIPED from A6_LRS; SDO_GEOMETRY(3302, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(16.8000392, 54.401031, 120, 16.62392, 54.329121, 133.968762, 16.422119 , 54.25161, 149.688923, 16.3512113, 54.228122, 155)) --Gdzie jest najbli szy wjazd na autostrad A6 ze Supska? select SDO_LRS.PROJECT_PT(A6.GEOM, C.GEOM) WJAZD_NA_A6 from A6_LRS A6, MAJOR_CITIES C where C.CITY_NAME = 'Slupsk'; SDO_GEOMETRY(3301, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(17.0338122, 54.473702, 102.253899)) -- Na odcinku 180 km do 210 km 10 metrw na lewo od A6 by poo ona nowa linia telefoniczna a dokadnie? select SDO_LRS.OFFSET_GEOM_SEGMENT(A6.GEOM, M.DIMINFO, 180, 210, 10, 'unit=m arc_tolerance=0.05') LINIA_TEL from A6_LRS A6, USER_SDO_GEOM_METADATA M where M.TABLE_NAME = 'A6_LRS' and M.COLUMN_NAME = 'GEOM' SDO_GEOMETRY(3302, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(16.027703, 54.108581, 180, 15.969925, 54.084379, 184.64113, 15.852341, 54.022942, 194.93855, 15.852284, 54.022924, 194.94284, 15.705594, 53.996584, 204.99557, 15.631608, 53.985575, 210))

Politechnika Pozna ska, Instytut Informatyki, KJ

102

Bibliografia
Oracle Spatial Developer's Guide 11g Release 1 (11.1), Oracle 2007 ISO/IEC 13249-3:2006: SQL/MM Part 3 Spatial OpenGIS Simple Features Specifications for SQL Stolze K.: SQL/MM Spatial: The Standard to Manage Spatial Data in Relational Database Systems. BTW 2003, 2003. Spatial Extender and Geodetic Data Management Feature User's Guide and Reference, IBM 2006 Oprogramowanie do wizualizacji danych przestrzennych autorstwa Michaa Reja (studenta PP) michal.rej@gmail.com
XSQL Server Pages XML XSL Transformation SVG

SDO_GEOMETRY

XSQL Page

XSL

Politechnika Pozna ska, Instytut Informatyki, KJ

103

You might also like