Kein Folientitel

Download Report

Transcript Kein Folientitel

Institut für Kartographie und Geoinformation
Prof. Dr. Lutz Plümer
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
2
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
3
Relationale Datenbank
• 2-dimensionale Matrix
• Inhalte:
– Spalten: Attribute
– Jede Zeile ein Feature
Beispieltabelle:
Punktnummer
X-Koordinate
Y-Koordinate
1
2
3
4
0,00
0,00
100,00
100,00
0,00
100,00
100,00
0,00
• 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
4
Simple Features
Geometrie-Klassen-Hierarchie (OGC)
Übersicht:
Erinnerung:
Geoinformation 4,
Vorlesung 10
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
5
Simple Features
0-, 1- oder 2-dim. Geometrien
• Point
•
•
•
•
•
•
•
•
•
MultiPoint
Curve
Line
LineString
MultiLineString
MultiCurve
LinearRing
Polygon
MultiPolygon
0-dimensional
• Surface
2-dimen• MultiSurface sional
• Geometry Collection
1-dimensional
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
6
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
7
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
8
Beispiel 1: SQL92 - numerische Implementation (1)
GID
ESEQ ETYPE SEQ
X0
Y0
X1
Y1
X2
Y2
X3
Y3
X4
Y4
1
1
3
1
0
0
0
30
30
30
30
0
0
0
1
2
3
1
10
10
10
20
20
20
20
10
10
10
2
1
3
1
30
0
30
30
60
30
60
0
30
0
2
2
3
1
40
5
40
20
45
20
45
15
50
15
2
2
3
2
50
15
50
5
40
5
Nil
Nil
Nil
Nil
3
1
3
1
0
30
0
60
30
60
30
30
0
30
4
1
3
1
30
30
30
60
60
60
60
30
30
30
(0,60)
(60,60)
(30,60)
GID:
geometry identifier
ESEQ: element sequence number
GID 3
GID 4
(0,30)
(60,30)
ESEQ 2
ESEQ 2
GID 1
(0,0)
GID 2
(30,0)
ETYPE: primitive type -> Geometrietyp
• 1 - Point
• 2 - LineString
• 3 - Polygon
•...
SEQ: sequence number
(60,0)
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
9
Beispiel 1: SQL92 - numerische Implementation (2)
GID
ESEQ ETYPE SEQ
X0
Y0
X1
Y1
X2
Y2
X3
Y3
X4
Y4
1
1
3
1
0
0
0
30
30
30
30
0
0
0
1
2
3
1
10
10
10
20
20
20
20
10
10
10
2
1
3
1
30
0
30
30
60
30
60
0
30
0
2
2
3
1
40
5
40
20
45
20
45
15
50
15
2
2
3
2
50
15
50
5
40
5
Nil
Nil
Nil
Nil
3
1
3
1
0
30
0
60
30
60
30
30
0
30
4
1
3
1
30
30
30
60
60
60
60
30
30
30
(0,60)
(60,60)
(30,60)
GID 3
Darstellung der Geometrie
GID 4
(0,30)
(60,30)
ESEQ 2
ESEQ 2
SEQ 1
SEQ 2
GID 1
(0,0)
(30,0)
GID 2
(60,0)
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
10
Beispiel 2: SQL92 - binäre Implementation
GID
XMIN
YMIN
XMAX
YMAX
Geometry
1
0
0
30
30
<Well-Known-Binary-Geometry>
2
30
0
60
30
<WKBGeometrie>
3
0
30
30
60
<WKBGeometrie>
4
30
30
60
60
<WKBGeometrie>
(30,60)
(0,60)
(60,60)
X,Y -> Min, Max:
Definition der bounding box
(0,30)
GID 3
GID 4
ESEQ 2
GID 1
(0,0)
(60,30)
ESEQ 2
(30,0)
WKBGeometrie:
Stellt die Geometrie als eine
Sequenz von unsigned
integer oder double dar.
GID 2
(60,0)
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
11
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
12
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
13
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
14
Basis-Methoden
Anfrage
•
•
•
•
•
•
•
•
•
Ausgabe
Dimension ( ):Integer
GeometryType ( ):String
SRID ( ):Integer
Envelope( ):Geometry
AsText( ):String
AsBinary( ):Binary
IsEmpty( ):Integer
IsSimple( ):Integer
Boundary( ):Geometry
- Dimension des Objektes (0, 1 od. 2)
- Name der Geometrie
- ID für das Spatial Reference System
- Bounding Box als Polygon
- textuelle Repräsentation
- binäre Repräsentation
- 1: true, 0: false, -1: unknown
- 1: true, 0: false, -1: unknown
- Grenze
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
15
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
16
Methoden, die Spatial Analysis unterstützen (1)
Anfrage
Ausgabe
• 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
 (AB)
