Zarz dzanie danymi przestrzennymi z uwzgl dnieniem mo liwo ci bazy danych Oracle 11g

Podobne dokumenty
Wykorzystanie mechanizmów obiektowych przykład przetwarzanie danych przestrzennych Krzysztof Jankiewicz.

Oracle Spatial Option

Dane przestrzenne Ćwiczenia laboratoryjne (6)

Oracle Spatial Option

Spatial Option zastosowania. Oracle Spatial Option. Spatial Option dlaczego? Spatial Option dlatego. Zastosowania. A co poza tym? Krzysztof Jankiewicz

Ćwiczenie 2. Opcja przestrzenna bazy danych

SPATIAL ZADANIA Krzysztof Jankiewicz, Instytut Informatyki Politechnika Poznańska

Innowacyjne rozwiązania typu open source w aplikacjach typu gis-web. Dominik Tałanda

Przestrzenne bazy danych. Funkcje geometryczne

ZAPYTANIA PRZESTRZENNE W RELACYJNYCH BAZACH DANYCH

Przestrzenne bazy danych. Definicja i cechy przestrzennych baz danych

GIS. Grzegorz Chilkiewicz

Przestrzenne bazy danych. Wstęp do przestrzennych baz danych

3 Źródła 13. Mogą to być dane geoprzestrzenne, przestrzenne, dane o terenie, katastralne, itp..

Edycja geometrii w Solid Edge ST

Harmonogramowanie projektów Zarządzanie czasem

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Styczeń Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład VIII. dr inż.

Baza danych. Baza danych jest to zbiór danych powi zanych mi dzy sob pewnymi zale no ciami.

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Charakterystyka przestrzennych typów danych. do tworzenia raportów. Using spatial data types in reports.

Ładowanie i reorganizacja

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Bazy danych. Andrzej Łachwa, UJ, /15

InsERT GT Własne COM 1.0

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

PL/SQL. Zaawansowane tematy PL/SQL

3 Źródła 14. Mogą to być dane geoprzestrzenne, przestrzenne, dane o terenie, katastralne, itp..

Multimedialne bazy danych. Andrzej Łachwa, WFAiIS UJ 2011

Przestrzenne bazy danych PostGIS

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Wykład 8 Ochrona danych wprowadzenie Sterowanie dostępem do danych Sterowanie przepływem danych Ograniczanie możliwości wnioskowania Szyfrowanie

Postrzeganie reklamy zewnętrznej - badania

Automatyzacja procesu publikowania w bibliotece cyfrowej

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

Relacyjne bazy danych. Podstawy SQL

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

API transakcyjne BitMarket.pl

Oracle PL/SQL. Paweł Rajba.

Architektura komputerów

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Warunki Oferty PrOmOcyjnej usługi z ulgą

