• Nie Znaleziono Wyników

MichałOkulewicz,AnetaRosłan AplikacjeiusługiSystemówInformacjiGeograficznej

N/A
N/A
Protected

Academic year: 2021

Share "MichałOkulewicz,AnetaRosłan AplikacjeiusługiSystemówInformacjiGeograficznej"

Copied!
52
0
0

Pełen tekst

(1)

Bazy danych Indeksy przestrzenne

Aplikacje i usługi Systemów Informacji Geograficznej

Michał Okulewicz, Aneta Rosłan

Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(2)

Bazy danych Indeksy przestrzenne

SQL/MM Spatial i indeksy przestrzenne

1 Bazy danych Typy obiektów Typy danych

Operacje przestrzenne

2 Indeksy przestrzenne k-d drzewo R-drzewo

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(3)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Przechowywanie danych przestrzennych w bazie danych I

Standardy

Simple Feature Access (Simple Features) - standard OGC oraz ISO 19125:2004

SQL Multimedia and Application Packages (SQL/MM) - standard ISO/IEC 13249-3:2011 SQL/MM Spatial

Zawartość

Definicje sposobu przechowywania danych/reprezentacji danych jako tekst (WKT) i dane binarne (WKB)

Definicje możliwych operacji przestrzennych

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(4)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Przechowywanie danych przestrzennych w bazie danych II

Przykład

(E)WKB -

0101000020E61000009A9999999999F13F00000000000029C0 Kolejność bajtów (little/big endian), Typ (01 = punkt), Odwzorowanie, Pierwsza współrzędna, Druga współrzędna.

(E)WKT - SRID=4326;POINT(1.1 -12.5)

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(5)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Systemy Zarządzania Bazą Danych implementujące SQL/MM Spatial

MS SQL Server (od wersji 2008)

Oracle Spatial (dodatek do wersji Enterprise)

PostGIS (rozszerzenie PostgreSQL)

i inne (w tym MySQL czy SQLite)

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(6)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Typy obiektów

Punkty - POINT(-118.4079 33.9434)

Linie - LINESTRING(-118.4079 33.9434, 2.5559 49.0083)

Wielokąty - POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))

Bryły - POLYHEDRALSURFACE Z ( ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)), ((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)), ((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1)) ))

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(7)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Typy danych

Geometry - obiekty przestrzenne we współrzędnych w danym odwozorowaniu rozpatrywane w kartezjańskim układzie współrzędnych

Geography - obiekty przestrzenne rozpatrywane na sferze (WGS 84)

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(8)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Operacje przestrzenne

Operacje na zbiorach

Przecięcie

Suma

Zawieranie

Tworzenie buforu

Operacje geometryczne

Odległość

Powierzchnia

Inne

Konwersja z i do KMLa

Konwersja z i do GMLa

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(9)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Przykłady zapytań przestrzennych I

Źródło przykładów 1 Źródło przykładów 2

Tworzenie bazy danych CREATE TABLE augis.dane (

point geometry(Point,4326), line geometry(LineString,4326), geopoint geography(Point)

)

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(10)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Przykłady zapytań przestrzennych II

Wstawianie danych

INSERT INTO augis.bus stops (name, point)

VALUES (

’Politechnika 01’,

ST GeometryFromText(’POINT(21.0113 52.2200)’,4326) )

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(11)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Przykłady zapytań przestrzennych III

Wyszukiwanie przestrzenne SELECT augis.roads.name FROM augis.roads

WHERE ST Intersects(

(SELECT point

FROM augis.bus stops

WHERE augis.bus stops.name = ’Politechnika 01’), line);

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(12)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Przykłady zapytań przestrzennych IV

Pomiary przestrzenne SELECT

augis.roads.name as street,

ST Length(line::geography) as length, augis.bus stops.name as bus stop, ST Distance

(point,

line) as cartesian, ST Distance

(point::geography,

line::geography) as meters FROM augis.roads, augis.bus stops;

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(13)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(14)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(15)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(16)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(17)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(18)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(19)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach przestrzennych

ST Union(geometry),ST Union(geometry A, geometry B), ST Union(geometry[ ]) - suma zbiorów,

ST Difference(geometry A, geometry B) - różnica zbiorów,

ST SymDifference(geometry A, geometry B) - różnica symetryczna,

ST Intersection(geometry A, geometry B) - przecięcie zbiorów,

ST Buffer(geometry A, float distance) - tworzenie bufora wokół obiektu,

ST ConvexHull(geometry A) - tworzenie otoczki wypukłej,

ST Simplify(geometry A, float tolerance) - tworzenie uproszczonej reprezentacji obiektu.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(20)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(21)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(22)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(23)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(24)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(25)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(26)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(27)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane operacje na obiektach geography

ST AsSVG(geography) - zwraca fragment SVG odpowiadający obiektowi,

ST AsGML(geography) - zwraca fragment GML odpowiadający obiektowi,

ST AsKML(geography) - zwraca fragment KML odpowiadający obiektowi,

