You are on page 1of 27

Geoprostorne baze podataka

5. ISO/OGC Implementation Specifications for


Geographic Information – Simple feature access

17.11.2021.
ISO/OGC - Standardi
o Catalogue Service
o Coordinate Transformation
o GML, KML
o Location Services
o Sensor Model Language, Sensor Observation Service,
Sensor Planning Service
o Simple Feature, Simple Feature SQL
o Web Coverage Processing Service, Web Coverage
Service
o Web Feature Service, Web Map Service, Web Tile Service
o …
https://www.ogc.org
https://www.ogc.org/docs/is
Geoprostorne baze podataka 2
ISO/OGC Implementation Specification for
Geographic Information – Simple feature access

o Prvi dio: Common Architecture (ISO 19125-1:2004)


n Dijagram razreda, popis funkcija ...
o Drugi dio: SQL Option (ISO 19125-2:2004)*
n Implementacija prvog dijela u SQL-u
o Relacijski model
o Objektno-relacijski model
o Feature (značajka, objektna klasa)
n Apstrakcija neke pojave u stvarnom svijetu
n abstraction of real world phenomena
o Simple feature
n Značajka čiji su svi geometrijski atributi prikazani po dijelovima
ravnom linijom ili ravninskom interpolacijom među točkama
n feature with all geometric attributes described piecewise by straight
line or planar interpolation between sets of points

*Formalno povučen 2018

Geoprostorne baze podataka 3


Arhitektura – Geometry Object Model

Geoprostorne baze podataka 4


Arhitektura – Geometry Object Model

Geoprostorne baze podataka 5


Arhitektura – Geometry Object Model

o Osnovne metode nad geometrijskim objektima


n Dimension()
n GeometryType()
n SRID()
n Envelope()
n AsText
n AsBinary
n IsEmpty()
n IsSimple()
n Is3D()
n IsMeasured()
n Boundary()

Geoprostorne baze podataka 6


Arhitektura – Geometry Object Model

o Metode za ispitivanje prostornih odnosa


n Equals(anotherGeometry:Geometry)
n Disjoint(anotherGeometry:Geometry)
n Intersects(anotherGeometry:Geometry)
n Touches(anotherGeometry:Geometry)
n Crosses(anotherGeometry:Geometry)
n Within(anotherGeometry:Geometry)
n Contains(anotherGeometry:Geometry)
n OverLaps(anotherGeometry:Geometry)
n Relate(anotherGeometry:Geometry,
intersectionPatternMatrix:String)

Geoprostorne baze podataka 7


Arhitektura – Geometry Object Model

o Metode za prostorne analize


n Distance(anotherGeometry:Geometry)
n Buffer(distance:Double)
n ConvexHull()
n Intersection(anotherGeometry:Geometry)
n Union(anotherGeometry:Geometry)
n Difference(anotherGeometry:Geometry)
n SymDifference(anotherGeometry:Geometry)

Geoprostorne baze podataka 8


Arhitektura – Geometry Object Model

o Pattern matrix (matrica uzorka)


Skup 9 vrijednosti uzoraka – jedna za svaki element matrice
Moguće vrijednosti:
𝑝 = 𝑇 ⇒ dim 𝑥 ∈ 0,1,2 , 𝑖. 𝑒. 𝑥 ≠ ∅
𝑝 = 𝐹 ⇒ dim 𝑥 = −1 , 𝑖. 𝑒. 𝑥 = ∅
𝑝 = ∗ ⇒ dim 𝑥 ∈ −1, 0,1,2 ,
𝑝 = 0 ⇒ dim 𝑥 = 0
𝑝 = 1 ⇒ dim 𝑥 = 1
𝑝 = 2 ⇒ dim 𝑥 = 2

Obično reprezentirana kao niz znakova:


char* overlapMatrix = ”T*T***T**”;
Geometry* a, b;
Boolean b = a->Relate(b, overlapMatrix);
Geoprostorne baze podataka 9
ISO/OGC Simple Feature - Implementacija

o MySQL
n Spatial data types
n Spatial analysis functions
o PostgreSQL/PostGIS
n Geometry types
n Geography types
o SpatiaLite (SQLite)
o Oracle Spatial
n 2D geometry (projected coordinates)
n 3D geometry (geodetic-geographic coordinates)
o IBM DB2 Spatial Extender
o IBM Informix Spatial DataBlade
o Microsof SQL Server
n Geometry types
n Geography types

Geoprostorne baze podataka 10


Primjeri

Zadatak: Svi podatci o poslovnim zgradama koje se nalaze


