Sunteți pe pagina 1din 36

Capitolul 6 - Baze de date spatiale

 Modelarea datelor spațiale: obiecte spațiale, algebra spațială


 Integrarea datelor spațiale în baze de date și limbaje de interogare
 Sisteme GIS
 Date spaţiale în sistemul Oracle – Oracle Spatial
 Tipuri de date spatiale
 Interogări spatiale
 Indexarea datelor spatiale
 Date spatiale în sistemul MySQL
 Date spaţiale în sistemul PostgreSQL
 Date spaţiale în sistemul SQL Server 2008

Prof. Felicia Ionescu Baze de date spatiale 1


Date spațiale
 Date spațiale: date care se referă la reprezentarea în spațiu a
obiectelor:
 Reprezentarea obiectelor 3D (în medicină, arhitectură, CAD-CAM etc.)
 Reprezentarea spațiului geografic
 Reprezentare layout VLSI etc.
 Sistem de baze de date spațiale  sistem de baze de date care:
 Oferă suport pentru tipuri de date spațiale (POINT, LINE, REGION etc.)
 Permite interogarea datelor spațiale
 Permite indexarea spațială
 Modelarea obiectelor în plan și în spațiu – puncte, linii, regiuni

Prof. Felicia Ionescu Baze de date spatiale 2


Integrarea datelor spațiale în limbaje de interogare
 Pentru integrare sunt necesare:
 Specificarea obiectelor spațiale ca valori (constante sau nu) în interogări
 Specificarea operațiilor fundamentale de algebră spațială:
 Selecție spațială – selectează obiectele care îndeplinesc anumite condiții de
poziționare în spațiu
 Funcții spațiale – calculează un obiect spațial prin intersecții, extensii etc. a altor
obiecte spațiale
 Joncțiuni spațiale – combină informații despre obiecte spațiale
 Operații cu mulțimi de obiecte spațiale (suprapunerea partițiilor, fuziunea partițiilor,
diagrame Voronoi etc.)
 Specificarea modului de prezentare a rezultatului
 Problema care trebuie rezolvată: implementarea algebrei spațiale astfel
încât să fie integrată cu sistemul de interogare al bazei de date:
 Reprezentarea tipurilor algebrei spațiale
 Implementarea algoritmilor operațiilor algebrei spațiale
 Soluționarea  abordare obiect-relațională
Prof. Felicia Ionescu Baze de date spatiale 3
Domenii de utilizare a datelor spațiale
 Cele mai utilizate aplicații GIS (Geographical Information Systems)

Prof. Felicia Ionescu Baze de date spatiale 4


Evolutia aplicatiilor GIS

Trecut Prezent

Aplicatie Aplicatie
Aplicatie

GIS
Proprietary Middleware Open Server de
API Spatial API harta
Fisiere proprii

Baza de
SGBD date
traditional spatiala

Middleware Platforma
Standalone
propriu Internet

Prof. Felicia Ionescu Baze de date spatiale 5


Date spațiale în sistemul Oracle – Oracle Spatial
 Începând cu versiunea 10g, Oracle Spatial este conform cu specificațiile Open
Geospatial Consortium (OGC) – Simple Features Specification 1.1.1 (Document
99-049) și permite:
 Modelarea vectorială a datelor
 Modelarea rastru a datelor spațiale
 Modelarea topologică a datelor spațiale
 Oracle Spatial folosește modelul obiect-relațional de date:
 Datele spațiale se pot reprezenta prin tipuri și ierarhii de tipuri
 Datele spațiale pot fi utilizate ca tabele de obiecte sau ca și coloane în tabele
 Oracle Spatial folosește:
 O schemă SQL (MDSYS) care conține tipuri de date geometrice modelate vectorial (și
care nu trebuie să fie modificată de useri)
 Mecanisme de indexare spațială a obiectelor spațiale
 Operatori, funcții și proceduri pentru efectuarea interogărilor spațiale
 Dimensionalitatea datelor spațiale:
 Bidimensionale (2D)
 Tridimensionale (3D)
 Cu patru dimensiuni (4D)

Prof. Felicia Ionescu Baze de date spatiale 6


