Przestrzenne bazy danych. Funkcje geometryczne

Podobne dokumenty
Przestrzenne bazy danych. Funkcje relacji przestrzennych

Przestrzenne bazy danych. Definicja i cechy przestrzennych baz danych

Przestrzenne bazy danych. Wstęp do przestrzennych baz danych

Przestrzenne bazy danych PostGIS

Przestrzenne bazy danych. Analizy przestrzenne

Przestrzenne bazy danych. Typy obiektów przestrzennych

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

Zarządzanie danymi przestrzennymi. Analizy przestrzenne

MULTILINESTRING MULTILINESTRING((11 5, 7 4, 3 9), (5 3, 2 7, 6 5)) MULTIPOLYGON MULTIPOLYGON(((0 0, 5 5, 10 0, 0 0)), ((3 2, 5 1, 7 2, 3 2)))

Relacyjne bazy danych. Podstawy SQL

Zarządzanie danymi przestrzennymi. Rozwiązywanie problemów przestrzennych

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Oracle PL/SQL. Paweł Rajba.

Relacyjne bazy danych. Podstawy SQL

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

Język SQL, zajęcia nr 1

Programowanie w Ruby

Dane przestrzenne w relacyjnych bazach danych

Standard SQL/MM: SQL Multimedia and Application Packages

Multimedialne bazy danych. Andrzej Łachwa, WFAiIS UJ 2011

Standard SQL/MM. Wykład prowadzi: Marek Wojciechowski. Standard SQL/MM. Zaawansowane systemy baz danych - ZSBD

Wykład 6. SQL praca z tabelami 3

Oracle11g: Wprowadzenie do SQL

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

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

Modelowanie wymiarów

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wykład 05 Bazy danych

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

Obiektowe bazy danych

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Bazy danych 7. SQL podstawy

Wykład 5. SQL praca z tabelami 2

Baza danych dla potrzeb zgłębiania DMX

Struktura drzewa w MySQL. Michał Tyszczenko

Model semistrukturalny

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

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

OPIS PRZEDMIOTU ZAMÓWIENIA

