Erweiterung zum georelationalen Modell 95 Relationales Modell kennt wenige Datentypen: Characters, Numbers Geo-(objekt)-relationales Modell fügt weitere Datentypen mit entsprechenden Funktionen hinzu – Datentypen mit Raumbezug – Funktionen zur geometrischen Verarbeitung 96 Implementierung Definition neuer Datentypen (UDT) Definition der Funktionen/Prozeduren (UDF|SP), basierend auf UDTs – Grundlage algorithmische Geometrie Simple Feature Definition for SQL Standard (Open GIS) – definiert notwendige Datentypen/ Funktionen – Legt Datenrepräsentation fest – Grundlage für Datenaustausch 97 Prinzip Standard-SQL und räumliche SQL-Befehle können frei gemischt werden. Beispiel: Gibt es Bäche, welche die Siedlungsgebietgrenze von Jena durchschneiden? select l.name, l.description, w.name from landuse l, water w where intersects(l.landuse, w.water) = 1 and l.description = ‚Siedlung' and w.name like '%Jena%' 98 Architektur Geografische Datentypen - Punkte - Linien - Polygone (- Raster) Database Management System Metadaten Management Projektionssysteme räumlicher Index: R-Tree Geografische Funktionen - Topologie - Geometrie - Analyse - Projektionen IBM DB2 V. 5.2, V. 7.1 Universal Database Oracle 8i, PostgreSQL Rasterdaten-Verwaltung 99 GEOMETRY Generischer Typ für geografische Objekte Ist der Basistyp(-klasse) für alle anderen geometrischen Typen – Polymorphie – Bsp. Funktion Difference liefert Geometry, das konkrete Ergebnis kann vom Typ point, line oder polygon sein GEOMETRYCOLLECTION 10 0 Menge geometrische Objekte – homogen (several points, several circles) – heterogen (mixing points, polygons, oder andere geometrycollections) Integer NumGeometries(GEOMETRY COLLECTION) GEOMETRY GeometryN(GEOMETRY COLLECTION, integer) WKT (Well-Known Text representation) 10 1 Weg zur Visualisierung von geometrischen Objekten Darstellung des Types (point, linestring, polygon...) und der zugehörigen Koordinaten Beachte bei großen Objekten WKT Darstellung ist wesentlich grösser! Beispiele WKT POINT (2.5 7.8) CIRCLE (2.000 1.000, 3.000) CIRCULARARC (2.000 1.000, 3.000 2.000, 2.000 3.000) POLYGON ((2 2, 6 2, 6 6, 2 6, 2 2 ), (3 3, 4 4, 3 4, 3 3)) 10 2 Well-Known Binary representation (WKB) 10 3 Präsentation einer Geometrie als zusammenhängender Bytestrom. Ermöglicht den Datenaustausch zwischen bspw. einem ODBC Klienten und der Datenbank in Binärform. Prädikate für geometrische Elemente 10 4 Liefern als Ergebnis 0 oder 1 (falsch/wahr) Beispiel: – Verläuft die Bundesstrasse 7 durch das Jenaer Stadtgebiet – SELECT crosses(s.strassen,o.ort) FROM strassen_line s, ort_poly o where s.art=„Bundesstrasse“ and s.nummer=„7“ and o.name=„Jena“ PostGIS / PostgreSQL Erweiterung für PostgreSQL – src/contrib/ – Implementierung mittels GEOS GEOMETRY – Point, Line, Polygon, Multi* – Functions – Indexes http://postgis.refractions.net 10 5 PostGIS Types . POINT LINESTRING .. POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON GEOMETRYCOLLECTION 10 6 PostGIS Types 10 7 id | geometry | name ------+---------------------------+-------------1294 | POINT(1199437.8 382509.2) | Brighton Ave 1295 | POINT(1199369.3 382741.7) | York Pl 1296 | POINT(1199494.8 382751) | Prospect Pl PostGIS Funktionen Single Geometry – – – – – – – – Float : Length(Geometry) Float : Area(Geometry) Integer : NumGeometries(Geometry) Integer : NumPoints(Geometry) Geometry : Buffer(Geometry,Float) Point : PointN(Geometry) Text : AsText(Geometry) ByteA : AsBinary(Geometry) 10 8 PostGIS Funktionen 10 9 Multiple Geometry – – – – – – – Float : Distance(Geometry,Geometry) Boolean : Touches(Geometry,Geometry) Boolean : Intersects(Geometry,Geometry) Boolean : Disjoint(Geometry,Geometry) Geometry : Intersection(Geometry,Geometry) Geometry : GeomUnion(Geometry,Geometry) Geometry : Difference(Geometry,Geometry)