Modelarea vectorială a datelor în Oracle Spatial
 Modelul de date este o ierarhie compusă din elemente (elements),
geometrii (geometries) și niveluri (layouts)
 Date spațiale 2D – coordonate reprezentate ca perechi de valori (X,Y)
 Point – reprezentat printr-o coordonată (1 punct)
 Line string – fiecare segment reprezentat prin 2 puncte
 Poligon – reprezentat printr-o listă ordonată de coordonate; nu se admite
autointersecția liniei poligonale

Prof. Felicia Ionescu Baze de date spatiale 7


Reprezentarea datelor spațiale vectoriale în Oracle
 Geometry: colecție de elemente – de ex. poate reprezenta o clădire
 Layout: colecție de geometrii, având anumite atribute comune – de ex.
un layout într-o aplicație GIS poate reprezenta rețeaua de drumuri
 Sisteme de coordonate – dupa tipul reperului:
 Sistemul de coordonate Cartesian – definit prin origine și 2 (sau 3) axe de
coordonate perpendiculare
 Sisteme de coordonate unghiulare
 Sisteme de coordonate folosite în reprezentarea datelor spatiale:
 Non-georeferențiale - nu sunt corelate cu reprezentare Pamântului
 Coordonate locale – sistem de coordonate Cartesian non-georeferențial
 Georeferențiale - se referă la o anumită reprezentare a Pamântului
 Sistemul de coordonate geodetic (sau geografic) – coordonate unghiulare
(latitudine, longitudine), referitoare la coordonatele sferice polare pentru
reprezentarea fata de o anumită poziție pe globul pământesc
 Sistem de coordonate de proiecție – rezultate printr-o proiecție a suprafeței
pământului pe un plan

Prof. Felicia Ionescu Baze de date spatiale 8


Indexuri spațiale în Oracle
 În Oracle indexarea datelor spa țiale folose ște indexuri R-tree pe 2, 3, sau 4 dim.
 R-tree (R de la Rectangle) este o extindere a arborilor B-tree, in care fiecare nod intern
(non-leaf) conține un numar variabil de noduri fii, cuprins intre doua limite predefinite
 Un R-tree este o structură de date care împarte ierarhic spa țiul în zone de acoperire
minime (MBR – Minimum Bounding Rectangle, în plan, respectiv MBB – Minimum
Bounding Box, în spațiul tridimensional) imbricate (nested) și posibil cu suprapuneri
(overlapping)
 Fiecare nod intern (non-leaf) are un număr variabil de elemente si fiecare element
memorează două informații: o referin ță către un nod fiu și MBR-ul acestuia

Prof. Felicia Ionescu Baze de date spatiale 9


Indexuri R-tree în Oracle
 Algoritmii de căutare în baza de date dupa
poziția unui element spatial foloseste
indexul R-tree
 Pentru fiecare nod se folosește MBR-ul
(sau MBB-ul) fiecarui fiu pentru a decide
dacă să caute în interiorul acelui nod fiu
 În felul acesta se exceptează de la căutare
un număr mare de noduri (se caută în mai
puține noduri)
 Algoritmul de inserare în tabel a unui obiect
spațial folosește MBR-ul (sau MBB-ul)
pentru a plasa acel obiect în cel mai
apropiat nod (ca poziție în spațiu)
 Cel mai apropiat nod este nodul al cărui
MBR (sau MBB) necesită extinderea
minimă pentru a acoperi MBR-ul (sau
MBB-ul) obiectului nou introdus Index R-tree 3D

Prof. Felicia Ionescu Baze de date spatiale 10


Exemplu: indexarea datelor spațiale
 Fig (a) - MBR (Minimum Bounding Rectangle) - aproximează o geometrie
 Fig (b) – Index R-tree: o ierarhie de MBR-uri ale geometriilor dintr-un nivel dat

(b)
(a)

 În fig. b, geometriile sunt numerotate de la 1 la 9


 a, b, c, d sunt noduri frunză în arbore şi conţin MBR-urile geometriilor, împreună cu
