Lade Inhalt...

Konzeption und Implementierung eines Verfahrens für effiziente, nicht präzise Datenbankabfragen im Kontext eines skizzenbasierten GIS

©2004 Diplomarbeit 96 Seiten

Zusammenfassung

Inhaltsangabe:Einleitung:
Anfragen an eine geographische Datenbank müssen häufig in Textform wie z.B. in SQL formuliert werden. Räumliche Gegebenheiten lassen sich jedoch nur schwer auf diese Weise beschreiben. Diese können durch visuelle Spezifikationen leichter beschrieben werden. Dennoch fand die Generierung von Anfragen aus Skizzen bisher wenig Beachtung.
Diese Arbeit beschäftigt sich mit der Konzeption und Umsetzung eines Systems zur Generierung von Anfragen an geographische Datenbanken aus analysierten Skizzen. Eine Skizze besteht dabei aus mehreren geographischen Objekten (z.B. Häuser, Bushaltestellen, Straßen, etc.), zwischen welchen verschiedene Beziehungen existieren (z.B. Haus ist 50 Meter entfernt von einer Straße). Nach dieser Objektanordnung wird in einer geographischen Datenbank gesucht.
Um die Anfrage effizient ausführen zu können, sind spezielle räumliche Indexstrukturen und Suchalgorithmen erforderlich. Oracle Spatial ist ein im Rahmen dieser Arbeit untersuchtes Datenbankschema, welches räumliche Objekte abspeichert und Anfragen mit Hilfe von R-Bäumen beantworten kann. Das System und die neu entwickelten Verfahren bauen auf einer solchen Datenbank auf.
Das in dieser Arbeit entwickelte System erhält die analysierten Skizzen-Daten von einem Programm mit dem Namen SketchQuery. Aus diesen Daten wird die Anfrage an eine Oracle Spatial-Datenbank generiert. Anschließend findet eine Bewertung der Ergebnisse bezügliche ihrer Ähnlichkeit zur Skizze statt. Dabei wird auf die geometrische Ähnlichkeit z.B. von Straßenverläufen verglichen. Nach der Ermittlung der Abweichungen von der Skizze erfolgt eine Aufbereitung der Ergebnisse zur Darstellung und eine Zurückgabe an SketchQuery.
Insgesamt wurden vier Module entworfen und umgesetzt. Zwei Module zur Entgegennahme/Zurückgabe der Daten von/zu SketchQurey. Ein Modul zur Generierung und Ausführung der Datenbankanfrage und ein Modul zur Berechnung der Abweichungen von der Skizze.

Inhaltsverzeichnis:Inhaltsverzeichnis:

1.Einleitung1
1.1Motivation1
1.2Problemstellung4
1.3Übersicht4
2.Grundlagen5
2.1Geographische Informationssysteme5
2.1.1GIS-Datenbanken5
2.1.2Anfragen an Geoinformationssysteme6
2.1.3Datenbankmanagementsysteme für räumliche Daten8
2.2Oracle Spatial9
2.2.1Räumliche Objekte9
2.2.2Abfragen10
2.2.3Spatial Joins11
2.2.4Funktionen13
2.2.5Bewertung15
2.3SketchQuery - Ein Programm für skizzenbasierte GIS-Anfragen19
2.3.1Übersicht19
2.3.2Skizzen in […]

Leseprobe

Inhaltsverzeichnis


ID 4071
Dangelmayer, Frank: Konzeption und Implementierung eines Verfahrens
für effiziente, nicht präzise Datenbankabfragen im Kontext eines skizzenbasierten GIS
Hamburg: Diplomica GmbH, 2005
Zugl.: Fachhochschule Ravensburg-Weingarten, Diplomarbeit, 2004
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte,
insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von
Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der
Vervielfältigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen,
bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung
dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen
der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik
Deutschland in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich
vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des
Urheberrechtes.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme,
dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei
zu betrachten wären und daher von jedermann benutzt werden dürften.
Die Informationen in diesem Werk wurden mit Sorgfalt erarbeitet. Dennoch können
Fehler nicht vollständig ausgeschlossen werden, und die Diplomarbeiten Agentur, die
Autoren oder Übersetzer übernehmen keine juristische Verantwortung oder irgendeine
Haftung für evtl. verbliebene fehlerhafte Angaben und deren Folgen.
Diplomica GmbH
http://www.diplom.de, Hamburg 2005
Printed in Germany

Erklärung
Hiermit erkläre ich, dass ich die Arbeit selbstständig und nur unter Verwendung der an-
gegebenen Quellen und Hilfsmittel verfasst habe.
Darmstadt, 31. Juli 2004
______________________
(Frank Dangelmayer)

Inhaltsverzeichnis
1 Einleitung
1
1.1
Motivation
1
1.2
Problemstellung
4
1.3
Übersicht
4
2 Grundlagen
5
2.1
Geographische Informationssysteme
5
2.1.1
GIS-Datenbanken
5
2.1.2
Anfragen an Geoinformationssysteme
6
2.1.3
Datenbankmanagementsysteme für räumliche Daten
8
2.2
Oracle Spatial
9
2.2.1
Räumliche Objekte
9
2.2.2
Abfragen
10
2.2.3
Spatial Joins
11
2.2.4
Funktionen
13
2.2.5
Bewertung
15
2.3
SketchQuery ­ Ein Programm für skizzenbasierte GIS-Anfragen
19
2.3.1
Übersicht
19
2.3.2
Skizzen in SketchQuery
20
2.3.3
Benutzerschnittstelle
22
2.3.4
Schnittstelle für Datenbankabfragen
24
3 Räumliche Datenstrukturen und Algorithmen
25
3.1
Indexstrukturen zur Verwaltung räumlicher Objekte
25
3.1.1
Grid File
26
3.1.2
QuadTree
27
3.1.3
R-Baum
29
3.1.4
R
+
-Baum
32
3.1.5
R
*
-Baum
33
3.1.6
Bewertung
34
3.2
Spatial Join-Algorithmen beim R-Baum
36
3.2.1
Algorithmen ohne Indexstrukturen
36
3.2.2
Index nested loops join
37
3.2.3
Paralleles Durchlaufen zweier R-Bäume
37
3.2.4
Distance Join-Algorithmus
39
3.2.5
Seeded Tree
40
3.2.6
Zusammenfassung und Bewertung
41
3.3
Einsatz in Oracle Spatial
42
4 Entwurf
43
4.1
Stand der Technik
43