na čestici 2996.
Odgovor:
SELECT * FROM poslovnazgrada pz, kat_cestica kc
WHERE kc.id = 2996
AND ST_Within(pz.geom, kc.geom)

Zadatak: Broj i površina stambenih zgrada koje se nalaze


na čestici 2284.
Odgovor:
SELECT COUNT(*), SUM(ST_Area(sz.the_geom))
FROM stambenazgrada sz, kat_cestica kc
WHERE kc.broj = 2284
AND ST_Within(sz.geom, kc.geom)

Geoprostorne baze podataka 11


Well-known Text (WKT) Representation

o Dobro poznata tekstualna notacija

o Svaki geometrijski tip definiran standardom može se


opisati WKT notacijom

o Može se koristiti za konstrukciju novih objekata (instanci)


tipa, ili da bi se postojeći objekti mogli prikazati u alfa-
numeričkom obliku koji je razumljiv korisniku

Geoprostorne baze podataka 12


Well-known Text (WKT) Representation

o WKT notacija se opisuje koristeći BNF* pravila


n Sastoji se od niza simbola (engl. token)
n Notacija “{}” označava opcionalni simbol unutar vitičastih zagrada; zagrade
ne ulaze u izlazni niz simbola.
n Notacija "( )" sakuplja (grupira) nizove simbola u jedan simbol; zagrade ne
ulaze u izlazni niz simbola
n Notacija "*" koja slijedi simbol označava da se opcionalno može koristiti više
takvih simbola
n Niz znakova bez ikakvih dodatnih simbola označava jedan simbol
n Notacija "|" označava izbor između dva simbola; znak | ne ulazi u izlazni niz
simbola
n Notacija "< >" označava produkcijsko pravilo koje je definirano drugdje ili
neki od osnovnih tipova
n Notacija ":=“ predstavlja produkcijsko pravilo koje označava da se lijeva
strana pravila može zamijeniti desnom stranom pravila; produkcija završava
kada se više ne može primijeniti niti jedno pravilo
n WKT notacija razlikuje velika i mala slova

* https://en.wikipedia.org/wiki/Backus–Naur_form

Geoprostorne baze podataka 13


Well-known Text (WKT) Representation

<x> ::= <signed numeric literal>


<y> ::= <signed numeric literal>
<z> ::= <signed numeric literal>
<m> ::= <signed numeric literal>
<quoted name> ::= <double quote> <name> <double quote>
<name> ::= <letters>
<letters> ::= (<letter>)*
<letter> ::= <simple Latin letter>|<digit>|<special>
<simple Latin letter> ::= <simple Latin upper case letter>
|<simple Latin lower case letter>
<signed numeric literal> ::= {<sign>}<unsigned numeric literal>
<unsigned numeric literal> ::= <exact numeric literal>
|<approximate numeric literal>
<approximate numeric literal> ::= <mantissa>E<exponent>
<mantissa> ::= <exact numeric literal>
<exponent> ::= <signed integer>
<exact numeric literal> ::= <unsigned integer>
{<decimal point>{<unsigned integer>}}
|<decimal point><unsigned integer>

Geoprostorne baze podataka 14


Well-known Text (WKT) Representation

<signed integer> ::= {<sign>}<unsigned integer>


<unsigned integer> ::= (<digit>)*
<left delimiter> ::= <left paren>|<left bracket>
// must match balancing right delimiter
<right delimiter> ::= <right paren>|<right bracket>
// must match balancing left delimiter
<special> ::= <right paren>|<left paren>|<minus sign>
|<underscore>|<period>|<quote>|<space>
<sign> ::= <plus sign> | <minus sign>
<decimal point> ::= <period> | <comma>
<empty set> ::= EMPTY

<minus sign> ::= -


<left paren> ::= (
<right paren> ::= )
<left bracket> ::= [
<right bracket> ::= ]
<period> ::= .
<plus sign> ::= +
<double quote> ::= "
<quote> ::= '
<comma> ::= ,

Geoprostorne baze podataka 15


Well-known Text (WKT) Representation

<underscore> ::= _
<digit> ::= 0|1|2|3|4|5|6|7|8|9
<simple Latin lower case letter> ::=
a|b|c|d|e|f|g|h|i|j|k|l|m
|n|o|p|q|r|s|t|u|v|w|x|y|z
<simple Latin upper case letter> ::=
A|B|C|D|E|F|G|H|I|J|K|L|M
|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<space>= " "
// unicode "U+0020" (space)

Geoprostorne baze podataka 16


Well-known Text (WKT) Representation
o Produkcijska pravila za dvodimenzionalne geometrijske
objekte
Dvodimenzionalni geometrijski objekti definiraju se u prostoru
(x, y)

