7 Baze prostornih podataka

Baza podataka je kolekcija struktuiranih podataka. DataBase Management System (DBMS) je softverski paket koji omogućava korisnicima korišćenje, održavanje i upravljanje baze podataka. Najčešće su baze podataka veliki skupovi podataka organizovanih u obliku tabela. DBMS podržavaju upite definisane deklarativnim jezikom, kao što je SQL (Structured Query Language).

Relacioni model podataka je struktura podataka u kojoj su definisani atributi, niz vrednosti atributa koji predstavljaju red u tabeli (tuples) i relacije (odnosi) između atributa. Kada se govori o ekstrakciji podataka iz baze, onda se to odnosi na upite, a kada se upitima menja sadržaj podataka u bazi, onda se radi o transakcijama.

Prostorne baze podataka su baze podataka koje podržavaju poseban tip podataka u okviru tabela (atributa, kolona koja definiše geometriju), dakle kod ovih baza je moguće zadati kolone u tabeli koje predstavljaju prostorne podatke. Pored toga, takve baze omogućavaju pored klasičnih i prostorne upite, kao i prostorno indeksiranje podataka koristeći neki od deklarativnih jezika, kao što je SQL. Prostorne baze podataka nisu samo sistemi za skladištenje prostornih podataka, nego i mnogo više od toga, one su najčešće relacione baze.

Jednostavan primer relacione baze podataka je ilustrovan sa tri međusobno povezane tabele o vlasništvu nad parcelama i informacijama o vlasnicima parcela.

Ova baza podataka se sastoji od 3 tabele, prva tabela ima 4 atributa, druga i treća po 3, atributi su organizovani kao elementi kolone, a redovi predstavljaju niz atributa (eng. tuple). U svakoj tabeli je podebljan atribut koji predstavlja ključ. Ključ služi da se definiše odnos (relacije) između tabela, na osnovu tog zajedničkog atributa. Zajedničkim atributima lako je povezati dve ili više tabela.

Lični_podaci

Matični_broj Prezime Ime Datum_rođenja
1234 Marković Marko 01/01/1983
5678 Laban Luka 02/05/1963
4321 Petrović Petar 08/05/1973

Podaci_o_parceli

BrojParcele Geometrija Površina
55 POLYGON(751….) 77
57 POLYGON(752….) 5
88 POLYGON(749….) 8

Podaci_o_vlasništvu

Parcela Vlasnik DatumSticanja
57 5678 10/10/2015
88 4321 11/11/2016
55 1234 05/08/2013

Ova baza podataka se sastoji od 3 tabele, prva tabela ima 4 atributa, druga i treća po 3, atributi su organizovani kao elementi kolone, a redovi predstavljaju niz atributa (eng. tuple). U svakoj tabeli je podebljan atribut koji predstavlja ključ. Ključ služi da se definiše odnos (relacije) između tabela, na osnovu tog zajedničkog atributa. Zajedničkim atributima lako je povezati dve ili više tabela.

Baze podataka imaju definisanu shemu u kojoj su definisani atributi i tipovi podataka koji su rezervisani za skladištenje vrednosti atributa. Najčešće se definiše i maksimalna dužina vrednosti atributa, npr rezerviše se tip za čuvanje karaktera (string) za atribut Prezime koji će imati maksimalnu dužinu 20 karaktera. Ilustracija sheme prikazana je ovde:

Lični_podaci (Matični_broj : [number,10], Prezime : [string,20], Ime: [string,20],  Datum_rođenja : date)
Podaci_o_parceli (BrojParcele : [number,8], Geometrija : polygon, Površina : [number,150])
Podaci_o_vlasništvu (Parcela: [number,8], Vlasnik : [number,10], DatumSticanja : date)

Osnovne SQL komande su date bez detaljnih objašnjenja:

CREATE TABLE - kreiranje tabele u bazi podataka,
DROP TABLE - uklanjanje tabele iz baze podataka,
ALTER TABLE - izmena definicije tabele,
CREATE INDEX - kreiranje indeksa,
DROP INDEX - uklanjanje indeksa,
CREATE VIEW - kreiranje pogleda,
DROP VIEW - uklanjanje pogleda,
SELECT - prikaz željenog sadržaja iz jedne ili više tabela,
UPDATE - izmena vrednosti kolona tabele,
DELETE - brisanje redova iz tabele,
INSERT - dodavanje redova u tabelu,
GRANT - dodeljivanje ovlašćenja nad objektima baze drugim korisnicima od strane vlasnika
REVOKE - ukidanje ovalašćenja dodeljenih pomoću GRANT