Dr Michał Tanaś(

Zastosowanie relacyjnych baz danych w Systemach Informacji Geograficznej

Przykładowa baza danych BIBLIOTEKA

Przestrzenne bazy danych Podstawy języka SQL

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Systemy GIS Tworzenie zapytań w bazach danych

15. Funkcje i procedury składowane PL/SQL

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

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

RELACYJNE BAZY DANYCH I ICH ZNACZENIE W SYSTEMACH INFORMACJI GEOGRAFICZNEJ

GIS. Grzegorz Chilkiewicz

Projektowanie systemów baz danych

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

Bazy danych. Polecenia SQL

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Post-relacyjne bazy danych

Ref. 7 - Język SQL - polecenia DDL i DML

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

BAZA DANYCH SIECI HOTELI

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

Wstęp do relacyjnych baz danych. Jan Bartoszek

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Operacja PIVOT w języku SQL w środowisku Oracle

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

ZAŁĄCZNIK NR 5 - GRUPA PRODUKTÓW 5: OPROGRAMOWANIE BAZODANOWE

Multimedialne bazy danych - laboratorium

SIECI KOMPUTEROWE I BAZY DANYCH

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

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

3. Standaryzacja modeli danych przestrzennych

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

GML w praktyce geodezyjnej

GIS i dane geograficzne w bazach relacyjnych

Dane przestrzenne Ćwiczenia laboratoryjne (6)

PROJEKTOWANIE BAZ DANYCH Z WYKORZYSTANIEM NIERELACYJNYCH TYPÓW DANYCH

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

GIS i dane geograficzne w bazach relacyjnych

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

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Przydatne sztuczki - sql. Na przykładzie postgres a.

Widok Connections po utworzeniu połączenia. Obszar roboczy

Temat projektu: mpk-database

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Ćwiczenie 2. Opcja przestrzenna bazy danych

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Hurtownia Świętego Mikołaja projekt bazy danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Oracle PL/SQL. Paweł Rajba.

Transkrypt:

Przestrzenne bazy danych Funkcje geometryczne

SQL/MM SQL/MM (SQL Multimedia and Application Packages) standard uzupełniający język SQL o obsługę zaawansowanych typów danych, składa się części: Framework zawiera ona definicje i koncepcje wspólne dla pozostałych, specjalistycznych części standardu. Dotyczy między innymi sposobu, w jaki inne części standardu SQL/MM wykorzystują mechanizm obiektowych typów SQL. Full-Text definiuje typy danych do składowania dużych obiektów tekstowych, skupiając się na wsparciu dla operacji wyszukiwania zadanych wzorców w tekście. Spatial definiuje typy danych wspierające aplikacje przetwarzające dane przestrzenne. W obecnej wersji standardu wsparcie ograniczone jest do obiektów 0- wymiarowych (punktów), 1-wymiarowych (linii) i 2-wymiarowych (figur płaskich). Still Image definiuje typy danych do obsługi obrazów w bazie danych, ze szczególnym naciskiem na wyszukiwanie obrazów ze względu na zawartość. Data mining eksploracja danych, wyszukiwanie wzorców i reguł w dużych zbiorach danych

SQL/MM Spatial Zgodnie z standardem SQL/MM wszystkie obiekty i funkcje posiadają prefix ST_ (spatial type) Hierarchia typów obiektów zgodna z SQL

Funkcje geometryczne (jednoobiektowe) Funkcje konstruujące Funkcje exportujące dane do zewnętrznych formatów Funkcje pobierające i ustawiające atrybuty geometrii Funkcje rozdzielające obiekty geometryczne Funkcje łączące obiekty geometryczne Funkcje pomiarowe Funkcje kontrolujące poprawność geometrii

Funkcje konstruujące Tworzenie obiektów geometrycznych z WKT i WKB (well-known text i binary) Tworzenie obiektów geometrycznych z istniejących już obiektów

Tworzenie obiektów geometrycznych z WKT i WKB (well-known text i binary) ST_GeomFromText - funkcja do tworzenia obiektów 2d (dostępna w innych SQL/MM) INSERT INTO my_geometries (geom) VALUES (ST_GeomFromText('POINT(-100 28)',4326)), (ST_GeomFromText('LINESTRING(-80 28, -90 29)',4326)), (ST_GeomFromText('POLYGON((10 28, 9 29, 7 30, 10 28)),4326)); ST_GeomFromEWKT - funkcja dekodująca układ odniesienia i obsługująca wymiary 3d i 4d (dostępna jedynie w PostGIS) INSERT INTO my_geometries (geom) VALUES (ST_GeomFromEWKT('SRID=4326;POINT(-100 28)')), (ST_GeomFromEWKT('SRID=4326;LINESTRING(-80 28,-90 29)')), (ST_GeomFromEWKT('SRID=4326;POLYGON((10 28, 9 29, 7 30, 10 28)); ST_GeomFromWKB funkcja do tworzenia obiektów na podstawie binarnej reprezentacji danych (dostępna w innych SQL/MM) SELECT ST_GeomFromWKB(E'\\001\\001\\000\\000\\000\\321\\256B\\312O\\304Q\\300\\34 7\\030\\220\\275\\336%E@',4326);

Funkcje exportujące Funkcje eksportujące do WKT i WKB (ST_AsText, ST_AsBinary) Keyhole markup language (KML) format oparty XML stosowany w Google Maps Geography markup language (GML) format oparty na XML zgodny z OGC Geometry JavaScript object notation (GeoJSON) Scalar vector graphics (SVG) format geometrii 2d bez SRID Geohash format przechowujący informacje o współrzędnych SELECT ST_AsGML(geom,5) As GML, ST_AsKML(geom,5) As KML, ST_AsGeoJSON(geom,5) As GeoJSON, ST_AsSVG(geom,0,5) As SVG_Absolute, ST_AsSVG(geom,1,5) As SVG_Relative, ST_GeoHash(geom) As Geohash FROM (SELECT ST_GeomFromText('LINESTRING(2 48, 0 51)', 4326) As geom) foo;

Funkcje zarządzające atrybutami geometrii Ustawiania układu odniesienia (SRID) Transformacja współrzędnych Nazwa typu geometrii Ustawianie współrzędnych i wymiarów przestrzennych

Ustawianie układu odniesienia (SRID) ST_SRID() pobieranie układu odniesienia (zgodna z SQL/MM) ST_SetSRID() ustawianie układu odniesienia (zgodna z SQL/MM)

Transformacja współrzędnych ST_Transform() konwertuje współrzędne z jednego układu współrzędnych do drugiego przy użyciu biblioteki proj4 Zmiana współrzędnych z układu WGS-84 Lon Lat na WGS-84 UTM Zone 18N SELECT ST_AsEWKT(ST_Transform(ST_GeomFromEWKT('SRID=4326;LINES TRING(-73 41, -72 42)'), 32618)); Wynik działania to nowe współrzędne: SRID=32618;LINESTRING(668207.88519421 4540683.52927698, 748464.920715711 4654130.89132385)

Nazwa geometrii ST_geometryType zwraca nazwę typu POLYGON jako ST_Polygon zgodnie z SQL/MM SELECT ST_GeometryType(geom) As new_name, GeometryType(geom) As old_name FROM (VALUES (ST_GeomFromText('POLYGON((0 0, 1 1, 0 1, 0 0))')), (ST_Point(1, 2)), (ST_MakeLine(ST_Point(1, 2), ST_Point(1, 2))), (ST_Collect(ST_Point(1, 2), ST_Buffer(ST_Point(1, 2),3))), (ST_LineToCurve(ST_Buffer(ST_Point(1, 2), 3))), (ST_LineToCurve(ST_Boundary(ST_Buffer(ST_Point(1, 2), 3)))), (ST_Multi(ST_LineToCurve(ST_Boundary(ST_Buffer(ST_Point(1, 2),3))))) ) As foo (geom);

Wymiary układu i wymiary obiektu ST_CoordDim() pobiera wymiary układu odniesiona ST_Dimension() pobiera wymiary obiektu geometrycznego

Funkcje pomiarowe Pomiary obiektów geometrycznych na powierzchni płaskiej (planar measures) Pomiary obiektów geometrycznych na powierzchni kuli (spherical measures)

Pomiary obiektów geometrycznych na powierzchni płaskiej ST_Length, ST_Length3D pomiary linii, w 3D dodatkowo w wymiarze z, wyniki pomiarów są uzależnione od układu odniesienia ST_Distance odlegośći między obiektami ST_Area powierzchnia poligonów ST_Perimeter obwód poligonów i zamkniętych linii

ST_Length SELECT feature_type, sum(st_length(geom))/1000 AS length_km FROM gis.wp_linestrings GROUP BY feature_type ORDER BY length_km DESC;

Pomiary obiektów geometrycznych i geograficznych na powierzchni kuli i geoidy Pomiary typu geograficznego są wykonywane w przestrzeni układu w stopniach WGS-84 lan lat ale wyniki zwracane są w metrach ST_Length(geography, boolean) pomiar długości linii na geoidzie (true) lub idealnej kuli (false) ST_Length_Spheroid(geometry,boolean) pomiar długości linii na geoidzie lub idealnej kuli (false) ST_Distance(geography, geography) - pomiar najkrótszej odległości na modelu geoidy, ST_Distance_Spheroid(geometry, geometry,spheroid) - pomiar na modelu geoidy, ST_Distance_Sphere(geometry,geometry) - pomiar na idealnej kuli

Pomiary długości na powierzchni kuli i geoidy

Pomiary odległości na powierzchni kuli i geoidy

Funkcje dekompozycyjne ST_Box2D, ST_Envelope ST_X, ST_Y ST_Boundary ST_Centroid, ST_PointOnSurface ST_Dump, ST_GeometryN

ST_Box2D Funkcja ST_Box2D generuje najmniejszy prostokąt (nie jest on obiektem geometrycznym), do którego można wpisać obiekt. Aby uzyskać prostokąt jako obiekt geometryczny należy zastosować funkcję ST_Envelope

Rozdzielanie obiektów ST_Boundary ST_Boundary pobiera dowolny obiekt geometryczny i zwraca obiekty będące składnikami pobieranego obiektu np. Otwarta linia zwraca wielopunkt składający się z punktu początkowego i punktu końcowego Poligon zwraca linię obejmującą obszar poligonu Poligon z pustymi polami zwraca wielolinię

Rozdzielanie obiektów ST_Boundary

Rozdzielanie obiektów (ST_Boundary) INSERT INTO polygon_poznan(name,way) VALUES ('obwód Jeziora Maltańskiego', (SELECT ST_Boundary(way) FROM planet_osm_polygon WHERE name='jezioro Maltańskie'));

Rozdzielanie obiektów ST_Centroid ST_Centroid, ST_PointOnSurface zwracają punkt centralny obiektu geometrycznego Gwiazdka pokazuje umiejscowienie punktu ST_Centroid ST_PointOnSurface

Rozdzielanie obiektów ST_Centroid INSERT INTO point_poznan(name,way) VALUES ('Jezioro Maltańskie', (SELECT ST_Centroid(way) FROM planet_osm_polygon WHERE name='jezioro Maltańskie'));

Rozbijanie obiektów złożonych ST_Dump() -rozbija złożone do najprostszej postaci ST_GeometryN() - rozbija obiekty złożone na prostsze tylko o jeden poziom

ST_Dump

ST_GeometryN

Tworzenie poligonów z innych obiektów ST_MakePolygon tworzy poligon z zamkniętej linii, akceptuje dodatkowo zamknięte linie wewnętrzne ST_BuiltArea tworzy poligon z linnii, wielolinii, poligonów i wielopoligonów w efekcie powstają poligony i wielopoligony ST_Polygonize funkcja agregująca, pobiera linie i zwraca wszystkie możliwe kombinacje poligonów INSERT INTO polygon_poznan(name,way) VALUES ('obręb_gdańskiej', (SELECT ST_AsEWKT(ST_Polygonize(way)) FROM planet_osm_line WHERE name='gdańska'));

Kontrola poprawności geometrii (validity) 6 5 7 2 3 4 1 9 8

Funkcje geometryczne relacyjne

Przestrzenne relacje między obiektami W zwykłych bazach danych można wykonywać analizy relacji między takimi obiektami jak liczby (dodawanie, mnożenie i inne obliczenia), łańcuchy znaków (łączenie, rozdzielanie, porównywanie i inne) W przestrzennej bazie danych można dokonywać analiz relacji pomiędzy obiektami geometrycznymi umiejscowionymi w przestrzeni geograficznej Funkcje do analiz przestrzennych relacji akceptują na wejściu dwa obiekty geometryczne, a na wyjściu zawracają wartość logiczną lub inny obiekt geometryczny Jeżeli chcemy np. sprawdzić czy jeden obiekt zwiera w swoim obszarze inny obiekt możemy użyć funkcji ST_Contains ST_Contains(geom1, geom2) co można czytać geom1 contains geom2

Analiza relacji między obiektami Przecinanie się obiektów Porównywanie obiektów Najbliższe sąsiedztwo Relacje warunkowe

Relacja przecinania się Interior - wnętrze obiektu Boundary - granica Exterior - obszar zewnętrzny

Przecinanie się obiektów ST_Intersects funkcja pobiera dwa obiekty i zwraca prawdę, jeżeli obiekty przecinają się ST_Intersection funkcja pobiera dwa obiekty i zwraca obiekt geometryczny będący wspólnym obszarem SELECT ST_Intersects(g1.geom1,g1.geom2) As they_intersect, GeometryType(ST_Intersection(g1.geom1, g1.geom2)) As intersect_geom_type FROM (SELECT ST_GeomFromText('POLYGON((2 4.5,3 2.6,3 1.8,2 0,- 1.5 2.2,0.056 3.222,-1.5 4.2,2 6.5,2 4.5))') As geom1, ST_GeomFromText('LINESTRING(-0.62 5.84,-0.8 0.59)') As geom2) As g1;

Specyficzne przypadki przecinania się obiektów Funkcja ST_Contains - Jeżeli obiekt A jest w wewnątrz obiektu B to obiekt B zawiera (contains) obiekt A - Obiekt A nie może przecinać (intersects) się z granicą obiektu B - Obiekt geometryczny nie zawiera swojej granicy tylko to co znajduje się wewnątrz

Przykład zastosowania ST_Contains CREATE TABLE example_set(ex_name varchar(150) PRIMARY KEY, the_geom geometry); INSERT INTO example_set(ex_name, the_geom) VALUES ('A polygon with hole', ST_GeomFromText('POLYGON ((110 180, 110 335, 184 316, 260 335, 260 180, 209 212.51, 110 180), (160 280, 200 240, 220 280, 160 280))') ), ('A point',st_geomfromtext('point(110 245)')), ('A linestring',st_geomfromtext('linestring(110 245,200 260, 227 309)')), ('A multipoint',st_geomfromtext('multipoint(110 245,200 260)')) ;

Przykład ST_Contains SELECT A.ex_name As a_name, B.ex_name As b_name, ST_Contains(A.the_geom, B.the_geom) As a_co_b, ST_Intersects(A.the_geom, B.the_geom) As a_in_b FROM example_set As A CROSS JOIN example_set As B;

ST_Contains: Wnioski Wszystkie obiekty przecinają się Poligon nie zawiera wielopunktu, ale wielopunkt przecina się z poligonem Linia nie zawiera punktu znajdującego się na jej końcu ale zawiera wielopunkt Jeżeli obiekt B znajduje się na granicy obiektu A, to obiekt A nie zawiera obiektu B Wszystkie obiekty zawierają samych siebie