ci trwałej modułu steruj cego robota. Po wł niami i programami. W czasie działania wykorzystywane w czasie działania programu: wy robota (poło

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Modelowanie wymiarów

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

INSTRUKCJA WebPTB 1.0

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

KOMISJA WSPÓLNOT EUROPEJSKICH. Wniosek DECYZJA RADY

Systemy GIS Tworzenie zapytań w bazach danych

Praca na wielu bazach danych część 2. (Wersja 8.1)

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Relacyjne bazy danych. Podstawy SQL

Projektowanie bazy danych

PROCEDURA OCENY RYZYKA ZAWODOWEGO. w Urzędzie Gminy Mściwojów

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

REGULAMIN KONTROLI ZARZĄDCZEJ W MIEJSKO-GMINNYM OŚRODKU POMOCY SPOŁECZNEJ W TOLKMICKU. Postanowienia ogólne

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Wykład 5. SQL praca z tabelami 2

Przestrzenne bazy danych. Typy obiektów przestrzennych

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Formularz oferty. (Wypełniają jedynie Wykonawcy składający wspólną ofertę)

Projektowanie Systemów Inf.

Ćwiczenie nr 8 Elementy uzupełniające

Zadania. SiOD Cwiczenie 1 ;


Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

15. Funkcje i procedury składowane PL/SQL

P 0max. P max. = P max = 0; 9 20 = 18 W. U 2 0max. U 0max = q P 0max = p 18 2 = 6 V. D = T = U 0 = D E ; = 6

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

K P K P R K P R D K P R D W

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Wniosek ROZPORZĄDZENIE RADY

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO

ZARZĄDZENIE NR 82/15 WÓJTA GMINY WOLA KRZYSZTOPORSKA. z dnia 21 lipca 2015 r.

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Projekt U S T A W A. z dnia

Wykład 05 Bazy danych

SPRZĄTACZKA pracownik gospodarczy

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

D FREZOWANIE NAWIERZCHNI ASFALTOWYCH NA ZIMNO 1. WST P MATERIA Y SPRZ T TRANSPORT WYKONANIE ROBÓT...

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Systemy mikroprocesorowe - projekt

ZP/6/2015 WYKONAWCA NR 1 Pytanie 1 Odpowiedź: Pytanie 2 Odpowiedź: Pytanie 3 Odpowiedź: Pytanie 4 Odpowiedź: Pytanie 5 Odpowiedź:

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Charakterystyka systemów plików

Logowanie do systemu Faktura elektroniczna

Oprogramowanie FonTel służy do prezentacji nagranych rozmów oraz zarządzania rejestratorami ( zapoznaj się z rodziną rejestratorów FonTel ).

INFORMATOR dotyczący wprowadzania do obrotu urządzeń elektrycznych i elektronicznych aparatury, telekomunikacyjnych urządzeń końcowych i urządzeń

Instrukcja programu PControl Powiadowmienia.

GENERALNY INSPEKTOR OCHRONY DANYCH OSOBOWYCH

Podstawa prawna: Ustawa z dnia 15 lutego 1992 r. o podatku dochodowym od osób prawnych (t. j. Dz. U. z 2000r. Nr 54, poz. 654 ze zm.

Umowa w sprawie przyznania grantu Marie Curie 7PR Wykaz klauzul specjalnych

Oracle11g: Wprowadzenie do SQL

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Transkrypt:

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 uzupełniaj ce Politechnika Pozna ska, Instytut Informatyki, KJ 2

Koncepcja danych przestrzennych Zastosowanie i powody wykorzystywania Terminologia Model danych i metadane Indeksowanie danych przestrzennych Politechnika Pozna ska, Instytut Informatyki, KJ 3

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: Dane przestrzenne A tak: fips_cntry PL EZ GM fips_cntry PL PL GM GM EZ cntry_name Poland Czech Republic Germany city_name Szczecin Gorzow Wielkopolski Berlin Potsdam Prague Politechnika Pozna ska, Instytut Informatyki, KJ 5

Dane przestrzenne dlatego Pytanie Relacje Spatial Option W jakim pa stwie le y Praga? Czy Praga jest w tym samym pa stwie co Pilzno? Co le y bli ej Berlina, Gorzów Wielkopolski czy Szczecin? Czy Polska graniczy z Republik Czesk? Jakie Pa stwa s siaduj z Polsk? Jakie miasta znajduj si w odległo ci do 200 km od Poznania? Które pa stwo jest wi ksze Republika Czeska czy Słowacja? Politechnika Pozna ska, Instytut Informatyki, KJ 6

Dane przestrzenne hierarchia obiektów Warstwa przestrzenna Geometria... Geometria... Geometria Element... Element... Element Punkt Ci g linii Wielok t Zło ony ci g linii... Politechnika Pozna ska, Instytut Informatyki, KJ 7

Warstwa przestrzenna (layer) Jest zbiorem geometrii posiadaj cych podobny zestaw atrybutów (np. zwi zanych znaczeniowo) Przykłady warstw przestrzennych: Mapy krajów, miast; Sie dróg, sie wodoci gów, obszary le ne, obszary zurbanizowane, obszary o okre lonej g sto ci zaludnienia; Sie sklepów, sie hurtowni; Sie no ników reklamowych, obiekty okre lonego typu znacz cego dla reklamodawców; W bazie danych Oracle warstwa jest z reguły to sama z pojedyncz kolumn w tabeli. Politechnika Pozna ska, Instytut Informatyki, KJ 8

Geometria Jest struktur przestrzenn zbudowan ze zbioru prostych elementów 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 Przykłady geometrii: Wyspa, jezioro, województwo, obszar zalesiony; Ulica, rzeka, granica; Sklep, hurtownia, no nik reklamowy, apteka, szkoła Konstelacja gwiazd, zbiór 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 9

Element 5 3 Składowa geometrii fragment jej struktury Z reguły nie jest przetwarzany w oderwaniu od geometrii. Elementy mog by ró nego typu: Punkt, Linia, Wielok t W zale no ci od typu elementu do jego opisu wykorzystywany jest jeden lub cały zbiór punktów (współrz dnych) 2 1 4 SDO_GEOMETRY(2007, 8307, NULL, 1 2 3 4 5 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_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES SDO_GTYPE okre la typ geometrii w formacie dltt d liczba wymiarów wykorzystywanych do opisu geometrii l dotyczy systemu LRS (linear referencing system) tt typ geometrii. Prawidłowe warto ci to: dl00 UNKNOWN_GEOMETRY geometria ignorowana przez funkcje i operatory przestrzenne dl01 POINT geometria składaj ca si z jednego punktu. dl02 LINESTRING geometria składaj ca si z jednego ci gu linii. dl03 POLYGON jeden wielok t. dl04 COLLECTION ró norodna kolekcja elementów. dl05 MULTIPOINT geometria składaj ca si z wielu punktów. dl06 MULTILINESTRING wiele ci gów linii. dl07 MULTIPOLYGON wiele rozł cznych wielok tów lub powierzchni. dl08 SOLID bryła geometria składaj ca si z wielu płaszczyzn zamykaj cych przestrze. dl09 MULTISOLID geometria składaj 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 przykłady 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 układ odniesienia (odwzorowanie) Warto pusta oznacza, e aden układ odniesienia nie jest wykorzystywany współrz dne s współrz 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 układów odniesienia SDO_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES WGS 84 (geographic 3D) Politechnika Pozna ska, Instytut Informatyki, KJ 14 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) 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 atrybut SDO_POINT SDO_POINT zoptymalizowana metoda przechowywania pojedynczych punktów 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 wypełnione 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 punktem przechowywanym w parametrze SDO_POINT wówczas SDO_ELEM_INFO zawiera opis poszczególnych elementów wchodz cych w skład 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_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES 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, ) ) Politechnika Pozna ska, Instytut Informatyki, KJ 16

SDO_ETYPE i SDO_INTERPRETATION czyli typy elementów i ich interpretacje Typ obiektu nieznany element punkt ci g linii wielok t zło ony ci g linii zło ony wielok t płaszczyzna Warto ci SDO_ETYPE 0 1 2 1003 zewn trzny 2003 wewn trzny 4 1005 zewn trzny 2005 wewn trzny 1006 zewn trzna 2006 wewn trzna Warto ci SDO_INTERPRETATION 1 punkt 0 orientacja (kierunek) dla punktu # liczba punktów w kolekcji 1 linie proste, 2 łuki 1 linie proste, 2 łuki, 3 zoptymalizowany prostok t, 4 koło # liczba składowych (ci gów linii) tworz cych zło ony ci g linii # liczba składowych (ci gów linii) tworz cych zło ony wielok t # liczba wielok tów tworz ca płaszczyzn (współdzielone kraw dzie mog nale e co najwy ej do dwóch wielok tów) bryła 1007 # liczba płaszczyzn tworz ca brył bryła mo e si składa z jednej płaszczyzny zewn trznej oraz dowolnej Pełne wsparcie dla danych 3D pojawiło liczby płaszczyzn wewn trznych si w wersji 11g (dotyczy to głównie 3 zoptymalizowany prostopadło cian elementów, operatorów, indeksowania) Politechnika Pozna ska, Instytut Informatyki, KJ 17

SDO_ETYPE i SDO_INTERPRETATION przykłady (1,2,1) (1,1003,1) (1,1,7) (1,1003,2) (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) (1,1003,1, 9,2003,1) Politechnika Pozna ska, Instytut Informatyki, KJ 18