Ako želimo da prikažemo sve parcele čija je površina veća od 5 ari koristiće SQL jezik, upit bi izgledao ovako:

SELECT * FROM Podaci_o_parceli WHERE Površina > 5

Karakter * se koristi kad se upit odnosi na svaki red iz tabele. Slično bi mogli da definišemo upit koji će podatke o parcelama i o vlasništvu prikazati zajedno.

SELECT * FROM Podaci_o_parceli, Podaci_o_vlasništvu WHERE Podaci_o_parceli.BrojParcele = Podaci_o_vlasništvu.Parcela

Baze podataka koriste metode indeksiranja da bi se omugućio brži pristup podacima. Kod standardnih tipova podatka, kao što su brojevi, karakteri i datumi najčešće se koristi B-tree indeksiranje. B-tree deli podatke koristeći algoritme za sortiranje. Tako nastaju hijerarhiska stabla čime se postiže brzo poređenje vrednosti.

Kod prostornih baza podataka implementiraju se metode prostornog indeksiranja. Ako se izvršava upit da li je neka tačka unutar poligona, na neideksiranoj tabeli bi trajao dugo, jer bi moralo redom da se porede sve prelomne tačke poligona sa datom tačkom dok se ne nađe rezultat za svaki poligon redom. Ako su za svaki poligon određeni minimalni obuhvatni pravougaonici (bounding box), onda se upit mnogo brže izvršava. Primer R-tree prostornog indeksiranja za dvodimenzionalne koordinate je dat na Slici 7.1. Dakle, prostor je podeljen na više delova koji su hijerarhiski uređeni. Kod prostornog upita za tačku i poligon, algoritam bi prvo proverio da li je tačka u delu R1 ili R2, pa potom, ako je u R1, da li je u R3, R4 ili R5 i tako redom do konačnog odgovora. Postoji mnogo različitih metoda za prostorno indeksiranje.