4.2
Anforderungen
44
4.2.1
Verschiedene Anfrageformen
44
4.2.2
Fehlerbewertung
44
4.2.3
Effizienz
45
4.3
Architektur
46
4.4
Module des Systems
48
4.4.1
Übernahme der Daten von SketchQuery
48
4.4.2
Umwandlung und Ausführung der Anfrage
48
4.4.3
Abweichungen von der Eingabe-Skizze
49
4.4.4
Darstellung der Ergebnisse
50
4.5
Ablauf
52
5 Implementierung
53
5.1
Rahmenbedingungen
53
5.1.1
Datensätze für die Erprobung des Verfahrens
53
5.2
Übernahme der Daten von SketchQuery
55
5.3
Umwandlung und Ausführung der Anfrage
58
5.3.1
Ablauf
58
5.3.2
Datenmodell für die Ergebnisse
60
5.3.3
Klasse für die Datenbankanbindung
61
5.3.4
Reihenfolge der Spatial Joins
62
5.3.5
Konfigurationsdatei
63
5.4
Abweichungen von der Eingabe-Skizze
64
5.4.1
Ermittlung der geometrischen Ähnlichkeit
66
5.5
Darstellung der Ergebnisse
68
5.6
Erweiterbarkeit
70
6 Bewertung und Ausblick
72
6.1
Ergebnisse
72
6.2
Bewertung
73
6.3
Ausblick
76
6.3.1
Kommunikation mit SketchQuery
76
6.3.2
Einsatz eigener Indexstrukturen und Join-Algorithmen
76
6.3.3
Indexstrukturen für die Fourier-Koeffizienten
78
7 Zusammenfassung
79
Anhang A - Algorithmus zur Fourier-basierten Ähnlichkeitssuche
80
Index
84
Abbildungsverzeichnis
85
Literaturverzeichnis
87

Einleitung
1
1 Einleitung
1.1 Motivation
Digitale Landkarten werden heutzutage häufig in Datenbanken gespeichert und verwal-
tet. Abfragen an eine Datenbank müssen dabei oft in Textform gestellt werden. Um
Abfragen zu formulieren muss der Benutzer eine Abfragesprache, wie z.B. SQL beherr-
schen. Zumeist versucht der Mensch seine visuelle Vorstellung in eine solche Abfrage-
sprache umzuwandeln. Es existiert eine für den Benutzer einfachere und natürlichere
Methode seine Abfragen zu definieren: das Anfertigen einer Skizze. Dabei wird das in-
nere Bild des Benutzers direkt in eine Zeichnung umgesetzt. Diese Art der Benutzerin-
teraktion wurde bisher nur sehr selten für geographische Informationssysteme eingesetzt
[BSE00].
Das Ziel dieser Arbeit ist es, aus Skizzen, welche durch Analysen ausgewertet wurden,
Anfragen für geographische Datenbanken zu erstellen und auszuführen. Diese Arbeit
baut auf eine Diplomarbeit [Huý03] auf, in welcher eine graphische Bedienoberfläche
zur Eingabe und Auswertung der Skizze entwickelt wurde.
Skizzen eignen sich besonders gut, um topologische Fragestellungen wie Nachbar-
schaft, Enthaltensein, Überschneidung und ähnlichem zu formulieren [Huý03]. Die An-
fragen können durch handschriftliche Bemerkungen weiter präzisiert werden.
Um zu verdeutlichen, welche Anfragen an ein solches System gestellt werden können,
werden zwei Beispiele für skizzenbasierte Anfragen vorgestellt:
· Eine Familie sucht für ihren Urlaub eine Ferienwohnung. In der Nähe dieser
Wohnung sollte sich ein See befinden. Da die Familie mit öffentlichen
Verkehrsmitteln anreisen möchte, sollte sich eine Bushaltestelle in der Nähe
befinden. Folgende Skizze wird dafür angefertigt:

Einleitung
2
· Ein Automobilhersteller sucht für die Anbringung von Werbeplakaten einen ge-
eigneten Standort. Er hat drei Plakate entworfen, welche der potentielle Kunde
bei der Fahrt auf einer Straße der Reihe nach sehen soll. Er sucht nach freien
Werbeflächen, die einen Abstand von etwa 500 Meter an einer Straße angren-
zen. Damit die Plakate von möglichst vielen Personen gesehen werden, sollten
sie an einer Bundesstrasse platziert werden. Außerdem sollte in maximal 10 km
Entfernung ein Autohaus seiner Marke existieren. Er könnte eine Skizze wie in
Abbildung 1.2 anfertigen:
Abbildung 1.2: Skizze für Standorte von Werbeplakaten
Abbildung 1.1: Skizze für Urlaubsplanung