SDO_GEOMETRY atrybut SDO_ORDINATES Zawiera koordynaty (współrz dne poszczególnych punktów) wszystkich elementów tworz cych geometri SDO_GEOMETRY AS SDO_GTYPE SDO_SRID SDO_POINT SDO_ELEM_INFO SDO_ORDINATES Liczba warto ci słu cych do opisania współrz dnych ka dego punktu jest uzale niona warto ci atrybutu SDO_GTYPE Atrybut SDO_ELEM_INFO wyznacza, które punkty w SDO_ORDINATES nale do których elementów Politechnika Pozna ska, Instytut Informatyki, KJ 19

SDO_GEOMETRY atrybut SDO_ORDINATES przykłady (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 przykłady 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 Poszczególne 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 obsługi (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 diminfo srid Typ kolumny varchar2(32) varchar2(1024) mdsys.sdo_dim_array number Opis nazwa tabeli nazwa zarejestrowanej kolumny informacja dotycząca każdego z wykorzystywanych wymiarów; dla każdego wymiaru przechowywane są następujące dane: nazwa wymiaru, wartość wymiaru ograniczająca geometrie z dołu, wartość ograniczająca z góry, tolerancja. układ odniesienia wykorzystywany przez wszystkie geometrie w kolumnie Politechnika Pozna ska, Instytut Informatyki, KJ 22

Metadane wskazówki i przykład Rejestracja metadanych jest konieczna przed utworzeniem indeksu na kolumnie zawieraj cej geometrie 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 26.369824, 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 indeksów: R-tree i Quadtree Od wersji 11g wspierany jest jedynie R-tree, w tej samej wersji pojawiło si pełne wsparcie indeksów (a co za tym idzie operatorów) dla obiektów 3D (parametr sdo_indx_dims=3) Indeksy s niezb dne podczas wyznaczania zale no ci pomi dzy geometriami Własno Tworzenie i strojenie indeksu Wielko indeksu Zapytania z wyk. operatora najbli szego s siedztwa Du a liczba modyfikacji Zapytanie z wykorzystaniem SDO_WITHIN_DISTANCE Indeksowanych wymiarów Przybli anie geometrii Proste Mała Szybsza realizacja Zmniejszenie wydajno ci indeksu Zalecany Do 4 Słabe R-tree Du a Wolniejsza realizacja Nie ma wpływu na wydajno Do 2 Quadtree Bardziej skomplikowane, dobranie odpowiednich warto ci mo e mie znacz ce skutki Dobre przy odpow. wła ciwo ciach indeksu Politechnika Pozna ska, Instytut Informatyki, KJ 24

1 5 6 c 7 a 2 A root B R-tree indeks 3 9 b d 4 8 Indeks r-tree dokonuje przybli enia ka dej geometrii przez zastosowanie pojedynczego najmniejszego obejmuj cego prostok ta (MBR minimum bounding rectangle) Modyfikacje tabeli mog wpływa na degradacj jako ci indeksu Jako indeksu mo na przywróci 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 zało enia indeksu SDO_TUNE.ANALYZE_RTREE procedura okre laj ca czy indeks wymaga przebudowy czy nie. Wylicza obecn jego jako i porównuje z jako ci pocz tkow SDO_TUNE.RTREE_QUALITY zwraca jako indeksu SDO_TUNE.QUALITY_DEGRADATION zwraca stopie degradacji indeksu A root B a b c d Politechnika Pozna ska, Instytut Informatyki, KJ 25

Indeksowanie przykład 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

Przykład 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) ) ); Politechnika Pozna ska, Instytut Informatyki, KJ 27

Przykład 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 Sposób 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. Załadowanie danych przestrzennych mo e by zrealizowane tak e za pomoc SQLLoader'a. SQLLoader wymaga dokumentów zawieraj cych dane do załadowania w okre lonym formacie Najcz stszym formatem dokumentów zawieraj cych dane przestrzenne s tzw. ShapeFile Aby mo na było załadowa pliki ShapeFile do wn trza bazy danych Oracle, nale y je przekonwertowa. Politechnika Pozna ska, Instytut Informatyki, KJ 30

Konwersja danych przestrzennych Oracle Shapefile Converter narz dzie ułatwiaj ce konwersj danych z pliku ShapeFile do struktur w bazie danych Oracle (1/3) 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 było wykorzysta załadowane dane nale y dokona ich konwersji zawarto ci typu SDO_GEOMETRY zgodnej z obecnie obowi zuj cymi regułami. Przykładowo, we wcze niejszych wersjach nie były 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

Sposób przetwarzania zapyta Zapytania przestrzenne wykorzystuj dwufazowe przetwarzanie. Podczas pierwszej fazy z pełnego zbioru danych na podstawie aproksymacji opartej na indeksie przestrzennym wybierane s te obiekty, które potencjalnie mog spełnia warunki zapytania s to tzw. kandydaci. W fazie drugiej ze zbioru kandydatów wyznaczane s za pomoc metod dokładnych te obiekty, które rzeczywi cie spełniaj zadany warunek. Wej ciowy zbiór danych Filtr podstawowy (primary) Zbiór danych kandydatów Filtr dokładny (secondary) Zbiór danych wynikowych Politechnika Pozna ska, Instytut Informatyki, KJ 34

Sposób przetwarzania zapyta przykład Operator SDO_FILTER, który wykorzystuje jedynie pierwsz faz zapytania, czyli daje w wyniku zbiór "kandydatów", dla indeksu r-tree uzna, e z punktem 3,3 maj "co wspólnego" wszystkie 3 geometrie. Operator SDO_RELATE, który wykorzystuje obie fazy zapytania, czyli dokonuje dodatkowej weryfikacji zbioru kandydatów, b dzie miał na ten temat "odmienne zdanie". 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 2 1 3 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 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 typów obiektowych SDO_GEOMETRY oprócz atrybutów posiada równie metody. Wszystkie metody typu SDO_GEOMETRY s funkcjami. Do najbardziej podstawowych metod nale : GET_GTYPE daje w wyniku typ geometrii (tt), GET_DIMS liczba wymiarów geometrii (d), GET_LRS_DIM liczba wymiarów 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() 3 3 7 3 7 7 7 T.GEOM.GET_DIMS() 2 2 2 2 2 2 2 T.GEOM.GET_LRS_DIM() 0 0 0 0 0 0 0 Politechnika Pozna ska, Instytut Informatyki, KJ 36