R-tree prostorno indeksiranje za dvodimenzionalne koordinate ([https://en.wikipedia.org/wiki/R-tree](https://en.wikipedia.org/wiki/R-tree)).

Slika 7.1: R-tree prostorno indeksiranje za dvodimenzionalne koordinate (https://en.wikipedia.org/wiki/R-tree).

U daljem tekstu će bit ukratko predstavljeni PostgreSQL PostGIS i Rasdaman DBMS. Lista softvera sa sumarnim opisom njihovih mogućnosti je dostupna na url adresi:

https://en.wikipedia.org/wiki/Spatial_database.

7.1 PostgreSQL PostGIS

PostgreSQL je objektno-relacioni DBMS koji je besplatan i realizovan kao softver otvorenog koda. Ekstenzija PostGIS je dodatak za PostgreSQL uz koji PostgreSQL postaje prostorna baza podataka jer je omogućena podrška za prostorne tipove podataka, prostorno indeksiranje i funkcionalnosti za razne prostorne upite.

PostGIS podržava manipulaciju koordinatnim referentnim sistemima i projekcijama jer sadrži PROJ.4 biblioteku, takođe biblioteka za napredne prostorne operacije Geometry Engine Open Source (GEOS) je integrisana u PostGIS.

PostGIS podržava manipulaciju vektorskim i rasterskim podacima. Primer kreiranja vektorskih podatka:

CREATE TABLE geometries (name varchar, geom geometry);
INSERT INTO geometries VALUES
  ('Point', 'POINT(0 0)'),
  ('Linestring', 'LINESTRING(0 0, 1 1, 2 1, 2 2)'),
  ('Polygon', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'),
  ('PolygonWithHole', 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))'),
  ('Collection', 'GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))');

7.2 Rasdaman

Rasdaman je rasterska baza podataka (eng. Array DBMS) tj. sistem za upravljanje podacima koji podržava čuvanje i manipulaciju masivnih multidimenzionalnih nizova (rastera). Rasdaman nema ograničenja u pogledu broja dimenzija podataka koji se u njega smeštaju. Može da radi sa 1D, 2D… nD podacima.

Program je nastao 1989. u sklopu istraživačkog projekta prof. Pitera Baumana, koji se bavio mogućnostima konvencionalnih baza podataka da podrže rasterske podatke. Tokom istraživanja uspostavljen je model baze podataka za višedimenzionalne nizove, uključujući i model podataka i jezik za upite (manipulaciju) nad podacima (rasql). Na Tehničkom univerzitetu u Minhenu, kao rezultat EU finansiranog početnog istraživačkog projekta Rasdaman, nastao je prvi prototip programa, koji je radio sa O2 objektno orijentisanim DBMS-om.

Rasdaman pored komercijalne ima i besplatnu – tzv. verziju za zajednicu (eng. community edition). Komercijalnu verziju održava kompanija Rasdaman Gmbh (www.rasdaman.com), dok je besplatna verzija open-source projekat (www.rasdaman.org) koji održava i razvija velika zajednica korisnika. Glavna razlika između komercijalne i besplatne verzije je u performansama (komercijalna verzija podržava bolje keširanje tajlova, distribuirano procesiranje, kompresiju itd…) i u izboru baznog DBMS-a sa kojim će program raditi (besplatna verzija podržava samo PostgreSQL, dok komercijalna radi i sa MySQL, Oracle, IBM DB2 i Informix sistemima baza podataka).

Rasdaman koristi za jezik rasql upite. Rasql se zasniva na SQL-92 standardu, sa značajnim proširenjem multidimenzionalnim operatorima visokog nivoa. Opšta struktura upita ista je kao u konvencionalnom SQL-u, select – from – where . Razlika je u operatorima koji su dostupni korisniku u select i where klauzulama: ovde konvencionalni SQL ne podržava multidimenzionalne operatore, za razliku od jezika za upite koji Rasdaman koristi. Rasdaman podržava i upite koristeći WCPS (Web Coverage Processing Service) za upite kroz Web servise.

Primer WCPS upita nad kolekcijom prostorno vremenskih podataka temperature vazduha za lokaciju sa longitudom 20.4489 i latitudom 44.7866 za svaki dan u 2011 godini:

osgl.grf.bg.ac.rs/rasdaman/ows?service=WCS&version=2.0.1&request=ProcessCoverages&query=for s in (MaxTemperature_SERBIA)return encode (s[Lat(44.7866),Long(20.4489), ansi("2011-01-01":"2012-01-01")], "csv")

Podaci su izraženi u stepenima Celsiusa i pomnoženi sa 10, da bi se u rasterima čuvali kao celobrojne vrednosti (eng. Integer).

{-11,0,-2,-15,-9,38,65,105,146,113,83,73,83,120,101,114,118,100,40,32,18,2,-1,-4,0,8,24,8,6,-1,
  -45,-47,-46,-30,3,79,120,140,132,102,84,129,95,57,37,38,55,70,72,49,42,35,4,-2,-20,-26,-1,17,
  14,5,2,13,28,25,38,23,26,46,91,145,171,187,182,191,183,162,145,76,52,72,114,151,173,214,198,
  154,152,141,163,180,189,195,193,209,148,181,221,199,194,159,148,223,112,95,99,134,154,174,186,
  209,232,237,221,212,216,205,190,156,199,215,164,193,179,137,159,177,213,134,175,225,221,232,
  239,248,262,171,159,226,250,266,271,263,253,263,265,253,276,270,220,261,276,270,260,253,278,
  286,287,291,295,248,207,201,217,256,265,262,281,299,310,286,238,288,325,327,291,235,223,239,
  225,233,263,216,191,236,248,266,265,306,339,353,357,352,316,334,347,344,291,313,330,345,306,
  240,296,265,259,224,225,265,287,226,250,246,242,257,285,277,259,286,323,336,239,238,243,265,
  288,301,315,296,298,308,334,322,310,321,339,372,369,342,321,284,309,311,294,316,288,302,327,
  332,266,280,270,259,300,330,333,314,333,288,287,301,312,295,225,217,240,246,244,252,258,258,
  261,238,250,259,255,250,258,259,258,259,148,115,143,148,214,162,139,126,117,117,139,204,192,
  137,86,117,122,143,161,150,155,148,148,146,138,150,122,156,184,144,136,158,163,97,86,75,75,79,
  84,82,80,54,29,17,10,14,20,39,38,26,69,101,68,57,19,54,148,166,160,91,70,80,95,120,120,125,117,
  118,123,115,110,80,51,29,26,15,11,33,33,45,33,23,19,38,46,55} 

Slično se može dobiti i dijagram prikazan na Slici 7.2

Upit nad kolekcijom prostorno vremenskih podataka temperature vazduha za lokaciju sa longitudom 20.4489 i latitudom 44.7866 za svaki dan u 2011 godini.

Slika 7.2: Upit nad kolekcijom prostorno vremenskih podataka temperature vazduha za lokaciju sa longitudom 20.4489 i latitudom 44.7866 za svaki dan u 2011 godini.

Još jedan primer rasterske baze je sciDB.