-
Die
vorliegende Erfindung bezieht sich auf ein Verfahren zum Indexieren
für die
Verwendung mit in einer Datenbank gespeicherten Entitäten.
-
Es
kann leicht gesehen werden, dass, wenn es eine riesengroße Anzahl
von Entitäten
in einer Datenbank gibt, das Identifizieren der Entitäten in Übereinstimmung
mit einer Abfrage in Bezug auf die Daten in der Datenbank innerhalb
einer angemessenen Zeitdauer eine nichttriviale Aufgabe ist. Um
den Wiedergewinnungsprozess zu erleichtern, sind im Allgemeinen
die Daten in der Datenbank in irgendeiner Weise indexiert, wobei
die Abfragen dann am Index ausgeführt werden. Es kann erwartet
werden, dass die Art, in der die Entitäten indexiert sind, eine signifikante
Bedeutung für
die Qualität
und die Geschwindigkeit der Wiedergewinnung besitzt, und da Informationen
zunehmend in Datenbanken gespeichert werden, gibt es ein signifikantes Interesse
daran, verbesserte Arten zum Indexieren von Daten zu finden.
-
Es
ist bekannt, Ortsdaten basierend auf Ortsnamen zu indexieren. Es
ist außerdem
bekannt, eine Menge geographischer Koordinaten aus den Ortsnamen
wiederzugewinnen und einen Index basierend auf den aus den Koordinaten
extrahierten topologischen Informationen anzubringen (z. B. "GIPSY": entwickelt in U.
C. Berkeley im Zusammenhang mit einer gemeinsamen NSF/NASA/ARPA-Initiative
(Wilensky u. a., 1994)). Außerdem
ist bekannt, einen Index basierend auf den geographischen Koordinaten
selbst anzubringen: die Verkäufer
von Datenbanken, wie z. B. OracleTM, haben
Systeme zum Speichern und Indexieren geometrischer Daten entwickelt – z. B.
die räumliche
Datenkassette von Oracle, die erlaubt, dass unter Verwendung eines erweiterten
(Nichtstandard-)Formulars von SQL ein räumliches Abfragen ausgeführt wird.
Andere Verkäufer, wie
MapInfoTM, SpatialWareTM,
InnogisticTM und InformixTM besitzen ähnliche
proprietäre
Arten, um mit räumlichen
Daten umzugehen. Insbesondere hat InnogisticTM ein
Produkt entwickelt, das als Cartology DSI bekannt ist, das geometrische
Vektordaten als Blobs (große
binäre
Objekte – die
durch die zugrunde liegende Datenbank nicht in intrinsisch erkennbar
sind) speichert. Es erzeugt außerdem
Indizes außerhalb
der Datenbank basierend auf der wohlbekannten 'Viereckbaum'-Idee
("quad tree"-Idee). Die Indexdaten
sind in Binärbaum-Strukturen
gespeichert, wobei auf sie durch Middleware-Dienste eines verteilten
Komponentenobjektmodells (DCOM) zugegriffen wird.
-
Sowohl
die OracleTM- als auch die InnogisticTM-Systeme machen vom Viereckbaum-Verfahren
Gebrauch, bei dem ein ganzer Bereich einer Schicht in eine Folge
von vier verschachtelten Quadraten geteilt und unterteilt wird.
Der ganze Bereich wird einem von vier Quadraten zugeordnet, die
als 0, 1, 2 und 3 bezeichnet werden. Jedes dieser Quadrate wird
in vier kleinere Quadrate unterteilt. Der Bereich des Quadrates
1 wird 10, 11, 12 und 13. Jedes von diesen wird weiter unterteilt,
was bedeutet, dass z. B. den Unterteilungen des Quadrates 11 die
Indexwerte von 110, 111, 112 und 113 zugeordnet werden würden. Im
Ergebnis kann auf irgendeinen Ort auf der Karte durch eine einzige
Indexzahl Bezug genommen werden. Der Nachteil bei diesem Viereckbaum-Verfahren
ist, dass Verarbeitungszeit verschwendet wird, wenn es keine Punkte
in den unterteilten Quadraten gibt; falls die Indexierung über einen
großen
Bereich ausgeführt
wird, ist diese verschwendete Verarbeitungszeit nichttrivial und
teuer.
-
US-Patent
US 6.161.105 beschreibt
ein System, durch das mehrdimensionale Daten durch binären hyperräumlichen
Code (BH-Code) dargestellt werden und das erlaubt, dass sie unter
Verwendung des Viereckbaum-Verfahrens indexiert werden.
-
Ein
alternatives Indexierungsverfahren ist das Verfahren des k-dimensionalen binären Suchbaums, das
durch J. L. Bentley in "Multidimensional
binary search trees for associative searching", Commun. ACM 18 (9), 1975, 509–517, beschrieben
wird. Bei diesem Verfahren werden die vertikalen und horizontalen
Seiten einer Region, die zu indexierende Punkte enthält, verglichen,
wobei die Region durch eine gerade Linie, die zur längeren Seite
senkrecht ist, in zwei Teile zerteilt wird. Die Position der Teilungs-
oder Partitionierungslinie wird so bestimmt, dass jeder resultierende
Teil die gleiche Datenmenge enthält.
Dieses Verfahren wird rekursiv auf jeden der zwei Teile angewendet,
bis ein vorgegebenes Kriterium erfüllt ist. Typischerweise steht
dieses Kriterium mit der Kapazität
einer Seite in einer relationalen Datenbank (d. h. den Speichereinschränkungen
der Datenbank) in Beziehung. Die partitionierten Teile werden als
Knoten in einem binären
Baum dargestellt, wobei die Positionen der Teilungslinien zwischen
den Teilen die Position eines Knotens bezüglich der anderen Knoten in
dem Baum bestimmen. Dieses Verfahren ist für das Wiedergewinnen von Punkten
bezüglich
eines Bereichs von Interesse besonders effizient, weil Abschnitte
des Suchraums (des binären
Baums) durch einen einfachen Vergleich zwischen dem Bereich von
Interesse und den Teilungslinien der Teile eliminiert werden können.
-
Die
Anwendung des k-dimensionalen Verfahrens auf geographische Daten
wird in "A file
Organisation for geographic information systems based an spatial
proximity" von Matsuyama
u. a., Computer Vision, Graphics and image processing, 26, 303–318, (1984),
beschrieben.
-
Insbesondere
vergleichen Matsuyama u. a. den Wirkungsgrad des k-dimensionalen Baumverfahrens mit
dem Viereckbaum-Verfahren, wobei sie feststellen, dass das k-dimensionale
Verfahren sowohl hinsichtlich der Verwendung der Speicherraums (weil
das Viereckbaum-Verfahren typischerweise Vierecke und folglich Speicher
Regionen zuordnet, in denen sich keine Punkte befinden) als auch
hinsichtlich der Datenwiedergewinnung (weil der Suchraum effizient
unter Verwendung des k-dimensionalen Baumverfahrens reduziert werden
kann, wie oben beschrieben worden ist) ein weit effizienteres Verfahren
ist.
-
Ungeachtet
der Tatsache, dass das k-dimensionale Baumverfahren effizienter
als das Standard-Viereckbaum-Verfahren ist, weist es immer noch
mehr Bereichen Speicher zu, als tatsächlich erforderlich ist – wie oben
beschrieben worden ist, wobei, wenn eine Region partitioniert wird
(Knoten im binären
Baum erzeugt werden), die Partitionierungslinie so bestimmt wird,
dass jeder resultierende Teil die gleiche Datenmenge enthält; folglich
besitzen die Teile eine größere Größe, als
sie besitzen müssten,
wobei schließlich
der binäre Baum
mehr Knoten besitzt, als notwendig sind.
-
OOI,
B. C. u. a. in Spatial KD-Tree: An Indexing Mechanism for Spatial
Database, Proceedings of the Annual International Computer Software
and Applications Conference (COMPSAC), Tokio, 7.–9. Oktober 1987, Washington,
IEEE Corp. Soc. Press., USA, Bd. conf. 11, Seiten 433–438, offenbaren
die Verwendung eines so genannten räumlichen kd-Baums, um die Verarbeitung
der Abfragen räumlicher
Datenbanken zu erleichtern. Der räumliche kd-Baum partitioniert
einen Satz von Datensätzen
im k-dimensionalen Raum basierend auf ihrer räumlichen Nähe in kleine Gruppen.
-
Gemäß einem
ersten Aspekt der vorliegenden Erfindung wird ein Verfahren zum
Anbringen eines Indexes an mehreren Entitäten geschaffen, das die im
Anspruch 1 des beigefügten
Satzes der Ansprüche
definierten Merkmale besitzt.
-
Folglich "schrumpft" das vorliegende
Verfahren im Vergleich zu bekannten Indexierungsverfahren zuerst
den Indexierungsraum, so dass es nur über Bereiche indexiert, die
Punkte enthalten. Folglich sind die Speicherbereiche entsprechend
kompakt, was hinsichtlich des Minimierens der Verwendung von Speicherraum
Vorteile besitzt.
-
In
der Tat identifizieren im oben erwähnten Aufsatz mit dem Titel "A file Organisation
for geographic information systems based an spatial proximity" Matsuyama u. a.
das dem Viereckbaum-Verfahren zugeordnete Problem – nämlich das
Indexieren von leeren Seiten der Datenbank (siehe S. 312) – wobei
sie aber das Problem lösen,
indem sie ein Verfahren anwenden, das von jenem der vorliegenden
Erfindung vollständig
verschieden ist, (das k-dimensionale Baumverfahren).
-
Vorteilhaft
umfasst der Schritt des Verkleinerns der Region das Berechnen der
Abstände
zwischen den Entitäten
in jeder von zwei Dimensionen; und für jede der Dimensionen das
Identifizieren, welche der Entitäten den
größten Abstand
zwischen sich besitzen, so dass, wenn die zwei Dimensionen senkrecht
zueinander sind, die in dem Schritt ii erzeugte Region ein Rechteck
ist, das durch wenigstens zwei Punkte definiert ist.
-
Die
Unterregionen können über eine
so genannte "verknüpfte Liste" der Punkte verknüpft werden,
was ein im Stand der Technik bekannter effektiver Verknüpfungsmechanismus
ist.
-
Vorzugsweise
wird die Region in vier Unterregionen unterteilt, wobei die Schritte
ii und iii für
jeden der zweiten Bereiche rekursiv wiederholt werden.
-
Zweckmäßig enthält das Verfahren
das Speichern der Verknüpfungsdaten
in einer Datenbank, das Halten einer Aufzeichnung der Anzahl von
Entitäten,
die in der Datenbank gespeichert sind, und für jede Unterregion das Schreiben
der momentan aufgezeichneten Anzahl in den ihr entsprechenden Speicherbereich.
-
Vorteilhaft
können
die Entitäten,
die in Übereinstimmung
mit dem ersten Aspekt der Erfindung indexiert worden sind, wiedergewonnen
werden. Insbesondere und hinsichtlich der Punkte, die den Entitäten entsprechen,
können
die Punkte, die in einem vorgegebenen Bereich enthalten sind, durch
das Ausführen
der folgenden Schritte wiedergewonnen werden:
- (a)
Identifizieren einer oder mehrerer Regionen, die in dem vorgegebenen
Bereich enthalten sind, wobei jede Region einen oder mehrerer Punkte
umschließt
und wobei jeder Region Verknüpfungsdaten
zugeordnet sind, die für
jede Region den Punkt oder die Punkte, die von dieser Region umschlossen
sind, identifizieren; und
- (b) Zugreifen auf Verknüpfungsdaten,
die den identifizierten Regionen entsprechen, um so Punkte, die
von den identifizierten Regionen umschlossen werden, wiederzugewinnen.
-
Die
Regionen entsprechen den Speicherbereichen, die in Übereinstimmung
mit dem ersten Aspekt der Erfindung indexiert sind. Folglich ist,
da die Speicherbereiche kompakt sind, weil, wie oben beschrieben
worden ist, sie um die Punkte "schrumpfverpackt" sind, die Identifikation
der Punkte im Index ein effizienter Prozess.
-
Vorzugsweise
umfasst der Identifizierungsschritt (a) die Schritte des Wiedergewinnens
einer Region und des Ausführens
eines Prozesses in Bezug auf die Region, wobei der Prozess die folgenden
Schritte umfasst: Vergleichen der Ausmaße der Region mit Ausmaßen des
vorgegebenen Bereichs, um festzustellen, ob die erste Region mit
dem vorgegebenen Bereich überlappt;
und falls eine Überlappung
besteht, Wiedergewinnen von Unterregionen der Region und Identifizieren
irgendwelcher derartiger Unterregionen, deren Ausmaße vollständig innerhalb
des vorgegebenen Bereichs liegen. Dieser Prozess kann für jede Unterregion
wiederholt werden, bis alle Unterregionen hiervon, die vollständig in
den vorgegebenen Bereich fallen, identifiziert sind.
-
Zweckmäßig werden
die mehreren Punkte im Voraus als eine Liste von Punkten in Übereinstimmung mit
Beziehungen zwischen den jeweiligen Regionen und Unterregionen hiervon
gespeichert und enthalten die Verknüpfungsdaten einen Wert, der
die Position eines ersten der entsprechenden umschlossenen Punkte
in der Liste von Punkten angibt. Der Zugriffsschritt (b) umfasst
dann für
jede der identifizierten Regionen und Unterregionen: Wiedergewinnen
eines Identifizierers, der die Anzahl der umschlossenen Punkte repräsentiert, und
Wiedergewinnen eines Positionswertes, der der identifizierten Unterregion
zugeordnet ist; und Zugreifen auf die Liste von Punkten und Wiedergewinnen
der Anzahl umschlossener Punkte ausgehend von einer Position in
der Liste, die durch den Positionswert gegeben ist.
-
Vorzugsweise
entspricht der in den Verknüpfungsdaten
enthaltene Wert der in den Speicherbereich geschriebenen aufgezeichneten
Anzahl.
-
Die
Verfahrenschritte sind vorzugsweise in einem oder mehreren Computer-Programmen
verkörpert, die
ganz oder teilweise als ein Signal in einer Trägerwelle für die Übertragung über ein Kommunikationsnetz und/oder
in einem computerlesbaren Medium als ein Computerprogrammprodukt
verkörpert
sein können.
-
Zweckmäßig entsprechen
die Punkte Daten, die in zwei Dimensionen ausgedrückt werden
können,
z. B. Ortsdaten (Länge
und Breite) oder Reichweitendaten. Die Reichweitendaten können Betriebsstunden
(z. B. Öffnungs-
und Schließzeiten),
Preismargen (z. B. maximale und minimale Preise) und/oder medizinische
Daten (z. B. maximaler und minimaler Blutdruck) sein. Folglich könnte ein
vorgegebener Bereich eine Preisspanne sein – wie z. B. ein maximaler Hauspreis
und minimaler Hauspreis. In Übereinstimmung
mit dem oben beschriebenen Wiedergewinnungsverfahren werden die
Ausmaße
eines vorgegebenen Bereichs (d. h. eine Preisklasse) mit einer vom
Index wiedergewonnenen Region verglichen. Alle Regionen, die mit
der Preisklasse überlappen,
werden dann der Reihe nach wiedergewonnen, bis eine Region identifiziert
ist, die vollständig
in die spezifizierte Preisklasse fällt. Alle Punkte, die in diese
identifizierte Region fallen, repräsentieren folglich Waren, die
einen Preis besitzen, der in die spezifizierte maximale und minimale
Preisklasse fällt.
-
Weitere
Aspekte, Merkmale und Vorteile der vorliegenden Erfindung werden
aus der folgenden Beschreibung der bevorzugten Ausführungsformen
der Erfindung offensichtlich, die auf die beigefügte Zeichnung Bezug nimmt,
worin:
-
1 eine
schematische graphische Darstellung ist, die Aspekte eines durch
die Erfindung verwendeten Kommunikationssystems veranschaulicht;
-
2 eine
schematische graphische Darstellung ist, die ein Beispiel der Punkte
zeigt, die gemäß der Erfindung
zu indexieren sind;
-
3 eine
schematische graphische Darstellung ist, die eine erweiterte Ansicht
nach 2 zeigt;
-
4a u. 4b in
Kombination einen Ablaufplan umfassen, der eine Ausführungsform
eines Indexierungsprozesses gemäß der vorliegenden
Erfindung zeigt, wenn die in 2 gezeigten
Punkte indexiert werden;
-
5 eine
schematische graphische Darstellung ist, die die Anwendung des Prozesses
nach den 4a u. 4b zeigt,
um ein Viereck um die in 2 gezeigten Punkte zu erzeugen;
-
6 eine
schematische graphische Darstellung ist, die die Anwendung des Prozesses
nach den 4a u. 4b zeigt,
um ein Unterviereck des gemäß 5 erzeugten
Vierecks zu erzeugen;
-
7 eine
schematische graphische Darstellung ist, die die Anwendung des Prozesses
nach den 4a u. 4b zeigt,
um ein Unterviereck von einem der Untervierecke nach 6 zu
erzeugen;
-
8 eine
erweiterte Ansicht nach 7 ist;
-
9 eine
erweiterte Ansicht nach 8 ist, die die Anwendung des
Prozesses nach den 4a u. 4b zeigt,
um ein weiteres der in 7 gezeigten Untervierecke zu
erzeugen;
-
10 eine
erweiterte Ansicht nach 8 ist, die die Anwendung des
Prozesses nach den 4a u. 4b zeigt,
um ein weiteres der in 7 gezeigten Untervierecke zu
erzeugen;
-
11 eine
schematische graphische Darstellung ist, die die Anwendung des Prozesses
nach den 4a und 4b zeigt,
um ein weiteres Unterviereck von einem der Untervierecke nach 6 zu
erzeugen;
-
12 eine
schematische graphische Darstellung ist, die einen Prozess des Speicherns
von Punkten gemäß der Erfindung
veranschaulicht;
-
13a u. 13b in
Kombination einen Ablaufplan umfassen, der eine Ausführungsform
eines Wiedergewinnungsprozesses gemäß der vorliegenden Erfindung
zeigt, wenn die Punkte in Übereinstimmung
mit einem Bereich von Interesse wiedergewonnen werden;
-
14 eine
schematische graphische Darstellung ist, die ein Beispiel eines
Bereichs von Interesse zeigt, für
den Punkte wiederzugewinnen sind;
-
15 eine
schematische graphische Darstellung ist, die die Anwendung des Prozesses
nach den 13a u. 13b auf
eines der Untervierecke nach 6 zeigt;
-
16 und 17 eine
vergrößerte Ansicht
nach 15 und schematische graphische Darstellungen sind,
die die Anwendung des Prozesses nach den 13a u. 13b auf ein erstes der Untervierecke nach 7 zeigen;
-
18 eine
vergrößerte Ansicht
nach 15 ist und den Bereich von Interesse und ein zweites
der Untervierecke nach 7 zeigt;
-
19 eine
schematische graphische Darstellung ist, die 18 entspricht
und die Anwendung des Prozesses nach den 13a u. 13b auf das zweite der Untervierecke nach 7 zeigt;
-
20a u. 20b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein (erstes) Unterviereck des in 18 gezeigten
Untervierecks zeigen;
-
21a u. 21b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein weiteres (ein zweites) Unterviereck des in 18 gezeigten
Untervierecks zeigen;
-
22a u. 22b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein weiteres Unterviereck (ein drittes) des in 18 gezeigten
Untervierecks zeigen;
-
23a u. 23b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein weiteres Unterviereck (ein viertes) des in 18 gezeigten
Untervierecks zeigen;
-
24 eine
vergrößerte Ansicht
nach 15 ist und den Bereich von Interesse und ein drittes
der Untervierecke nach 7 zeigt;
-
25 eine
schematische graphische Darstellung ist, die 24 entspricht
und die Anwendung des Prozesses nach den 13a u. 13b auf das dritte der Untervierecke nach 7 zeigt;
-
26a u. 26b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein (erstes) Unterviereck des in 24 gezeigten
Untervierecks zeigen;
-
27a u. 27b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein weiteres (ein zweites) Unterviereck des in 24 gezeigten
Untervierecks zeigen;
-
28a u. 28b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach
den 13a u. 13b auf
ein weiteres Unterviereck (ein drittes) des in 24 gezeigten
Untervierecks zeigen;
-
29a u. 29b schematische
graphische Darstellungen sind, die die Anwendung des Prozesses nach den 13a u. 13b auf
ein weiteres Unterviereck (ein viertes) des in 24 gezeigten
Untervierecks zeigen;
-
30 eine
vergrößerte Ansicht
nach 15 ist und den Bereich von Interesse und ein viertes
der Untervierecke nach 7 zeigt; und
-
31 eine
schematische graphische Darstellung ist, die 30 entspricht
und die Anwendung des Prozesses nach den 13a u. 13b auf das vierte der Untervierecke nach 7 zeigt;
-
32 ein
Ablaufplan ist, der weitere Schritte zeigt, die im Wiedergewinnungsprozess
nach den 13a u. 13b enthalten
sind; und jede der
-
33a–33e eine schematische Veranschaulichung einer
Region von Interesse ist, für
die Punkte gemäß der Erfindung
wiederzugewinnen sind.
-
Überblick
-
Die
Datenbank-Server DB1, DB2, wie z. B. jene, die in 1 gezeigt
sind, speichern typischerweise Informationen für die Wiedergewinnung durch
die Anwender. Auf der physikalischen Ebene enthält die Kommunikationsumgebung,
in der sich die Datenbank-Server DB1, DB2 befinden, wenigstens eine
Anwenderschnittstelle, die im Allgemeinen durch ein Computer-Endgerät oder einen
Arbeitsplatzrechner T3 bereitgestellt wird.
-
Die
Ausführungsformen
der Erfindung können
im Arbeitsplatzrechner T3 ausgeführt
werden, der mit den Datenbank-Servern DB1, DB2 verbunden ist. Obwohl
die Datenbank-Server DB1, DB2 im selben LAN N1 wie das Endgerät T3 gezeigt
sind, ist es selbstverständlich,
dass die Datenbank-Server DB1, DB2 mit anderen Netzen verbunden
sein könnten,
die wiederum über
eine oder mehrere (nicht gezeigte) Vermittlungen und/oder Router
mit dem LAN N1 verbunden sind. Die Ausführungsformen empfangen Daten
als Eingabe, z. B. als eine Datei, und bringen einen Index an den
Daten an, wie im Folgenden ausführlicher
beschrieben wird. Der angebrachte Index wird dann in einer der Datenbanken
DB1, DB2 gesichert, wobei die indexieren Daten außerdem in
einer durch die Struktur des angebrachten Indexes gegebenen Reihenfolge
in einer der Datenbanken DB1, DB2 gesichert werden. Der angebrachte
Index kann in derselben oder in einer anderen Datenbank wie der
Datenbank, in der die Daten gespeichert sind, gesichert werden.
-
Die
Ausführungsformen
der vorliegenden Erfindung betreffen das Indexieren von Entitäten, die
durch 2 Dimensionen definiert sind. Offensichtliche Beispiele der
Entitäten,
die gemäß den Ausführungsformen
indexiert werden können,
enthalten den Ort von Objekten, wie z. B. Tankstellen, Geldautomaten
usw., da die Position der Objekte im Allgemeinen in Form von Breite
und Länge
definiert ist. Viele andere Entitäten können in 2 Dimensionen dargestellt
werden – z.
B. die Beschleunigung eines Motorrads als eine Funktion von Zeit
und Geschwindigkeit, die Leitfähigkeit
eines Materials als eine Funktion der Materialeigenschaften und
der Temperatur, die Deformation eines Gegenstandes als eine Funktion
der Materialeigenschaften und der auf den Gegenstand ausgeübten Kraft
usw. Außerdem
können
Transformationen auf n-dimensionale Parameter angewendet werden,
um sie auf 2-dimensionale Parameter zu verringern, die in einem
2-dimensionalen Raum gezeigt werden können.
-
Ein
weiteres Beispiel von Entitäten,
die unter Verwendung der Ausführungsformen
der vorliegenden Erfindung indexiert werden können, enthält Reichweiteninformationen,
z. B. Zeitinformationen, Preisinformationen und Informationen über medizinische
Zustande.
-
Ein
Beispiel der Zeitspanneninformationen sind die Öffnungs- und Schließzeiten
von Geschäfts-
und Freizeiteinrichtungen – diese
Zeiten können
in zwei Dimensionen ausgedrückt
werden, z. B. mit den Schließ- und Öffnungszeiten
auf den Ordinaten- bzw. Abszissenachsen. Ähnlich können Lieferzeiten (früheste und
späteste)
in zwei Dimensionen ausgedrückt
werden.
-
Ein
Beispiel der Preisinformationen enthält die Preise von Waren, so
dass z. B. maximale und minimale Preise von Waren jeweils in einer
von zwei Dimensionen ausgedrückt
und auf diese Weise unter Verwendung der Ausführungsformen der Erfindung
indexiert werden können.
Die Preisinformationen enthalten außerdem Handelsinformationen,
wie sie verwendet werden, um Wertpapiere, Aktien, Anleihen usw.
zu kaufen und zu verkaufen.
-
Ein
Beispiel der Informationen über
medizinische Zustände
enthält
Statistiken bezüglich
messbarer Zustände,
wie z. B. Körpertemperatur
und Blutdruck, und Zustande, die in numerische Darstellungen übersetzt werden
können,
wie z. B. die Stellen von Karzinomen.
-
In
der folgenden Beschreibung werden die Entitäten im Allgemeinen als "Punkte" bezeichnet, um den Kontext
der Entitäten
(z. B. Tankstelle, Geldautomat usw.) von den Mechaniken der Ausführungsform
zu trennen.
-
Im Überblick
wird eine Ausführungsform
eines Verfahrens zum Indexieren von Punkten unter Bezugnahme auf 2 beschrieben. 2 zeigt
einen Bereich R1, in dem sich mehrere Punkte 200 befinden. Jeder der
Punkte ist in einem Raum der x, y-Koordinaten definiert. Der Bereich
R1, der zu indexierende Punkte umfasst, wird im Wesentlichen untersucht
und in die Bereiche R3, R4, die Punkte enthalten, und den Bereich
R2, der keine Punkte enthält,
zerteilt (die Bereiche könnten
in jede Form, wie z. B. Rechteck, Dreieck oder Streifen, zerteilt
werden; 2 zeigt die Bereiche, die in
Streifen zerteilt sind, um das erfinderische Konzept dieser Erfindung
zu beschreiben). Die Ausführungsform
untersucht dann die Verteilung der Punkte in den Bereichen R3 und
R4, wobei sie dann in einem Maßstab,
der kleiner als der ist, der für
die Region R1 betrachtet worden ist, die Bereiche in R3 und R4 identifiziert,
die Punkte umfassen. In 3 wird R4 im wesentlichen R11,
wobei die Verteilung der Punkte in R11 untersucht wird. Indem die
Verteilung der Punkte in dieser Weise konzentriert wird, werden
die Bereiche, die keine Punkte enthalten, die Region R2 in 2 und
die Region R12 in 3, implizit verworfen. Der Prozess
wird kontinuierlich wiederholt, wobei er sich effektiv durch eine
Folge von Bereichen mit abnehmender Größe "nach unten vertieft", bis die Größe eines Bereichs so ist, dass
sie auf die Größe eines
einzigen Punktes kollabiert. Wie sich die Ausführungsform "nach unten vertieft", ist jeder Bereich mit dem Bereich über ihm
verknüpft,
so dass jeder Punkt durch eine Folge von Bereichen verknüpft ist.
Ein Index für
diese Punkte umfasst die Folge der Bereiche, wobei diese Bereiche
und Punkte verwendet werden, um einen Index zu erzeugen (was im
Folgenden ausführlicher
beschrieben wird), der in der Datenbank DB1 gesichert wird. Die
Beziehung zwischen den Punkten und den Bereichen ermöglicht es,
dass die Punkte durch die Identifikation eines Bereichs im Index
identifiziert werden.
-
Einer
der Vorteile des Erzeugens eines Indexes, wie oben beschrieben worden
ist, ist, dass der Abfrage-Suchbereich auf Bereiche begrenzt ist,
von denen bekannt ist, dass sie Punkte enthalten – d. h.
die Abfragen werden nur an den in der Datenbank DB1 gesicherten
Bereichen ausgeführt,
und da diese Bereiche per definitionem Punkte enthalten, ist der
Suchbereich relativ kompakt. Zurück
in 2 ist der Prozess des Identifizierens von Punkten
in Bezug auf eine Abfrage gemäß der oben
beschriebenen Ausführungsform
schneller, als wenn der Index Informationen bezüglich des ganzen Bereichs R1
umfasst.
-
In
einer besonderen Form einer Ausführungsform,
die im Folgenden unter Bezugnahme auf die 4–11 dargestellt
wird, sind die Punkte 2-dimensionale Koordinaten im x, y-Raum. Falls
die zu indexierenden Entitäten
Beschleunigungswerte sind, die durch eine entsprechende Menge von
Zeit- und Geschwindigkeitswerten definiert sind, werden die Zeit-
und Geschwindigkeitswerte direkt auf den Raum der x, y-Koordinaten abgebildet,
so dass (t1, v1), (t2, v2), ..., (tn, vn) Koordinaten von Punkten
sind, die den Beschleunigungswerten entsprechen. Falls die zu indexierenden
Entitäten
Ortswerte sind, die durch eine entsprechende Menge von Breiten-
und Längenwerten
definiert sind, werden die Breiten- und Längewerte direkt auf einem Raum
der x, y-Koordinaten abgebildet, so dass (lat_1, long_1), ..., (lat_n,
long_n) die Koordinaten von Punkten sind, die den Ortswerten entsprechen.
Es wird angenommen, dass die Punkte gespeichert worden sind (z.
B. in eine Datei geschrieben worden sind), so dass die Ausführungsformen
der Erfindung die Punkte in Form einer Datei lesen. In alternati ven
Ausführungsformen
kann ein Anwender die Punkte eingeben, wenn der Index für diese
Punkte angebracht wird.
-
Außerdem sind
in der im Folgenden dargestellten Ausführungsform die Bereiche Quadrate,
die in der folgenden Beschreibung als "Viereck" und "Unterviereck" bezeichnet werden, wobei jedes Viereck
der Reihe nach in vier Untervierecke zerteilt wird. Jedes Unterviereck
wird nach dem Vorhandensein von Punkten untersucht. Jene ohne Punkte
werden verworfen, was ein äquivalenter
Prozess zum Verwerfen des Bereichs R2 ist, der oben unter Bezugnahme
auf die 2 und 3 beschrieben
worden ist, wobei jedes neue Unterviereck, das Punkte enthält, um den
kleinsten Bereich "schrumpfverpackt" wird, der in diesem
Unterviereck Punkte enthält.
(Die Ausführungsform
analysiert die Bereiche in Übereinstimmung
mit Quadraten, es könnten
aber viele andere Formen verwendet werden, um die "Schrumpfverpackung" um die Punkte auszuführen.) Jedes
Unterviereck wird dann abermals in vier Untervierecke unterteilt,
wobei leere Untervierecke abermals verworfen werden und jedes verbleibende
Unterviereck um seinen kleinsten Bereich, der Punkte enthält, "schrumpfverpackt" wird. Schließlich ist
jedes verbleibende Unterviereck auf einen einzigen Punkt "schrumpfverpackt", wobei seine Koordinaten
jene des betroffenen Punkts sind. Sobald das Viereck und alle Untervierecke,
einschließlich
sowohl der dazwischenliegenden Untervierecke, die nicht verworfen
worden sind, als auch der Untervierecke, die mit einzelnen Punkten
zusammenfallen, identifiziert worden sind, wird ein Index für die Punkte,
der das Viereck und die Untervierecke umfasst, die für jeden
relevant sind, erzeugt. Dies ist nach der Erörterung der 5–10 ausführlich beschrieben.
-
Im
Folgenden sind die Schritte S4.1 bis S4.9 der Reihe nach in dem
Ablaufplan nach den 4a und 4b gezeigt
und durch die Operationen mit den gleichen Bezugszeichen, wie sie
in den 5–11 gezeigt
sind, veranschaulicht.
-
5
-
- • Schritt
S4.1 Lese die x, y-Koordinaten aller zu indexierender Punkte ein
(wie oben dargelegt worden ist, können die Punkte von irgendeiner
Speicherstelle, wie z. B. einer Datei, oder direkt von einem Anwender gelesen
werden);
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte, identifiziere
und führe
die "Schrumpfverpackung" um die Koordinaten
der äußersten
Punkte aus (der Begrenzungsrahmen ist durch die Differenz zwischen
den Koordinaten der äußersten
Punkte sowohl in der x- als auch der y-Dimension gegeben: dx bzw.
dy). Der Begrenzungsrahmen ist das äußerste Viereck 501;
- • Schritt
S4.3 u. Schritt 4.4 Sichere die Ausmaße des Vierecks 501 – d. h.
dx, dy – und
die Koordinaten der Punkte in ihm;
- • Schritt
S4.5 Prüfe,
ob das äußerste Viereck 501 eine
positive Größe besitzt
(d. h., sind dy, dy des Vierecks 501 gleich null?). In
dem in 5 gezeigten Beispiel gibt es ein äußerstes
Viereck 501, weil sich in dem Viereck mehrere Punkte befinden,
sind dx, dy von null verschieden, wobei folglich das Viereck 501 eine
positive Größe besitzt;
- • Schritt
S4.6 Zerteile das äußerste Viereck 501 in
vier Untervierecke 503a, 503b, 503c, 503d;
- • Schritt
S4.6.1 Etikettiere jeden Punkt mit seinem relevanten Unterviereck
und zeichne die Anzahl der Punkte in jedem Unterviereck auf;
- • Schritt
S4.7 Prüfe
beginnend mit dem Unterviereck 0 (503a), ob es irgendwelche
Punkte im Unterviereck 503a gibt.
-
Wenn
es Punkte gibt, gebe die Punkte in diesem Unterviereck 0 (503a)
in den Schritt S4.1 ein und laufe für das Unterviereck 0 (503a)
weiter durch die Schritte Schritt S4.1, wie im Folgenden unter Bezugnahme auf 6 beschrieben
ist.
-
6
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 503a entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte in 503a,
erzeuge ein "schrumpfverpacktes" Unterviereck 0 601.
Dies veranschaulicht das oben beschriebene Prinzip – die Ausführungsform
identifiziert einen Bereich im Unterviereck 0, in dem es keine Punkte
gibt, wobei dieser Bereich dann verworfen wird;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des Untervierecks 0 (601) – d. h.
dy, dy – und
die Koordinaten der Punkte in ihm;
- • Schritt
S4.5 Prüfe,
ob das Unterviereck 601 eine positive Größe besitzt?
(Das heißt
sind dx, dy des Vierecks 601 gleich null?) Wie in 6 zu
sehen ist, befinden sich im Viereck 601 mehrere Punkte,
sind dx, dy für
das Viereck 601 von null verschieden und besitzt folglich
das Unterviereck 601 eine positive Größe;
- • Schritt
S4.6 Zerteile das Unterviereck 0 601 in 4 Untervierecke;
0,0 (603a), 0,1 (603b), 0,2 (603c), 0,3 (603d);
- • Schritt
S4.6.1 Etikettiere jeden Punkt mit seinem relevanten Unterviereck
und zeichne die Anzahl der Punkte in jedem Unterviereck auf;
- • Schritt
S4.7 Prüfe
beginnend mit dem Unterviereck 0,0 (603a), ob es im Unterviereck
0,0 (603a) irgendwelche Punkte gibt: Da es Punkte gibt,
gebe diese Punkte in diesem Unterviereck 0,0 (603a) in
den Schritt S4.1 ein und laufe für
das Unterviereck 0,0 (603a) weiter durch die Schritte Schritt
S4.1, wie im Folgenden unter Bezugnahme auf 7 beschrieben
ist.
-
7
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 603a entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte im Unterviereck
0,0 (603a), erzeuge ein "schrumpfverpacktes" Unterviereck 0,0 701. Wie
für das
Unterviereck 0 wird der Bereich ohne Punkte im Unterviereck 603a ignoriert;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des Untervierecks 0,0 (701) – d. h.
dy, dy – und
die Koordinaten der Punkte in ihm;
- • Schritt
S4.5 Prüfe,
ob das Unterviereck 701 eine positive Größe besitzt?
(Das heißt
sind dx, dy des Vierecks 701 gleich null?) Wie in 7 zu
sehen ist, befinden sich im Viereck 701 mehrere Punkte,
sind dx, dy für
das Viereck 701 von null verschieden und besitzt dieses
Unterviereck 701 eine positive Größe;
- • Schritt
S4.6 Zerteile das Unterviereck 0,0 701 in 4 Untervierecke;
0,0,0 (703a), 0,0,1 (703b), 0,0,2 (703c), 0,0,3
(703d);
- • Schritt
S4.6.1 Etikettiere jeden Punkt mit seinem relevanten Unterviereck
und zeichne die Anzahl der Punkte in jedem Unterviereck auf;
- • Schritt
S4.7 Prüfe
beginnend mit dem Unterviereck 0,0,0 (703a), ob es im Unterviereck
0,0,0 (703a) irgendwelche Punkte gibt: es gibt einen Punkt
im Unterviereck 0,0,0 (703a), gebe daher diese Punkte in
diesem Unterviereck 0,0,0 in den Schritt S4.1 ein und laufe für das Unterviereck
0,0,0 (703a) weiter durch die Schritte Schritt S4.1, wie
im Folgenden unter weiterer Bezugnahme auf 7 beschrieben
ist.
-
Außerdem
in 7
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 703a entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte im Unterviereck
0,0,0 (703a), erzeuge ein "schrumpfverpacktes" Unterviereck 0,0,0: hier um einen einzigen
Punkt;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des "schrumpfverpackten" Untervierecks 0,0,0, die nun auf einen
einzigen Punkt herunter sind, so dass dy, dy = 0 gilt, und sichere
die Koordinaten des Punkts;
- • Schritt
S4.5 Prüfe,
ob das Unterviereck eine positive Größe besitzt? (Das heißt sind
dx, dy des Punkts gleich null?) In der Tat sind dx und dy beide
null, weil das Unterviereck 703a in einen einzigen Punkt
kollabiert ist. Daher zum Schritt S4.8;
- • Schritt
S4.8 Inkrementiere den Unterviereck-Zähler i auf dieser Ebene (0,0,i),
gebe die Punkte (Schritt S4.7) im Unterviereck 0,0,1 (703b)
in den Schritt S4.1 ein und laufe für das Untervier eck 0,0,1 (703b)
weiter durch die Schritte Schritt S4.1, wie im Folgenden unter Bezugnahme
auf 8 beschrieben ist.
-
8
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 703b entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte im Unterviereck
0,0,1 (703b), erzeuge ein "schrumpfverpacktes" Unterviereck 0,0,1 801. Wie
für das
Unterviereck 0 wird der Bereich ohne Punkte im Unterviereck 703b ignoriert;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des Untervierecks 801 – d. h.
dy, dy – und
die Koordinaten der Punkte in ihm;
- • Schritt
S4.5 Prüfe,
ob das Unterviereck 801 eine positive Größe besitzt?
(Das heißt
sind dx, dy des Vierecks 703a gleich null?) In dem Unterviereck 801 befinden
sich mehrere Punkte, sind dx, dy für das Viereck 801 von
null verschieden und besitzt folglich dieses Unterviereck 801 eine
positive Größe;
- • Schritt
S4.6 Zerteile das Unterviereck 0,0,1 801 in 4 Untervierecke;
0,0,1,0 (803a), 0,0,1,1 (803b), 0,0,1,2 (803c),
0,0,1,3 (803d);
- • Schritt
S4.6.1 Etikettiere jeden Punkt mit seinem relevanten Unterviereck
und zeichne die Anzahl der Punkte in jedem Unterviereck auf;
- • Schritt
S4.7 Prüfe
beginnend mit dem Unterviereck 0,0,1,0 (803a), ob es im
Unterviereck 0,0,1,0 (803a) irgendwelche Punkte gibt: Es
gibt keine Punkte im Unterviereck 0,0,1,0 (803a);
- • Schritt
S4.8 Inkrementiere den Unterviereck-Zähler i auf dieser Ebene (0,0,1,i)
und gebe die Punkte (Schritt S4.7) im Unterviereck 0,0,1,1 (803b)
in den Schritt S4.1 ein und laufe für das Un terviereck 0,0,1,1 (803b)
weiter durch die Schritte Schritt S4.1, wie im Folgenden unter Bezugnahme
auf 9 beschrieben ist.
-
9
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 803b entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte im Unterviereck
0,0,1,1 (803b), erzeuge ein "schrumpfverpacktes" Unterviereck 0,0,1,1, das ein einziger
Punkt ist;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des einzigen Punkts – d. h.
dy, dy – und
die Koordinaten des Punkts;
- • Schritt
S4.5 Prüfe,
ob der Punkt eine positive Größe besitzt?
(Das heißt
sind dx, dy des Punkts gleich null?) In der Tat sind dx und dy beide
null, weil das Unterviereck 803b in einen einzigen Punkt
kollabiert ist. Daher zum Schritt 4.8;
- • Schritt
S4.8 Inkrementiere den Unterviereck-Zähler i auf dieser Ebene (0,0,1,i)
und gebe die Punkte im Unterviereck 0,0,1,2 (803b) in den
Schritt S4.1 ein und laufe für
das Unterviereck 0,0,1,2 (803b) weiter durch die Schritte
Schritt S4.1, wie im Folgenden unter weiterer Bezugnahme auf 9 beschrieben
ist.
-
Außerdem
in 9
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 803c entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte im Unterviereck
0,0,1,2 (803c), erzeuge ein "schrumpfverpacktes" Unterviereck 0,0,1,2, das ein einziger
Punkt ist;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des einzigen Punkts – d. h.
dy, dy – und
die Koordinaten des Punkts;
- • Schritt
S4.5 Prüfe,
ob der Punkt eine positive Größe besitzt?
(Das heißt
sind dx, dy des Punkts gleich null?) In der Tat sind dx und dy beide
null, weil das Unterviereck 803c in einen einzigen Punkt
kollabiert ist. Daher zum Schritt S4.8;
- • Schritt
S4.8 Inkrementiere den Unterviereck-Zähler i auf dieser Ebene (0,0,1,i).
Es gibt keine Punkte (Schritt S4.7) im Unterviereck 0,0,1,3 (803b),
daher zurück
zum Schritt S4.8: inkrementiere den Unterviereck-Zähler i auf
dieser Ebene (0,0,1,i): aber i > 3,
daher
- • Schritt
S4.9 Kehre zur Unterviereck-Ebene 0,0,i zurück und inkrementiere den Unterviereck-Zähler von
1 zu 2 und betrachte folglich das Unterviereck 0,0,2 (703c):
Es gibt einen Punkt im Unterviereck 0,0,2 (703c), daher
gebe die Punkte (Schritt S4.7) im Unterviereck 0,0,2 (703c)
in den Schritt S4.1 ein und laufe für das Unterviereck 0,0,2 (703c)
weiter durch die Schritte Schritt S4.1, wie im Folgenden unter Bezugnahme
auf 10 beschrieben ist.
-
10
-
- • Schritt
S4.1 Lese die x, y-Koordinaten der Punkte ein, die dem Unterviereck 703c entsprechen;
- • Schritt
S4.2 Erstelle einen Begrenzungsrahmen für alle Punkte im Unterviereck
0,0,2 (703c), erzeuge ein "schrumpfverpacktes" Unterviereck 0,0,2, das ein einziger
Punkt ist;
- • Schritt
S4.3 u. Schritt S4.4 Sichere die Ausmaße des einzigen Punkts – d. h.
dy, dy – und
die Koordinaten des Punkts;
- • Schritt
S4.5 Prüfe,
ob der Punkt eine positive Größe besitzt?
(Das heißt
sind dx, dy des Punkts gleich null?) In der Tat sind dx und dy beide
null, weil das Unterviereck 703c in einen einzigen Punkt
kollabiert ist. Daher zum Schritt 4.8;
- • Schritt
S4.8 Inkrementiere den Unterviereck-Zähler i auf dieser Ebene (0,0,i).
Es gibt keine Punkte (Schritt S4.7) im Unterviereck 0,0,3 (703d),
daher zurück
zum Schritt S4.8: inkrementiere den Unterviereck-Zähler i auf
dieser Ebene (0,0,i): aber i > 3,
daher
- • Schritt
S4.9 Kehre zur Unterviereck-Ebene 0,i zurück und inkrementiere den Unterviereck-Zähler i von
0 zu 1 und betrachte folglich das Unterviereck 0,1 (603b),
wie unter Bezugnahme auf 11 beschrieben
ist.
-
11
-
Der
in den 8–10 beschriebene
Prozess wird wiederholt, aber für
das Unterviereck 0,1, wobei, sobald alle Punkte innerhalb des Untervierecks
O,n Untervierecken zugeordnet worden sind, der Prozess zum Unterviereck
1 geht.
-
Wie
früher
beschrieben worden ist, ist das Anbringen eines Indexes an diesen
Punkten dann eine Sache des Sicherns der Unterviereck-Informationen. Dies
kann in vielen Arten bewerkstelligt werden, aber vorzugsweise umfasst
der Index die in den Schritten S4.3 und S4.4 gesicherten Unterviereck-Informationen,
nämlich
die Ausmaße
des Untervierecks (in den x, y-Koordinaten) und die Koordinaten
der in dieses fallenden Punkte und eine Verknüpfung zu den 4 Unterquadranten
in dem Unterviereck. Folglich umfasst der Index im Wesentlichen
eine Hierarchie von Unterviereck-Strukturen, wobei die Hierarchie
durch die Beziehung zwischen jedem aufeinander folgenden Unterviereck
und seinen 4 Untervierecken gegeben ist. Die Untervierecke werden
in Übereinstimmung
mit der Unterviereck-Hierarchie vom größten Unterviereck (hier 501 in 5)
hinunter zum kleinsten Unterviereck in den Index geschrieben.
-
Zusätzlich zum
Sichern der Unterviereck-Strukturen in der Datenbank DB1 werden
die Punkte in einer durch das Inverse der Unterviereck-Hierarchie
gegebenen Reihenfolge in die Datenbank (entweder in dieselbe Datenbank
oder eine andere Datenbank), z. B. in eine Datei, geschrieben. Folglich
werden in diesem Fall die Punkte in den Untervierecken am unteren
Ende der Hierarchie zuerst in die Datei geschrieben. Da die Punkte in
eine Datei geschrieben werden, wird eine laufende Rechnung der Gesamtzahl
der Punkte (Aufzeichnung der Anzahl der Punkte) aufrechterhalten,
so dass ein Zähler,
der momentane Anzahl der Punkte, der bisher begegnet worden ist,
+ 1 repräsentiert,
in die entsprechende Unterviereck-Struktur geschrieben wird, wie
jeder Punkt in die Datei geschrieben wird. Die Rechnung arbeitet
vom kleinsten Unterviereck aufwärts,
wobei sie für jedes
Unterviereck im Wesentlichen die Position des ersten von allen Punkten
in diesem Unterviereck im Vergleich zu allen indexierten Punkten
(Pos
sub_quad) angibt, z. B. unter Bezugnahme
auf
12.
Unterviereck | Punkte
im Unterviereck (N) | Nummer
des ersten in das Unterviereck geschriebenen Punkts (Possub_quad) | hervorgehobener
Punkt in der Punktedatei |
0,0,1,1 | n
(N = 1) | 1 | n,
m, p, o, ... |
0,0,1,2 | m
(N = 1) | 2 | n,
m, p, o, ... |
0,0,0 | p
(N = 1) | 3 | n,
m, p, o, ... |
0,0,1 | n,
m (N = 2) | 1 | n,
m, p, o, ... |
0,0,2 | o
(N = 1) | 4 | n,
m, p, o, ... |
0,0 | n,
m, p, o (N = 4) | 1 | n,
m, p, o, ... |
0,1,c,d | einige
Punkte | 5 | n,
m, p, o, nächster
... |
-
Folglich
lautet die Punktedatei für
das Unterviereck 501 (das äußerste Viereck, siehe 5)
n, m, p, o, ... (beginnend vom kleinsten Unterviereck 0,0,1,1).
Da sowohl die Anzahl der Punkte (N) als auch die Nummer in der laufenden
Rechnung der Punkte (Possub_quad), die dem
ersten Punkt in einem Unterviereck entspricht, in das Unterviereck
geschrieben sind, können
dann, sobald ein Unterviereck von Interesse identifiziert worden
ist, die Punkte, die in dem identifizierten Unterviereck liegen,
extrahiert werden, indem in der Punktedatei zu (Possub_quad)
gegangen wird und N Punkte von dieser Position extrahiert werden.
Dies ist in einer Ausführungsform
demonstriert, die die Wiedergewinnung von Punkten demonstriert.
-
Das Wiedergewinnen von Informationen
-
Die
zweite Erfindung bezieht sich auf ein Verfahren zum Wiedergewinnen
von Entitäten
mittels eines Indexes von Elementen, der mit den Entitäten in Beziehung
steht, wenn die Beziehung zwischen jedem Element und den anderen
Elementen im Index und die Beziehung zwischen den Elementen im Index
und den indexierten Entitäten
bekannt sind. Das Verfahren ist leicht auf einen in Übereinstimmung
mit dem oben dargestellten Verfahren zum Indexieren erzeugten Index
anwendbar, weil der Index eine Hierarchie von Unterviereck-Strukturen
umfasst und die Hierarchie (durch die Viereck- > Unterviereck-Beziehungen)
gut definiert ist. Es sollte jedoch daran gedacht werden, dass das
Verfahren in gleicher Weise auf irgendeinen Indextyp anwendbar ist,
der diese Bedingungen erfüllt.
-
In
der folgenden Beschreibung wird eine Ausführungsform des Wiedergewinnungsprozesses
beschrieben, bei der ein Index für
die Punkte mit einer Abfrage, die eine "Region von Interesse" spezifiziert, abgefragt wird. Es wird
angenommen, dass:
- • die Elemente im Index mehrere
Bereiche in einem vorgegebenen Bereich sind,
- • die
indexierten Entitäten
Punkte sind, die durch zwei Dimensionen definiert sind;
- • es
eine vorgegebene Beziehung zwischen den Bereichen gibt; und
- • es
eine vorgegebene Beziehung zwischen den Bereichen und den Punkten
gibt.
-
Im
Wesentlichen identifiziert die Ausführungsform, welcher der Bereiche
- a) mit der Region von Interesse überlappt
und
- b) in diesen Bereichen Punkte enthält, die mit der Region von
Interesse überlappen.
-
Die
vorgegebene Beziehung zwischen den Bereichen und den Punkten wird
dann verwendet, um die Punkte zu extrahieren, die in die identifizierten
Bereiche fallen.
-
Eine
Region von Interesse bezieht sich auf eine Region in der zweidimensionalen
Darstellung der Entität.
Folglich würde
für die
oben beschriebene Zeitspanne (die Schließ- und Öffnungszeiten von Geschäfts- und
Freizeiteinrichtungen) eine Region von Interesse eine Zeitdauer
von Interesse sein – wie
z. B. "die Geschäfte öffnen zwischen
10.00 und 13.00 Uhr".
Die Region von Interesse wird dann durch eine Region (vorzugsweise
ein Quadrat) definiert sein, das innerhalb im Voraus spezifizierter
Punkte begrenzt ist. In den 33a–e könnte die
Region von Interesse irgendeine der folgenden sein:
(0, 10),
(13, 24) = die Einrichtungen, die irgendwann zwischen 10.00 u. 13.00
offen sind (33a)
(0, 13), (10,
24) = die Einrichtungen, die durchgehend zwischen 10.00 u. 13.00
offen sind (33b)
(0, 10), (10, 13)
= die Einrichtungen, die vor 10.00 offen sind, aber vor 13.00 schließen (33c)
(10, 13), (13, 24) = die Einrichtungen,
die nach 10.00 öffnen,
aber nach 13.00 schließen
(33d)
(10, 10), (13, 13) = die Einrichtungen,
die nach 10.00 öffnen
u. vor 13.00 schließen
(33e)
-
Ähnlich würde für die oben
beschriebene Preisklasse eine Region von Interesse eine Preisspanne sein,
so dass für
eine Wiedergewinnungsanforderung von "allen Elementen, die irgendwo in die
Spanne von £50,00
und £80,00
fallen", die Region
von Interesse durch eine Region definiert sein könnte, die in den Punkten (0,
50) und (80, 80) begrenzt ist.
-
Für die oben
beschriebenen Ortsinformationen würde eine Region von Interesse
ein Gebiet von Positionen sein, wie z. B. "alle Elemente, die sich zwischen einer
ersten Position ((lat, long)1) und einer
zweiten Position ((lat, long)2) befinden".
-
Ein
Ablaufplan, der die Schritte eines Verfahrens zum Identifizieren
von Bereichen zeigt, die mit der Region von Interesse überlappen,
wenn sich die Region von Interesse auf Ortsinformationen bezieht,
ist in den 13a und 13b gezeigt.
Die Schritte sind dann für
die in 14 gezeigte Region von Interesse
in den 14–31 veranschaulicht.
In dieser Ausführungsform
werden spezifische Beispiele der Bereiche in einer vorgegebenen
Region als Vierecke und Untervierecke bezeichnet. Die in 13 gezeigten Verfahrensschritte werden
im Folgenden unter Bezugnahme auf jede der 14–31 beschrieben.
-
14
-
- • S13.1.1
Lese die x, y-Koordinaten einer Region von Interesse (x1, y1), (x2,
y2) ein. Als ein Beispiel könnten
diese, falls ein Anwender wünscht,
die Kfz-Werkstätten
in einem bestimmten Bereich zu lokalisieren, als Breiten-/Längenpaare
indexiert sein, die Punkte in einem zweidimensionalen Raum definieren,
wobei der geographische Bereich, an dem der Anwender interessiert
ist, als eine "Region
von Interesse" in
dem zweidimensionalen Raum ausgedrückt werden kann;
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Vierecks für das äußerste Viereck
wieder und setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des äußersten
Vierecks;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
falls x1 < X1_Q,
setze x1 = X1_Q; falls y1 < Y1_Q,
setze y1 = Y1_Q; falls x2 > X2_Q,
setze x2 = X2_Q; falls y2 > Y2_Q,
setze y2 = Y2_Q. Für
die in 14 gezeigte Beispielregion von
Interesse ist keine dieser Bedingungen erfüllt;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall sind keine Bedingungen erfüllt;
-
Die
Schritte S13.2 und S13.3 sind nur Beispiele von Bedingungen, die
angewendet werden können, um
festzustellen, ob das in S13.1.2 wiedergewonnene Unterviereck mit
der Region von Interesse überlappt, und
ob es, wenn es eine Überlappung
gibt, irgendwelche Punkte in der überlappenden Region gibt; es
wird in Betracht gezogen, dass alternative Verfahren angewendet
werden könnten,
um dies festzustellen.
- • S13.4 Beurteile, ob die Region
von Interesse exakt mit dem Viereck überlappt. Nein:
- • S13.5
Gewinne ein Unterviereck (503a) des aktuellen Vierecks
(501) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf 15 beschrieben
ist.
-
15
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0 601 wieder:
setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 601;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
falls x1 < X1_Q,
setze x1 = X1_Q; falls y1 < Y1_Q,
setze y1 = Y1_Q; falls x2 > X2_Q,
setze x2 = X2_Q; falls y2 > Y2_Q,
setze y2 = Y2_Q. In diesem Fall sind keine dieser Bedingungen erfüllt;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall sind keine Bedingungen erfüllt;
- • S13.4
Beurteile, ob die Region von Interesse exakt mit dem Unterviereck überlappt.
Nein:
- • S13.5
Gewinne ein Unterviereck des aktuellen Untervierecks in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 16 und 17 beschrieben
ist.
-
16 u. 17
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,0 701 wieder:
setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 701;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x2 > X2_Q, daher setze
x2 = X2_Q, und y2 > Y2_Q,
daher setze y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall (17) sind beide Bedingungen erfüllt, was bedeutet,
dass es keine Punkte im Unterviereck 0,0 (701) gibt, die
in die Region von Interesse fallen;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,i) und gewinne das Unterviereck (0,1) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 18 und 19 beschrieben
ist.
-
18 u. 19
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,1
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,1;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x1 < X1_Q, daher
setze x1 = X1_Q, und y2 > Y2_Q,
daher setze y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall sind keine Bedingungen erfüllt;
- • S13.4
Beurteile, ob die (nun beschnittene) Region von Interesse exakt
mit dem Unterviereck überlappt. Nein:
- • S13.5
Gewinne ein Unterviereck 0,1,0 des aktuellen Untervierecks 0,1 in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 20a und 20b beschrieben
ist.
-
20a u. 20b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,1,0
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,1,0;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x2 > X2_Q, daher setze
x2 = X2_Q, und y2 > Y2_Q,
daher setze y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall (20b) sind beide Bedingungen
erfüllt,
was bedeutet, dass es keine Punkte im Unterviereck 0,1,0 gibt, die
in die Region von Interesse fallen;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,1,i) und (S13.6.1) gewinne das Unterviereck
(0,1,1) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 21a und 21b beschrieben
ist.
-
21a u. 21b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,1,1
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,1,1 – d. h.
eines einzigen Punkts;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x1 < X1_Q, daher
setze x1 = X1_Q, und y2 > Y2_Q,
daher setze y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall (21b) sind beide Bedingungen
erfüllt,
was bedeutet, dass es keine Punkte im Unterviereck 0,1,1 gibt, die
in die Region von Interesse fallen;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,1,i) und (S13.6.1) gewinne das Unterviereck
(0,1,2) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 22a und 22b beschrieben
ist.
-
22a u. 22b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,1,2 wieder:
setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,1,2 – d. h.
eines einzigen Punkts;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x1 < X1_Q, daher
setze x1 = X1_Q, y1 < Y1_Q,
x2 > X2_Q und y2 > Y2_Q, daher setze
x1 = X1_Q, y1 = Y1_Q, x2 = X2_Q, y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
Nein;
- • S13.4
Beurteile, ob die (nun beschnittene) Region von Interesse exakt
mit dem Unterviereck überlappt:
Ja;
- • S13.4.2
Zeichne das Unterviereck und die Anzahl der Punkte im Unterviereck
(hier 1) auf;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,1,i) und (S13.6.1) gewinne das Unterviereck
(0,1,3) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 23a und 23b beschrieben
ist.
-
23a u. 23b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,1,3
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,1,3 – d. h.
eines einzigen Punkts;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x1 < X1_Q, daher
setze x1 = X1_Q, y1 < Y1_Q,
x2 > X2_Q und y2 > Y2_Q, daher setze
x1 = X1_Q, y1 = Y1_Q, x2 = X2_Q, y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
Nein;
- • S13.4
Beurteile, ob die (nun beschnittene) Region von Interesse exakt
mit dem Unterviereck überlappt:
Ja;
- • S13.4.2
Zeichne das Unterviereck und die Anzahl der Punkte im Unterviereck
(hier 1) auf;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,1,i) ... i > 3,
daher (S13.6.2) gewinne das Unterviereck (0,2) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 24 und 25 beschrieben
ist.
-
24 u. 25
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,2
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,2;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
y1 < Y1_Q, daher
setze y1 = Y1_Q, und x2 > X2_Q,
daher setze x2 = X2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall sind keine Bedingungen erfüllt;
- • S13.4
Beurteile, ob die (nun beschnittene) Region von Interesse exakt
mit dem Unterviereck überlappt. Nein:
- • S13.5
Gewinne ein Unterviereck 0,2,0 des aktuellen Untervierecks 0,2 in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 26a und 26b beschrieben
ist.
-
26a u. 26b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,2,0 wieder:
setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,2,0;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x2 > X2_Q, daher setze
x2 = X2_Q, und y2 > Y2_Q,
daher setze y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall (26b) sind beide Bedingungen
erfüllt,
was bedeutet, dass es keine Punkte im Unterviereck 0,2,0 gibt, die
in die Region von Interesse fallen;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,2,i) und (S13.6.1) gewinne das Unterviereck
(0,2,1) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 27a und 27b beschrieben
ist.
-
27a u. 27b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,2,1
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,2,1 – d. h.
eines einzigen Punkts;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x1 < X1_Q, daher
setze x1 = X1_Q, y1 < Y1_Q,
x2 > X2_Q und y2 > Y2_Q, daher setze
x1 = X1_Q, y1 = Y1_Q, x2 = X2_Q, y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
Nein;
- • S13.4
Beurteile, ob die (nun beschnittene) Region von Interesse exakt
mit dem Unterviereck überlappt:
Ja;
- • S13.4.2
Zeichne das Unterviereck und die Anzahl der Punkte im Unterviereck
(hier 1) auf;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,1,i) ... i < 3,
daher (S13.6.1) gewinne das Unterviereck (0,2,2) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 28a und 28b beschrieben
ist.
-
28a u. 28b
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,2,2
wieder: setze (X1_Q, Y1_Q), (X2_Q, Y2_Q) auf die Größe des "schrumpfverpackten" Untervierecks 0,2,2;
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x2 > X2_Q, daher setze
x2 = X2_Q, und y1 < Y1_Q,
daher setze y1 = Y1_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
In diesem Fall (28b) sind beide Bedingungen
erfüllt,
was bedeutet, dass es keine Punkte im Unterviereck 0,2,2 gibt, die
in die Region von Interesse fallen;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,2,i) und (S13.6.1) gewinne das Unterviereck
(0,2,3) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf 29 beschrieben
ist.
-
29
-
- • S13.1.2
Gewinne die Koordinaten der Punkte und die Größe des Untervierecks aus dem "schrumpfverpackten" Unterviereck 0,2,3
wieder: es gibt kein Unterviereck, das 0,2,3 entspricht, weil es
keine Punkte in dem Bereich gibt, der diesem Unterviereck entspricht,
daher springe zu S13.6;
- • S13.6.2
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,2,i): i > 3,
daher (S13.6.2) gewinne das Unterviereck (0,3) in Übereinstimmung
mit S13.1.2 wieder, wie unter Bezugnahme auf die 30 und 31 beschrieben
ist.
-
30 u. 31
-
- • S13.2
Beurteile, ob die Region von Interesse das Beschneiden erfordert:
x1 < X1_Q, daher
setze x1 = X1_Q, y1 < Y1_Q,
x2 > X2_Q und y2 > Y2_Q, daher setze
x1 = X1_Q, y1 = Y1_Q, x2 = X2_Q, y2 = Y2_Q;
- • S13.3
Beurteile, ob x1 > x2
oder y1 > y2 gilt.
Nein;
- • S13.4
Beurteile, ob die (nun beschnittene) Region von Interesse exakt
mit dem Unterviereck überlappt:
Ja;
- • S13.4.2
Zeichne das Unterviereck und die Anzahl der Punkte im Unterviereck
(hier 2) auf;
- • S13.6
Inkrementiere den Unterviereck-Zähler
i auf dieser Ebene (0,i) ... i > 3,
daher (S13.6.2) gewinne das Unterviereck 1 in Übereinstimmung mit S13.1.2
wieder.
-
Wie
aus 14 ersichtlich ist, fällt die Region von Interesse
ausschließlich
in das Unterviereck 0 und die Untervierecke darin, so dass, wenn
der in den 13a und 13b beschriebene
Prozess auf die Untervierecke 1, 2 und 3 angewendet wird, die in
den Schritten S13.2 und S13.3 angewendeten Bedingungen verursachen,
dass der Prozess innerhalb einiger Schritte endet.
-
Am
Ende des Prozesses des Identifizierens der Untervierecke, die mit
der Region von Interesse überlappen,
werden die Untervierecke und die Anzahl der Punkte in diesen Untervierecken,
die in den Schritten S13.4.2 aufgezeichnet worden sind, zurückgeschickt – für dieses
Beispiel:
Unterviereck 0,1,2, Anzahl der Punkte: 1 Punkt;
Unterviereck
0,1,3, Anzahl der Punkte: 1 Punkt;
Unterviereck 0,2,1, Anzahl
der Punkte: 1 Punkt;
Unterviereck 0,3, Anzahl der Punkte: 2
Punkte.
-
Sobald
die Untervierecke identifiziert worden sind, werden die tatsächlichen
Punkte wiedergewonnen. In dieser Ausführungsform, und wie oben beschrieben
worden ist, sind die Punkte in einer flachen Datei gespeichert.
Außerdem
speichert jede Unterviereck-Struktur eine Zahl, die die Position
des ersten Punkts in einem jeweiligen Unterviereck bezüglich der
Gesamtzahl der indexierten Punkte (siehe z. B. 4,
alle Punkte im Viereck 501) angibt.
-
Der
Prozess für
das tatsächliche
Wiedergewinnen der Punkte ist in 32 gezeigt:
Für jedes
Viereck, das im Schritt S13.4.2 aufgezeichnet worden ist:
- • S32.1
Gewinne für
dieses Unterviereck die Anzahl der Punkte wieder, die in das Unterviereck
fallen, (N);
- • S32.2
Gewinne die Position des ersten Punkts von der entsprechenden Unterviereck-Struktur
(Possub_quad) wieder;
- • S32.3
Bewege einen Dateizeiger in eine durch Possub_quad gegebene
Position in der Punktedatei;
- • S32.4
Extrahiere aus dieser Position N Punkte aus der Datei.
-
Implementierung
-
Die
in den 4a und 4b, den 13a und 13b und 32 beschriebenen
Prozesse sind in Software implementiert und werden in einem der
Endgeräte
T3, T4 ausgeführt
oder sind zwischen den Endgeräten
T3, T4 verteilt. Die Endgeräte
T3, T4 repräsentieren
folglich einen von mehreren Computern, wobei sie vorzugsweise Server-Computer
sind.
-
Die
zu indexierenden Punkte können über eine
Datei oder ähnliches
in die Endgeräte
T3, T4 eingegeben werden, der Index, der erzeugt worden ist, wie
oben beschrieben worden ist, kann in der Datenbank DB1 gespeichert
werden und die Punktedatei kann außerdem in der Datenbank DB1
gespeichert werden. Ein Bereich von Interesse kann in der Form einer
Datenbankabfrage eingegeben werden, die in einer bekannten Weise über ein
(nicht gezeigtes) Client-Endgerät
eingegeben und über
das Netz N1 zu den Endgeräten
T3, T4 übertragen
wird.
-
Vorzugsweise
sind die oben beschriebenen Prozesse in der Programmiersprache C
implementiert und verwenden rekursive Programmierungsverfahren,
um in den Untervierecken zu Untervierecken "nach unten zu vertiefen". Es ist selbstverständlich,
dass ein derartiges Verfahren für
die Erfindung unwesentlich ist.
-
Weitere Einzelheiten und Modifikationen
-
Wie
oben dargelegt worden ist, kann die Erfindung verwendet werden,
um Daten zu indexieren und wiederzugewinnen, die in 2 Dimensionen
ausgedrückt
sind. Die Erfindung kann außerdem
verwendet werden, um Daten in mehr als 2 Dimensionen zu indexieren
und wiederzugewinnen, vorausgesetzt, die Daten (n-dimensionalen
Daten, wobei n > 2
gilt) können
in 2 Dimensionen transformiert werden. In derartigen Fällen können die
transformierten 2-dimensionalen Daten gemäß der Erfindung indexiert und
wiedergewonnen werden. Objekte, die in einen 3-dimensionalen Raum
definiert sind, können
z. B. unter Verwendung eines Pakets, wie z. B. NCAR Graphics, was
ein unix-gestütztes
Graphikpaket ist, das einen ausgedehnten Bereich von Fähigkeiten
für die
Anzeige und die Manipulation numerischer Daten bietet und von der
University Corporation for Atmospheric Research entwickelt worden
ist, in 2 Dimensionen transformiert werden. (Siehe http://www.dkrz.de/ngdoc/ng4.0.1
für Informationen
bezüglich
NCAR Graphics und http://ngwww.ucar.edu/ngdoc/ng/fund/chp16–21/threed.html
für Informationen
bezüglich
der Aspekte der 3-zu-2-dimensional-Transformation.)
-
Es
könnten
andere Variationen ausgeführt
werden. Es könnte
z. B. einfach ein Unterteilen der Vierecke und Untervierecke in
eine andere Anzahl von Bereichen bei jeder Iteration, wie z. B.
acht oder zehn anstelle von vier, verwendet werden.