Einleitung
3
In den Skizzen werden also mehrere Objekte (z.B. Ferienwohnung, See, Bushaltestelle)
und deren topologischen Beziehungen (z.B. der Abstand) angegeben. Nach dieser An-
ordnung der verschiedenen Objekte soll in einer geographischen Datenbank gesucht
werden. Es soll außerdem berücksichtigt werden, welche geometrische Form die Objek-
te haben (z.B. der See in Abbildung 1.1), um möglichst ähnliche Objekte in der Daten-
bank zu identifizieren. Der Schwerpunkt bei den Anfragen liegt jedoch auf der Suche
nach den Beziehungen der Objekte untereinander.
Eine Skizze besteht aus einer Menge von Strichen, welche zu verschiedenen Objekten
gruppiert werden. Die Objekte können beschriftet werden. Außerdem ist es möglich,
den Abstand zwischen zwei Objekten anzugeben.
Der Ablauf eines Systems, mit dem skizzierte Anfragen an eine Datenbank gestellt
werden, wird in Abbildung 1.3 erläutert. Der Benutzer zeichnet eine Skizze (1), welche
aus einer Menge von Strichen besteht. Diese Skizze wird durch eine Analyse in Objekte
und deren Beziehungen untereinander umgewandelt (2) und daraus eine formale Be-
schreibung (3) erzeugt. Anschließend wird eine Datenbank-Abfrage generiert (4), wel-
che nach dieser Objekt-Anordnung sucht. Die Ergebnisse der Abfrage müssen interpre-
tiert, bewertet und nach ihrer Qualität sortiert werden (5). Danach sind weitere Akti-
onen, wie beispielsweise die Beschaffung von zusätzlichen Informationen zu den ge-
fundenen Objekten möglich (6). Nachdem die Ergebnisse ermittelt und aufbereitet wur-
den, werden sie dem Benutzer in Form eines Kartenausschnitts dargestellt (7). In dieser
Arbeit werden die Schritte (4) und (5) bearbeitet.
Abbildung 1.3: Schema einer skizzenbasierten Anfrage an ein geographisches System [Huý03]
Bei den Anfragen an die Datenbank sollen mehrere Ergebnisse gefunden, bewertet und
ihrer Relevanz nach geordnet werden. Dabei wird eine Auflistung der einzelnen Objekte
in der Skizze und ihre topologischen Beziehungen vorausgesetzt. Der Schwerpunkt
dieser Arbeit beschäftigt sich mit der Umsetzung der Anfrage aus der Skizze in eine
geeignete Datenbank-Abfrage. Diese sollte möglichst effizient ausgeführt werden kön-
nen. Dabei wird auch die Verwendung eines geeigneten Datenbankschemas diskutiert.

Einleitung
4
1.2 Problemstellung
In [Huý03] wurde ein System zur Eingabe und Erkennung von Skizzen entwickelt.
Dieses System ermittelt alle vom Benutzer gezeichneten Objekte und deren Beziehung-
en untereinander. Die erkannten Informationen werden in einer XML-Datei abgelegt. In
der vorliegenden Arbeit soll ein Verfahren konzipiert und prototypisch umgesetzt
werden, welches basierend auf dieser XML-Datei eine Anfrage an eine geographische
Datenbank generiert. Dabei gilt es effizient Ausschnitte aus der Datenbank zu identifi-
zieren, welche der vom Benutzer gezeichneten Skizze ähneln. Eine Bewertung der
identifizierten Ergebnisse ist zudem erforderlich. Daneben ist eine Integration des ent-
wickelten Verfahrens in das System von [Huý03] bzw. in die Erweiterungen des Sys-
tems notwendig. Eine dort enthaltene Schnittstelle zur Darstellung der Resultate sollte
ebenfalls angesprochen werden.
1.3 Übersicht
In dieser Arbeit wurden folgende Punkte bearbeitet:
· Stand der Technik bei der Durchführung räumliche Anfragen
· Konzeption eines Verfahrens
· Implementierung dieses Konzepts in Java
· Bewertung des daraus entstandenen Systems
Diese Punkte sind wie folgt auf die Arbeit verteilt: Kapitel 2 definiert grundlegende Be-
griffe und stellt Programme vor, die bei dieser Arbeit verwendet wurden. Die Algorith-
men und Datenstrukturen für Abfragen von räumlichen Daten werden in Kapitel 3 er-
klärt. Kapitel 4 präsentiert den Entwurf des Systems und Kapitel 5 beschreibt dessen
Umsetzung ausführlich. Im Kapitel 6 wird das entwickelte System bewertet und mög-
liche, zukünftige Erweiterungen vorgeschlagen. Eine abschließende Zusammenfassung
findet sich in Kapitel 7.

Grundlagen
5
2 Grundlagen
2.1 Geographische Informationssysteme
Ein geographisches Informationssystem wird in [Bar89] wie folgt definiert:
Ein Geoinformationssystem (GIS) dient der Erfassung, Speicherung, Analyse
und Darstellung aller Daten, die einen Teil der Erdoberfläche und die darauf
befindlichen technischen und administrativen Einrichtungen sowie geowissen-
schaftliche, ökonomische und ökologische Gegebenheiten beschreiben [Bar89].
Die Daten eines GIS werden häufig in einer Datenbank abgelegt. Eine solche Daten-
bank unterscheidet sich von einer gewöhnlichen Datenbank im wesentlichen dadurch,
dass sie räumliche (d.h. zwei- oder dreidimensionale) Objekte enthält. Diese enthalten
die geometrische Repräsentation der geographischen Objekte. Beispiele für solche Ob-
jekte sind Straßen, Gebäude oder Parkplätze. Geoinformationssysteme haben unter an-
derem folgende Einsatzfelder:
· Kartendarstellung: Darstellung einer Teilmenge der Daten
· Routenplanung:
Suche nach der kürzesten Route zwischen zwei Orten/
Punkten
· Umgebungssuche: Was befindet sich in einem bestimmen Umkreis eines
Objekts
· Geomarketing:
Suche nach optimalem Standort für neue Geschäfte
· Stadtplanung:
Ausweisung neuer Baugebiete/Naturschutzgebiete/
Parkplätze
Aus dem Bereich Geomarketing könnte eine Anfrage an eine GIS-Datenbank z.B. wie
folgt aussehen:
Suche nach einem Standort bzw. Gebäude für ein Reisebüro. Dieses sollte nicht
mehr als 500 Meter von einem Bahnhof entfernt sein. Außerdem sollte sich im
Umkreis von 20 km ein Flughafen befinden.
2.1.1 GIS-Datenbanken
In einer zweidimensionalen GIS-Datenbank wird grundsätzlich zwischen drei Arten von
Geo-Objekten unterschieden:
· Punktobjekte
· Linienzüge
· Polygone