pointeri la geometriile conţinute
 A conţine MBR-ul pentru a şi b, B conţine MBR-ul pentru c şi d
 Root conţine MBR-ul pentru A şi B şi, deci al întregii regiuni
 Exemplu de utilizarea a indexului: operația de căutare a tututor intersectiilor dintre
poligonul 1 (dat ca geometrie și MBR) cu celelalte geometrii din spa țiu
 MBR(1) nu intersectează MBR(B), deci nu se cauta în nodul (B), dar intersectează
MBR(A), deci se continua căutarea cu fii lui (A)
 MBR(1) nu intersectează MBR(b), deci nu se cauta în nodul (b), dar intersectează
MBR(a), deci se calculează intersecția cu geometriile din nodul (a): geometria (2)
Prof. Felicia Ionescu Baze de date spatiale 11
Tipurile de date Oracle Spatial (1)
 Oracle Spatial defineşte o geometrie ca un obiect de tipul:
CREATE TYPE sdo_geometry AS OBJECT (
SDO_GTYPE NUMBER, -- defineşte tipul geometriei
SDO_SRID NUMBER, -- Sistem Reference IDentifier -
-- sistemul de coordonate al geometriei
SDO_POINT SDO_POINT_TYPE,
SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES SDO_ORDINATE_ARRAY);
 Dacă SDO_ELEM_INFO şi SDO_ORDINATES sunt ambele null, atunci
geometria defineşte punctul SDO_POINT; altfel SDO_POINT este ignorat
 Tipurile folosite sunt definite astfel:
CREATE TYPE SDO_POINT_TYPE AS OBJECT (
X NUMBER,
Y NUMBER,
Z NUMBER);
CREATE TYPE SDO_ELEM_INFO_ARRAY AS VARRAY (1048576) of NUMBER;
CREATE TYPE SDO_ORDINATE_ARRAY AS VARRAY (1048576) of NUMBER;

Prof. Felicia Ionescu Baze de date spatiale 12


Tipurile de date Oracle Spatial (2)
 SDO_GTYPE
conţine 4 digiţi în
format DLTT, unde:
 D - numărul de
dimensiuni (2,3,4)
 L - măsuri lineare
(- de detaliat)
 TT – tipul
geometriei; actual
de la 00 la 09;
rezervat 10-99
pentru viitor

Prof. Felicia Ionescu Baze de date spatiale 13


Metodele tipului SDO_GEOMETRY

Prof. Felicia Ionescu Baze de date spatiale 14


Constructorii tipului de date SDO_GEOMETRY
 Obiecte SDO_GEOMETRY se pot construi:
 Definind valori ale fiecărui atribut al tipului SDO_GEOMETRY:
SDO_GEOMETRY (
type SDO_GTYPE,
srid SDO_SRID,
point SDO_POINT,
elem_info_array SDO_ELEM_INFO_ARRAY,
ordinate_array SDO_ORDINATE_ARRAY
);
 Dintr-un șir WKT (well-known text) conținut în varchar2 sau CLOB:
SDO_GEOMETRY(wkt CLOB, srid NUMBER DEFAULT NULL);
SDO_GEOMETRY(wkt VARCHAR2, srid NUMBER DEFAULT NULL);
 Dintr-un obiect WKB (well-known binary) în format BLOB:
SDO_GEOMETRY(wkb BLOB, srid NUMBER DEFAULT NULL);

Prof. Felicia Ionescu Baze de date spatiale 15


Exemplu: crearea şi interogarea datelor spaţiale
 Exemplu:
 Se creează tabelul COLA_MARKETS
care conţine o coloana cu date spaţiale
 Se inserează linii în tabel pentru
obiectele cola_a, cola_b, cola_c,
cola_d
 Se insereaza metadata pentru datele
spatiale create
 Se execută diferite interogări
 Pentru exerciţiu se poate folosi
schema MDDATA, al cărui user are
privilegiile necesare de a executa
operaţiile dorite sau userul curent
 Deblocare user MDDATA şi setarea
unei noi parole:
alter user MDDATA ACCOUNT UNLOCK;
alter user MDDATA IDENTIFIED BY “passwd”;

Prof. Felicia Ionescu Baze de date spatiale 16