Operatory i funkcje Dane przestrzenne mo na przetwarza za pomoc bardzo bogatego zbioru operatorów 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 słu y do identyfikacji najbli szego s siedztwa, wymaga indeksu. SDO_NN_DISTANCE funkcja zwracaj ca odległo od obiektów zwróconych przez operator SDO_NN. SDO_RELATE wykorzystuje indeks do wyznaczenia obiektów 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 odległo ci od obiektu. W przypadku ka dego z operatorów, pierwszym argumentem musi by kolumna na której został zało 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 przypadków, mo e słu y do porównywania pojedynczej geometrii (2) z kolumn w tabeli (1) JOIN słu y do wykonywania poł cze pomi dzy dwoma tabelami zawieraj cymi geometrie, rzadziej wykorzystywany select A.CNTRY_NAME A_NAME, B.CNTRY_NAME B_NAME from COUNTRY_BOUNDARIES A, COUNTRY_BOUNDARIES B where SDO_FILTER(A.GEOM, B.GEOM, 'querytype=join') = 'TRUE' and 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]) Parametr sdo_num_res operatora SDO_NN okre la liczb obiektów z najbli szego s siedztwa jak nale y zwróci w zapytaniu. Parametr unit operatora SDO_NN pozwala wyrazi odległo przez operator SDO_NN_DISTANCE w po danych jednostkach. SDO_NN_DISTANCE(numer) 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 prawidłowymi warto ciami s WINDOW lub JOIN (został omówiony 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 wówczas gdy obiekty nie s rozł czne. CONTAINS je li drugi obiekt całkowicie zawiera si wewn trz pierwszego obiektu, granice obiektów si nie stykaj COVEREDBY je li pierwszy obiekt jest całkowicie zawarty wewn trz drugiego obiektu, granice obiektów stykaj si w jednym lub wielu punktach. COVERS je li drugi obiekt jest całkowicie wewn trz pierwszego obiektu, granice nakładaj si w jednym lub wielu miejscach. DISJOINT je li obiekty nie maj wspólnych granic ani wewn trznych elementów. EQUAL je li obiekty współdziel ka dy punkt swoich granic i wn trza wł czaj c w to dziury wewn trz obiektów. INSIDE je li pierwszy obiekt całkowicie zawiera si wewn trz drugiego obiektu, granice nie stykaj si. OVERLAPBDYDISJOINT je li obiekty zachodz na siebie lecz ich granice nie maj cz ci wspólnych. OVERLAPBDYINTERSECT je li obiekty zachodz na siebie a ich granice maj cz ci wspólne w jednym lub wielu fragmentach. TOUCH je li dwa obiekty współdziel wspólne punkty graniczne, i jednocze nie nie współdziel adnych punktów wewn trznych. SDO_RELATE(geometria1, geometria2, ) Politechnika Pozna ska, Instytut Informatyki, KJ 42

SDO_WITHIN_DISTANCE SDO_WITHIN_DISTANCE(geometria1, geometria2, parametry); Podstawowe parametry operatora SDO_WITHIN_DISTANCE: distance odległo od geometria2 querytype deklaracja dotycz ca wykorzystania filtru dokładnego. Warto równa 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 odległo ci Waliduj ce: VALIDATE_GEOMETRY sprawdza poprawno geometrii, VALIDATE_LAYER sprawdza poprawno warstwy (wszystkich geometrii w kolumnie okre lonej tabeli) Operacje na dwóch obiektach: SDO_DISTANCE oblicza odległo od geometrii SDO_DIFFERENCE ró nica topologiczna dwóch geometrii, SDO_INTERSECTION cz wspólna dwóch geometrii, SDO_UNION suma topologiczna dwóch geometrii, SDO_XOR symetryczna ró nica dwóch geometrii Politechnika Pozna ska, Instytut Informatyki, KJ 44

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 powłok wypukł (convex hull) geometrii, SDO_LENGTH wylicza długo obwodu, SDO_MBR wyznacza najmniejszy prostok t obejmuj cy geometri, SDO_[MIN MAX]_MBR_ORDINATE wyznacza "doln " ("górn ") 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 działania funkcji SDO_GEOM.RELATE mog by nast puj ce: Je li w parametrze mask okre lono oczekiwany zwi zek pomi dzy obiektami, wówczas funkcja zwraca ci g reprezentuj cy ten zwi zek lub ci g znaków FALSE Je li w parametrze mask został podany ci g DETERMINE wówczas funkcja daje w wyniku ci g reprezentuj cy zwi zek pomi dzy geometriami W przypadku mask równego ANYINTERACT funkcja daje w wyniku TRUE pod warunkiem, e mamy do czynienia z nierozł cznymi geometriami 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' CNTRY Poland Poland Poland 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 spójno ci geometrii mo liwa za pomoc przeznaczonych do tego funkcji Weryfikacja typu Prawidłowa 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 Spójno 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 wskazówek 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 Ci g linii zawiera co najmniej dwa punkty Jedno i czterocyfrowe warto ci SDO_ETYPE nie mog by wymieszane przy definiowaniu wielok tów Punkty w przypadku koła 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 prawidłow pozycj liczby wymiarów Politechnika Pozna ska, Instytut Informatyki, KJ 48

Funkcje waliduj ce SDO_GEOM.VALIDATE_GEOMETRY SDO_GEOM.VALIDATE_GEOMETRY( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER ) RETURN VARCHAR2; Funkcja weryfikuj ca spójno geometrii. Sprawdza reprezentacj geometrii na podstawie definicji elementu Zalecanym jej odpowiednikiem jest funkcja GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT Wyniki działania funkcji s nast puj ce: TRUE je li geometria jest prawidłowa Je li posiada bł dy wówczas uzyskujemy numer bł du Oracle a 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 zarówno spójno typu jak i spójno 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 ORA-13367 Wrong orientation for interior/exterior rings Politechnika Pozna ska, Instytut Informatyki, KJ 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 wypełnia tabel wynikow informacjami o rezultatach walidacji wszystkich geometrii w warstwie Tabela wynikowa powinna by utworzona przed wywołaniem 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 dwóch 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 and B.CITY_NAME in ('Berlin', 'Warsaw'); Poznan Poznan CITY_NAME Berlin 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 SDO_GEOM.SDO_INTERSECTION(A.GEOM, B.GEOM, 1) GRANICA from COUNTRY_BOUNDARIES A, COUNTRY_BOUNDARIES B where A.CNTRY_NAME = 'Poland' and 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 dwóch 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 SDO_GEOM.SDO_UNION(A.GEOM, B.GEOM, 1) CZECHOSLOWACJA from COUNTRY_BOUNDARIES A, COUNTRY_BOUNDARIES B where A.CNTRY_NAME = 'Czech Republic' and 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 order by 2 desc CNTRY_NAME POWIERZCHNIA 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, odległo 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 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, where 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 południe od Kutna SDO_GEOM.SDO_LENGTH COUNTRY_BOUNDARIES B A.CNTRY_NAME = 'Poland'; SDO_GEOM.SDO_LENGTH( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER [, jednostki VARCHAR2]) RETURN NUMBER; CNTRY_NAME Poland Poland Poland Poland Poland Poland Poland CNTRY_NAME Lithuania Russia Byelarus Slovakia Germany Ukraine Czech Republic DLUGOSCI_GRANIC 82 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_wymiarów 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 powłok 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 zbiór 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: Tolerancja ma wpływ na wyniki działania wielu funkcji przestrzennych, w tym funkcji agreguj cych. Definiuje ona odległo, która ma by "pomijana" w obliczeniach Tolerancja CREATE TYPE sdoaggrtype AS OBJECT ( geometria MDSYS.SDO_GEOMETRY, tolerancja NUMBER); SDO_AGGR_UNION 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 zbiór: 32047 wierszy Układ odniesienia: SRID COORD_REF_SYS_NAME 30 COORD_REF_SYS_KIND 8307 Longitude / Latitude (WGS 84) GEOGRAPHIC2D 25 Szybko operacji czas (sek 20 15 10 obszar SDO_FILTER IDX SDO_FILTER TAB SDO_NN SDO_WITHIN_DISTANCE 5 0 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 punktów w obszarze from A_OBIEKTY_ODL LICZBA_PKT OBSZAR SDO_FILTER IDX SDO_FILTER TAB SDO_NN SDO_WITHIN_DISTANCE where SDO_FILTER(ODL_KSZTALT,r_obsz.OBSZAR,'querytype=WINDOW') 200 0,162125 0,05175 0,07325 6,8281875 = 'TRUE'; 3,2773125 400 0,5430625 0,057375 0,078125 8,665125 5,253875 select count(*) 600 1,2598125 0,061625 0,08 10,905375 7,450125 from A_OBIEKTY_ODL 800 2,461875 0,062375 0,0830625 12,997875 9,400625 4,2353125 0,062375 0,087125 15,12 11,51175 where SDO_NN(ODL_KSZTALT,r_obsz.OBSZAR,'sdo_num_res=1000',1) = 'TRUE'; 1200 6,8164375 0,065375 0,087875 17,2471875 13,916875 select count(*) 1400 10,7823125 0,0673125 0,09175 18,7355 16,4139375 1600 15,38275 0,0723125 0,09175 20,6963125 18,557625 from A_OBIEKTY_ODL 1800 20,307625 0,163 0,0879375 22,6435 19,5323125 where SDO_WITHIN_DISTANCE(ODL_KSZTALT,r_obsz.OBSZAR,'distance=500 2000 26,9638125 0,0655 0,0889375 24,7166875unit=m') = 'TRUE'; 21,044 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 własno ci lub miar z geometrii Porównywanie 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 skrócie SQL/MM obejmuje rozszerzenia multimedialne w SQL takie jak: przetwarzanie du ych obiektów tekstowych, przetwarzanie obrazów, 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 pozostałych 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, która ukazała si w 1999 roku, wywodzi si bezpo rednio z dokumentu OpenGIS Simple Features Specification For SQL, wydanego równie 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, porówna i przetwarzania danych przestrzennych. Standard SQL/MM Part 3: Spatial koncentruje si na: Opisie typów danych wykorzystywanych dla danych przestrzennych Funkcjonalno ci i mo liwo ci przetwarzania danych przestrzennych Opisie perspektyw Schematu Informacyjnego (słownika danych) Politechnika Pozna ska, Instytut Informatyki, KJ 62

Standard SQL/MM dla wszystkich wykorzystywanych tabel, perspektyw, typów danych, metod i funkcji stosuje prefiks ST_* Typy danych przestrzennych standardu SQL/MM i ich hierarchia wywodz z OpenGIS Simple Features Specification For SQL SQL/MM Part 3: Spatial typy danych (1/3) ST_Geometry ST_Surface ST_Curve ST_Point ST_GeomCollection ST_CurvePolygon ST_Polygon ST_MultiSurface ST_MultiPolygon ST_MultiCurve ST_MultiLineString ST_LineString ST_CircularString ST_CompoundCurve ST_MultiPoint ST* - pochodzi on od słów Spatial i Temporal lub SpatialType Politechnika Pozna ska, Instytut Informatyki, KJ 63

SQL/MM Part 3: Spatial typy danych (2/3) Przykłady danych przestrzennych (0 i 1-wymiarowe) ST_Point pojedynczy punkt ST_MultiPoint kolekcja punktów (ST_Point) ST_LineString sekwencja punktów definiuj ca ci g linii. Ka de dwa s siaduj ce punkty definiuj pojedynczy segment ci gu linii. ST_CircularString sekwencja punktów definiuj ca ci g łuków. Ka dy segment (łuk) definiowany jest za pomoc trzech punktów. ST_CompoundCurve kolekcja ci gów linii i łuków. ST_MultiCurve kolekcja ci gów linii i/lub łuków (ST_Curve) ST_MultiLineString kolekcja ci gów 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) Przykłady danych przestrzennych (2-wymiarowe) ST_CurvePolygon figura 2-wymiarowa zdefiniowana za pomoc sekwencji ci gów linii i/lub łuków (ST_Curve). ST_Polygon wielok t zdefiniowany za pomoc sekwencji ci gów linii (ST_LineString). ST_MultiSurface kolekcja figur 2-wymiarowych (ST_CurvePolygon) ST_MultiPolygon kolekcja wielok tów 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 własno ci lub miar z geometrii Porównywanie 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. oprócz hierarchii typów 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 formatów reprezentacji. Konwersja jest mo liwa przy wykorzystaniu Konstruktorów, które umo liwiaj utworzenie typów ST_* z przestawionych formatów Dla kompatybilno ci wstecz zdefiniowano funkcje takie jak ST_PointFromText lub ST_GeometryFromWKB, które równie tworz obiekty ST_* z zewn trznych formatów (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 formatów 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 własno ci lub miar z geometrii (1/3) Wszystkie geometrie posiadaj pewne własno ci, które 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 współrz 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 układzie odniesienia (ST_SrsId, ST_SrsName). Politechnika Pozna ska, Instytut Informatyki, KJ 69

SQL/MM Part 3: Spatial pobieranie własno ci lub miar z geometrii (2/3) Przykłady: ST_CoordDim daje w wyniku typy koordynat geometrii (coordinate dimension). ST_MaxX daje w wyniku maksymaln warto współrz dnej X geometrii. ST_X daje w wyniku współrz 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 który 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 gów linii (opcjonalnie jednostka miary) zwraca ich długo. ST_IsSimple daje w wyniku 1 je li geometria jest prosta, 0 w przeciwnym przypadku. ST_SrsId w zale no ci od parametrów konwertuje geometri do zadanego układu odniesienia, lub podaje identyfikator odniesienia obowi zuj cy dla geometrii. Politechnika Pozna ska, Instytut Informatyki, KJ 70

SQL/MM Part 3: Spatial pobieranie własno 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 IS_MEASURED NUM_GEOMS_IN_COLL MINZ ------- ----------- ----------------- ---- M 1 3 Z 0 4 5 MZ 1 3 7 POL 0 3 Politechnika Pozna ska, Instytut Informatyki, KJ 71

SQL/MM Part 3: Spatial porównywanie 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 fałsz, lub 1 w przeciwnym przypadku. Przykładowo wymienione poni ej funkcje weryfikuj czy dwie porównywane geometrie s : ST_Equals identyczne ST_Disjoint rozł czne ST_Intersects, ST_Crosses, ST_Overlaps posiadaj cz wspólne ST_Touches stykaj si kraw dziami ST_Within, ST_Contains zawieraj si jedna w drugiej. Do przedstawianej kategorii mo na zaliczy tak e funkcj ST_Distance, która daje w wyniku odległo pomi dzy geometriami. Politechnika Pozna ska, Instytut Informatyki, KJ 72 ci

SQL/MM Part 3: Spatial porównywanie 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, które na podstawie istniej cych geometrii tworz nowe powoduje, e z reguły 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) Przykłady: ST_Polygon konstruuje wielok t z zamkni tego ci gu linii ST_ConvexHull konstruuje wielok t wypukły otaczaj cy geometri ST_SymDifference XOR geometrii ST_AppendPoint dodaje punkt do ci gu linii ST_Y wymienia współrz 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 oprócz opisu typów przestrzennych i metod, znalazł si równie opis schematu informacyjnego jaki powinien by dost pny dla u ytkowników danych przestrzennych Schemat informacyjny wywodzi si równie składa si z OpenGIS Simple Features Specification For SQL i składa si czterech perspektyw ST_GEOMETRY_COLUMNS lista wszystkich kolumn typu ST_GEOMETRY (lub jednego z jego podtypów) istniej cych we wszystkich tabelach. Perspektywa udost pnia identyfikator kolumny, katalog, schemat, tabel, nazw kolumny, a tak e identyfikator i nazw przestrzennego układu odniesienia wykorzystywanego przez kolumn. ST_SPATIAL_REFERENCE_SYSTEMS perspektywa prezentuj ca przestrzenne układy odniesienia opisane za pomoc dwóch unikalnych identyfikatorów: nazwy i numerycznego identyfikatora. ST_UNITS_OF_MEASURE perspektywa zawieraj ca jednostki miar. Jednostki te mog wykorzystywane w funkcjach wyznaczaj cych długo ci, powierzchnie itp. Informacje dotycz ce jednostek obejmuj nazw, typ (miara k ta, miara liniowa), współczynnik konwersji. ST_SIZING perspektywa zawieraj ca specyficzne dla danych przestrzennych zmienne i ich warto ci. Przykładem takiej zmiennej mo e by ST_MaxGeometryAsText, którego warto okre la maksymaln długo ci gu znaków 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 typów Metody Konwersje pomi dzy geometriami a zewn trznymi typami danych Pobieranie własno ci lub miar z geometrii Porównywanie geometrii w oparciu o wyst puj ce mi dzy nimi relacje przestrzenne Generowanie nowych geometrii z ju istniej cych Wykorzystanie indeksów przestrzennych Słownik bazy danych Schemat Informacyjny Politechnika Pozna ska, Instytut Informatyki, KJ 77

Typ ST_GEOMETRY w Oracle 11g hierarchia typów W bazie danych Oracle 11g mo emy do przechowywania danych przestrzennych wykorzysta typ ST_GEOMETRY Wła cicielem typu (podobnie jak SDO_GEOMETRY) jest MDSYS Hierarchia typów ST_GEOMETRY jest dokładnym odwzorowaniem hierarchii wymaganej przez standard SQL/MM Jedynym atrybutem ka dego z typów jest obiekt SDO_GEOMETRY Poszczególne typy ró ni si liczb metod fakt ten wynika z charakteru poszczególnych typów 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 ród nich metody umo liwiaj ce: Konwersje pomi dzy geometriami a zewn trznymi typami danych. Pobieranie własno ci lub miar z geometrii. Porównywanie 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 ród metod konwersji z/do zewn trznych reprezentacji danych przestrzennych brakuje wsparcia dla GML (geography markup language). Została natomiast doło 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 Politechnika Pozna ska, Instytut Informatyki, KJ 80

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 CITY_NAME WKT -- --------------- -------------------------------------- PL Poznan POINT (16.886999448 52.396000183) PL Warsaw 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 00 00 01 40 30 E3 12 65 54 BA E5 40 4A 32 ;...@0.eT @J2 00000010h: B0 22 4D 98 F6 ; "M ö 00000000h: 00 00 00 00 01 40 35 03 0A 88 10 A7 8F 40 4A 1F ;...@5... @J. Politechnika Pozna ska, Instytut 00000010h: Informatyki, 5A KJ 5D 1F 26 1C ; Z].&. 81

Typ ST_GEOMETRY w Oracle 11g metody pobieranie własno ci lub miar (1/2) Przykładowe metody typu MDSYS.ST_GEOMETRY pobieraj ce własno ci lub miary wspieraj pozyskiwanie informacji o: typach danych (ST_GeometryType), miarach i współrz 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 układzie odniesienia (ST_SrId). Politechnika Pozna ska, Instytut Informatyki, KJ 82

Typ ST_GEOMETRY w Oracle 11g metody pobieranie własno 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 porównywanie 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 porównywanie 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 and B.CNTRY_NAME = 'Poland'; A_NAME Byelarus Czech Republic Ukraine Germany Slovakia Russia Lithuania B_NAME Poland Poland Poland Poland Poland Poland Poland select distinct B.CNTRY_NAME, R.name from MYST_COUNTRY_BOUNDARIES B, RIVERS R where B.CNTRY_NAME = 'Poland' and 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 ce do tej klasy metod zaimplementowane w Oracle 11g to: 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 całkowicie funkcji, które: wywodz nowe geometrie na podstawie miar, oraz tworz zmodyfikowane postacie istniej cych geometrii. Brak funkcji z pierwszej kategorii wynika z faktu, i w ogóle 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 obiektów 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 A.STGEOM.ST_UNION(B.STGEOM) CZECHOSLOWACJA from MYST_COUNTRY_BOUNDARIES A, MYST_COUNTRY_BOUNDARIES B where A.CNTRY_NAME = 'Czech Republic' and B.CNTRY_NAME = 'Slovakia'; Politechnika Pozna ska, Instytut Informatyki, KJ 87

Typ ST_GEOMETRY w Oracle 11g Wykorzystanie indeksów 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 operatorów SDO_NN, SDO_WITHIN_DISTANCE. Przy wykorzystaniu powy szych operatorów nie jest konieczna adna konwersja. Nale y zauwa y, e wykorzystywanie metod typu ST_GEOMETRY nie jest uzale nione od istnienia indeksów 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; SELECT STATEMENT, GOAL = ALL_ROWS 7 1 55 SORT GROUP BY NOSORT 7 1 55 NESTED LOOPS 7 1 55 TABLE ACCESS FULL SCOTT MYST_COUNTRY_BOUNDARIES 5 1 19 DOMAIN INDEX SCOTT MYST_MAJOR_CITIES_IDX Politechnika Pozna ska, Instytut Informatyki, KJ 88

Przestrzenny Schemat Informacyjny standardu SQL/MM w Oracle 11g Oracle nie wprowadził do słownika 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 słownikowe istniały ju wcze niej np. SDO_COORD_REF_SYS zawiera przestrzenne układy odniesienia SDO_UNITS_OF_MEASURE zawiera jednostki miar Innym powodem braku implementacji Schematu Informacyjnego mo e by fakt, e Oracle umo liwił wprowadzanie opisów 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, który mo e by wykorzystywany do przechowywania opisów 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 uzupełniaj ce Przestrzenne układy odniesienia Typy układów odniesienia Funkcje słu ce do transformacji układu odniesienia (Coordinate System Transformation Functions) Funkcjonalno LRS (Linear Referencing System) Wst p i definicje Model danych LRS Operacje LRS (Linear Referencing Functions) Przykład aplikacji Analiza i eksploracja danych przestrzennych Politechnika Pozna ska, Instytut Informatyki, KJ 90

Przestrzenne układy odniesienia Oracle w wersji 11g wspiera wiele ró nych układów odniesienia (2 i 3 wymiarowych): Kartezja skie Geodezyjne oparte na długo ci i szeroko ci geograficznej (istnieje wiele definicji układów odniesienia definiowanych dla poszczególnych obszarów ziemi) Rzutowane (tylko 2 wymiarowe) w których ka dy punkt jest rzutowany na płaszczyzn Lokalne definiowane np. dla systemów CAD Oracle 11g wspiera nie tylko definiowanie danych przestrzennych i ich przetwarzanie zgodnie z okre lonym układem odniesienia, ale tak e umo liwia transformacje obiektów pomi dzy ró nymi (geodezyjnymi) układami odniesienia. Lista dost pnych układów odniesienia jest dost pna przykładowo za pomoc poni szych perspektyw: SDO_COORD_REF_SYS wszystkie SDO_CRS_GEOGRAPHIC3D geodezyjne 3-wymiarowe Politechnika Pozna ska, Instytut Informatyki, KJ 91

Przestrzenne układy odniesienia analiza Wybór pomi dzy geodezyjnymi i rzutowanymi/kartezja skimi układami odniesienia powinien bra pod uwag dwa aspekty: Dokładno dla małych obszarów (np. mapa Legionowa) rzutowane układy odniesienia mog wprowadza pomijalne podczas przetwarzania niedokładno ci. Wydajno przetwarzanie uwzgl dniaj ce sferyczno powierzchni wymaga wi kszych zasobów obliczeniowych Istniej pewne ograniczenia przy korzystaniu z geodezyjnych układów odniesienia Nie zaleca si przechowywania zoptymalizowanych prostok tów (MBR). Mo liwe jest natomiast wykorzystanie geodezyjnych obiektów MBR podczas ograniczania wyników zapyta np. za pomoc operatora SDO_FILTER. Nie ma mo liwo ci wykorzystania obiektów przestrzennych zdefiniowanych za pomoc łuków Politechnika Pozna ska, Instytut Informatyki, KJ 92

Przestrzenne układy odniesienia transformacje Funkcje umo liwiaj ce transformacje oparte na układach odniesienia posiadaj bardzo bogat funkcjonalno. Mi dzy innymi umo liwiaj : Transformacje pojedynczych geometrii Transformacje całych warstw (czyli zawarto ci kolumn w tabeli) Konwersje pomi dzy 3 i 2 wymiarowymi układami select C.CITY_NAME, MCP.GEOM, SDO_CS.TRANSFORM(MCP.GEOM, M.DIMINFO, 2174) TRANS from MAJOR_CITIES C, USER_SDO_GEOM_METADATA M where C.CITY_NAME = 'Poznan' and M.TABLE_NAME = 'MAJOR_CITIES' and M.COLUMN_NAME = 'GEOM'; BEGIN SDO_CS.TRANSFORM_LAYER('MAJOR_CITIES','GEOM','MAJOR_CITIES_2174',2174); END; GEOM = SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(16.8869994, 52.3960002, NULL), NULL, NULL) TRANS = SDO_GEOMETRY(2001, 2174, SDO_POINT_TYPE(3717742.99, 5707733.29, NULL), NULL, NULL) Pulkovo 1942(58) / Poland zone IV select CITY_NAME, rowid from MAJOR_CITIES where CITY_NAME in ('Poznan', 'Warsaw') CITY_NAME ROWID --------- ------------------ Poznan AAARdUAAGAAAB1VAAg Warsaw AAARdUAAGAAAB1VAAi select ROUND(SDO_GEOM.SDO_DISTANCE(P.GEOMETRY, W.GEOMETRY, 1, 'unit=km')) ODL from MAJOR_CITIES_2174 P, MAJOR_CITIES_2174 W WHERE P.SDO_ROWID = 'AAARdUAAGAAAB1VAAg' AND W.SDO_ROWID = 'AAARdUAAGAAAB1VAAi' ODL ------ 282 Politechnika Pozna ska, Instytut Informatyki, KJ 93