Union():Geometry
- Repräsentation der Vereinigten
Punktmenge  (AB)
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
17
Methoden, die Spatial Analysis unterstützen (2)
Anfrage
Ausgabe
• 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
18
Methoden - GeometryCollection
Anfrage
Ausgabe
• NumGeometries( ):Integer
• GeometryN():Geometry
- die Anzahl der enthaltenen
Geometrien
- die N-te Geometrie in der
Collection
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
19
Methoden - Point
Anfrage
Ausgabe
• X( ):Double
• Y( ):Double
- X-Koordinate
- Y-Koordinate
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
20
Methoden - Curve
Anfrage
•
•
•
•
Ausgabe
Length( ):Double
StartPoint( ):Point
EndPoint( ):Point
IsClosed( ):Integer
• IsRing( ):Integer
- Länge der Kurve
- Startpunkt
- Endpunkt
- 1: „true“, wenn Startpunkt=Endpunkt
0: „false“ oder -1: „unknown“
- 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
21
Methoden - LineString, Line, LinearRing
Anfrage
Ausgabe
• 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
22
Methoden - MultiCurve
Anfrage
Ausgabe
• IsClosed( ):Integer
• Length( ):Double
- 1: „true“, wenn Startpunkt=Endpunkt
0: „false“ oder -1: „unknown“
- Länge der Kurve
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
23
Methoden - Surface
Anfrage
Ausgabe
• 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
24
Methoden - Polygon
Anfrage
Ausgabe
• ExteriorRing( ):LineString
• NumInteriorRing( ):Integer
• InteriorRingN():LineString
- umgebender Ring
- Anzahl der inneren Ringe
- N-te innere Ring
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
25
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
26
Institut für Kartographie und Geoinformation
Prof. Dr. Lutz Plümer
Vielen Dank für eure
Aufmersamkeit!
Noch Fragen?
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
s
s e
s
s e
e
e
einfach
nicht einfach
geschl./einf.
geschl./nicht einf.
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
28
Curve
• 1-dimensional
• Sequenz von Punkten zwischen denen linear
interpoliert wird
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
29
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
30
MultiLineString
• MultiCurve = MultiLineString, wenn Elemente
LineStrings
– (lineare Interpolation zwischen den Punkten)
e2
s2 e2
s2 e2
s1
s1
s1
e1
e1
e1 s2
einfach
Grenzen = {s1,e2}
nicht einfach
Grenzen = {s1,e1}
geschlossen
Grenzen = {Ø}
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
31
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
Polygon mit einem
... zwei
...bzw. drei Ringen
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
32
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
33
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
1 Polygon
3 Polygone
2 Polygone
2 Polygone
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
34
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
35
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
36
MultiGeometry
• Stellt eine Geometrie dar, die mehrere anderen
Geometrien beeinhaltet
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
37
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
GEOGCS[‘GCS_North_American_1983’,
DATUM[‘D_North_American_1983’,
SPHEROID[‘GRS_1980’,6378137,298.257222101]],
PRIMEM[‘Greenwich’,0],
UNIT[‘Degree’,0.0174532925199433]]
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
38
Binäre Repräsentation (WKB)
• Zahlencode
• zur maschinellen Weiterverarbeitung
• Beispiel:
B=1 T=3 NR=2 NP=3 X1 Y1 X2 Y2 X3 Y3 NP=3 X1 Y1 X2 Y2 X3 Y3
Ring 1
Ring 2
WKB Polygon
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
39
Beispiel - NRW
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
40
Beispiel - NRW: Envelope
Envelope( ):Geometry
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
41
Beispiel - NRW: Envelope
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
42
Beispiel - NRW: Envelope
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
43
Beispiel - NRW: Envelope
Ausgabe:
Polygon, das die
bounding box
repräsentiert
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
44
Beispiel - NRW: Boundary
Boundary( ):Geometry
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
45
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
46
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
47
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
X
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
48
Beispiel - NRW
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
49
Beispiele
A B
Intersection():Geometry
A
B
A B
Union():Geometry
A
B
B-A
A-B
Difference():Geometry
A
B
B
A
(A-B)(B-A)
SymDifference():Geometry
A
B
A
Till Baberg - GIS-Seminar - SS 02 - SQL und Simple Features - 13.06.02
B
50