Grundlagen
6
Punktobjekte werden durch ihre x- und y-Koordinate beschrieben und stellen Objekte
dar, welche keine oder nur kleine Flächen enthalten (z.B. Straßenlampen). Ein Linien-
zug besteht aus einer Menge von Geraden und wird beispielsweise für Straßen oder
Flüsse benötigt. Die Geraden werden durch ihre Anfangs- und Endpunkte beschrieben.
Falls das geographische Objekt eine Fläche enthält, gehört es der dritten Kategorie, den
Polygonen an. Solche Polygone können auch Löcher enthalten. Polygone sind die
häufigsten Objekte in einer geographischen Datenbank, da viele Geo-Objekte eine Flä-
che haben. Hier sind Objekte wie Seen oder auch Gebäude zu finden. Polygone werden
in der Regel durch ihre Eckpunkte und die Eckpunkte ihrer Löcher beschrieben.
Neben den geometrischen Beschreibungen der Objekte werden weitere Informationen
wie der Objekttyp und die Bezeichnung (z.B. Straßennamen) in einer GIS-Datenbank
gespeichert. Diese zusätzlichen Informationen werden auch thematische Daten genannt.
2.1.2 Anfragen an Geoinformationssysteme
An eine GIS-Datenbank können verschiedene Abfragen gestellt werden. Drei grund-
legende Abfragen, welche auf gegebenen Koordinaten basieren, sind:
· Punktabfragen (Point Query)
· Bereichsabfragen (Region Query)
· Fensterabfrage (Window Query)
Bei Punktabfragen werden alle Objekte gesucht, in denen ein bestimmter Punkt P ent-
halten ist. Bei Bereichsabfragen wird nach allen Objekten gesucht, die ein bestimmtes
Gebiet überschneiden. Dieses Gebiet kann z.B. durch ein Polygon definiert sein. Stellt
das Suchgebiet ein achsenparalleles Rechteck dar, dann wird diese Bereichsabfrage
auch Window Query genannt. Ein Beispiel für diese Abfragen ist in Abbildung 2.1 zu
finden.
Abbildung 2.1: Auf gegebenen Koordinaten basierende Abfragen in GIS-Datenbanken
Point Query
Region Query
Window Query

Grundlagen
7
Neben diesen Abfragen, welche als Eingabe eine Koordinate oder eine Menge von Ko-
ordinaten erwarten, gibt es auch Abfragen, welche nach einer bestimmten Anordnung
der Objekte sucht. Folgende Abfragen werden hier häufig benutzt:
· Nearest Neighbor: Suche nach Objekte, die sich in der Nähe eines bestimmten
Objekts oder Punkts befinden
· Spatial Joins
1
: Suche nach zwei oder mehreren Objekten, die in bestimmter
Relation zueinander stehen (z.B. sich überschneiden)
Folgende Spatial Joins spielen dabei eine besondere Rolle:
o
Closest Pair Join: Suche nach zwei Objekten, bei denen der Abstand der
beiden Objekte untereinander am geringsten ist
o
Distance Join: Suche nach zwei Objekten, deren Abstand in einem vor-
gegebenen Bereich (gegeben als minimaler und maximaler Abstand)
liegt
Der Abstand von zwei Objekten ist dabei die kleinstmögliche Entfernung eines Punkts
aus dem ersten Objekt mit einem Punkt aus dem zweiten Objekt.
1
Statt Spatial Join findet in der Literatur auch dessen Übersetzung (räumlicher Join oder räumlicher
Verbund) Verwendung.

Grundlagen
8
2.1.3 Datenbankmanagementsysteme für räumliche Daten
Einige Hersteller von Datenbankmanagementsystemen (DBMS) bieten Erweiterungen
für die Verwaltung von räumlichen Daten an. Der Einsatz als geographische Informati-
onssysteme ist möglich. Folgende DBMS sind in der Praxis von GIS häufig anzutreffen:
· Oracle Spatial
· DB2 Spatial Extender
· Informix 2D-Spatial Datablade
Dabei sind Oracle Spatial und der DB2 Spatial Extender direkt in das DBMS integriert,
während das Informix 2D-Spatial Datablade auf einem erweiterbaren DBMS basiert
[Zie01]. Das DBMS von Informix ermöglicht generell eigene Erweiterungen des Daten-
bank-Kerns. Die darin enthaltenen Funktionen sind zum Teil noch nicht ganz ausgereift
[Zie01]. Dieses DBMS eignet sich besonders wenn ein direkter Zugriff auf die Ver-
waltung und Speicherung der geographischen Objekte benötigt wird.
Informix und der DB2 Spatial Extender unterstützen objektorientierte Datenhaltung
während Oracle Spatial als objektrelational einzustufen ist. Oracle Spatial und der DB2
Spatial Extender haben nach außen einen sehr ähnlichen Aufbau. Im nächsten Abschnitt
folgt eine Vorstellung und Bewertung von Oracle Spatial, da Oracle Spatial für die Um-
setzung dieser Arbeit Verwendung fand. Die Daten des Geoinformationssystems, wel-
ches in dieser Arbeit eingesetzt wird, liegen bereits in einer Oracle Spatial-Datenbank
vor und erlauben eine Verwendung ohne zusätzlichen Konvertierungsaufwand.