<point> ::= <x> <y>


<geometry tagged text> ::= <point tagged text>
| <linestring tagged text>
| <polygon tagged text>
| <triangle tagged text>
| <polyhedralsurface tagged text>
| <tin tagged text>
| <multipoint tagged text>
| <multilinestring tagged text>
| <multipolygon tagged text>
| <geometrycollection tagged text>
<point tagged text> ::= point <point text>
<linestring tagged text> ::= linestring <linestring text>
<polygon tagged text> ::= polygon <polygon text>
<polyhedralsurface tagged text> ::= polyhedralsurface
<polyhedralsurface text>
<triangle tagged text> ::= triangle <polygon text>
<tin tagged text> tin <polyhedralsurface text>
<multipoint tagged text> ::= multipoint <multipoint text>

Geoprostorne baze podataka 17


Well-known Text (WKT) Representation

<multilinestring tagged text> ::= multilinestring <multilinestring text>


<multipolygon tagged text> ::= multipolygon <multipolygon text>
<geometrycollection tagged text> ::= geometrycollection
<geometrycollection text>
<point text> ::= <empty set> | <left paren> <point> <right paren>
<linestring text> ::= <empty set> | <left paren> <point> {<comma> <point>}*
<right paren>
<polygon text> ::= <empty set> | <left paren> <linestring text>
{<comma> <linestring text>}*
<right paren>
<polyhedralsurface text> ::= <empty set> | <left paren> <polygon text>
{<comma> <polygon text>}* <right paren>
<multipoint text> ::= <empty set> | <left paren> <point text> {<comma> <point text>}*
<right paren>
<multilinestring text> ::= <empty set> | <left paren> <linestring text>
{<comma> <linestring text>}*
<right paren>
<multipolygon text> ::= <empty set> | <left paren> <polygon text>
{<comma> <polygon text>}*
<right paren>
<geometrycollection text> ::= <empty set> | <left paren> <geometry tagged text>
{<comma> <geometry tagged text>}*
<right paren>

Geoprostorne baze podataka 18


Well-known Text (WKT) Representation
Primjeri:
Geometrijski tip Tekstualna notacija Komentar

Point Point (10 10) Točka


Linestring Linestring(10 10, 20 20, 30 40) Razlomljena linija sa od tri
točke
Polygon Polygon((10 10, 10 20, 20 20, 20 15, 10 10)) Poligon bez rupa

Multipoint Multipoint((10 10), (20 20)) Kolekcija dvije točke

Multilinestring Multilinestring ( Kolekcija dvije razlomljene


(10 10, 20 20), (15 15, 20 15, 30 20) linije
)
Multipolygon Multipolygon ( Kolekcija dva poligona
((10 10, 10 20, 20 20, 20 15, 10 10)),
((60 60, 70 70, 80 60, 60 60))
)
GeometryCollection GeometryCollection ( Kolekcija koja se sastoji od
Point(10 10), dvije točke i jedne
Point(20 20), razlomljene linije
Linestring(10 10, 20 20, 30 40)
)

Geoprostorne baze podataka 19


Well-known Binary (WKB) Representation

o Dobro poznati binarni zapis


n Zapis geometrijskih objekata kao neprekinuti niz byte-ova
n omogućuje razmjenu podataka između SQL/CLI klijenta i SQL-
implementacije (baze podataka) u binarnom obliku, efikasnije od
WKT ali nije razumljivo čovjeku
n Geometrijski objekti se prvo serijaliziraju kao nizovi tipova iz skupa
{Unsigned Integer, Double} a zatim se svaki tip serijalizira kao niz
byte-ova koristeći jedan od dva standarda (NDR, XDR odnostno Big
Endian i Little Endian)

•B=1 – NDR format


•T=3 – Poligon

Geoprostorne baze podataka 20


Drugi dio – Simple feature access – SQL Option

o Drugi dio: SQL Option (ISO 19125-2:2004)


n Definira standardnu SQL shemu koja omogućuje pohranjivanje, dohvaćanje,
ažuriranje i postavljanje upita nad kolekcijama značajki pomoću SQL/CLI
sučelja
o Značajke posjeduju prostorne i neprostorne (tematske) atribute.
o Prostorni atributi jednostavnih značajki imaju geometrijske vrijednosti u
dvodimenzionalnom ili trodimenzionalnom prostoru (točka, krivulja ili
površina) sa linearnom ili planarnom interpolacijom između vrhova

o Kolekcija značajki istog tipa pohranjuju se kao tablica značajki (engl.


feature table) koja većinom sadrži barem jedan prostorni atribut
n Svaka značajka pohranjena je kao jedan redak u tablici značajki

