Dane przestrzenne w bazach relacyjnych. Wykorzystanie danych przestrzennych, systemy zarzdzania danymi przestrzennymi



Podobne dokumenty
GIS. Grzegorz Chilkiewicz

Przestrzenne bazy danych. Definicja i cechy przestrzennych baz danych

Dane przestrzenne Ćwiczenia laboratoryjne (6)

Ćwiczenie 2. Opcja przestrzenna bazy danych

Przestrzenne bazy danych. Wstęp do przestrzennych baz danych

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

Jak stworzyć Geoportal

Przegldanie stron wymaga odpowiedniej mikroprzegldarki w urzdzeniu mobilnym lub stosownego emulatora.

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Wolne oprogramowanie w zakresie tworzenia i publikacji metadanych

Terminologia baz danych

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

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

ERDAS ADE Suite edytor baz danych Oracle Spatial

Program do konwersji obrazu na cig zero-jedynkowy

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

Zadania do wykonaj przed przyst!pieniem do pracy:

Wiesław Serewi Anna Owczarek Piotr Pachół WODGiK Katowice

PHP: bazy danych, SQL, AJAX i JSON

Dane przestrzenne w relacyjnych bazach danych

Programowanie w Ruby

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

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

DANE PRZESTRZENNE W BAZACH DANYCH SYSTEMU MICROSOFT SQL SERVER 2008 R2 WPROWADZENIE

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Funkcjonalność systemów zarządzania bazami danych przestrzennych w kartografii internetowej (PosrtgreSQL/PostGIS) Krzysztof Kuśnierek

Jolanta Łukowska Małgorzata Pakowska Stanisław Stanek Mariusz ytniewski

Instrukcja obsługi dodatku InsERT GT Smart Documents

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Database Connectivity

GML w praktyce geodezyjnej

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

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

Typy bazy danych Textract

Multimedialne bazy danych. Andrzej Łachwa, WFAiIS UJ 2011

Struktura drzewa w MySQL. Michał Tyszczenko

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Mozilla Firefox PL. Wykorzystanie certyfikatów niekwalifikowanych w oprogramowaniu Mozilla Firefox PL. wersja 1.1

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Język SQL, zajęcia nr 1

System midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver Aplikacja WWW ver. 2.1 Instrukcja Obsługi

Wybrane problemy z dziedziny modelowania i wdrażania baz danych przestrzennych w aspekcie dydaktyki. Artur Krawczyk AGH Akademia Górniczo Hutnicza

Planowanie adresacji IP dla przedsibiorstwa.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Shapefile, GeoPackage czy PostGIS. Marta Woławczyk (QGIS Polska)

Wykład 5: PHP: praca z bazą danych MySQL

Bazy Danych i Usługi Sieciowe

Przestrzenne bazy danych. Funkcje geometryczne

WPROWADZENIE DO BAZ DANYCH

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykład 1: Wprowadzenie do baz danych. Semestr 1

KONCEPCJA WYKORZYSTANIA TECHNOLOGII APPLET- JAVA W TWORZENIU

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

%$-,./+,-.0! Nazwy programów, polece, katalogów, wyniki działania wydawanych polece.

Projektowanie systemów baz danych

Konfiguracja modułu alarmowania w oprogramowaniu InTouch 7.11

Multimedialne bazy danych - laboratorium

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Poradnik korzystania z serwisu UNET: Konfiguracja programu pocztowego

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Tworzenie raportów XML Publisher przy użyciu Data Templates

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Wizualizacja danych przestrzennych i map geograficznych w aplikacjach Oracle ADF

Oracle Spatial Option

Bazy danych. Polecenia SQL

PomysL... i co dalej?

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Wojciech Drzewiecki SYSTEMY INFORMACJI GEOGRAFICZNEJ

Bazy danych i usługi sieciowe

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Oracle PL/SQL. Paweł Rajba.

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Ekspert MS SQL Server Oferta nr 00/08

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Bazy danych Podstawy teoretyczne

Bazy danych - wykład wstępny

Pojęcie systemu baz danych

Oracle Reports budowa raportów internetowych!"##$%%& '( ) *

Uywanie licencji typu On-Demand. Using an On-Demand License Japanese. Language. Contents

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel

Zarządzanie danymi przestrzennymi. Analizy przestrzenne