Badany zbiór: 32047 wierszy Układ odniesienia: SRID COORD_REF_SYS_NAME COORD_REF_SYS_KIND 217430 100 Pulkovo 1942(58) / Poland zone IV PROJECTED czas (sek.) 25 20 15 1 10 10 0,1 5 0 0,01 200 400 600 800 1000 1200 1400 1600 1800 2000 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 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 punktów w obszarze from A_OBIEKTY_ODL LICZBA_PKT OBSZAR SDO_FILTER IDX SDO_FILTER TAB SDO_NN SDO_WITHIN_DISTANCE where SDO_FILTER(ODL_KSZTALT,r_obsz.OBSZAR,'querytype=WINDOW') 200 0,104375 0,0664375 0,0879375 5,1445 = 'TRUE'; 0,329125 400 0,4071875 0,0693125 0,094 5,386625 0,5829375 select count(*) 600 1,0440625 0,072375 0,0985625 5,7324375 0,914 from A_OBIEKTY_ODL 800 2,1591875 0,073375 0,1035 5,9188125 1,1904375 3,85375 0,085 0,1025 6,0253125 1,491125 where SDO_NN(ODL_KSZTALT,r_obsz.OBSZAR,'sdo_num_res=1000',1) = 'TRUE'; 1200 6,3418125 0,0801875 0,103375 5,964 1,8445625 select count(*) 1400 9,5331875 0,0771875 0,1043125 5,9825 2,1855625 1600 13,761 0,104375 0,10825 6,128 2,6034375 from A_OBIEKTY_ODL 1800 19,05175 0,0790625 0,1081875 6,1895625 2,9728125 where SDO_WITHIN_DISTANCE(ODL_KSZTALT,r_obsz.OBSZAR,'distance=500 2000 26,411125 0,0820625 0,110625 6,33275unit=m') = 'TRUE'; 3,401375 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, długo i inne cechy przestrzenne s nie wystarczaj ce. W takich przypadkach z danymi przestrzennymi dodatkowo wi zane s ró nego rodzaju miary, które 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 kształtu punkty za pomoc, których segment LRS jest zdefiniowany. Punkty kształtu definiuj kierunek (poło enie) segmentu LRS. W przypadku istotnych dla aplikacji punktów (zawór, 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 odległo pomi dzy punktem pocz tkowym lub ko cowym segmentu LRS. Offset jest odległo ci pomi dzy dowolnym punktem, a segmentem LRS. Ujemna warto oznacza, e punkt le y po prawej stronie segmentu. Wypełnianie miar wszystkie nieprzypisane miary s automatycznie wypełniane na podstawie odległo ci od punktów 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, które 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) (X,Y,null) Miary (X,Y,0) start Offset (ujemny) (X,Y,80) (X,Y,95) (X,Y,120) koniec Punkty kształtu Zakres miar segmentu (0-120) - Punkty w których zdefiniowano miary czyli tzw. punkty LRS - Punkty bez miar (miara zostanie okre lona w trakcie działania 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 współrz dna (13,6,null) (22,6,40) (31,6,null) (0,0,0) (27,6,null) (35,4,null) (40,2,80) (46,2,95) (53,2,120) 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 segmentów LRS jest SDO_LRS Funkcjonalno dost pnych za jego pomoc operacji jest bardzo bogata i obejmuje: Definiowanie segmentów LRS okre lanie warto ci miar. Redefiniowanie segmentów LRS zmian warto ci miar. Wycinanie fragmentów segmentów LRS. Dzielenie segmentów LRS. Ł czenie segmentów LRS. Skalowanie segmentów LRS. Przemieszczanie segmentów LRS. Znajdywanie pozycji punktów opisanych miar lub offsetem. Projekcje punktu na segment LRS. Konwersje segmentów LRS obejmuj ce pojedyncze punkty, linie, warstwy, metadane. Politechnika Pozna ska, Instytut Informatyki, KJ 99

LRS (Linear Referencing System) przykład aplikacji: A6 Gdynia Goleniów (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) przykład aplikacji: A6 Gdynia Goleniów (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); -- zakładamy indeks przestrzenny CREATE INDEX lrs_routes_idx ON lrs_routes(route_geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX; -- Testujemy własno 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 = FALSE LENGTH = 276681.315 START_MEASURE = 0 END_PT = 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) przykład aplikacji: A6 Gdynia Goleniów (3/3) --Wypadek 100 kilometrów 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 Słupska? 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 metrów na lewo od A6 by poło ona nowa linia telefoniczna a dokładnie? 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 Michała Reja (studenta PP) michal.rej@gmail.com SDO_GEOMETRY XSQL Server Pages XML XSL Transformation SVG XSQL Page XSL Politechnika Pozna ska, Instytut Informatyki, KJ 103