Grundlagen
9
2.2 Oracle Spatial
Oracle Spatial (kurz Spatial) ist ein Datenbank-Schema der Firma Oracle Corporation
[Ora03], mit dem zwei- oder höherdimensionale Objekte gespeichert und verwaltet
werden können. Hauptsächlich werden solche Datenbanken von GIS-Systemen verwen-
det, sie sind aber durchaus auch für andere Anwendungsgebiete wie z.B. CAD nützlich.
Spatial stellt neben den räumlichen Datentypen auch eine Indizierung dieser Daten mit
räumlichen Indexstrukturen (dem R-Baum oder QuadTree) zur Verfügung. Eine
Beschreibung von räumlichen Indexstrukturen ist in Kapitel 3 zu finden. Außerdem be-
inhaltet Spatial Funktionen und Operatoren, mit denen räumliche Abfragen unter Ver-
wendung der Indexstrukturen effizient bearbeitet werden. Diese Funktionen und Operat-
oren können als Erweiterung zu SQL eingesetzt werden.
In diesem Abschnitt wird Spatial kurz vorgestellt. Dabei wird erläutert, welche Daten-
typen für die Verwaltung von räumlichen Objekten verwendet werden. Außerdem wird
ein Überblick über die Operatoren und Funktionen von Spatial und deren Verwendung
für räumliche Joins gegeben. Danach wird untersucht, wie sehr sich Spatial für die Be-
arbeitung der in Kapitel 1.2 beschriebenen Problemstellung eignet.
2.2.1 Räumliche Objekte
Spatial unterstützt das objektrelationale Datenbankmodell. Soll ein räumliches Objekt,
wie z.B. ein durch x- und y-Koordinaten beschriebenes Gebäude, in die Datenbank ein-
gefügt werden, dann werden alle räumlichen Eigenschaften dieses Gebäudes in einem
Objekt vom Typ SDO_GEOMETRY abgelegt. Es ist eine Tabelle denkbar, in der eine
Spalte den Typ SDO_GEOMETRY hat und z.B. die Geometrie von Gebäuden be-
schreibt, während andere Spalten die ,,nicht räumlichen" Eigenschaften der Gebäude
(wie z.B. den Eigentümer) repräsentieren. Tabelle 2.1 zeigt eine mögliche Tabel-
lenstruktur mit den Feldnamen und Datentypen der Spalten
ID
Eigentümer
Anschrift
Kontur
NUMBER
VARCHAR2(40)
VARCHAR2(80)
SDO_GEOMETRY
Tabelle 2.1: Verwendung des Datentyps SDO_GEOMETRY in einer Tabellenstruktur
In Spatial können die in Abschnitt 2.1.1 aufgeführten zweidimensionalen Objektarten
(Punkte, Linienzüge und Polygone) genutzt werden. Linienzüge oder Polygone sind da-
bei durch die Koordinaten der Eckpunkte definiert, zwischen denen die Kanten verlau-
fen. Dabei können die Kanten aus Geraden, Kreisbögen oder aus einer Mischung von
Geraden und Kreisbögen bestehen. Polygone können ,,Löcher" haben, d.h. wenn sich
auf einem See eine Insel befindet, dann kann dies in dem Objekt, welches den See re-
präsentiert, berücksichtigt werden. Selbstschneidende Polygone sind in Spatial nicht
erlaubt.