Wprowadzenie do kompilatorów

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Propozycja standaryzacji usługi lokalizacji adresu

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Uruchamianie bazy PostgreSQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Baza danych do przechowywania użytkowników

Aplikacje Internetowe, Servlety, JSP i JDBC

Wykład I. Wprowadzenie do baz danych

Transkrypt:

Jarosław GRAMACKI, Artur GRAMACKI UNIWERSYTET ZIELONOGÓRSKI, INSTYTUT INFORMATYKI I ELEKTRONIKI Dane przestrzenne w bazach relacyjnych. Wykorzystanie danych przestrzennych, systemy zarzdzania danymi przestrzennymi dr in. Jarosław GRAMACKI Pracuje w Instytucie Informatyki i Elektroniki Uniwersytetu Zielonogórskiego na stanowisku adiunkta. Jego zainteresowania koncentruj si wokół zagadnie zwizanych z bazami danych, hurtowniami danych oraz kopalniami danych. Pracuje głownie w rodowisku bazy Oracle, jednak z du sympati odnosi si do baz danych zwizanych z ruchem Open Source. Swoje dowiadczenie stara si wykorzystywa zarówno w pracy dydaktycznej, jaki i aktywnie uczestniczc w rónych projektach bazodanowych. e-mail: j.gramacki@iie.uz.zgora.pl Streszczenie W artykule przedstawiono wybrane zagadnienia dotyczce pracy z tzw. mapami cyfrowymi (ang. Digital Maps). Pokazano podstawow funkcjonalno wybranych narzdzi dedykowanych do zarzdzania danymi przestrzennymi. Pokazane rozwizania korzystaj z przestrzennych rozszerze bazy danych dostpnych w systemie komercyjnym Oracle oraz typu Open Source MySQL. Zasady gromadzenia w bazach relacyjnych danych przestrzennych oraz korzystania z nich pokazano w pierwszej czci pracy Dane przestrzenne w bazach relacyjnych. Model danych, zapytania przestrzenne Abstrakt In the paper some selected aspects of working with digital maps are presented. A basic functionality of systems dedicated to management of spatial data is shown. Those systems use spatial extensions of commercially available Oracle database as well as the Open Source MySQL environment. Some background information on spatial data in relational databases is presented in the first part of the work: Spatial Data in Relational Databases. Data Model and Spatial Queries Słowa kluczowe: mapy cyfrowe, dane przestrzenne w bazach relacyjnych, bazy relacyjne, systemy klasy GIS, Oracle Spatial Keywords: digital maps, spatial data in relational databases, relational databases, GIS systems, Oracle Spatial dr in. Artur GRAMACKI Pracuje w Instytucie Informatyki i Elektroniki Uniwersytetu Zielonogórskiego na stanowisku adiunkta. Interesuje si zagadnieniami zwizanych z bazami danych, w szczególnoci firmy Oracle ale te rozwizaniami Open Source. Oprócz prowadzenia zaj dydaktycznych stara si wykorzystywa swoj wiedz uczestniczc w rónych projektach informatycznych z tego zakresu. Brał udział w czterech projektach, których celem było przygotowanie systemów wspomagajcych działalno UZ. e-mail: a.gramacki@iie.uz.zgora.pl Na rysunkach poniej pokazano dla ilustracji całe spektrum zgromadzonych danych w rónych ujciach. Dla wygody wycignite z bazy dane zapisano jako pliki graficzne w formacie SVG (ang. Scalable Vector Graphics) [3]. Format SVG umoliwia zakodowanie w tekstowym pliku XML dowolnych danych, w tym rysunków, zdj, szkiców itp. Na rysunku 1 pokazano zapisan w systemie map Polski z zaznaczonymi: obrysami województw, głównymi rzekami, miastami wojewódzkimi, punktami cikoci województw, MBR-ami województw (ang. minimum bounding rectangle; patrz pierwsza cz pracy). Kresk pogrubion zaznaczono: rzek Odr, MBR województwa lubuskiego, obrys województwa mazowieckiego, lokalizacj Warszawy (kwadracik na rzece Wile), punkt cikoci województwa mazowieckiego (drugi kwadracik). Pozostałe obiekty, aby nie zaciemnia rysunku, s zaznaczone duo cieszymi kreskami i małymi punktami. 1. Wstp Sposoby gromadzenia w bazach relacyjnych danych przestrzennych pokazano w pierwszej czci pracy Dane przestrzenne w bazach relacyjnych. Model danych, zapytania przestrzenne. Moduł Spatial tam opisany udostpnia zaawansowane narzdzia programistyczne, które dopiero właciwie wykorzystane tworz uyteczn z punktu widzenia uytkownika aplikacj przestrzenn (GIS-ow). Narzdzia te s w swej istocie jedynie zbiorem specjalistycznych funkcji, operatorów, agregatów. S tak zaprojektowane, aby zawsze moliwe było ich,,osadzenie w typowym zapytaniu SQL. Kocowy uytkownik aplikacji GIS-owej wymaga jednak wygodnego interfejsu graficznego, który jest jedynie form nakładki na bardzo rozbudowan funkcjonalno modułu Spatial. W tej czci pracy pokazano przykłady takich systemów. 2. Obiekty przestrzenne W dalszej czci pracy pokazano przykłady tworzenia obiektów przestrzennych oraz manipulowania nimi [4]. Zdefiniowano je w trzech tabelach: opisujcych miasta (obiekty typu point), rzeki (obiekty typu line string), województwa (obiekty typu n-point polygons). Z uwagi na du ilo danych, w poniszych zapytaniach SQL przedstawiono jedynie niewielki fragment danych. Rys. 1. Przykładowe dane przestrzenne Fig. 1. Sample spatial data Zgromadzone dane mona oczywicie prezentowa i wybiera w dowolnych porcjach. Na rysunku 2 pokazano dwa przykładowe