Exemplu: crearea unui tabel cu date spațiale
 Crearea tabelului:
CREATE TABLE cola_markets (
mkt_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape SDO_GEOMETRY);
 Inserarea geometriilor:
INSERT INTO cola_markets VALUES( 1, 'cola_a',
SDO_GEOMETRY( 2003, -- two-dimensional polygon
NULL, -- SRID = NULL (local)
NULL, -- SDO_POINT = NULL
SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior)
SDO_ORDINATE_ARRAY(1,1, 5,7) ) -- only 2 points needed to
-- define rectangle (lower left and upper right)
-- with Cartesian-coordinate data
);
INSERT INTO cola_markets VALUES( 2, 'cola_b',
SDO_GEOMETRY(2003, -- two-dimensional polygon
NULL, NULL,
SDO_ELEM_INFO_ARRAY (1,1003,1), -- one polygon (exterior polygon ring)
SDO_ORDINATE_ARRAY (5,1, 8,1, 8,6, 5,7, 5,1) )
);

Prof. Felicia Ionescu Baze de date spatiale 17


Exemplu: inserarea datelor spatiale în tabel
 Inserarea geometriilor:
INSERT INTO cola_markets VALUES( 3, 'cola_c',
SDO_GEOMETRY( 2003, -- two-dimensional polygon
NULL, NULL,
SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)
SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3) )
);
INSERT INTO cola_markets VALUES( 4, 'cola_d',
SDO_GEOMETRY( 2003, -- two-dimensional polygon
NULL, NULL,
SDO_ELEM_INFO_ARRAY(1,1003,4), -- one circle
SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11) )
);
 Actualizare metadata (detaliere metadata pag. 24):
INSERT INTO USER_SDO_GEOM_METADATA
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
VALUES ('cola_markets', 'shape',
SDO_DIM_ARRAY( -- 20X20 grid
SDO_DIM_ELEMENT('X', 0, 20, 0.005),
SDO_DIM_ELEMENT('Y', 0, 20, 0.005) ),
NULL ); --SRID

Prof. Felicia Ionescu Baze de date spatiale 18


Exemplu: crearea unui poligon cu o gaură
 Se definesc 2 contururi, cel exterior și apoi cel interior (al găurii)
INSERT INTO cola_markets VALUES( 10, 'polygon_with_hole',
SDO_GEOMETRY( 2003, -- polygon 2D
NULL,
NULL,
SDO_ELEM_INFO_ARRAY(1,1003,1, 19, 2003,1),
SDO_ORDINATE_ARRAY (2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4,
7,5, 7,10, 10,10, 10,5, 7,5) )
);

 SDO_ELEM_INFO_ARRAY conține atâtea


elemente câte elemente spatiale există în
geometria respectivă și fiecare element
conține 3 parametri:
 Primul parametru: poziția în
SDO_ORDINATE_ARRAY a primului vârf al
conturului (numerele 1, respectiv 19)
 Al doilea parametru: tipul conturului (1003 –
contur exterior, 2003 – contur interior)
 Al treilea parametru: tipul elementului (1- linear,
3 - rectangle, 4 - circular)

Prof. Felicia Ionescu Baze de date spatiale 19


Exemplu: interogări spaţiale (1)
 Executarea unor interogări spaţiale:
-- Returneaza intersecția a doua geometrii
SELECT SDO_GEOM.SDO_INTERSECTION(c_a.shape, c_c.shape, 0.005)
FROM cola_markets c_a, cola_markets c_c
WHERE c_a.name = 'cola_a' AND c_c.name = 'cola_c';

-- Doua geometrii date au vreo interactiune spatiala (intersectie)?


SELECT SDO_GEOM.RELATE(c_b.shape, 'anyinteract', c_d.shape, 0.005)
FROM cola_markets c_b, cola_markets c_d
WHERE c_b.name = 'cola_b' AND c_d.name = 'cola_d';
-- Raspunsul este: FALSE

Prof. Felicia Ionescu Baze de date spatiale 20