ST AsGeoJson(geography) - zwraca fragment JSONa odpowiadający obiektowi,

ST Distance(geography, geography) - zwraca minimalną odległość między obiektami,

ST Area(geography) - zwraca obszar obiektu,

ST Length(geography) - zwraca długość obiektu,

ST Transform(geography, srid) - zwraca obiekt w odwzorowaniu o kodzie EPSG:srid.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(28)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(29)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(30)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(31)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(32)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(33)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(34)

Bazy danych Indeksy przestrzenne

Typy obiektów Typy danych Operacje przestrzenne

Wybrane zapytania przestrzenne

ST Intersects(geometry A, geometry B) - sprawdza czy A przecina się z B,

ST Touches(geometry A, geometry B) - sprawdza czy A ma punkt wspólny wyłącznie z brzegiem B,

ST Crosses(geometry A, geometry B) - sprawdza czy A przecina B,

ST Disjoint(geometry A, geometry B) - sprawdza czy A i B są rozłączne,

ST Contains(geometry A, geometry B) - sprawdza czy A zawiera całkowicie B,

ST Within(geometry A, geometry B) - sprawdza czy A całkowicie zawiera się w B,

ST DWithin(geometry A, geometry B, float radius) - sprawdza czy A całkowicie zawiera się w obiekcie B

poszerzonym o radius.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(35)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Indeksy przestrzenne

Dane przestrzenne przenoszą problem efektywnego

wyszukiwania w zbiorach danych w nowy wymiar (dosłownie).

Jak poprawić operacje przestrzenne bez indeksu przestrzennego?

Można obliczyć współrzędne ograniczające każdy obszar i na nowych kolumnach zbudować klasyczny indeks.

Znacznie poprawi operacje na zbiorach, w niewielkim stopniu poprawi wyszukiwanie najbliższych obiektów.

W praktyce tworzy się do tego zadania specjalne struktury danych: k-d drzewa, R-drzewa, X-drzewa, . . .

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(36)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Indeksy przestrzenne

Dane przestrzenne przenoszą problem efektywnego

wyszukiwania w zbiorach danych w nowy wymiar (dosłownie).

Jak poprawić operacje przestrzenne bez indeksu przestrzennego?

Można obliczyć współrzędne ograniczające każdy obszar i na nowych kolumnach zbudować klasyczny indeks.

Znacznie poprawi operacje na zbiorach, w niewielkim stopniu poprawi wyszukiwanie najbliższych obiektów.

W praktyce tworzy się do tego zadania specjalne struktury danych: k-d drzewa, R-drzewa, X-drzewa, . . .

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(37)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Indeksy przestrzenne

Dane przestrzenne przenoszą problem efektywnego

wyszukiwania w zbiorach danych w nowy wymiar (dosłownie).

Jak poprawić operacje przestrzenne bez indeksu przestrzennego?

Można obliczyć współrzędne ograniczające każdy obszar i na nowych kolumnach zbudować klasyczny indeks.

Znacznie poprawi operacje na zbiorach, w niewielkim stopniu poprawi wyszukiwanie najbliższych obiektów.

W praktyce tworzy się do tego zadania specjalne struktury danych: k-d drzewa, R-drzewa, X-drzewa, . . .

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(38)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Indeksy przestrzenne

Dane przestrzenne przenoszą problem efektywnego

wyszukiwania w zbiorach danych w nowy wymiar (dosłownie).

Jak poprawić operacje przestrzenne bez indeksu przestrzennego?

Można obliczyć współrzędne ograniczające każdy obszar i na nowych kolumnach zbudować klasyczny indeks.

Znacznie poprawi operacje na zbiorach, w niewielkim stopniu poprawi wyszukiwanie najbliższych obiektów.

W praktyce tworzy się do tego zadania specjalne struktury danych: k-d drzewa, R-drzewa, X-drzewa, . . .

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(39)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Indeksy przestrzenne

Dane przestrzenne przenoszą problem efektywnego

wyszukiwania w zbiorach danych w nowy wymiar (dosłownie).

Jak poprawić operacje przestrzenne bez indeksu przestrzennego?

Można obliczyć współrzędne ograniczające każdy obszar i na nowych kolumnach zbudować klasyczny indeks.

Znacznie poprawi operacje na zbiorach, w niewielkim stopniu poprawi wyszukiwanie najbliższych obiektów.

W praktyce tworzy się do tego zadania specjalne struktury danych: k-d drzewa, R-drzewa, X-drzewa, . . .

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(40)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

k-d drzewo

Proste w implementacji

Kolejne podziały są dokonywane wg kolejnych współrzędnych

Może być mocno niezbalanasowane

Źródło obrazków: en.wikipedia.org

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(41)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

R-drzewo

Zawsze zbalansowane

Dodawanie nowego punktu wg zasady najmniejszego powiększania pola prostokątów

W większych wymiarach wzajemne pokrywanie się hiperkostek psuje jego wydajność