zestawy danych. Na rysunku z lewej strony pokazane s: obrys oraz MBR województwa lubuskiego, lokalizacj Zielonej Góry oraz punkt cikoci województwa. Na rysunku z prawej strony kresk pogrubion pokazano rzek Odr oraz obrys województwa lubuskiego a kresk cienk dwa województwa ocienne oraz rzek Wart. mdsys.sdo_geometry(2001, NULL, NULL, mdsys.sdo_elem_info_array(1, 1, 1), mdsys.sdo_ordinate_array(18,97, 63,33)) W kolejnym kroku aktualizujemy widok USER_SDO_GEOM_METADATA zawierajcy potrzebne metadane. Jest to wymagane przed zbudowaniem indeksów przestrzennych. Obiekty składowane bd w kwadracie o umownym rozmiarze 135 x 125. Korzystamy wic z własnej koordynaty typu kartezjaskiego: INSERT INTO user_sdo_geom_metadata VALUES ( 'so_wojewodztwa', -- [analogicznie dla so_miejscowosci, so_rzeki] 'wo_ksztalt', mdsys.sdo_dim_array( mdsys.sdo_dim_element('x', 0, 135, 0.01), mdsys.sdo_dim_element('y', 0, 125, 0.01) ), NULL -- srid = NULL, własna koordynata Nastpnie tworzymy indeks przestrzenny dla kadego typu obiekt przestrzennego: Rys. 2. Moliwoci selektywnego pobierania obiektów przestrzennych Fig. 2. A subset of objects taken from a whole set 3. Przykłady obiektów przestrzennych, ich indeksowanie oraz zapytania przestrzenne Poniej pokazano przykłady tworzenia obiektów przestrzennych oraz manipulowania nimi [4]. Przy duej iloci danych, symbol... (trzy kropki) oznacza, e pominito ich du cz (koordynaty przestrzenne poszczególnych punktów danej geometrii). Czasami jest ich bardzo duo, gdy kształty obiektów s skomplikowane. Przykładowo aby poda wszystkie współrzdne poligonu opisujcego województwo mazowieckie naley uy ok. 40 punktów. Szczegóły dotyczce wykorzystywanych typów przestrzennych pokazano w pierwszej czci pracy Dane przestrzenne w bazach relacyjnych. Model danych, zapytania przestrzenne. W pierwszej kolejnoci tworzymy tabele z kolumnami typu SDO_GEOMETRY. Opisuj one obiekt przestrzenne typu poligon, odcinek łamany oraz punkt: CREATE TABLE so_wojewodztwa ( wo_id NUMBER(3) NOT NULL, wo_nazwa VARCHAR2(100), wo_ksztalt sdo_geometry CREATE TABLE so_rzeki ( rz_id NUMBER(5) NOT NULL, rz_nazwa VARCHAR2(100), rz_ksztalt sdo_geometry CREATE TABLE so_miejscowosci ( mi_id NUMBER(5) NOT NULL, mi_nazwa VARCHAR2(100), mi_ksztalt sdo_geometry Nastpnie wprowadzamy do nich dane opisujce (m.in.) topografie obiektów przestrzennych: -- 1-szy NULL, koordynata własna INSERT INTO so_wojewodztwa VALUES ( 6, 'lubuskie', mdsys.sdo_geometry(2003, NULL, NULL, mdsys.sdo_elem_info_array(1, 1003, 1), mdsys.sdo_ordinate_array(31,83,...,60,28)) INSERT INTO so_rzeki VALUES ( 4,'odra', mdsys.sdo_geometry(2003, NULL, NULL, mdsys.sdo_elem_info_array(1, 2, 1), mdsys.sdo_ordinate_array(44,3,13,5,...,6,1, 107,02)) INSERT INTO so_miejscowosci VALUES ( 10, 'Zielona Góra', CREATE INDEX rz_rtree ON so_rzeki -- [analogicznie dla so_miejscowosci, -- so_wojewodztwa] (rz_ksztalt) INDEXTYPE IS mdsys.spatial_index; Wszystkie obiekty s ju utworzone. Dalej podano przykłady zapyta przestrzennych operujcych na utworzonych w poprzednich krokach danych. Powierzchnie województw. Uyto funkcji z pakietu SDO_GEOM: wo_nazwa, sdo_geom.sdo_area(wo_ksztalt, 1) powierzchnia so_wojewodztwa powierchnia DESC; WO_NAZWA POWIERZCHNIA -------------------- ------------- mazowieckie 1318,2897 wielkopolskie 1106,73465 warmisko-mazurskie 920,96865... opolskie 335,99505 Długoci rzek. Uyto funkcji z pakietu SDO_GEOM: rz_nazwa, sdo_geom.sdo_length(rz_ksztalt, 1) dlugosc so_rzeki dlugosc DESC; RZ_NAZWA DLUGOSC --------------- ---------- Wisła 168,828583 Odra 137,903376 Warta 118,520614 Bug 76,0605546 Nysa Łuycka 31,7182609 Odległo od Szczecina do Warszawy: A.mi_nazwa, sdo_geom.sdo_distance(a.mi_ksztalt,b.mi_ksztalt,0.05) dystans so_miejscowosci A, so_miejscowosci B A.mi_nazwa = 'Szczecin' AND B.mi_nazwa = 'Warszawa'; MI_NAZWA DISTANS ----------- ---------- Szczecin 86,8493926 Topologiczna suma dwóch obszarów wyliczona z topografii obiektów przestrzennych: sdo_geom.sdo_union(a.wo_ksztalt, B.wo_ksztalt,0.05) suma so_wojewodztwa A, so_wojewodztwa B

A.wo_nazwa = 'lubuskie' AND B.wo_nazwa = 'wielkopolskie'; -- Wynik w postaci opisu SDO_GEOMETRY suma (sdo_gtype, sdo_srid, sdo_point(x, y, z), sdo_elem_info, sdo_ordinates) sdo_geometry(2003, NULL, NULL, sdo_elem_info_array(1, 1003, 1), sdo_ordinate_array(31,83,...[58 par]...60,28)) Odnajdujemy miasta w promieniu 10 (dla przykładowych danych jednostki s nieokrelone) od rzeki Odry: /*+ ORDERED */ MI.mi_nazwa so_miejscowosci MI, so_rzeki RZ RZ.rz_nazwa = 'Odra' AND sdo_within_distance(mi.mi_ksztalt, RZ.rz_ksztalt,'distance = 10') = 'TRUE'; MI_NAZWA ----------------- Opole Wrocław Zielona Góra Szczecin Odległoci miast od rzeki Odra. Uyto operatora SDO_NN: MI.mi_nazwa,sdo_nn_distance(1) odleglosc so_miejscowosci MI, so_rzeki RZ RZ.rz_nazwa = 'Odra' AND sdo_nn(mi.mi_ksztalt, RZ.rz_ksztalt,'SDO_NUM_RES=5',1) = 'TRUE' odleglosc; MI_NAZWA ODLEGLOSC ------------- ----------- Wrocław 0 Szczecin 0,144829628 Opole 0,978158505 Zielona Góra 1,46493526 Gorzów Wlkp. 10,3627795 Odległoci miast od rodka Polski wg. przyjtego układu współrzdnych. mi_nazwa, sdo_nn_distance(1) odleglosc so_miejscowosci sdo_nn(mi_ksztalt, mdsys.sdo_geometry(2001, NULL, NULL, mdsys.sdo_elem_info_array(1,1,1), mdsys.sdo_ordinate_array(135 / 2,125 / 2)), 'SDO_NUM_RES=10',1) = 'TRUE'; MI_NAZWA ODLEGLOSC -------------- ---------- Katowice 36,4644539 Opole 31,6962711 Łód 4,84802021... Bydgoszcz 29,5155315 W obiektowym typie SDO_GEOMETRY zdefiniowano wiele metod udostpniajcych informacje o danej geometrii. Uyjemy jednej do wyliczenia opisu rzeki Odra w formacie przestrzennym: C.rz_ksztalt.get_wkt() opis so_rzeki C C.rz_nazwa = 'odra'; OPIS --------------------------------------------- LINESTRING (44,03, 13,55,..., 6,1, 107,02) 4. Zaawansowane narzdzia Oprócz niskopoziomowego dostpu do danych z uyciem pokazanych wczeniej funkcji przestrzennych API, operatorów przestrzennych, itp. dostpne s gotowe narzdzia, które ukrywaj przed uytkownikiem szczegóły korzystania z rozbudowanego interfejsu programistycznego. Nale do nich udostpniane przez Oracle takie narzdzia jak MapViewer czy Oracle Network Data Model Editor [5]. Oczywicie zakłada si, e dane przestrzenne, które ogldamy z ich uyciem ju znajduj si w bazie. Umieszczenie ich tam wymaga sporej wiedzy z dziedziny kartografii oraz bardzo dobrej znajomoci modułu Oracle Spatial. MapViewer, cechy charakterystyczne Aplikacja od strony uytkownika działa w rodowisku przegldarki WWW. W warstwie rodkowej (aplikacyjnej) uywamy albo serwera aplikacyjnego Oracle Application Server, bd te wersji standalone kontenera J2EE [6] (Oracle Application Server Containers for J2EE - OC4J). Wersja standalone wykorzystywana bywa głównie do tworzenia oraz do testowania aplikacji. Wersja z serwerem aplikacyjnym uywana jest w rodowisku produkcyjnym, gdy zapewnia, w porównaniu do wersji standalone, duo wiksz wydajno i skalowalno. Funkcjonalnie obie wersje s identyczne. Jednak proces udostpniania (ang. deploy) aplikacji w rodowisku produkcyjnym jest duo bardziej złoony. Wiele czynnoci mona jednak wykona posługujc si funkcjonalnym i intuicyjnym interfejsem graficznym (korzystajc z pakietu Enterprise Manager). W przypadku kontenera standalone wszelkie czynnoci konfiguracyjne i administracyjne musimy wykonywa uywajc jedynie prostej konsoli tekstowej. Trzeci warstw tworzy baza Oracle z rozszerzeniem Spatial (lub Locator). Do wytworzenia uytecznej aplikacji przestrzennej korzysta si ze zbioru funkcji API zbudowanego w technologii JavaBeans. Funkcje te zapewniaj komunikacj z właciwym serwisem działajcym w warstwie rodkowej (MapViewer Service). Komunikacja odbywa si na zasadzie wysyłania komunikatów w formacie XML. Moliwa jest te komunikacja ze wspomnianym serwisem z uyciem biblioteki znaczników JSP (JSP Tag Library) z poziomu stron HTML. Dostarczane przez system znaczniki udostpniaj jednak jedynie podzbiór funkcjonalnoci całego rodowiska. Moliwe sposoby bodowy aplikacji przestrzennej w rodowisku MapViewer to: aplikacje Java, aplety Java, aplikacje JSP, servlety Java w zewntrznym (w stosunku do MapViewer Service) rodowisku J2EE. Wydaje si jednak, e takie rozwizanie jak MapViewer, bdce de facto aplikacj uruchamian z poziomu przegldarki WWW, nie jest jeszcze na tyle technologicznie zaawansowane, aby mogło konkurowa z bardziej tradycyjnymi narzdziami obsługujcymi mapy cyfrowe. Zdaniem autorów spowodowane jest to jeszcze pewn niedojrzałoci technologii budowy aplikacji internetowych do bardzo wymagajcych zastosowa GIS-owych. Na rysunku 3 pokazano przykład aplikacji zbudowanej z wykorzystaniem omawianego tu narzdzia. Z uwagi na ograniczon objto artykułu, rysunek sztucznie zmodyfikowano. Z całego okna przegldarki WWW wycito tylko niewielki fragment mapy. Wklejono na nim adres interenetowy z paska adresowego oraz pewne elementy nawigacyjne (przyciski wyboru), które w rzeczywistoci wystpuj poza obszarem mapy. Oracle Network Data Model Editor, cechy charakterystyczne Jest to aplikacja Java. Operuje ona na danych, które tworz tzw. sieciowy model przestrzenny (ang. Spatial Topology and Network Data Models). Model ten jest rozszerzeniem podstawowej funkcjonalnoci modułu Spatial. W czci Topology dotyczy moliwo- ci przechowywania struktury połcze elementów. W czci Network dotyczy moliwoci przechowywania takich dodatkowych informacji, jak na przykład kierunek połczenia, koszt połczenia, koszt punktu, itp.

Rys. 3. Przykład aplikacji zbudowanej w rodowisku MapViewer Fig. 3. Example of an aplication based on MapViewer core environment Na przykładzie (patrz rysunek 4) pokazano fragment hipotetycznej sieci dróg. Jest to niewielki fragment sieci liczcej 10505 dróg (liczc za drog kade połczenie pomidzy dwoma punktami. W dokumentacji uywana jest nazwa link). Obliczono najkrótsz drog od punku 494 do punktu 894. Z uwagi na zamknit drog pomidzy punktami 660 a 726, wyliczony przebieg nie jest najkrótszym w sensie topograficznym. W tego typu zadaniach mona równie korzysta ze zdefiniowanego kosztu danego połczenia (atrybut link cost), celem zmiany kryterium wyszukiwania. Podobnie mona uwzgldnia lub nie jedno/dwu kierunkowo połczenia (atrybut link direction). Podobnie jak w przypadku podstawowej funkcjonalnoci modułu Spatial, tak i tu całoci dopełniaj struktury przechowujce tzw. metadane. S to odpowiednio dla czci topologicznej i sieciowej widoki xxx_sdo_topo_info, xxx_sdo_topo_metadata oraz xxx_sdo_network_metadata w schemacie MDSYS sterujcym modułem Spatial. S to bardzo rozbudowane widoki składajce si z kilkudziesiciu kolumn. Do budowy takiej aplikacji jak pokazano na rysunku 4 korzysta mona z API opartego o PL/SQL lub opartego o jzyk Java. Oba rodzaje API oferuj t sam funkcjonalno i umoliwiaj tworzenie sieci topologicznej (w PL/SQL s to pakiety SDO_NET oraz SDO_NET_MEM a w Javie elementy pakietu oracle.spatial.network.*). Ponadto udostpnia si w nich narzdzia do przeprowadzania analiz sieci (jak na przykład pokazanego wyej szukania najkrótszej drogi). W interfejsie PL/SQL jest to pakiet SDO_NET_MEM.NETWORK_MANAGER. Aplikacja pokazana na rysunki 4 powstała z wykorzystanie API Java. Przykładowo do wyliczenia wspominanej najkrótszej drogi słu- funkcje SHORTEST_PATH_DIJKSTRA lub SHORTEST_PATH. (róni si zaimplementowanym algorytmem) path_id := SDO_NET_MEM.NETWORK_MANAGER.SHORTEST_PATH( Network_name, 494,894 DBMS_OUTPUT.PUT_LINE('Najkrótsza droga z wzła 494 do wzła 894 opisana numerem drogi: ' path_id -- Wynik otrzymujemy w postaci numeru wyznaczonej cieki -- (ang. path) -- Wynik zostaje równie zarejestrowany w odpowiedniej -- tabeli do Ew. dalszego wykorzystania W dalszej czci jest oczywicie moliwe (poprzez uycie stosownych funkcji pakietu) pobranie na przykład numerów odwiedzanych wzłów, ich danych i w konsekwencji wyrysowanie wyliczonej najkrótszej drogi. Przykładowo funkcja SDO_NET_MEM.PATH.GET_LINK_IDS ma za zadanie wyrysowanie obliczonej drogi: res_array := SDO_NET_MEM.PATH.GET_LINK_IDS(Network_name, path_id DBMS_OUTPUT.PUT_LINE( 'Droga ' path_id ' ma nastpujcy przebieg: ' FOR indx IN res_array.first..res_array.last LOOP DBMS_OUTPUT.PUT(res_array(indx) ' ' END LOOP;... Droga 21 ma nastpujcy przebieg: 494 577 719... 894 W interfejsie Java skorzystamy z klasy oracle.spatial.network.networkmanager. Znajdziemy tam metod shortestpath, która jest funkcjonalnym odpowiednikiem funkcji z pakietu PL/SQL. Dla ilustracji pokazujemy tu jedynie jej prototyp. public static Path shortestpath( Network network, int startnodeid, int goalnodeid) Rys. 4. Przykład aplikacji wykorzystujcej aspekt sieciowy obiektów przestrzennych Fig. 4. Example of an aplication based on the Network Model of spatial data Topografia sieci (kolumna typu SDO_GEOMETRY) przechowywana jest w jednej tabeli wraz z informacjami topologicznymi [1]. Poni- ej pokazano struktur tabeli opisujcej połczenia. CREATE TABLE NETWORK_LINK ( LINK_ID NUMBER, LINK_NAME VARCHAR2(200), START_NODE_ID NUMBER NOT NULL, END_NODE_ID NUMBER NOT NULL, LINK_TYPE VARCHAR2(200), ACTIVE VARCHAR2(1), LINK_LEVEL NUMBER, GEOMETRY SDO_GEOMETRY, COST NUMBER) gdzie Path i Network s stosownymi interfejsami Java. Tworzenie rozbudowanych sieci, z uwagi na złoone informacje topograficzne, w praktyce odbywa si poprzez mniej lub bardzie automatyczne (wsadowe) wprowadzanie danych z zewntrznych systemów udostpniajcych współrzdne geodezyjne danych obiektów. Nadmiemy, e równie popularny system GPS moe by ródłem takich danych. 5. MySQL Równie w systemach bazodanowych typu Open Source stosowane s rozszerzenia przestrzenne. Przykładowo w bazie MySQL [2], poczwszy od wersji 4.1 wprowadzone zostały mechanizmy pozwalajce na generowanie, zapisywanie, i analiz danych geo-

graficznych zgodne ze specyfikacj Open GIS Consortium (OGC) [7] w czci opisanej jako SQL with Geometry Types. Zdefiniowano tam hierarchi klas geometrycznych stosownych do opisu takich obiektów przestrzennych. Klas bazow jest klasa Geometry. W swej istocie klasy te s funkcjonalnym odpowiednikiem typu SDO_GEOMETRY stosowanego w module Spatial (porównaj pierwsza cz artykułu). Naley jednak nadmieni, e w chwili obecnej MySQL dostarcza jedynie funkcji do rejestrowania obiektów przestrzennych w bazie oraz kilku funkcji do elementarnych oblicze przestrzennych. Brak jest natomiast wsparcia dla przeprowadzania rónego rodzaju zaawansowanych analiz przestrzennych (np. wyszukiwanie najkrótszego połczenia). Technologicznie jest to wic oferta zdecydowanie mniej zaawansowana ni oferowana przez firm Oracle w postaci modułu Spatial. Poniej pokazano podstawowe operacje wykonywane na obiektach przestrzennych. Na rysunku 5 pokazano przykładowe 3 takie obiekty (jeden z nich jest pusty w rodku ). 14 AsText(gcol) geom; AsText(gcol) POINT(1 1) LINESTRING(0 0,1 1,2 2) POLYGON((0 0,10 0,12 7,11 11,7 13,0 10,0 0),(5 5,7 5,7 7,5 7,5 5)) POLYGON((9 0,15 0,15 7,9 7,9 0),(9 0,15 0,15 7,9 7,9 0)) -- Opis obiektu w formacie WKB (Well-Known Binary) AsBinary(gcol) geom; -- minimalny prostokt otaczajcy MBR AsText(Envelope(@poly1)) AS mbr; mbr POLYGON((0 0,12 0,12 13,0 13,0 0)) -- długo obiektu LineString GLength(GeomFromText( LINESTRING(0 0, 1 1, 2 4) )) AS dlugosc; dlugosc 5.6568542494924 12 10 8 6 4 poligon 1 -- powierzchnia poligonu Area(@poly2) AS obszar; obszar 42 Area(@poly1) AS obszar; obszar 126.5 2 linia łamana Rys. 5 Przykładowe obiektów przestrzennych uywane w przykładach Fig. 5. Spatial objects used in examples CREATE TABLE geom ( id INT PRIMARY KEY, gcol GEOMETRY NOT NULL SET @poly1 = GeomFromText('POLYGON ( (0 0, 10 0, 12 7, 11 11, 7 13, 0 10, 0 0), (5 5, 7 5, 7 7, 5 7, 5 5))' SET @poly2 = GeomFromText('POLYGON ( (9 0, 15 0, 15 7, 9 7, 9 0), (0 0, 0 0, 0 0, 0 0, 0 0))' poligon 2 0 2 4 6 8 10 12 14 16 SET @line = GeomFromText('LINESTRING(0 0, 1 1, 2 4)' INSERT INTO geom VALUES (1, GeomFromText('POINT(1 1)') INSERT INTO geom VALUES (2, @line INSERT INTO geom VALUES (3, @poly1 INSERT INTO geom VALUES ( 4, GeomFromText('POLYGON ((9 0, 15 0, 15 7, 9 7, 9 0), (0 0, 0 0, 0 0, 0 0, 0 0))') -- indeksy przestrzenne. Podobnie ja w Oracle Spatial -- uywa si R-drzew z podziałem na MBR CREATE SPATIAL INDEX sp_idx ON geom (gcol Na zarejestrowanych obiektach przestrzennych mona nastpnie wykonywa proste analizy przestrzenne. MySQL zawiera pewien zbiór funkcji do tego przeznaczonych (niezbyt na razie bogaty). Nale one do czterech grup: funkcje konwersji formatów geometrycznych, funkcje pobierajce właciwoci zarejestrowanych geometrii, funkcje opisujce relacje pomidzy geometriami, funkcje tworzce nowe geometrie na podstawie ju istniejcych. --relacje przestrzenne Intersects(@poly1, @poly2) AS 'Czy przecina?'; Czy przecina? 1 6. Podsumowanie W artykule zaprezentowano podstawowe cechy wybranych narzdzi obsługujcych dane przestrzenne przechowywane bezpo- rednio w relacyjnych bazach danych. Pokazano to na przykładzie rozwiza współpracujcych z baz danych Oracle oraz MySQL. Jak na razie rozwizania oferowane przez firm Oracle s bardziej zaawansowane ni te, które moemy spotka w MySQL. Wszystko jednak wskazuje na to, e dystans midzy obu rozwizaniami bdzie si zmniejszał. 7. Literatura [1] Oracle Spatial, Oracle Locator, Extensions for Oracle Database, http://www.oracle.com/technology/roducts/spatial/ [2] MySQL, MySQL 5.1 Reference Manual, Chapter 18, Spatial Extensions in MySQL, http://dev.mysql.com/doc/refman/5.1/en/index.html [3] XML Graphics for the Web, Scalable Vector Graphics, http://www.w3.org/tr/svg/ [4] Na podstawie danych przestrzennych przygotowanych przez Krzysztofa Jankiewicza z Politechniki Poznaskiej, http://www.cs.put.poznan.pl/kjankiewicz/ [5] Narzdzia dostpne z technologicznego portalu firmy Oracle http://otn.oracle.com/ [6] Oracle Containers for J2EE (OC4J), http://www.oracle.com/technology/tech/java/oc4j/index.html [7] Open Geospatial Consortium, Inc. (OGC), http://www.opengeospatial.org/ Title: Spatial data in relational databases. Spatial Data Management Systems Artykuł recenzowany -- Opis obiektu w formacie WKT (Well-Known Text)