Exemplu: interogări spațiale (2)
-- Returneaza ariile tuturor geometriilor din
tabelul cola_markets:
SELECT name,
SDO_GEOM.SDO_AREA(shape, 0.005)
FROM cola_markets;

-- Returneaza distanța dintre două geometrii:


SELECT SDO_GEOM.SDO_DISTANCE(c_b.shape,
c_d.shape, 0.005)
FROM cola_markets c_b, cola_markets c_d
WHERE c_b.name = 'cola_b'
AND c_d.name = 'cola_d';

-- Returneaza aria geometriei cola_a:.


SELECT c.name, SDO_GEOM.SDO_AREA (c.shape,
0.005) FROM cola_markets c
WHERE c.name = 'cola_a';

Prof. Felicia Ionescu Baze de date spatiale 21


Tipuri geometrice 3D în Oracle Spatial

Prof. Felicia Ionescu Baze de date spatiale 22


Exemplu: tabel care conține poligoane 3D
create table polygons3d(id number, geometry sdo_geometry);
-- Simple Polygon -- All points have to be on the same plane.
insert into polygons3d values(1, SDO_Geometry (3003, NULL, NULL ,
SDO_Elem_Info_Array(1,1003,1), SDO_Ordinate_Array(0.5,0.0,0.0,
0.5,1.0,0.0,
0.0,1.0,1.0,
0.0,0.0,1.0,
0.5,0.0,0.0
)));
insert into polygons3d values(2, SDO_Geometry (3007, NULL, NULL ,
SDO_Elem_Info_Array(1,1003,1,16,1003,1), SDO_Ordinate_Array(6.0,6.0,6.0,
5.0,6.0,10.0,
3.0,4.0,8.0,
4.0,4.0,4.0,
6.0,6.0,6.0,
0.5,0.0,0.0,
0.5,1.0,0.0,
0.0,1.0,1.0,
0.0,0.0,1.0,
0.5,0.0,0.0
)));

Prof. Felicia Ionescu Baze de date spatiale 23


Metadata geometrice în Oracle Spatial (1)
 Metadata reprezintă descrierea datelor (geometrice în acest caz)
 Fiecare user al unei scheme Oracle Spatial are două vederi care con țin
metadata referitoare la toate tipurile geometrice (ALL) sau create (USER)
 ALL_SDO_GEOM_METADATA - metadata ref. la toate tabelele spațiale;
 USER_SDO_GEOM_METADATA - ref. la tabele spațiale create; are atribute:
TABLE_NAME VARCHAR2(32), - nume tabel
COLUMN_NAME VARCHAR2(32), - nume coloana spațială în tabelul dat
DIMINFO SDO_DIM_ARRAY,
SRID NUMBER
Unde:
Coloana DIMINFO este un varray (SDO_DIM_ARRAY) de lungime egală cu
dimensionalitatea spațiului (1D, 2D, 3D, 4D), de obiecte SDO_DIM_ELEMENT;
tipul SDO_DIM_ARRAY este definit astfel:
Create Type SDO_DIM_ARRAY as VARRAY(4) of SDO_DIM_ELEMENT;
Tipul SDO_DIM_ELEMENT este definit astfel:
Create Type SDO_DIM_ELEMENT as OBJECT (
SDO_DIMNAME VARCHAR2(64), -- numele dimensiunii: X, Y, Z, W
SDO_LB NUMBER, SDO_UB NUMBER, -- limitele dimensiunii în grilă
SDO_TOLERANCE NUMBER); -- toleranța
SRID – Spatial Reference Identifier; identificatorul sistemului de coord al spa țiului:
null dacă nu este precizat sau se specifică prin identificatori și mai multe atribute
Prof. Felicia Ionescu Baze de date spatiale 24
Modelul de date rastru în Oracle Spatial (1)
 Componenta GeoRaster permite memorarea, indexarea, interogarea
datelor reprezentate ca valori într-o grilă spațială (rastru), folosind
modelul DEM (Digital Elevation Model)
 GeoRaster folosește mașina JVM incorporată și Oracle XML DB
 Datele rastru sunt achiziționate prin:
 Detectoare la distanță (remote sensing)
 Fotogrametrie
 Sistemele GIS (inclusiv Oracle GIS) folosesc atât reprezentarea
