500 likes | 634 Views
Geoinformation IV. GIS-Seminar. SQL und Simple Features. Übersicht. SQL - relationale Datenbanken ... was ist das? kurze Wiederholung: Simple Features Feature Tables Speicherungsarten Anfragen an die Geometrie durch Methoden. SQL - was ist das?. S trucured Q uery L anguage
E N D
Geoinformation IV GIS-Seminar SQL und Simple Features
Übersicht • SQL - relationale Datenbanken ... was ist das? • kurze Wiederholung: Simple Features • Feature Tables • Speicherungsarten • Anfragen an die Geometrie durch Methoden Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
SQL - was ist das? • Strucured Query Language • Standard für relationale Datenbanken • IBM: SEQUEL (1970) SQL (ab 1980) • Sprache zur Definition und Manipulation von relationalen Datenbanken Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispieltabelle: Relationale Datenbank • 2-dimensionale Matrix • Inhalte: • Spalten: Attribute • Jede Zeile ein Feature • Eigenschaften • jede Spalte beinhaltet ein Attribut und hat einen Attributnamen • die Wertebereiche der Eintragungen sind elementar und nicht weiter zerlegbar • Reihenfolge der Spalten ist beliebig • Alle Zeilen (Tupel) sind paarweise verschieden Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Erinnerung: Geoinformation 4, Vorlesung 10 Simple Features Geometrie-Klassen-Hierarchie (OGC) Übersicht: Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
0-, 1- oder 2-dim. Geometrien Point MultiPoint Curve Line LineString MultiLineString MultiCurve LinearRing Polygon MultiPolygon Surface MultiSurface Geometry Collection 2-dimen- sional 0-dimensional 1-dimensional Simple Features Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Feature Table • Features sind räumliche Objekte • Feature Tables ähneln im Aufbau den vorhin beschriebenen relationalen Datenbanken • Jedes Feature wird in einer Zeile dargestellt • Darstellung und Speicherung der Simple Features wurde vom Open GIS Consortium (OGC) entwickelt Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Feature Table Es gibt drei Speicherungsarten der Feature Tables • SQL 92, unter Anwendung von a) numerischen b) binären SQL-Typen zur Speicherung der Geometrie • SQL 92, mit Geometrietypen Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
(0,60) (60,60) (30,60) GID 3 GID 4 (0,30) (60,30) ESEQ 2 ESEQ 2 GID 1 GID 2 (0,0) (30,0) (60,0) Beispiel 1: SQL92 - numerische Implementation (1) GID: geometry identifier ESEQ: element sequence number • ETYPE: primitive type -> Geometrietyp • 1 - Point • 2 - LineString • 3 - Polygon • ... SEQ: sequence number Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
SEQ 1 SEQ 2 Beispiel 1: SQL92 - numerische Implementation (2) (0,60) (60,60) (30,60) Darstellung der Geometrie GID 3 GID 4 (0,30) (60,30) ESEQ 2 ESEQ 2 GID 1 GID 2 (0,0) (30,0) (60,0) Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
(30,60) (0,60) (60,60) GID 3 GID 4 (0,30) (60,30) ESEQ 2 ESEQ 2 GID 1 GID 2 Beispiel 2: SQL92 - binäre Implementation X,Y -> Min, Max: Definition der bounding box WKBGeometrie: Stellt die Geometrie als eine Sequenz von unsigned integer oder double dar. (0,0) (30,0) (60,0) Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
SQL92 mit Geometrietypen • Zu jedem Geometrietyp wird eine Tabelle definiert, die nur Objekte des einen Geometrietyps enthält • basiert auf der Geometrie Klassen Hierarchie vom OGC • Anwendung von Methoden möglich Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Anfragen • Anfragen an die Geometrie werden in SQL durch vorgefertigte Methoden getätigt • Diese Methoden können nur im SQL 92 mit Geometrietypen benutzt werden • Es gibt Methoden, die • für alle Geometrien gelten Basis-Methoden • nur auf spezielle Geometrien angewendet werden können • Ausgaben sind im WKBGeometry Format Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Anfrage in SQL • Ein Anfrage in SQL92 -Form sieht folgendermaßen aus: Beispiel: Schnitte von Flurstücken mit einer Straße: SELECT Parcel.Name, Parcel.Id FROM Parcels, Street WHERE Intersects(Parcels.Location, Street.centerline) = 1 • Ausgabe: Alle Flurstücke, die von dieser Straße • geschnitten werden Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Basis-Methoden AnfrageAusgabe • Dimension ( ):Integer - Dimension des Objektes (0, 1 od. 2) • GeometryType ( ):String - Name der Geometrie • SRID ( ):Integer - ID für das Spatial Reference System • Envelope( ):Geometry - Bounding Box als Polygon • AsText( ):String - textuelle Repräsentation • AsBinary( ):Binary - binäre Repräsentation • IsEmpty( ):Integer - 1: true, 0: false, -1: unknown • IsSimple( ):Integer - 1: true, 0: false, -1: unknown • Boundary( ):Geometry - Grenze Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Test-Methoden für räumliche Beziehungen Test Beziehung • Equals():Integer - Gleichheit mit einer anderen Geometrie • Disjoint():Integer - Menge der gemeinsamen Punkte = 0 • Intersects():Integer - Schnitt mit einer anderen G. • Touches():Integer - Berührung mit einer anderen G. • Crosses():Integer - Kreuzung mit einer anderen G. • Within():Integer - innerhalb einer anderen Geometrie • Contains():Integer - Enthält eine andere G. • Overlaps():Integer - Überlappung mit einer anderen G. • Relate():Integer - Beziehung mit einer anderen G. (Beispiele siehe unter anderem Vorlesung 10, GIS III 2001) Ausgabe ist immer 1 für „true“, 0 für „false“ oder -1 für „unknown“! Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden, die Spatial Analysis unterstützen (1) AnfrageAusgabe • Distance():Double - kürzeste Distanz zu einer anderen Geometrie • Buffer():Geometry - Repräsentation aller Punkte, die einen kleineren oder gleichen Abstand wie den angegebenen von der Geometrie haben. • ConvexHull( ):Geometry - Repräsentation der konvexen Hülle • Intersection():Geometry - Repräsentation des Schnitts (AB) • Union():Geometry - Repräsentation der Vereinigten Punktmenge (AB) Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden, die Spatial Analysis unterstützen (2) AnfrageAusgabe • Difference():Geometry - Repräsentiert die Geometrie der nichtgemeinsamen Punkte (A-B) • SymDifference():Geometry - ist gleich der Vereinigung minus dem Schnitt ((A-B)(B-A)) Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - GeometryCollection AnfrageAusgabe • NumGeometries( ):Integer - die Anzahl der enthaltenen Geometrien • GeometryN():Geometry - die N-te Geometrie in der Collection Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - Point AnfrageAusgabe • X( ):Double - X-Koordinate • Y( ):Double - Y-Koordinate Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - Curve AnfrageAusgabe • Length( ):Double - Länge der Kurve • StartPoint( ):Point - Startpunkt • EndPoint( ):Point - Endpunkt • IsClosed( ):Integer - 1: „true“, wenn Startpunkt=Endpunkt 0: „false“ oder -1: „unknown“ • IsRing( ):Integer - 1: „true“, falls closed und simple ! 0: „false“ oder -1: „unknown“ „simple“: kein Punkt wird doppelt durchlaufen, mit Ausnahme des Start- und Endpunktes! Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - LineString, Line, LinearRing AnfrageAusgabe • NumPoints( ):Integer - Anzahl der Punkte im LineString • PointN(N:Integer):Point - Punkt n aus LineString l Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - MultiCurve AnfrageAusgabe • IsClosed( ):Integer - 1: „true“, wenn Startpunkt=Endpunkt 0: „false“ oder -1: „unknown“ • Length( ):Double - Länge der Kurve Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - Surface AnfrageAusgabe • Area( ):Double - Fläche des Surface • Centroid( ):Point - Schwerpunkt • PointOnSurface( ):Point - Punkt der garantiert im Surface liegt Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Methoden - Polygon AnfrageAusgabe • ExteriorRing( ):LineString - umgebender Ring • NumInteriorRing( ):Integer - Anzahl der inneren Ringe • InteriorRingN():LineString - N-te innere Ring Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Abschlusswort • Simple Features vom OGC nur zweidimensional • Zukunft: komplexe Geometrien • Spatial Schema Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Vielen Dank für eure Aufmersamkeit! Noch Fragen?
s e s e s s e e geschl./einf. geschl./nicht einf. einfach nicht einfach Line, LineString, LinearRing • ein Linestring ist eine Kurve (Curve), wenn zwischen den Punkten linear interpoliert wird • besteht ein LineString aus exakt zwei Punkten, so wird er als Line bezeichnet • Ist ein LineString „einfach“ und „geschlossen“, so wird er als LinearRing bezeichnet Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Curve • 1-dimensional • Sequenz von Punkten zwischen denen linear interpoliert wird Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
MultiCurve • 1 – dimensionale Geometrie • Elemente dieser Subklasse sind Kurven • Die Klasse wird als „einfach“ bezeichnet, wenn alle Elemente „einfach“ sind • Schnittpunkte dürfen nur in der Begrenzung zweier Elemente vorkommen • Begrenzung dieser Klasse sind all diejenigen Punkte, welche in einer ungeraden Anzahl der Teilelemente vorkommen • MultiCurve gilt als „geschlossen“, wenn alle Teilelemente „geschlossen“ sind Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
e2 e2 e2 e2 s2 s2 s1 s1 s1 s1 e1 s1 e1 e1 e1 s2 einfach Grenzen = {s1,e2} nicht einfach Grenzen = {s1,e1} geschlossen Grenzen = {Ø} MultiLineString • MultiCurve = MultiLineString, wenn Elemente LineStrings • (lineare Interpolation zwischen den Punkten) Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Polygon mit einem ... zwei ...bzw. drei Ringen Polygon • ebene Oberfläche, definiert durch eine äußere und 0 oder mehrere innere Grenzen • jede innere Grenze legt ein „Loch“ im Polygon fest • die Grenzen bestehen aus LinearRings • mehrere Grenzen dürfen sich nicht schneiden • Berührpunkte sind gestattet Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
MultiPolygon 1 • Subklasse, deren Elemente Polygone sind • Kennzeichen : • Die Innenräume und die Grenzen zweier Polygone dieser Klasse dürfen sich nicht schneiden • Sie dürfen sich an einer begrenzten Anzahl von Punkten berühren • MultiPolygon besteht aus einer geordneten, geschlossenen Ansammlung von Punkten • Die inneren Bereiche dieser Klasse sind nicht zusammenhängend • Die Anzahl der inneren Bereiche entspricht der Anzahl der Polygone Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
1 Polygon 3 Polygone 2 Polygone 2 Polygone MultiPolygon 2 • die Grenzen dieser Klasse bestehen aus einer Ansammlung geschlossener Kurven (LineString) • Jede Grenze wird exakt einem Polygon zugeordnet, welches sich in der Klasse befindet Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Surface • 2D – geometrisches Objekt • Zeichnet sich durch eine „äußere“ Grenze aus • Darüber hinaus können mehrere „innere“ Grenzen bestehen • Einfache Oberflächen (= Simple Surfaces) haben im 3D die gleiche Gestalt, wie ebene Oberflächen • Polyhedral Surfaces erhält man, indem man einfache Oberflächen entlang ihrer Grenzen miteinander „vernäht“ • diese müssen dann nicht mehr eben sein (3D) Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
MultiSurface • 2D Ansammlungen von Oberflächen • zwei verschiedene Oberflächen (Surfaces) dürfen sich nicht schneiden • ansonsten kein Multisurface sondern Surface • die Grenzen zweier Elemente können sich in einer begrenzten Anzahl von Punkten berühren • MultiSurface wird als abstrakte Klasse bezeichnet • Sie definiert verschiedene Vorgehensweisen für deren Unterklassen Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
MultiGeometry • Stellt eine Geometrie dar, die mehrere anderen Geometrien beeinhaltet Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
GEOGCS[‘GCS_North_American_1983’, DATUM[‘D_North_American_1983’, SPHEROID[‘GRS_1980’,6378137,298.257222101]], PRIMEM[‘Greenwich’,0], UNIT[‘Degree’,0.0174532925199433]] Textuelle Repräsentation (WKB) • Ausgabe ist für den Menschen lesbar • Beispiel: Ein String im geogr. Koordinatensystem für die UTM-Zone 10 im NAD83 Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
B=1 T=3 NR=2 NP=3 X1 Y1 X2 Y2 X3 Y3 NP=3 X1 Y1 X2 Y2 X3 Y3 Ring 2 Ring 1 WKB Polygon Binäre Repräsentation (WKB) • Zahlencode • zur maschinellen Weiterverarbeitung • Beispiel: Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Envelope Envelope( ):Geometry Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Envelope Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Envelope Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Envelope Ausgabe: Polygon, das die bounding box repräsentiert Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Boundary Boundary( ):Geometry Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Boundary Ausgabe: Polgon, das die Grenze NRW´s repräsentiert Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW: Buffer Buffer():Geometry: Repräsentation aller Punkte, die einen kleineren oder gleichen Abstand wie den angegebenen von der Geometrie haben. Z.B.: Umkreis von X Kilometern Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
X Beispiel - NRW: Buffer Buffer():Geometry: Repräsentation aller Punkte, die einen kleineren oder gleichen Abstand wie den angegebenen von der Geometrie haben. Z.B.: Umkreis von X Kilometern Ausgabe wäre in diesem Fall die Geometrie des grünen Kreises Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
Beispiel - NRW Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
A B B B B B A A A A A B B-A A-B B A (A-B)(B-A) B A Beispiele Intersection():Geometry Union():Geometry Difference():Geometry SymDifference():Geometry Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02