-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf Verfahren zur Bestimmung
der Schnittfläche
oder Vereinigung zweier Polygone, besonders hinsichtlich der Bestimmung
der Schnittfläche
oder Vereinigung zweier Polygone, die geographische Merkmale repräsentieren.
-
In
geographischen Datenbanken werden Polygone zur Darstellung zweidimensionaler
Gebiete benutzt, wie z. B. Seen, Erholungsparks, Städte, Landkreise,
Staaten, Golfplätze
und dergleichen. In einigen Arten geographischer Datenbanken sind
Polygone durch eine Reihe miteinander verknüpfter Verbindungsglieder dargestellt,
um den geschlossenen Umfang des Polygons zu bilden.
-
Eine
allgemein benötigte
Funktion, die bei der Verwendung einer geographischen Datenbank ausgeführt wird,
ist das Auffinden desjenigen Teils eines zweidimensionalen geographischen
Merkmals (wie z. B. eines Sees, eines Erholungsparks, und dergleichen),
der sich innerhalb eines weiteren geographischen Merkmals (wie z.
B. einer Stadt, eines Landkreises, eines Staates und dergleichen)
befindet. Die Lösung
kann gefunden werden, indem die Schnittflächen der zur Darstellung der
zweidimensionalen geographischen Merkmale benutzten Polygone bestimmt
werden.
-
Es
gibt bereits ältere
Verfahren zur Schnittflächenbestimmung
von Polygonen. Ein bekannter Algorithmus zur Schnittflächenbestimmung
von Polygonen ist in Computational Geometry (O'Rourke, Joseph, Zweite Auflage, Cambridge
University Press, 1998) beschrieben. Dieser Algorithmus zieht die Formpunkte
zweier Polygone heran, sortiert diese nach ihrem Y-Koordina- tenwert und durchsucht
alle Liniensegmente jedes Formpunktes von oben nach unten. Wenn
sich ein Liniensegment in beiden Polygonen befindet, dann ist es
eine Schnittflächengrenze.
Wenn bei diesem älteren
Algorithmus n Formpunkte in zwei Polygonen vorhanden sind, ist die
gesamte Komplexität
gleich n·log(n).
Auch wenn dieser ältere
Algorithmus zufriedenstellend arbeitet, ist er rechenaufwändig und
benötigt
daher einen relativ hohen Zeitaufwand, um ein Ergebnis zu erzielen.
-
Eine
weitere allgemein erforderliche Funktion, die bei Verwendung einer
geographischen Datenbank ausgeführt
wird, ist das Auffinden der Vereinigung zweier zweidimensionaler
geographischer Merkmale. Die Lösung
kann gefunden werden, indem die Vereinigung der zur Darstellung
zweidimensionaler geographischer Merkmale benutzten Polygone bestimmt
wird. Es gibt Verfahren des Standes der Technik zur Bestimmung der
Vereinigungen von Polygonen. Jedoch sind Verfahren des Standes der Technik
rechenaufwendig und benötigen
daher einen relativ hohen Zeitaufwand, um ein Ergebnis zu erzielen.
-
WO
00/43953 offenbart ein Verfahren zum Erzeugen und zum Gebrauch von
Polygonen, um Straßen
und Schnittflächen
darzustellen, wobei die Straßen
eine Straßenbreite
aufweisen.
-
Es
besteht daher Bedarf an schnelleren Wegen zur Bestimmung der Schnittfläche oder
der Vereinigung zweier Polygone.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Um
diese und andere Aufgaben zu lösen, umfasst
die vorliegende Erfindung ein Verfahren zur Bestimmung einer Polygonschnittfläche eines
erstes Polygons und eines zweiten Polygons. Eine Schnittfläche der
Grenze des ersten Polygons mit der Grenze des zweiten Polygons wird
lokalisiert durch Auffinden eines Knotenpunktes, von dem wenigstens
drei Teile (d. h. Verbindungen) von Polygongrenzen abgehen. Von
diesem Knotenpunkt wird ein erster Teil der Grenze der Polygonschnittfläche bestimmt,
indem ein Abschnitt der Grenze des ersten Polygons identifiziert
wird, der sich inner halb des zweiten Polygons befindet. Jeder nachfolgende
Abschnitt der Grenze der Polygonschnittfläche wird bestimmt durch Auswählen desjenigen
Abschnitts der Grenze entweder des ersten Polygons oder des zweiten
Polygons, der (1) an das führende
Ende eines aktuellen Abschnitts der Grenze der Polygonschnittfläche anschließt, und der
(2) einen minimalen Winkel mit dem aktuellen Abschnitt der Grenze
der Polygonschnittfläche
bildet.
-
Gemäß einem
weiteren Aspekt der offenbarten Erfindung werden durchschnittene
Löcher
oder Inseln bestimmt, wenn sich diese in beiden Polygonen befinden.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zur
Bestimmung einer Polygonvereinigung eines ersten Polygons und eines
zweiten Polygons offenbart. Eine Schnittfläche der Grenze des ersten Polygons
mit der Grenze des zweiten Polygons wird lokalisiert durch das Auffinden
eines Knotenpunktes, von dem wenigstens drei Teile (d. h. Verbindungen)
von Polygongrenzen abgehen. Von diesem Knotenpunkt wird ein erster
Abschnitt der Grenze der Polygonvereinigung bestimmt durch Identifizieren
eines Abschnitts der Grenze des ersten Polygons, der sich außerhalb
des zweiten Polygons befindet. Jeder nachfolgende Abschnitt der
Grenze der Polygonvereinigung wird bestimmt durch Auswählen desjenigen
Abschnitts der Grenze entweder des ersten Polygons oder des zweiten
Polygons, der (1) an das führende
Ende eines aktuellen Abschnitts der Grenze der Polygonvereinigung
anschließt,
und (2) den maximalen Winkel mit dem aktuellen Abschnitt der Grenze
der Polygonvereinigung bildet.
-
Ein
weiterer Aspekt der offenbarten Erfindung ist verantwortlich für die Löcher oder
Inseln, die im ersten Polygon, aber nicht im zweiten Polygon enthalten
sind, und Löcher
oder Inseln, die im zweiten Polygon, aber nicht im ersten Polygon
enthalten sind.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Diagramm, das eine geographische Region und Datendarstellungen
einiger in dieser geographischen Region befindlicher Merkmale veranschaulicht.
-
2 ist
ein Diagramm, das ein Polygon veranschaulicht, das der Darstellung
einer zweidimensionalen geographischen Region und der Datendarstellung
des Polygons dient.
-
3 ist
ein Blockdiagramm, das ein Softwareprogramm veranschaulicht, das
die Schnittflächen
zweier Polygone bestimmt.
-
4 beschreibt
zwei sich schneidende Polygone und veranschaulicht die Arbeitsweise
eines vom Softwareprogramm aus 3 durchgeführten Prozesses.
-
5A-5C sind
ein Ablaufdiagramm des vom Softwareprogramm aus 3 durchgeführten Prozesses.
-
6 beschreibt
einen Schritt im Prozess der 5A-5C.
-
7A und 7B beschreiben
einen weiteren Schritt im Prozess der Fig.
5A-5C.
-
8 beschreibt
einen weiteren Schritt im Prozess der 5A-5C.
-
9 zeigt
ein Polygon mit einem Loch und die Datendarstellung desselben.
-
10 zeigt
eine Schnittfläche
von Polygonen mit Löchern
in der Schnittfläche.
-
11 ist
ein Blockdiagramm, das ein Softwareprogramm veranschaulicht, welches
die Vereinigung zweier Polygone bestimmt.
-
12A und 12B beschreiben
zwei Polygone und veranschaulichen die Arbeitsweise des Prozesses,
der vom Softwareprogramm der 11 durchgeführt wird.
-
13A-13C sind ein Flussdiagramm des
Prozesses, der vom Softwarepro gramm der 11 durchgeführt wird.
-
14 beschreibt
einen Schritt im Prozess der 13A-13C.
-
15A und 15B beschreiben
einen weiteren Schritt im Prozess der 13A-13C.
-
16 beschreibt
einen weiteren Schritt im Prozess der 13A-13C.
-
17 beschreibt
einen Schritt im Prozess der 13A-13C zum Umgang mit vereinigten Löchern/Inseln.
-
GENAUE BESCHREIBUNG DER
DERZEIT BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
1. DIE GEOGRAPHISCHE
DATENBANK
-
Wie
in 1 gezeigt ist, beinhaltet eine geographische Datenbank 100 eine
Datenmenge 104, die Merkmale darstellt, die sich in der
abgebildeten Region 108 befinden. Zum Beispiel kann die
geographische Datenbank 100 Daten enthalten, die Straßen 112 und
Sehenswürdigkeiten 116 verkörpern. Die
geographische Datenbank 100 enthält ferner Daten 120,
die zweidimensionale Merkmale oder Gebilde 124 verkörpern. Einige
der unterschiedlichen Arten zweidimensionaler Merkmale, die in der
geographischen Datenbank 100 vertreten sein können, beinhalten
Geländemerkmale
(z. B. Gebirgszüge),
Wasserlandschaften (z. B. Seen, Teiche, Sümpfe, Feuchtgebiete), Erholungs-
und Sportanlagen (z. B. Golfplätze,
Parkanlagen, Stadien, Waldschutzgebiete), Einkaufszentren, Industriegebiete
und politische Verwaltungseinheiten (z. B. Großstädte, Städte, Staaten, Gemeinden, Kommunen,
Länder,
Schulbezirke), wie auch andere Arten von Gebieten.
-
Wie
in 2 gezeigt ist, werden in der geographischen Datenbank 100 zweidimensionale
Merkmale durch Polygone dargestellt. Mit anderen Worten, in der
geographischen Datenbank 100 beschreiben die zur Darstellung
zweidimensionaler Merkmale genutzten Daten diese Merkmale als Polygone.
In der geographischen Datenbank 100 entspricht die Grenze
des Polygons der Grenze des zweidimensionalen Merkmals.
-
Die
folgende Terminologie findet Anwendung zur Darstellung zweidimensionaler
Merkmale in der geographischen Datenbank 100.
-
"Knotenpunkt" – Ein Punkt, der eine Verbindung
abschließt.
-
"Liniensegment" – Eine gerade Linie, die zwei
Punkte verbindet.
-
"Verbindung" (oder "Kante") – Eine anliegende,
nicht abzweigende Reihe eines oder mehrerer Liniensegmente, die
an jedem Ende in einem Knotenpunkt abschließt.
-
"Formpunkt" – Ein Punkt entlang einer Verbindung
zwischen zwei Knotenpunkten.
-
"Orientierte Verbindungen" – Eine Verbindung mit einem
Startknotenpunkt (auch "Referenzknotenpunkt" genannt) und einem
Endknotenpunkt (auch "Nicht-Referenzknotenpunkt" genannt).
-
"Einfaches Polygon" – Ein innerer Bereich einer
Außengrenze,
gebildet von einer Reihe orientierter Verbindungen, die an einem
Knotenpunkt beginnen und enden. (Ein einfaches Polygon kreuzt sich nicht
selbst.) "Polygon" – Der Bereich, der von einer äußeren Grenze
und keiner oder wenigstens einer inneren Grenze (z. B. ein Loch
oder eine Insel) begrenz ist. Ein Polygon wird gebildet durch ein äußeres einfaches
Polygon und keinem oder wenigstens einem einfachen inneren Polygon.
Ein Polygon ist einfach, wenn es aus nur einem einfachen Polygon
besteht oder komplex, wenn es mindestens ein inneres einfaches Polygon
beinhaltet.
-
Die
geographische Datenbank 100 folgt verschiedenen Richtlinien.
Zum Beispiel kreuzen sich Verbindungen nicht selbst und auch nicht
untereinander, ausgenommen an einem Knotenpunkt. Ebenso gibt es
keine mehrfachen Formpunkte, Knotenpunkte oder Verbindungen. Zwei
Verbindungen, die aneinander anschließen, haben einen gemeinsamen
Knotenpunkt. In der geographischen Datenbank 100 werden überlappende
zweidimensionale Merkmale durch überlappende
Polygone dargestellt. Wenn Polygone überlappen, kreuzt die Grenze
des einen Polygons die Grenze des anderen Polygons. In der geographischen
Datenbank 100 ist die Stelle, an der die Grenze des einen
Polygons die Grenze des anderen Polygons schneidet, durch einen
Knotenpunkt dargestellt. (Ein Knotenpunkt kann zur Darstellung anderer Stellen
an der Grenze eines Polygons als der Stelle, an der die Grenze des
Polygons die Grenze eines anderen Polygons schneidet, verwendet
werden.) Ein Formpunkt wird nicht zur Darstellung eines Schnittpunktes
zwischen der Grenze eines Polygons und der Grenze eines anderen
Polygons verwendet.
-
In
der geographischen Datenbank 100 enthält die Datendarstellung 132 eines
Polygons, das ein zweidimensionales Merkmals repräsentiert,
eine Liste 136, die jede orientierte Verbindung erkennt,
die die Grenze des Polygons bildet. Entsprechend den in der geographischen
Datenbank herrschenden Richtlinien, erkennt die Liste 136 die
orientierten Verbindungen im Uhrzeigersinn. Wenn das Polygon ein Loch
aufweist, (d. h. ein zweites Polygon befindet sich vollständig innerhalb
des ersten Polygons), wird das Loch anhand einer Liste von im Gegenuhrzeigersinn
aufgeführten
orientierten Verbindungen identifiziert.
-
II. VERFAHREN ZUR BESTIMMUNG
DER SCHNITTFLÄCHE
VON POLYGONEN
-
Wie
oben beschrieben ist, ist es bei Anwendungen, die auf geographischen
Datenbanken basieren, manchmal notwendig, zu bestimmen, ob zwei zweidimensionale
Merkmale überlappen
und, wenn zutreffend, den zweidimensionalen Bereich, der die Schnittfläche der
beiden zweidimensionalen Merkmale bildet (d. h. die überlappende
Teilmenge) zu bestimmen. Hinsichtlich Polygonen, die diese zweidimensionalen
Merkmale darstellen, ist es notwendig, die Schnittflächen der
Polygone zu bestimmen.
-
Ein
Verfahren zur Bestimmung der Schnittflächen von Polygonen wird in
Zusammenhang mit den 3-10 beschrieben.
Wie in 3 gezeigt ist, ist das Verfahren durch ein Softwareprogramm 200 implementiert,
das die geographische Datenbank 100 benutzt, die Datendarstellungen
von Polygonen enthält,
wie in Zusammenhang mit 1 und 2 beschrieben
worden ist. Das Softwareprogramm 200 erhält zwei
Datendarstellungen von Polygonen als Eingabe (die zwei Datendarstellungen
von Polygonen entsprechen den in 2 beschriebenen.)
Das Softwareprogramm 200 liefert als Ausgabe eine Datendarstellung
eines jeden Polygons, das eine Polygonschnittfläche der beiden Datendarstellungen
repräsentiert,
die als Eingabe geliefert wurden.
-
Das
Softwareprogramm 200 kann auf einem Navigationssystem 210 installiert
werden, das eine geographische Datenbank benutzt, um navigationsbezogene
Dienste an einen Autofahrer zu übermitteln.
Ebenso kann das Softwareprogramm 200 auf einem Server installiert
werden, der eine geographische Datenbank benutzt, um navigationsbezogene Dienste
an verschiedene Anwendergruppen zu übermitteln, wie u. a. an Autofahrer,
Nicht-Autofahrer,
Anwender von Taschencomputern (PDA's), Mobiltelephonbenutzern und dergleichen.
Der Server, der die geographische Datenbank nutzt, kann an das Internet
oder an ein anderes Kommunikationsnetzwerk angeschlossen sein. Das
Softwareprogramm 200 kann ebenso zur Zusammenstellung einer
geographischen Datenbank verwendet werden, d. h. zur Erzeugung eines
von einer Quelldatenbank abgeleiteten Datenbankprodukts. Ferner
kann das Softwareprogramm 200 auf einem eigenständigen Computer verwendet
werden, der eine geographische Datenbank benutzt, um Daten aus navigationsbezogenen, kartenbezogenen
oder anderweitigen Merkmalen zu übermitteln.
-
Bei
all diesen unterschiedlichen Systemen kann das Softwareprogramm 200 auf
einem computerlesbaren Medium gespeichert, vom Datenträger in den
Systemspeicher geladen und nach Bedarf aufgerufen werden.
-
Die
Bestimmung der polygonalen Schnittmenge zweier Polygone wird mit
Bezug auf 4-10 beschrieben. 4 zeigt
zwei Polygone, bezeichnet mit P(A) und P(B). Bei der Verwendung
der offenbarten Vorgehensweise wird die Schnittfläche P(I)
der Polygone P(A) und P(B) bestimmt.
-
Die 5A-5C zeigen
Schritte in einem Prozess 220, durchgeführt vom Softwareprogramm 200,
um die Schnittflächen
der Polygone P(A) und P(B) zu bestimmen. Der Prozess 220 beginnt
mit einem Schritt, in dem die Datendarstellungen der beiden Polygone
empfangen werden (Schritt 224). Der Prozess 220 beinhaltet
einen Schritt, der minimale Hüllrechtecke
für die
zwei Polygone P(A) und P(B) bildet (Schritt 228). 6 beschreibt
die Bildung dieser minimalen Hüllrechtecke
für P(A)
und P(B), die mit MBR(A) bzw. MBR(B) bezeichnet sind. Zur Bestimmung
der Schnittflächen
werden die minimalen Hüllrechtecke
MBR(A) und MBR(B) miteinander verglichen (Schritt 232).
Wenn sich die minimalen Hüllrechtecke
von P(A) und P(B) nicht schneiden, dann schneiden sich die Polygone
P(A) und P(B) nicht und es erfolgt eine negative Rückmeldung
(Schritt 236). Wenn sich die minimalen Hüllrechtecke
von MBR(A) und MBR(B) schneiden, schneiden sich möglicherweise
die Polygone P(A) und P(B) und der Prozess 220 wird fortgesetzt.
-
Der
Prozess setzt sich mit der Bildung einer Knotenpunkt-Verbindungs-Karte
fort. Die Knotenpunkt-Verbindungs-Karte wird erstellt aus der Polygonschnittfläche MBR(A_B)
der minimalen Hüllrechtecke
MBR(A) und MBR(B) der Polygone P(A) und P(B). Diese Polygonschnittfläche P(A_B)
wird bestimmt, wie in 6 gezeigt ist. Zur Bildung der
Knotenpunkt-Verbindungs-Karte wird jede Verbindung des Polygons,
sowohl von P(A) als auch P(B), die sich vollständig innerhalb der Polygonschnittfläche P(A_B)
der minimalen Hüllrechtecke
MBR(A) und MBR(B) der Polygone P(A) und P(B) befindet, identifiziert
(Schritt 244). (Eine Verbindung befindet sich vollständig innerhalb
der Schnittfläche
MBR(A_B) der minimalen Hüllrechtecke
MBR(A) und MBR(B), wenn beide Enden der Verbindung sich innerhalb
der Schnittfläche
MBR(A_B) der minimalen Hüllrechtecke
MBR(A) und MBR(B) befinden.) Dann ist jeder Knotenpunkt dieser erkannten
Verbindungen identifiziert. (Formpunkte können in diesem Schritt ignoriert werden.)
Jeder dieser erkannten Knotenpunkte wird dann als Eintrag zur Knotenpunkt-Verbindungs-Karte hinzugefügt (Schritt 248).
Zu jedem als Eintrag der Knotenpunkt-Verbindungs-Karte hinzugefügten Knotenpunkt
werden alle an den Knotenpunkt anschließenden Verbindungen identifiziert
und in der Karte dem Knotenpunkt zugeordnet.
-
Die
Knotenpunkt-Verbindungs-Karte dient der Identifizierung eines Knoten punktes
(hier als "N(START)" bezeichnet), der
sich am Polygon P(I) befindet, das die Schnittfläche der Polygone P(A) und P(B)
bildet. Beim Gebrauch der Knotenpunkt-Verbindungs-Karte, wird ein
Knotenpunkt erkannt, der über drei
(oder mehr) mit sich verknüpften
Verbindungen verfügt
(Schritt 252). Ein Knotenpunkt der Knotenpunkt-Verbindungs-Karte
mit drei (oder mehr) mit ihm verknüpften Verbindungen befindet
sich auf dem Polygon (P(I), das die Schnittfläche der zwei Polygone P(A)
und P(B) bildet. Da dieser Knotenpunkt auf dem Polygon P(I) angeordnet
ist, das die Schnittfläche
der beiden Polygone P(A) und P(B) bildet, sind zwei (und nur zwei)
der drei (oder mehr) Verbindungen, die an den Knotenpunkt N(START)
anschließen,
Verbindungen des Schnittflächenpolygons
P(I). Der nächste Schritt
besteht darin, zu erkennen, welche der beiden von den drei oder
mehr Verbindungen Teil des Schnittflächenpolygons P(I) sind.
-
Um
zu erkennen, welche der zu N(START) führenden Verbindungen Teil des
Schnittflächenpolygons
P(I) sind, läuft
ein Prozess ab, der eine Verbindung eines der Ursprungspolygone
P(A) oder P(B) erkennt, die innerhalb des anderen Ursprungspolygons
P(A) oder P(B) liegt (Schritt 254). Eine Verbindung eines
Ursprungspolygons innerhalb des anderen Ursprungspolygons ist Teil
des Schnittflächenpolygons
P(I). Diese Verbindung wird auch als "VERBINDUNG(START)" bezeichnet. Details des Prozesses 400 zum
Erkennen dieser Verbindung sind in den 7A, 7B und 8 dargestellt.
-
Wie
in den 7A und 7B gezeigt
ist, sind in P(A) und P(B) alle Kanten im Uhrzeigersinn angeordnet.
Der Knotenpunkt N ist der Startknotenpunkt, da vier Kanten an ihn
anschließen,
d. h. ae1 und ae2 von P(A) und be1 und be2 von P(B). Wenn sich ae2
auf der rechten Seite von be1 und be2 befindet, dann liegt ae2 innerhalb
von P(B) und kann als Startkante der Polygonschnittfläche (wie
in 7A gezeigt) ausgewählt werden. Befindet sich ae1
auf der rechten Seite von be1 und be2, dann liegt ae1 innerhalb
von P(B) und kann als Startkante der Polygonschnittfläche ausgewählt werden.
Befinden sich weder ae2 und ae1 auf der rechten Seite von be1 und be2,
liegt keine Schnittfläche
bei N vor (wie in 7B gezeigt ist). Um zu bestimmen,
ob ae2 auf der rechten Seite von be1 und be2 liegt, kann der in 8 gezeigte
Prozess 500 verwendet werden. Bei Anwendung des Prozesses 500 in 8,
werden der Formpunkt bp1 von be1, der Formpunkt bp2 von be2 und der
Formpunkt ap2 von ae2 gewählt.
Diese Formpunkte werden gewählt,
weil sie auf ihrer jeweiligen Kante die dem Knotenpunkt N(Punkt
p) nächstgelegenen
Formpunkte sind, auch wenn ebenso andere Formpunkte auf diesen Kanten
gewählt
werden können.
Der Prozess 500 in 8 wird verwendet,
um zu überprüfen, ob
sich ap2 auf der rechten Seite des Liniensegments bp1_p und p_bp2
befindet. Wenn ja, befindet sich ae2 auf der rechten Seite von be1
und be2 (siehe 7A). Wenn nicht, befindet sich
ae2 nicht auf der rechten Seite von be1 und be2 (siehe 7B).
-
Nachdem
Verbindung(START) identifiziert ist, wird die nächste Verbindung identifiziert,
die das Schnittflächenpolygon
P(I) bildet. Diese nächste
Verbindung wird identifiziert, indem sämtliche Verbindungen untersucht
werden, die an das im Uhrzeigersinn liegende Ende von Verbindung(START)
anschließenden.
Wie in 5B gezeigt ist, wird das im Uhrzeigersinn
liegende Ende von VERBINDUNG(START) bestimmt anhand der im Uhrzeigersinn
angeordneten Verbindungen des Ursprungspolygons (P(A) oder P(B)),
von denen VERBINDUNG(START) genommen wurde (Schritt 264).
-
Wenn
es nur eine weitere Verbindung gibt, die an das im Uhrzeigersinn
liegende Ende der Verbindung VERBINDUNG(START) anknüpft, dann
ist diese Verbindung die nächste
Verbindung des Schnittflächenpolygons
P(I). Die diese nächste
Verbindung markierenden Daten werden in die zur Darstellung des
Schnittflächenpolygons
P(I) erstellte Liste aufgenommen (Schritte 272 und 276).
-
Wenn
es zwei oder mehr weitere Verbindungen gibt, die an das im Uhrzeigersinn
liegende Ende von VERBINDUNG (START) anschließen, dann ist die Verbindung,
die im Gegenuhrzeigersinn den kleinsten Winkel bildet, die nächste Verbindung
des Schnittflächenpolygons
P(I). Die Daten, die diese nächste
Verbindung markieren, werden in die zur Darstellung des Schnittflächenpolygons
P(I) erstellte Liste aufgenommen (Schritte 272, 278 und 276).
-
Nachdem
diese Verbindung (d. h. die Verbindung nach VERBINDUNG(START)) in
die zur Darstellung des Schnittflächenpolygons P(I) erstellte
Liste aufgenommen wurde, setzt der Prozess mit der Bestimmung der
nächsten
das Schnittflächenpolygon
P(I) bildenden Verbindung fort. Diese nächste Verbindung wird in ähnlicher
Weise wie soeben beschrieben bestimmt. Das bedeutet, alle Verbindungen,
die an das im Uhrzeigersinn liegende Ende der Verbindung anschließen, werden
identifiziert (nochmals Schritte 264 und 272).
Wenn es nur eine einzige weitere Verbindung gibt, wird diese Verbindung
zu der Liste der Verbindungen, die das Schnitiflächenpolygon P(I) bilden, hinzugefügt. Wenn
es zwei oder mehr weitere Verbindungen gibt, ist die nächste Verbindung
diejenige, die im Gegenuhrzeigersinn den kleinsten Winkel mit der
Verbindung bildet, die zuletzt als Teil des Schnittflächenpolygons
P(I) identifiziert wurde (erneut Schritt 278).
-
Dieser
Prozess wird solange fortgesetzt, bis N(START) erreicht wird (Schritt 280).
Wenn N(START) erreicht ist, ist ein einfaches Polygon identifiziert
(das einen Teil oder die ganze Polygonschnittfläche P(I) von P(A) und P(B)
bildet). Die Daten, die dieses einfache Polygon beschreiben, sind
in der Liste 258 enthalten. Diese Daten werden zu einer
Liste von einfachen Polygonen in einer Datendarstellung 318 (in 5C)
des gesamten Schnittflächepolygons P(I)
von P(A) und P(B) hinzugefügt
(Schritt 284).
-
Alle
benutzten Verbindungen und Knotenpunkte in der Knotenpunkt-Verbindungs-Karte
werden entfernt (Schritt 288). Wenn sich nach der Erkennung
einer einfachen Polygonschnittfläche
(Schritt 292 in 5B) noch
weitere Knotenpunkte mit drei oder mehr Verbindungen in der Knotenpunkt-Verbindungs-Karte
befinden, existiert noch mindestens eine weitere unterschiedliche
einfache Polygonschnittfläche
zwischen dem ersten und dem zweiten Polygon. Der Prozess wird erneut
ausgeführt
(beginnend bei Schritt 252 in 5A) um
jede weitere einfache polygonale Schnittfläche zu erkennen. Der Prozess wird
solange wiederholt, bis sich innerhalb der Knotenpunkt-Verbindungs-Karte
kein Knotenpunkt mit mehr als drei anschließenden Verbindungen mehr befindet.
-
Der
Prozess 220 erkennt Löcher
und Inseln in P(A) und P(B). Einige der in der geographischen Datenbank 100 dargestellten
zweidimensionalen Merkmale sind vollständig von weiteren dargestellten zweidimensionalen
Merkmalen umgeben. So liegt z. B. eine Insel vollständig innerhalb
eines Wasserkörpers.
In der geographischen Datenbank 100 wird ein zweidimensionales
Merkmal, das vollständig
von einem anderen zweidimensionalen Merkmal umgeben ist, als Loch
innerhalb eines Polygons dargestellt.
-
Die
Datendarstellung eines Polygons, das ein Loch enthält, beinhaltet
(1) eine Liste von Kanten, die die Grenzen des gesamten Polygons
definieren (d. h. ähnlich
wie oben gezeigt in 2), und (2) eine Liste von Kanten,
die die Grenzen des Loches innerhalb des Polygons definieren. Gemäß der Vorgehensweise
in der geographischen Datenbank 100, ist die Liste der
Kanten zur Datendarstellung eines Loches innerhalb eines Polygons
im Gegenuhrzeigersinn angeordnet. 9 zeigt
ein Polygon mit Loch und dessen Datendarstellung.
-
Bei
der Bestimmung der Schnittfläche
zweier Polygone mit Löchern,
ist es möglich,
dass sich die Löcher
innerhalb der Schnittfläche
befinden. 10 zeigt die Schnittfläche zweier
Polygone mit Löchern/Inseln
innerhalb ihrer Schnittfläche.
-
Wenn
der offenbarte Prozess 220 zur Bestimmung der Polygonschnittfläche zweier
Polygone benutzt wird, beinhaltet die Datendarstellung der Polygonschnittfläche eine
Abbildung eines jeden Loches innerhalb eines der ursprünglichen
Polygone, die sich innerhalb der Polygonschnittfläche befinden. Zuerst
wird bestimmt, ob sich das minimale Hüllrechteck des Loches innerhalb
der Schnittfläche
der minimalen Hüllrechtecke
der beiden Ursprungspolygone befindet. Wenn sich das minimale Hüllrechteck
des Loches nicht vollständig
innerhalb der Schnittfläche der
minimalen Hüllrechtecke
der beiden Ursprungspolygone befindet, dann befindet sich das Loch
nicht innerhalb der Polygonschnittfläche. Wenn sich das minimale
Hüllrechteck
des Loches innerhalb der Schnittfläche der Hüllrechtecke der beiden Ursprungspolygone
befindet, dann wird eine Bestimmung vorgenommen, ob sich ein Punkt
(z. B. ein Knotenpunkt) des Loches innerhalb des anderen Polygons
befindet.
-
5C zeigt
Schritte im Prozess 220 zum Umgang mit Löchern/Inseln
im Schnittflächenpolygon
P(I). Beginnend mit einer Insel/einem Loch in Polygon A, wird eine
Suche durchgeführt
um ein unmittelbar verwandtes einfaches Polygon in Polygon B zu finden.
Wenn ein einfaches Polygon in B gefunden wird und dieses im Uhrzeigersinn
ausgerichtet ist, dann ist die Insel/das Loch in Polygon A ein einfaches
Schnittflächenpolygon.
Wenn sich in B kein verwandtes Polygon befindet, oder das einfache,
verwandte Polygon in B entgegen dem Uhrzeigersinn ausgerichtet ist,
dann ist die Insel/das Loch von Polygon A kein einfaches Schnittflächenpolygon
(Schritt 302). Diese Schritte werden wiederholt, bis alle
Inseln/Löcher
in Polygon A herangezogen wurden.
-
Der
Prozess fährt
fort mit der Betrachtung einer Insel/eines Loches von Polygon B
und der Suche nach einem unmittelbar verwandten, einfachen Polygon
in Polygon A. Wenn sich ein einfaches Polygon in A befindet und
dieses im Uhrzeigersinn ausgerichtet ist, dann ist die Insel/das
Loch von Polygon B ein einfaches Schnittflächenpolygon. Wenn sich kein verwandtes
Polygon in A befindet oder die Ausrichtung des verwandten, einfachen
Polygons in A im Gegenuhrzeigersinn verläuft, dann ist die Insel/das Loch
von Polygon B kein einfaches Schnittflächenpolygon (Schritt 306).
Dieser Prozess wird solange wiederholt, bis alle Inseln/Löcher von
Polygon B abgefragt wurden.
-
Nach
Berücksichtigung
aller Löcher
oder Inseln in der Schnittfläche,
wird eine Datendarstellung der gesamten, komplexen Polygonschnittfläche P(I), aus
der Liste/den Listen der erfassten einfachen Polygone 318 aufgebaut
(Schritt 307). Die Schnittfläche von P(A) und P(B) kann
ein oder mehrere Polygone beinhalten, wovon jedes einfach oder komplex
sein kann. Die Datendarstellung der Polygonschnittfläche kann
dann von anderen Anwendungen des Systems, in dem das Softwareprogramm 200 installiert
ist, benutzt werden, die Daten benötigen, welche die Polygonschnittfläche von
P(A) und P(B) anzeigen (Schritt 288).
-
III. VERFAHREN ZUR BESTIMMUNG
DER VEREINIGUNG VON POLYGONEN
-
Wie
oben erwähnt
worden ist, besteht bei der Verwendung von geographischen Datenbanken manchmal
die Notwendigkeit, die Vereinigung von zwei (oder mehr) zweidimensionalen
Merkmalen zu bestimmen. In Fällen,
in denen Polygone zur Darstellung dieser zweidimensionalen Merkmale
benutzt werden, ist es notwendig, die Polygonvereinigung zu bestimmen.
-
Ein
Verfahren zur Bestimmung der Polygonvereinigung wird in Zusammenhang
mit 11-17 beschrieben. Bezug nehmend
auf 11, ist das Verfahren in einem Softwareprogramm 600 implementiert,
das die geographische Datenbank 100 nutzt, die Datendarstellungen
von Polygonen enthält,
wie in Zusammenhang mit 1 und 2 beschrieben
worden ist. Das Softwareprogramm 600 erhält zwei
Datendarstellungen von Polygonen als Eingabe. (Die zwei Datendarstellungen von
Polygonen entsprechen den in 2 beschriebenen.)
Das Softwareprogramm 600 liefert, als Ausgabe, eine Datendarstellung
eines Polygons (d. h. die Vereinigung) der beiden Datendarstellungen
von Polygonen, die als Eingabe geliefert wurden.
-
Das
Softwareprogramm 600 ist auf einem Computersystem 610 installiert.
Das Computersystem 610 kann das gleiche Computersystem 210 sein, wie
in 3 gezeigt ist, oder kann ein unterschiedliches
Computersystem sein. Das Softwareprogramm 600 kann auf
einem computerlesbaren Medium gespeichert werden, vom Medium in
den Systemspeicher geladen werden und, nach Bedarf, gestartet werden.
-
Die
Bestimmung der Polygonvereinigung zweier Polygone wird mit Bezug
auf 12-17 beschrieben. 12 zeigt zwei Polygone, die mit P(A) und
P(B) bezeichnet sind. Bei Verwendung der vorliegenden Ausführungsform,
erfolgt die Bestimmung der Vereinigung P(U) der Polygone P(A) und P(B).
-
13A-13C zeigen Schritte im Prozess 620,
der vom Softwareprogramm 600 durchgeführt wird, um die Vereinigung
der Polygone P(A) und P(B) zu bestimmen. Der Prozess 620 beginnt
mit einem Schritt, in dem die Datendarstellungen der beiden Polygone
empfangen werden (Schritt 624). Der Prozess 620 beinhaltet
einen Schritt, der die minimalen Hüllrechtecke für die beiden
Polygone P(A) und P(B) bildet (Schritt 628). 14 skizziert
die Bildung dieser minimalen Hüllrechtecke
für P(A)
und P(B), die mit MBR(A) bzw. MBR(B) bezeichnet sind. Die minimalen
Hüllrechtecke,
MBR(A) und MBR(B), werden verglichen, um festzustellen, ob sie sich
schneiden (Schritt 632). Wenn sich die minimalen Hüllrechtecke von
P(A) und P(B) nicht schneiden, liegt keine Vereinigung zwischen
den Polygonen P(A) und P(B) vor, und es erfolgt eine negative Rückmeldung
(Schritt 636). Wenn die minimalen Hüllrechtecke MBR(A) und MBR(B)
sich schneiden (oder auch berühren), dann
kann eine Vereinigung zwischen den Polygonen P(A) und P(B) vorliegen,
und der Prozess 620 wird fortgeführt.
-
Der
Prozess fährt
fort mit der Erstellung einer Knotenpunkt-Verbindungs-Karte. Die Knotenpunkt-Verbindungs-Karte
wird erstellt unter Verwendung der Polygonschnittfläche MBR(A_B)
der minimalen Hüllrechtecke
MBR(A) und MBR(B) der Polygone P(A) und P(B). Diese Polygonschnittfläche P(A_B)
wird bestimmt, wie in 14 gezeigt ist. Zur Erstellung
der Knotenpunkt-Verbindungs-Karte,
wird jede Verbindung eines jeden Polygons P(A) oder P(B) identifiziert,
die sich vollständig
innerhalb der Polygonschnittfläche
P(A_B) der minimalen Hüllrechtecke
MBR(A) und MBR(B) der Polygone P(A) und P(B) befindet (Schritt 644).
(Eine Verbindung befindet sich vollständig innerhalb der Schnittfläche MBR(A_B)
der minimalen Hüllrechtecke
MBR(A) und MBR(B), wenn sich beide Enden der Verbindung innerhalb
der Schnittmenge MBR(A_B) der minimalen angrenzenden Rechtecke MBR(A)
und MBR(B) befinden.) Dann ist jeder Knotenpunkt dieser identifizierten
Verbindungen identifiziert. (Formpunkte können bei diesem Schritt ignoriert
werden.) Jeder dieser identifizierten Knotenpunkte wird dann als
Eintrag in die Knotenpunkt-Verbindungs-Karte hinzugefügt (Schritt 648).
Für jeden
Knotenpunkt, der als Eintrag in die Knotenpunkt-Verbindungskarte
hinzugefügt wird,
werden alle Verbindungen, die an den Knotenpunkt anknüpfen, identifiziert
und in der Karte dem Knotenpunkt zugeordnet.
-
Die
Knotenpunkt-Verbindungs-Karte wird verwendet, um einen Knotenpunkt
(hier "N(START)" genannt) zu identifizieren,
der sich auf dem Polygon P(U) befindet, das die Vereinigung der
Inputpolygone P(A) und P(B) bildet. Bei Verwendung der Knotenpunkt-Verbindungs-Karte,
wird ein Knotenpunkt identifiziert, der drei (oder mehr) mit ihm
verknüpfte
Verbindungen aufweist (Schritt 652). Ein Knotenpunkt der
Knotenpunkt-Verbindungskarte, der drei (oder mehr) mit ihm verknüpfte Verbindungen
aufweist, befindet sich auf dem Polygon P(U), das die Vereinigung
der beiden Polygone P(A) und P(B) bildet. Weil sich dieser Knotenpunkt
auf dem Polygon P(U) befindet, das die Vereinigung der beiden Polygone
P(A) und P(B) bildet, sind zwei (und zwar genau zwei) der drei oder
mehr Verbindungen, die zum Knotenpunkt N(START) führen, Verbindungen
des Vereinigungspolygons P(I). Der nächste Schritt besteht darin,
festzustellen, welche zwei der drei oder mehr Verbindungen Teil
des Vereinigungspolygons P(U) sind.
-
Um
festzustellen, welche der Verbindungen, die an N(START) anknüpfen, Teil
des Vereinigungspolygons P(U) sind, wird ein Prozess durchgeführt, der
eine Verbindung eines der Ursprungspolygone P(A) oder P(B) identifiziert,
die außerhalb
des anderen Ursprungspolygons, P(A) oder P(B) liegt (Schritt 654).
Eine Verbindung eines der Ursprungspolygone, die außerhalb
des anderen Ursprungspolygons liegt, ist Teil des Vereinigungspolygons
P(U)(Schritt 660). Diese Verbindung wird als "VERBINDUNG(START)" bezeichnet. Details
des Prozesses 697 zum Auffinden dieser Verbindung sind
in 15A, 15B und 16 dargestellt.
-
Wie
in den 15A und 15B gezeigt
ist, sind in P(A) und P(B) alle Kanten im Uhrzeigersinn angeordnet.
Der Knotenpunkt N wird als Startknotenpunkt bestimmt, weil vier
Kanten mit ihm verbunden sind, nämlich
ae1 und ae2 von P(A), be1 und be2 von P(B). Wenn sich ae1 auf der
linken Seite von be1 und be2 befindet, dann liegt ae1 außerhalb
von P(B) und kann als Startkante der Polygonvereinigung gewählt werden
(wie in 15A gezeigt ist). Wenn ae2 und ae1
sich beide auf der linken Seite von be1 und be2 befinden, dann liegen
ae1 und ae2 außerhalb
von P(B) und können
beide als Startkante der Polygonvereinigung gewählt werden (wie in 15b gezeigt). Zur Bestimmung, ob ae1 sich auf
der linken Seite von be1 und be2 befindet, kann der in 16 gezeigte
Prozess 700 herangezogen werden. Bei Verwendung von Prozess 700 aus 16,
wird ein Formpunkt bp1 von be1 gewählt, ein Formpunkt bp2 wird
von be2 gewählt
und der Formpunkt ap1 wird von ae1 gewählt. Diese Formpunkte werden
gewählt, weil
sie die auf ihren jeweiligen Kanten die dem Knotenpunkt N(punkt
p) nächstgelegen
Formpunkte sind, obwohl auch andere Formpunkte auf diesen Kanten ausgewählt werden
können.
Der Prozess 700 in 16 wird
verwendet, um zu überprüfen, ob
Punkt ap1 auf der linken Seite des Liniensegments bp1_p und p_bp2
liegt. Wenn dies zutrifft, liegt ae1 links von be1 und be2 (wie
in 15A gezeigt ist), und liegt deshalb außerhalb
von P(B).
-
Nach
der Identifizierung von VERBINDUNG(START), wird die nächste Verbindung,
die die Polygonvereinigung P(U) bildet, identifiziert. Diese nächste Verbindung
wird identifiziert, indem alle Verbindungen überprüft werden, die an das nicht
referenzierte Ende von VERBINDUNG(START) anschließen. Wie
in 13B gezeigt ist, erfolgt die Bestimmung des nicht
referenzierten Endes von VERBINDUNG(START) durch die Vorgehensweise
zum Polygonaufbau (im Uhrzeigersinn für eine Insel, im Gegenuhrzeigersinn
für ein
Loch, Schritt 664).
-
Wenn
nur eine einzige weitere Verbindung vorhanden ist, die an das nicht
referenzierte Ende der Verbindung, VERBINDUNG(START) anschließt, ist diese
Verbindung die nächste
Verbindung der Polygonvereinigung P(U). Daten, die diese nächste Verbindung
anzeigen, werden in die Liste aufgenommen, die zur Darstellung des
Vereinigungspolygons P(U) erstellt wurde (Schritte 672 und 678).
-
Bei
zwei oder mehr Verbindungen, die an das nicht referenzierte Ende
von VERBINDUNG(START) anschließen,
ist diejenige Verbindung, die im Gegenuhrzeigersinn den größtmöglichen
Winkel zu VERBINDUNG(START) bildet, die nächste Verbindung des Vereinigungspolygons
P(U). Daten, die diese nächste
Verbindung anzeigen, werden in die Liste aufgenommen, die zur Darstellung des
Vereinigungspolygons P(U) erstellt wurde (Schritte 672, 678 und 676).
-
Nachdem
diese Verbindung (d. h. die Verbindung nach VERBINDUNG(START)) in
die Liste, die zur Darstellung des Vereinigungspolygons P(U) erstellt
wurde, aufgenommen worden ist, fährt
der Prozess mit der Bestimmung der nächsten Verbindung fort, die
das Vereinigungspolygon P(U) bildet. Diese nächste Verbindung wird auf ähnliche
Weise wie oben beschrieben bestimmt. Damit sind alle Verbindungen,
die an das nichtreferenzierte Ende der Verbindung anschließen, identifiziert
(erneut Schritte 664 und 672). Wenn es nur eine
einzige weitere Verbindung gibt, dann wird diese Verbindung der
Liste der Verbindungen, die das Vereinigungspolygon P(U) bilden,
hinzugefügt.
Gibt es zwei oder mehr weitere Verbindungen, dann ist die nächste Verbindung
diejenige, die im Gegenuhrzeigersinn den größten Winkel zu der Verbindung
bildet, die als letzte als Teil des Vereinigungspolygons P(U) identifiziert
wurde (erneut Schritt 678).
-
Der
Prozess wird solange fortgesetzt, bis N(START) erreicht wird (Schritt 680).
Wenn N(START) erreicht wird, dann ist ein einfaches Polygon (das
einen Teil oder die Gesamtheit der Polygonvereinigung P(U)von P(A)
und P(B) bildet) identifiziert. Die Datenbebeschreibung dieses einfachen Polygons
ist in der Liste 658 enthalten. Diese Daten werden einer
Liste einfacher Polygone hinzugefügt, innerhalb einer Datendarstellung 718 (in 13C) des gesamten Vereinigungspolygons P(U) von
P(A) und P(B) (Schritt 684).
-
Alle
verwendeten Verbindungen und Knotenpunkte in der Knotenpunkt-Verbindungskarte
werden entfernt (Schritt 688). Wenn sich nach der Erkennung einer
einfachen Polygonvereinigung noch weitere Knotenpunkte mit drei
oder mehr angeschlossenen Verbindungen in der Knotenpunkt-Verbindungskarte befinden
(Schritt 692 in 13B),
dann gibt es mindestens eine weitere, unterschiedliche einfache
Polygonvereinigung zwischen dem ersten und dem zweiten Polygon.
Der Prozess wird wiederholt (beginnend mit Schritt 652 in 13A), um jede zusätzliche einfache Polygonvereinigung
zu bestimmen. Der Prozess wird solange wiederholt, bis sich kein
Knotenpunkt mehr in der Knotenpunkt-Verbindungskarte befindet, der
mehr als drei mit ihm verknüpfte
Verbindungen aufweist.
-
Der
Prozess 620 findet vereinigte Löcher und Inseln in P(A) und
P(B). Löcher
und Inseln in Polygonen wurden oben in Zusammenhang mit 9 beschrieben.
-
Bei
der Bestimmung der Vereinigung zweier Polygone mit Löchern, ist
es möglich,
dass einige der Löcher
sich innerhalb der Vereinigung befinden. 17 zeigt
die Vereinigung von zwei Polygonen, die Löcher/Inseln in ihrer Vereinigung
haben.
-
Wenn
der aufgeführte
Prozess 620 bei der Bestimmung der Polygonvereinigung von
zwei Polygonen Anwendung findet, enthält die Datendarstellung der
Polygonvereinigung eine Darstellung eines jeden Loches in jedem
der Ursprungspolygone, das sich innerhalb der Polygonvereinigung
befindet. Zuerst findet eine Bestimmung statt, ob das minimale Hüllrechteck
des Loches außerhalb
der Schnittfläche der
minimalen Hüllrechtecke
der beiden Ursprungspolygone liegt. Wenn das minimale Hüllrechteck
nicht vollständig innerhalb
der Vereinigung der minimalen Hüllrechtecke
der beiden Ursprungspolygone liegt, dann befindet sich das Loch
innerhalb der Polygonvereinigung. Wenn das minimale Hüllrechteck
des Loches innerhalb der Schnittfläche der minimalen Hüllrechtecke
der beiden Ursprungspolygone liegt, dann findet eine Bestimmung
statt, ob irgendein Punkt (d. h. ein Knotenpunkt) des Loches innerhalb des
anderen Polygons liegt.
-
13C zeigt Schritte im Prozess 620 zum Umgang
mit Löchern/Inseln
in der Polygonvereinigung P(U). Beginnend mit einer Insel/einem
Loch aus Polygon A, wird eine Suche zum Auffinden eines unmittelbar
verwandten einfachen Polygons in Polygon B ausgeführt. Wenn
in B kein verwandtes Polygon liegt, oder wenn es ein unmittelbar
verwandtes einfaches Polygon in B gibt und dieses im Gegenuhrzeigersinn
ausgerichtet ist, dann ist die Insel/das Loch von Polygon A ein
einfaches Vereinigungspolygon. Wenn das verwandte einfache Polygon
in B im Uhrzeigersinn ausgerichtet ist, dann ist die Insel/das Loch
aus Polygon A kein einfaches Vereinigungspolygon (Schritt 702).
Diese Schritte werden solange wiederholt, bis alle Inseln/Löcher aus
Polygon A berücksichtigt
worden sind.
-
Der
Prozess fährt
fort mit der Berücksichtigung
einer Insel/eines Loches von Polygon B und der Suche nach einem
unmittelbar verwandten einfachen Polygon in Polygon A. Wenn es kein
verwandtes Polygon in Polygon A gibt, oder wenn es ein einfaches Polygon
in A gibt und es im Gegenuhrzeigersinn ausgerichtet ist, dann ist
die Insel/das Loch von Polygon B ein einfaches Vereinigungspolygon.
Wenn das Polygon mit unmittelbarem Ursprung in A im Uhrzeigersinn
ausgerichtet ist, dann ist die Insel/das Loch aus Polygon B kein
einfaches Vereinigungspolygon (Schritt 706). Diese Schritte
werden solange wiederholt, bis alle Inseln/Löcher aus Polygon B berücksichtigt
worden sind.
-
Dieser
Prozess ist in 17 dargestellt. In 17,
hat P(A) vier Löcher,
a2, a3, a4, a6 und eine Insel a5, die sich innerhalb von a4 befindet.
P(B) hat drei Löcher,
b2, b3, b4. Aus P(A) befinden sich a3 und a4 nicht in P(B) und werden
deshalb als vereinigte Löcher
betrachtet. a4, a6 und a5 befinden sich in P(B) und werden deshalb
nicht als vereinigte Löcher betrachtet.
Aus P(B) befinden sich b3 und b4 nicht in P(A) und werden deshalb
als vereinigte Löcher
betrachtet. b3 befindet sich in P(A) und wird deshalb nicht als
vereinigtes Loch betrachtet.
-
Nach
dem Aufzählen
eines jeden Loches 1 einer jeden Insel in der Vereinigung,
wird eine Datendarstellung der gesamten komplexen Polygonvereinigung
P(U) mit Hilfe der Liste(n) von einfachen Polygonen 718 erstellt
(Schritt 707). Die Vereinigung von P(A) und P(B) kann entweder
einfach oder komplex sein. Die Datendarstellung P(U) kann von anderen
Anwendungen benutzt werden, die Informationen über die Vereinigung von P(A)
und P(B) benötigen.
-
IV. VORTEILE
-
Das
vorliegende Verfahren zur Bestimmung von Schnittfläche und
Vereinigung von Polygonen und zum Aufbau von Polygonen ist mit weniger
Rechenaufwand verbunden als vorherige Verfahren. Die vorliegende
Methode erreicht diesen Nutzen teilweise dadurch, dass nur die Kanten
der Polygone herangezogen werden, anstelle ganzer Liniensegmente,
und hierdurch der rechnerische Aufwand in großem Maße verringert wird.
-
V. WEITERE BETRACHTUNGEN
-
Einheitliche
Reihenfolge – im
Uhrzeigersinn oder im Gegenuhrzeigersinn
-
In
den obenbeschriebenen Ausführungsformen
wurde erläutert,
dass die Datendarstellungen von Polygonen Listen von Verbindungen
beinhalten, die dazu genutzt werden, die Grenzen von Polygonen darzustellen,
und dass in einer Liste enthaltene Verbindungen entsprechend einem
im Uhrzeigersinn gerichteten Durchlauf der dargestellten Polygongrenze
durch die Verbindungen angeordnet waren. Es ist nicht erforderlich,
dass die zur Darstellung von Polygonen genutzte Liste von Verbindungen
die Verbindungen im Uhrzeigersinn identifiziert, solange die Reihenfolge,
in der die Verbindungen aufgelistet sind, in der gesamten geographischen
Datenbank beibehalten wird. So können
zum Beispiel, entsprechend einer alternativen Vorgehensweise, Verbindungen,
die Polygongrenzen bilden, anstelle der Auflistung im Uhrzeigersinn,
von Datendarstellungen von Polygonen auch im Gegenuhrzeiger sinn
aufgelistet werden.
-
Wenn
eine Reihenfolge im Gegenuhrzeigersinn für Polygongrenzen benutzt wird,
kann es vorteilhaft sein, eine Reihenfolge im Uhrzeigersinn zur Darstellung
von Löchern
in Polygonen zu verwenden.
-
Es
ist beabsichtigt, dass die vorhergegangene ausführliche Beschreibung als veranschaulichend und
nicht als einschränkend
betrachtet wird, und dass verstanden wird, dass die nachfolgenden
Ansprüche
den Umfang der Erfindung definieren.