vectorială cât și reprezentarea rastru a scoarței terestre
 Datele rastru conțin o parte sau toate elementele următoare:
 Pixeli (pixels) sau celule (cells)
 Domeniul spatial (footprint)
 Informații spațiale, temporare sau de bandă
 Atribute ale celulelor
 Metadata
 Date de prelucrare și suport pentru hartă

Prof. Felicia Ionescu Baze de date spatiale 25


Modelul de date rastru în Oracle Spatial (2)
 Modelul rastru este un model pe multiple niveluri (multi-layered)
 Fiecare nivel este reprezentat printr-o banda, care este o dimensiune fizică a
rastrului multidimensional si constă dintr-o matrice bidimemsională de celule
 Benzile sunt numerotate de la o la n-1, unde n este nivelul maxim, iar
nivelurile de la 1 la n
 Fiecare nivel este descris prin metadata XML
 Un obiect GeoRaster poate fi reprezentat prin mai multe benzi, deci pe
mai multe niveluri logice
 De exemplu, undele electromagnetice de la un senzor la distanță sunt grupate
în canale, care sunt mapate în benzi, iar benzile sunt asociate cu nivelurile
 În aplicațiile rastru GIS, un set de date poate conține mai multe niveluri,
fiecare nivel avand o anumita temă (theme); exemple de teme: densitatea
populatiei, nivelul veniturilor, utilizarea terenurilor etc.

Prof. Felicia Ionescu Baze de date spatiale 26


Tipul de date SDO_GEORASTER
 Tipul de date rastru este definit astfel:
CREATE TYPE SDO_GEORASTER AS OBJECT (
rasterType NUMBER,
spatialExtent SDO_GEOMETRY,
rasterDataTable VARCHAR2(32),
rasterID NUMBER,
metadata XMLType);
 Semnificația atributelor:
 rasterType: de forma [d][b][t][gt], unde
 d=2 (versiunea curentă),
 b: informații despre numărul de benzi
 t: rezervat pentru viitor
 gt = 01 (restul valorilor rezervate pentru dezvoltări ulterioare
 spatialExtent – un model de obiect geometric
 rasterDataTable – tabel de obiecte SDO_GEORASTER
 rasterID – identificator obiect SDO_GEORASTER
 metadata – descrise în GeoRaster XML schema

Prof. Felicia Ionescu Baze de date spatiale 27


Modelarea topologică a datelor în Oracle Spatial
 Se definesc muchii, fețe și obiecte prin definirea legăturilor topologice
între nodurile (puncte în spațiu) unei mulțime date

Prof. Felicia Ionescu Baze de date spatiale 28


Tipuri de date topologice în Oracle Spatial
 Tipul SDO_TOPO_GEOMETRY este definit astfel:
CREATE TYPE sdo_topo_geometry AS OBJECT (
tg_type NUMBER,
tg_id NUMBER,
tg_layer_id NUMBER,
topology_id NUMBER);

 Se pot crea tabele de obiecte de acest tip:


CREATE TABLE land_parcels ( -- Land parcels (selected faces)
feature_name VARCHAR2(30) PRIMARY KEY,
feature SDO_TOPO_GEOMETRY);

Prof. Felicia Ionescu Baze de date spatiale 29


Date spațiale în MySQL (1)
 Extensiile spațiale ale MySQL 5.1 pemit generarea, stocarea și analiza
datelor spațiale, prin impementarea unui subset al recomandărilor
OpenGIS - Simple Features Specifications for SQL (publicate de OGC
-The Open Geospatial Consortium )
 MySQL definește câteva tipurile de date geometrice 2D care
corespund claselor OpenGIS:
 GEOMETRY
 POINT
 LINESTRING
 POLYGON
 MULTIPOINT
 MULTILINESTRING
 MULTYPOLYGON
 GEOMETRYCOLLECTION

Prof. Felicia Ionescu Baze de date spatiale 30


Date spațiale în MySQL (1)
 Extensiile spațiale ale MySQL 5.1 pemit generarea, stocarea și analiza
datelor spațiale, prin impementarea unui subset al recomandărilor
OpenGIS - Simple Features Specifications for SQL (publicate de OGC
-The Open Geospatial Consortium )
 MySQL definește câteva tipurile de date geometrice 2D care corespund
claselor OpenGIS:
 GEOMETRY
 POINT
 LINESTRING
 POLYGON
 MULTIPOINT
 MULTILINESTRING
 MULTYPOLYGON
 GEOMETRYCOLLECTION

Prof. Felicia Ionescu Baze de date spatiale 31


Date spațiale în MySQL (2)
 În MySQL se pot crea tabele care au coloane cu date de tip geometric:
CREATE TABLE geom (id int PRIMARY KEY, g GEOMETRY);
 În astfel de tabele se pot insera date geometrice:
INSERT INTO geom VALUES (GeomFromText('POINT(1 1)'));
SET @g = 'POINT(1 1)'; -- variabila locala
INSERT INTO geom VALUES (GeomFromText(@g));
 Indexuri spațiale se pot defini numai pentru modul de memorare
MyISAM a tabelelor (nu și pentru INODB)
 Prelucrarea informațiilor spațiale:
 Funcții care fac conversii între diferite formate geometrice
 Funcții de calcul a diferitelor proprietăți ale formelor geometrice
 Funcții care descriu relațiile dintre două geometrii
 Funcții de generare a unor noi geometrii din alte geometrii date

Prof. Felicia Ionescu Baze de date spatiale 32


Date spațiale în PostgreSQL
 În PostgreSQL 8.4 sunt definite tipuri geometrice 2D:

 De asemenea sunt definiți operatori și funcții pentru tipurile geometrice:


 Scalare
 Translație
 Rotație
 Intersecții

Prof. Felicia Ionescu Baze de date spatiale 33


Date spaţiale în SQL Server 2008
 SQL Server suportă două tipuri de date spațiale, implementate ca tipuri
CLR (Common Language Runtime):
 Tipuri geometrice - tipuri planare, definite conform specificațiilor Open
Geospatial Consortium (OGC) - Simple Features for SQL Specification 1.1.0
 Tipuri geografice (geodetice) – tipuri de date reprezentate în coordonate
sferice (longitudine, latitudine)
 Ierarhia de tipuri: cele albastre sunt instantiabile, celelalte sunt abstracte
 Indexuri spatiale – de tipul B-Tree

Prof. Felicia Ionescu Baze de date spatiale 34


Exemplu – tipuri de date spațiale în SQL server
 Tipul POLYGON poate reprezenta:
 Poligoane simple, cu un singur
contur (conturul exterior) (1)
 Poligoane cu găuri, care au un
contur exterior și unul sau mai multe
contururi interioare (2), (3)
 Exemplu: crearea unui poligon cu o gaură și cu SRID = 10
DECLARE @g geometry; (SRID – Spatial Reference Identifier)
SET @g = geometry::STPolyFromText('POLYGON((0 0, 0 3, 3 3, 3 0, 0 0),
(1 1, 1 2, 2 1, 1 1))', 10);
 Exemplu: crearea unui tabel cu o coloana de identificare și o coloana de
date de tip (abstract) geometry. La inserare, în coloana tipului geometry
se intanțiază prin obiecte de subtipuri ale acestuia; ex. in Transact/SQL
CREATE TABLE SpatialTable ( id int IDENTITY (1,1), -- Primary KEY
GeomCol1 geometry );
GO
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO
Prof. Felicia Ionescu Baze de date spatiale 35
Bibliografie specifică
Baze de date spațiale
 R.H. Güting, “An Introduction to Spatial Database Systems”, Praktische
Informatik IV, FernUniversität Hagen, D-58084 Hagen, Germany
 Felicia Ionescu, “Grafica în realitatea virtuală”, Editura Tehnica,
București, 2000
 Oracle Documentation (11g, 12c)
 Oracle Spatial Developer's Guide
 Oracle Spatial GeoRaster Developer's Guide
 Oracle Spatial Topology and Network Data Models Developer's Guide

Prof. Felicia Ionescu Baze de date spatiale 36

S-ar putea să vă placă și