Źródło obrazków: en.wikipedia.org

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(42)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

B-drzewo / B+drzewo

Zawsze zbalansowane

Uporządkowane elementy na stronach (węzłach)

Dostosowane do przechowywania na dysku

Wartości w liściach (B+drzewo)

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(43)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Operacje na B-drzewie (M = 2) I

Źródło obrazków: de.wikipedia.org

Źródło obrazków: de.wikipedia.org

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(44)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Operacje na B-drzewie (M = 2) II

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(45)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Cechy R-drzew

Zawsze zbalansowane

Dostosowane do przechowywania na dysku

Na stronach przechowuje nieuporządkowane hiperprostokąty ograniczające obiekty przestrzenne

Wartości w liściach

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(46)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Operacje na R-drzewie I

Lista operacji

Wyszukiwanie obiektów przecinających się

Wstawienie nowego elementu

Przebudowanie drzewa

Wyszukiwanie obiektów przecinających się

Na każdym poziomie odrzucanie z dalszego przeszukiwania tych hiperprostokątów, które nie przecinają się z hiperprostokątem obiektu wyszukującego

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(47)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Operacje na R-drzewie II

Wstawienie nowego elementu

Na każdym poziomie nie będącym liściem odnajdujemy

hiperprostopadłościan, którego miara powiększy się jak najmniej po dodaniu do niego nowego elementu.

Przebudowanie drzewa

Ze względu na nieuporządkowanie elementów na stronie jest to potencjalnie najbardziej kosztowna operacja (aczkolwiek

wykonywana rzadko: tylko przy przepełnieniu bądź niedopełnieniu strony).

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(48)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Podział strony I

Sprawdzenie wszystkich możliwych podziałów

Sprawdzenie wszystkich możliwych podziałów hiperprostokątów na dwa zbiory. Wybór takich, których suma miar hiperprostokątów ograniczających będzie najmniejsza.

Wykładnicza złożoność względem rozmiaru strony.

Wybór najlepszej pary

Sprawdzenie wszystkich par hiperprostokątów. Wybór takich, których miara hiperprostokąta ograniczającego pomnieszona o sumę miar hiperprostokątów wejściowych jest największa.

Przypisanie kolejnych hiperprostokątów wg reguły najmniejszego wzrostu miary.

Kwadratowa złożoność względem rozmiaru strony.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(49)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Podział strony II

Uproszczony wybór najlepszej pary

Dla każdego z wymiarów znalezienie takiej pary hiperprostokątów, która jest od siebie względnie najdalej. Wybór tej pary jako pary inicjującej podział (analogicznie jak wcześniej).

Liniowa złożoność względem rozmiaru strony.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(50)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Wykorzystanie indeksu w PostgreSQL

Przykład: 100 000 losowych czworokątów.

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(51)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Wykorzystanie indeksu w PostgreSQL I

Utworzenie tabeli

CREATE TABLE data.wielokaty (

id serial primary key, poly geometry(Polygon) );

Utworzenie indeksu

CREATE INDEX wielokaty gix

ON data.wielokaty USING GIST (poly);

VACUUM ANALYZE data.wielokaty;

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

(52)

Bazy danych Indeksy przestrzenne

k-d drzewo R-drzewo

Wykorzystanie indeksu w PostgreSQL II

Zapytanie wykorzystujące indeks SELECT wiel1.id

FROM data.wielokaty wiel1, data.wielokaty wiel2 WHERE

wiel1.poly && wiel2.poly AND

ST INTERSECTS(wiel1.poly, wiel2.poly) AND wiel2.id = 300403

Michał Okulewicz, Aneta Rosłan Aplikacje i usługi GIS

Cytaty

Powiązane dokumenty

Trwałe, zapisane w bazie danych (CREATE TABLE), modyfikowalne (INSERT, UPDATE, DELETE).

OpenLayers is not strictly connected with any spatial data source, but typically its base layer is based on the OpenStreetMap

• Aplikacja lokalizująca telefon w Gmachu MiNI (wykorzystanie modelu statystycznego, wizualizacja wszystkich użytkowników, lokalizacja pojedynczego telefonu). • Generowanie panoram

[INSPIRE] Dane odnoszące się bezpośrednio lub pośrednio do określonego położenia lub obszaru geograficznego.. Typy geometrycznych

Opisywanie Ziemi Odwzorowanie kartograficzne Systemy odniesień przestrzennych Mapy Źródła i materiały?. Podstawy kartograficzne

Jego średnica jest równa średnicy kuli, a samo koło dzieli ją na dwie symetryczne połowy zwane półkulami.. Najkrótsza odległość między

Usługa Web Map Service odpowiada za udostępnianie danych przestrzennych w postaci rastrowej (istnieją wyjątki) oraz informacji o obiektach znajdujących się w konkretnym punkcie.

OpenLayers nie jest ściśle powiązane z żadnym źródłem danych, ale najczęściej jako warstwę podkładową wykorzystuje OpenStreetMap. Lista