Grundlagen
10
Zu jeder Tabelle die den abstrakten Datentyp SDO_GEOMETRY verwendet, werden in
einer weiteren Tabelle Metadaten gespeichert. Diese Tabelle heißt in Spatial
USERS_SDO_ GEOM_METADATA. Dort ist für jede Tabelle, welche räumliche Da-
ten enthält, ein Datensatz vorhanden. In einem solchen Datensatz werden unter anderem
die Namen der Dimensionen (z.B. 'x' und 'y') und der kleinst-/größtmöglichste Wert
der Dimension erfasst. Außerdem steht in der Tabelle eine ID, die beschreibt zu wel-
chem Koordinatensystem die Objekte gehören. Falls diese ID bei zwei Tabellen gleich
ist, dann benützen sie die gleiche Maßeinheit (z.B. Meter) und haben den Nullpunkt an
der selben Stelle. In diesem Fall ist ein Vergleich deren Inhalte sinnvoll möglich.
2.2.2 Abfragen
Zur Indizierung der räumlichen Daten kann der Anwender zwischen den
Indexstrukturen R-Baum und QuadTree wählen. Um einen räumlichen Index zu einer
Tabelle zu erstellen, müssen zuvor die Metadaten dieser Tabelle gespeichert werden.
Die Indexstrukturen werden von Spatial verwendet, um die Ausführung von Abfragen
zu beschleunigen. Eine ausführliche Beschreibung dieser räumlichen Indexstrukturen ist
in Kapitel 3 zu finden.
Spatial stellt mehrere Operatoren für Abfragen oder Veränderungen der räumlichen
Daten zur Verfügung. Diese können in SQL-Statements eingesetzt werden. Eine
mögliche Anfrage ist die Fensteranfrage. Mit ihr wird nach allen Objekten gesucht, die
sich in einem vorgegebenen Rechteck befinden (siehe Abschnitt 2.1.2). Solche An-
fragen werden mit dem Operator SDO_RELATE beantwortet. Beim Ausführen der An-
frage werden zwei Schritten abgearbeitet:
· Primärfilter
· Sekundärfilter
Im Primärfilter werden nur die kleinsten umschließende Rechtecke (minimum bounding
rectangle, MBR) der Objekte/Anfrage betrachtet. Falls sich die MBRs überschneiden
liefert der Primärfilter diese Objekte zurück. Die Überprüfung, ob sich diese Objekte
tatsächlich überschneiden, wird vom Sekundärfilter durchgeführt. Der Primärfilter
liefert also Kandidaten für Überschneidungen, während der Sekundärfilter die genaue
Geometrie der Objekte betrachtet und daraus das exakte Ergebnis berechnet. Der
Primärfilter führt eine Grobfilterung durch in welcher relativ schnell viele Objekte
ausgeschlossen werden können. Indexstrukturen wie der R-Baum werden nur beim
Primärfilter eingesetzt.
In Abbildung 2.2 ist ein Beispieldatensatz mit vier räumlichen Objekten (a,b,c und d)
und den dazugehörigen kleinsten umschließenden Rechtecken (MBR's) dargestellt. Eine
Fensteranfrage wird durch das gestrichelte Rechteck symbolisiert. Der Primärfilter
liefert bei dieser Abfrage die Kandidatenobjekte a und c zurück. Der Sekundärfilter
vergleicht diese beiden Objekte mit dem Anfragefenster und liefert als Ergebnis das
Objekt c. Neben dem Operator SDO_RELATE, welcher sowohl den Primär- als auch
den Sekundärfilter ausführt, gibt es auch noch den Operator SDO_FILTER. Bei

Grundlagen
11
SDO_FILTER werden die Daten nur mit dem Primärfilter bearbeitet. Er ermittelt also
nur die potentiellen Kandidaten, für eine Überschneidung mit dem Anfragefenster.
Mit Hilfe des SDO_RELATE- bzw. SDO_FILTER-Operator kann nicht nur ein
Datensatz mit einem Anfragefenster verglichen werden, sondern auch zwei Datensätze
untereinander. Es kann also überprüft werden, welche Objekte aus einer Tabelle, sich
mit Objekten aus einer anderen Tabelle überschneiden. Somit kann dieser Operator
einen räumlichen Join (Spatial Join) für Überschneidungen ausführen.
Um Nearest Neighbor-Anfragen bearbeiten zu können, gibt es einen Operator
SDO_NN, welcher die n Objekte ermittelt, deren Abstand zu einem vorgegebenen Ob-
jekt oder Punkt am geringsten ist. Diesem Operator wird eine Tabellenspalte (mit den
räumlichen Objekten) und ein Referenzpunkt/-objekt übergeben. Des Weiteren muss
festgelegt werden, wie viele Objekte von diesem Operator zurückgeliefert werden
sollen.
Mit dem Operator SDO_WITHIN_DISTANCE können alle Objekte ermittelt werden,
deren Abstand zu einem Punkt oder Referenzobjekt kleiner oder gleich einem vorgege-
benen Wert ist. Wenn z.B. nach allen Objekten einer Tabelle gesucht wird, die sich im
Umkreis von 10 Längeneinheiten vom Punkt P(100,100) befinden, dann kann nach
dieser Eigenschaft mit dem Operator SDO_WITHIN_DISTANCE gesucht werden.
2.2.3 Spatial Joins
Spatial Joins, d.h. Anfragen, bei denen in zwei oder mehreren Tabellen nach Paaren von
Datensätzen gesucht werden, die in einer bestimmten Relation zueinander stehen sind
mit den Operatoren SDO_NN und SDO_WITHIN_DISTANCE gar nicht bzw. nur sehr
eingeschränkt möglich. Ein Spatial Join, in Verbindung mit einer Nearest Neighbor-
Operator würde nach Paaren von Datensätzen suchen, deren Abstand zueinander am
geringsten ist, also eine Closest-Pair-Analyse durchführen. Diese Abfrage kann mit
SDO_NN nicht durchgeführt werden.
Abbildung 2.2: Fensterabfrage
a
b
c
d

Grundlagen
12
Für die Ausführung von Spatial Joins stellt die Datenbank von Oracle Corporation seit
der Version 10g den Operator SDO_JOIN zur Verfügung. Mit diesem Operator kann
neben der Suche nach Überschneidungen von zwei Objektmengen, wie sie mit dem
Operator SDO_RELATE durchgeführt werden können, auch nach anderen topologisch-
en Beziehungen zweier Objekte gesucht werden. Abbildung 2.3 zeigt, welche topolo-
gischen Beziehungen es zwischen zwei Objekten geben kann.
Die Umhüllung unter-
scheidet sich von der Überdeckung darin, dass die Ränder der Objekte sich überdecken
.
Nach den in der Abbildung gezeigten Beziehungen kann durch die Verwendung des
SDO_JOIN-Operators gesucht werden. Außerdem sind logische Kombinationen aus den
Beziehungen möglich (z.B. A überschneidet oder berührt B).
SDO_JOIN ist eine Tabellenfunktion, d.h. eine Funktion, die als Rückgabewert eine Ta-
belle hat. In dieser Tabelle sind alle Join-Resultate enthalten. Da die Anwendung dieser
Tabellenfunktion der Anwendung von Operatoren gleicht, kann SDO_JOIN durchaus
auch als Operator betrachtet werden. Zur Veranschaulichung des SDO_JOIN-Operators
ein SQL-Beispiel, in dem nach Objektpaaren gesucht wird, welche sich berühren:
SELECT tab1.ID, tab2.ID
FROM tab1, tab2,
TABLE(SDO_JOIN(`tab1', `geom', `tab2', `geom',
`mask=TOUCH')) tabjoin
WHERE tab1.rowid=tabjoin.rowid1 AND
tab2.rowid=tabjoin.rowid2;
Die Tabellen tab1 und tab2 bestehen (mindestens) aus den Spalten ID und geom, wobei
geom ein geometrisches Objekt vom Typ SDO_GEOMETRY sein muss. SDO_JOIN
werden als Aufrufparameter der Name und die zu betrachtende Spalte der ersten Tabelle
Abbildung 2.3: Beziehungen zwischen zwei Flächen
A überschneidet B
A berührt B
A entspricht B
A überdeckt B
A umhüllt B
A ist disjunkt zu B
B ist überdeckt von A
B ist umhüllt von A
A
B
A B
A
B
A
B
A
B
A
B

Grundlagen
13
(' tab1' , ' geom' ) und der zweiten Tabelle übergeben. Des Weiteren wird die Art der
Beziehung zwischen den Tabellen angegeben, nach der gesucht werden soll
(' mask=TOUCH' ). Die Ausführung von SDO_JOIN liefert die Tabelle tabjoin zurück.
Zu jeder Tabelle, die in einer Oracle-Datenbank vorkommt, gibt es eine versteckte
Spalte mit dem Namen rowid. Diese Spalte enthält eine Zahl, welche für jeden Daten-
satz eindeutig ist. Sie ist somit eine Art interner, versteckter Primärschlüssel. In der
Tabelle tabjoin wird mit Hilfe dieses Feldes auf die beiden Ausgangstabellen verwiesen.
Um sicherzustellen, dass nur die Datensatzpaare ausgegeben werden, die in der Join-
Tabelle tabjoin ermittelt wurden, müssen die rowid' s der Tabellen tab1 und tab2 mit
denen der Tabelle tabjoin in der Where-Klausel verglichen werden.
Neben den in der obigen Abbildung aufgeführten Beziehungen von Objekten kann mit
SDO_JOIN auch nach Objektpaaren gesucht werden, deren Abstand kleiner als ein vor-
gegebener Wert ist. Ein Beispiel für eine solche Abfrage ist die Suche nach Paaren von
Bahnhöfen und Seen, deren Abstand weniger als 300 Meter beträgt. Somit kann mit die-
sem Operator auch ein Distance Join durchgeführt werden. Allerdings wird in diesem
Distance Join nur nach Paaren von Objekten gesucht, deren Abstand kleiner als ein vor-
gegebener Wert ist. Die Angabe einer Mindest-Entfernung der Objektpaare ist mit die-
sem Operator nicht direkt möglich. Es kann mit diesem Operator allein beispielsweise
nicht nach Paaren von Objekten gesucht werden, deren Abstand zwischen 290 und 310
Metern beträgt. Um diesen Distance Join dennoch ausführen zu können geht man fol-
genderweise vor:
1. Man ermittelt mit dem SDO_JOIN-Operator alle Objektpaare, deren Abstand
geringer als 310 Meter ist
2. Man berechnet bei diesen Objektpaaren den jeweiligen Abstand und
berücksichtigt nur die Paare, bei denen der Abstand mehr als 290 Meter beträgt
Man könnte alternativ zu diesem Verfahren auch nach allen Objektpaaren suchen, deren
Abstand weniger als 310 Meter beträgt. Danach werden alle Objektpaare ermitteln, bei
denen die Entfernung der Objekte weniger als 290 Meter beträgt und aus diesen beiden
Mengen die Differenzmenge bilden. Jedoch ist dieses Verfahren in den meisten Fällen
aufwendiger als das oben aufgeführte.
Um den zweiten Schritt des Distance Joins auszuführen, muss der Abstand eines
Objektpaars (also der Abstand zweier Objekte) ermittelt werden. Diese kann unter der
Verwendung einer Spatial-Funktion berechnet werden. Im folgenden Abschnitt wird
eine Übersicht über die Funktionen von Spatial gegeben.
2.2.4 Funktionen
In Spatial gibt es verschiedene Funktionen, mit denen bestimmte Eigenschaften von
räumlichen (geometrischen) Objekten oder Objektpaaren berechnet werden können. Um
einen groben Überblick über diese Funktionen zu erhalten, werden im Folgenden einige
Beispiele gegeben, welche Informationen mit Spatial-Funktionen berechnet werden
können:

Grundlagen
14
· Funktionen für ein einzelnes Objekt: berechnen des
o
Flächeninhalts
o
Mittelpunkt eines Polygons
o
Kleinste umschließende Rechteck (MBR)
o
Umfangs
· Funktionen für mehrere Objekte
o
berechnen des Abstand zweier Objekte
o
Mengenoperationen (Berechnung von Vereinigung, Schnittmenge, ...)

Grundlagen
15
2.2.5 Bewertung
In diesem Abschnitt wird die Eignung von Spatial für die Ausführung von skizzenba-
sierten Anfragen untersucht. Die Speicherung geographischer Daten lässt sich in Spatial
sehr gut durchführen. Dabei wird für jedes Objekt (z.B. Haus) ein Datensatz angelegt.
In diesem Datensatz existiert eine Spalte vom Typ SDO_GEOMETRY, in welcher die
geographischen Eigenschaften dieses Objekts (wie z.B. die Koordinaten) abgelegt sind.
Die thematischen Daten, wie beispielsweise die Bezeichnung oder Anschrift dieses
Objekts werden in den weiteren Tabellen-Spalten gespeichert. Deshalb ist Spatial für
die Speicherung eines Geoinformationssystems geeignet.
Da Geoinformationssysteme in der Regel aus sehr großen Datenmengen bestehen und
oft in anderen Formaten vorliegen, kann die Migration
2
der Daten durch SQL-Befehle
aufwendig werden. Mit dem SQL*Loader [Ora03b] der Firma Oracle Corporation las-
sen sich diese aus ASCII-Dateien auslesen und in Tabellen ablegen. Das Format der
ASCII-Dateien kann dabei vom Benutzer definiert werden.
Die Generierung einer Abfrage wird am Beispiel folgender Skizze (Abbildung 2.4)
untersucht. In dieser Skizze sind alle wesentlichen wichtigen Elemente, welche bei einer
Abfrage berücksichtigt werden könnten, enthalten. Eine Beschreibung, woraus eine für
diese Arbeit relevante Skizze bestehen kann, findet sich in Abschnitt 2.3. Es wird im
Weiteren davon ausgegangen, dass für jede Objektkategorie (Gebäude, Straßen, Flüsse,
etc.) eine eigene Tabelle in der Datenbank vorhanden ist.
2
Unter Migration im Zusammenhang mit Datenbanken versteht man die Übertragung der Daten von
einem Informationssystem in ein anderes.
Abbildung 2.4: Beispiel-Skizze für die Untersuchung von
Spatial

Grundlagen
16
In der Skizze ist folgendes dargestellt: Es wird nach einem Parkplatz gesucht, der sich
in der Nähe eines Bahnhofs befindet. 50 und 100 Meter vom Bahnhof entfernt befindet
sich jeweils ein Baum. Die beiden Bäume sollen sich im 90°-Winkel zueinander stehen,
d.h. wenn sich der eine Baum im Westen des Bahnhofs befindet, dann muss der andere
im Süden oder Norden des Bahnhofs liegen. Die Skizze besteht also aus vier Geo-
Objekten und drei Beziehungen (Topologien):
Geo-Objekte
Topologien mit Metrik
· Parkplatz
· Bahnhof
· 1.Baum
· 2.Baum
· Parkplatz ist neben Bahnhof
· 1.Baum ist 50 m und Winkel von
Bahnhof entfernt (
kann beliebig
gewählt werden)
· 2.Baum ist 100 m und Winkel ± 90°
von Bahnhof entfernt
Tabelle 2.2: Geo-Objekte und Topologien der Beispiel-Skizze
In Spatial kann die gesamte Anfrage nicht auf einmal ausgeführt werden. Sie muss
deshalb in mehrere Teilabfragen zerlegt werden. Da davon ausgegangen wird, dass für
jede Objektart (Parkplätze, Bäume, Gebäude oder Bahnhöfe) eine eigene Tabelle exis-
tiert, muss nur noch nach den topologischen Beziehungen dieser Objekte gesucht wer-
den.
Es bietet sich in Spatial an, für jede Topologie eine Abfrage auszuführen. Das Ergebnis
dieser Abfrage wird in einer Tabelle zwischengespeichert und für die folgenden Topolo-
gien weiterverwendet. Wird z.B. nach der Beziehung ,, Parkplatz neben Bahnhof" ge-
sucht, dann wird mit Hilfe des SDO_JOIN-Operators eine Tabelle erzeugt, die Paare
von Parkplätzen und Bahnhöfen enthält, für welche diese Beziehung erfüllt ist. Aus
dieser Tabelle und der Tabelle mit den Bäumen wird eine weitere Tabelle erzeugt, in
der die zweite Topologie erfüllt ist, usw.
Wie in Abschnitt 2.2.3 erwähnt, kann mit dem SDO_JOIN-Operator nicht in einem
Schritt nach Objektpaare mit einer vorgegebenen Entfernung von z.B. 50 Metern ge-
sucht werden. Es müssen also zuerst alle Objektpaare ermittelt werden, deren Abstand
kleiner oder gleich 50 Meter ist. Danach müssen im zweiten Schritt die Paare, die zu
nahe beieinander liegen entfernt werden. Falls große Entfernungen angegeben werden,
liefert der erste Schritt viele Ergebnisse, von denen die meisten im zweiten Schritt
wieder entfernt werden müssen. Diese Vorgehensweise, welche nicht umgangen werden
kann, wirkt sich dann negativ auf die Performance aus.
Auch Winkelbeziehungen, wie sie im Beispiel zwischen den beiden Bäumen und dem
Bahnhof bestehen können nicht direkt mit Spatial abgefragt werden. Jedoch lassen sich
diese durch eine zusätzliche Entfernungs-Beziehung realisieren: Wenn die Bäume und
der Bahnhof wie in der Skizze angeordnet sind, dann ergibt sich aus der Trigonometrie,
dass der Abstand zwischen den Bäumen
m
m
m
112
)
100
(
)
50
(
2
2
+
beträgt. Es muss

Details

Seiten
Erscheinungsform
Originalausgabe
Jahr
2004
ISBN (eBook)
9783832440718
ISBN (Paperback)
9783838640716
DOI
10.3239/9783832440718
Dateigröße
1.8 MB
Sprache
Deutsch
Institution / Hochschule
Hochschule Ravensburg-Weingarten – angewandte Informatik
Erscheinungsdatum
2005 (Februar)
Note
1,0
Schlagworte
r-baum spatial join oracle topologie softwareentwurf
Zurück

Titel: Konzeption und Implementierung eines Verfahrens für effiziente, nicht präzise Datenbankabfragen im Kontext eines skizzenbasierten GIS
book preview page numper 1
book preview page numper 2
book preview page numper 3
book preview page numper 4
book preview page numper 5
book preview page numper 6
book preview page numper 7
book preview page numper 8
book preview page numper 9
book preview page numper 10
book preview page numper 11
book preview page numper 12
book preview page numper 13
book preview page numper 14
book preview page numper 15
book preview page numper 16
book preview page numper 17
book preview page numper 18
book preview page numper 19
book preview page numper 20
96 Seiten
Cookie-Einstellungen