o Za definiranje veza i odnosa između značajki, osim prostornih atributa,


koriste se i standardne tehnike iz SQL-a kao što su strani ključevi

Geoprostorne baze podataka 21


Drugi dio – Simple feature access – SQL Option

o Ne-prostorni atributi značajki preslikavaju se u stupce tablice, tj.


standardne SQL tipove podataka, ali potencijalno mogu biti i korisnički
definirane tipove uvedene SQL3 standardom
o Prostorni atributi značajki se preslikavaju u stupce tablice, tj. tipove
geometrijske tipove podataka definirane ovim standardom
o Definirane su dvije različite implementacije tablica značajki
n Standardni relacijski model koji koristi samo tipove podataka definirane SQL
standardom
n Objektno-relacijski model koji koristi geometrijske tipove podataka
o Bez obzira na implementaciju definira se skup SQL funkcija koje
podržavaju razne geometrijske operacije za manipuliranje prostornim
podacima i postavljanje upita nad njima.

Geoprostorne baze podataka 22


Drugi dio – Simple feature access – SQL Option

o Model koji koristi dodatne geometrijske tipove podataka (engl. SQL with
Geometry Types) znači SQL implementaciju koja je proširena dodatnim
skupom geometrijskih tipova podataka
n Mehanizam korisnički definiranih tipova podataka (objektno-relacijski
model podataka)
n Geometrijski atributi se modeliraju kao atributi tih dodatnih tipova
podataka

o Standard ne definira točan mehanizam kojim se implementiraju


korisnički tipovi podataka, već definira njihovo ponašanje te sučelja koja
trebaju implementirati
o Što je definirano standardom
n Nazivi i geometrijske definicije geometrijskih tipova podataka
n Nazivi, prototipovi i ponašanja funkcija za rad sa prostornim podacima
(funkcije koje kao barem jedan od argumenata ili povratnu vrijednost
imaju geometrijski tip podataka)

Geoprostorne baze podataka 23


Drugi dio – Simple feature access – SQL Option

o Conformance – usklađenost sa standardom


n Da bi neka implementacija bila usklađena sa standardom,
treba zadovoljavati jedan od tri razreda usklađenosti drugog
dijela standarda, kao i odgovarajuće dijelove prvog dijela
standarda:
n SQL Implementacija tablica značajki pomoću standardnih
tipova podataka
o Pomoću numeričkih tipova za pohranjivanje geometrijskih
podataka i SQL/CLI komunikaciju
o Pomoću binarnih tipova za pohranjivanje geometrijskih podataka
i SQL/CLI komunikaciju
n SQL implementacija pomoću geometrijskih tipova podataka s
podrškom za tekstualnu i binarnu SQL/CLI komunikaciju

Geoprostorne baze podataka 24


Drugi dio – Simple feature access – SQL Option

o SQL implementation using Geometry Types

Geoprostorne baze podataka 25


Drugi dio – Simple feature access – SQL Option

CREATE TABLE SPATIAL_REF_SYS (


SRID INTEGER NOT NULL PRIMARY KEY,
AUTH_NAME CHARACTER VARYING,
AUTH_SRID INTEGER,
SRTEXT CHARACTER VARYING(2048)
)

o SRID – identifikator prostornog referentnog sustava


o AUTH_NAME – naziv standarda ili tijela koje je definiralo referentni
sustav
o AUTH_SRID – identifikator koji je AUTH_NAME dodijelilo referentnom
sustavu
o SRTEXT – WKT zapis referentnog sustava

Geoprostorne baze podataka 26


Drugi dio – Simple feature access – SQL Option
CREATE TABLE GEOMETRY_COLUMNS (
F_TABLE_CATALOG CHARACTER VARYING NOT NULL,
F_TABLE_SCHEMA CHARACTER VARYING NOT NULL,
F_TABLE_NAME CHARACTER VARYING NOT NULL,
F_GEOMETRY_COLUMN CHARACTER VARYING NOT NULL,
COORD_DIMENSION INTEGER,
SRID INTEGER NOT NULL
REFERENCES SPATIAL_REF_SYS,

CONSTRAINT GC_PK PRIMARY KEY


(F_TABLE_CATALOG, F_TABLE_SCHEMA,
F_TABLE_NAME, F_GEOMETRY_COLUMN)
)

o F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME – ime


tablice značajki koja sadrži prostorni atribut/stupac
o F_GEOMETRY_COLUMN – naziv prostornog atributa
o COORD_DIMENSION – dimenzija koordinatnog sustava
o SRID – indentifikator referentnog sustava

Geoprostorne baze podataka 27

You might also like