-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft eine Zeichenkettenanordnungsvorrichtung, die eine Zeichenkette auf einer Grafik, wie z. B. einer Karte, anordnet.
-
Hintergrund der Erfindung
-
Eine herkömmliche Kartenanzeigevorrichtung besitzt eine Funktion zum Anordnen einer Zeichenkette, wie z. B. eines Straßennamens, von einem Punkt, wo die Anordnung der Zeichenkette beginnt (von hier an als Zeichenkettenanordnungsstartpunkt bezeichnet), aus entlang einer Straßenlinie (von hier an als Straßenknotenpunktserie bezeichnet) (siehe z. B. 21). In diesem Fall, wenn der Zeichenkettenanordnungsstartpunkt ungeeignet ist, erfolgt eine Überlappung zwischen der Zeichenkette und einer anderen Zeichenkette, wie in 22(a) gezeigt ist, eine Einschränkung in der Lesbarkeit aufgrund einer Änderung in dem Anzeigewinkel eines Zeichens, wie in 22(b) gezeigt ist, und eine Einschränkung in der Lesbarkeit aufgrund eines hohen Nahegrades zwischen der Zeichenkette und einer anderen Zeichenkette, wie in 22(c) gezeigt ist.
-
Als ein Verfahren zum Beheben einer solchen Überlappung zwischen Zeichenketten, wie in 22(a) gezeigt ist, und einer solchen Einschränkung in der Lesbarkeit, wie in 22(b) gezeigt ist, wird z. B. ein Verfahren zum Ändern eines Zeichenkettenanordnungsstartpunkts zu einer Position mit hoher Lesbarkeit in der Nichtpatentliteratur 1 beschrieben. Anschaulich beschrieben ist dies ein Verfahren zum Ändern eines Zeichenkettenanordnungsstartpunkts durch Minimieren einer Bewertungsfunktion f, die durch die folgende Gleichung (1) gezeigt wird und aus einer Funktion overlap(i), die eine Überlappung zwischen Zeichenketten zeigt, wie in 23(a) gezeigt ist, und einer Funktion flatness(i), die eine Variation in dem Winkel einer Straßenknotenpunktserie zeigt, entlang welcher eine Zeichenkette angeordnet wird, wie in 23(b) gezeigt ist, besteht. α1 und α2 in der Gleichung (1) sind Parameter zum jeweiligen Anpassen von overlap(i) und flatness(i), und String_num gibt die Anzahl der Zeichenketten an.
-
-
Stand der Technik
-
Nichtpatentliteratur
-
- Nichtpatentliteratur 1: Shawn Edmondson, ”A General Cartographic Labeling Algorithm”, The International Journal for Geographic Information and Geovisualization, Volume 33, Number 4/Winter 1996
-
Zusammenfassung der Erfindung
-
Von der Erfindung zu lösende Probleme
-
Ein Problem mit dem Verfahren, das in der oben genannten Nichtpatentliteratur 1 offenbart ist, besteht jedoch darin, dass, weil das Verfahren dazu vorgesehen ist, einfach eine Überlappung zwischen Zeichenketten, wie in 22(a) gezeigt wird, und eine Einschränkung in der Lesbarkeit aufgrund einer Variation in dem Winkel einer Straße, entlang welcher eine Zeichenkette angeordnet wird, wie in 22(b) gezeigt wird, zu beheben, kann eine Einschränkung in der Lesbarkeit aufgrund eines hohen Nahegrades zwischen Zeichenketten, wie in 22(c) gezeigt wird, nicht vermieden werden.
-
Die vorliegende Erfindung ist vorgesehen, die oben genannten Probleme zu lösen, und es ist daher auch eine Aufgabe der vorliegenden Erfindung, eine Zeichenkettenanordnungsvorrichtung bereitzustellen, die einen Zeichenkettenstartpunkt zu einer optimalen Position ändert, indem nicht nur eine Überlappung zwischen Zeichenketten und eine Variation in dem Anzeigewinkel eines Zeichens berücksichtigt werden, sondern auch der Nähegrad zwischen Zeichenketten.
-
Mittel zur Lösung des Problems
-
Gemäß der vorliegenden Erfindung wird eine Zeichenkettenanordnungsvorrichtung bereitgestellt, die beinhaltet: einen Datenerfasser, der Zeichenkettendaten über eine anzuordnende Zeichenkette erfasst, und Straßenknotenpunktseriendaten über eine Straßenknotenpunktserie, entlang welcher die oben genannte Zeichenkette angeordnet werden soll; einen Kandidatenpunkterzeuger, der eine Vielzahl von Kandidatenpunkten zum Anordnen der Zeichenkette auf der Straßenknotenpunktserie basierend auf den von dem Datenerfasser erfassten Zeichenkettendaten und Straßenknotenpunktseriendaten erzeugt; einen Zeichenkettenanordner, der die Zeichenkette von jedem der von dem Kandidatenpunkterzeuger erzeugten Vielzahl von Kandidatenpunkten aus anordnet; einen Bewertungsfunktionsberechner, der einen Bewertungsfunktionswert berechnet, welcher eine Bewertung zu der Anordnung der Zeichenkette durch den Zeichenkettenanordner zeigt; und einen Minimumbewertungsfunktionswertspeicherer, die einen Minimumbewertungsfunktionswert, welcher ein Minimum des von dem Bewertungsfunktionsberechner berechneten Bewertungsfunktionswert ist, und eine Zeichenkettenanordnung und ein Zeichenkettenanordnungsstartpunkt in dem oben genannten Bewertungsfunktionswert speichert, wobei der Bewertungsfunktionsberechner beinhaltet: einen Zeichenlückenfunktionsberechner, der einen Zeichenlückenfunktionswert berechnet, welcher eine Bewertung zu einer Zeichenlücke zwischen einer Vielzahl von Zeichenketten zeigt, welche jeweils von einer Vielzahl von Kandidatenpunkten aus von dem Zeichenkettenanordner angeordnet werden; einen Straßenwinkelfunktionsberechner, der einen Straßenwinkelfunktionswert berechnet, welcher eine Bewertung zu einem Winkel der Straßenknotenpunktserie zeigt, entlang welcher die Zeichenkette von dem Zeichenkettenanordner angeordnet wird; und einen Bewertungsfunktionswertberechner, der den Bewertungsfunktionswert basierend auf dem von dem Zeichenlückenfunktionsberechner berechneten Zeichenlückenfunktionswert und dem von dem Straßenwinkelfunktionsberechner berechneten Straßenwinkelfunktionswert berechnet.
-
Vorteile der Erfindung
-
Die Zeichenkettenanordnungsvorrichtung gemäß der vorliegenden Erfindung kann eine Einschränkung in der Lesbarkeit aufgrund einer Überlappung zwischen Zeichenketten und einer Änderung des Anzeigewinkels eines Zeichens verhindern, und kann ebenso verhindern, dass der Nähegrad zwischen Zeichenketten hoch wird, wodurch eine Verbesserung der Sichtbarkeit jeder Zeichenkette ermöglicht wird.
-
Kurze Beschreibung der Figuren
-
1 ist ein Blockdiagramm, welches die Struktur einer Zeichenkettenanordnungsvorrichtung gemäß einem ersten Ausführungsbeispiel zeigt;
-
2 ist ein Flussdiagramm, welches die Arbeitsweise der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
3 ist ein Blockdiagramm, welches die Struktur eines Kandidatenpunkterzeugers der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
4 ist ein Blockdiagramm, welches die Struktur eines Zeichenkettenanordners der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
5 ist ein Blockdiagramm, welches die Struktur eines Bewertungsfunktionsberechners der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt.
-
6 ist ein Diagramm, welches eine Beziehung zwischen zwei Mengen von Straßenknotenpunktserien zeigt, wobei entlang jeder von diesen eine Zeichenkette angeordnet werden soll;
-
7 ist ein Flussdiagramm, welches die Arbeitsweise des Kandidatenpunkterzeugers der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
8 ist ein Diagramm, welches die Ergebnisse der Kandidatenpunkterzeugung zeigt, welche von der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel erhalten worden sind;
-
9 ist ein Flussdiagramm, welches die Arbeitsweise des Zeichenkettenanordners der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
10 ist ein Diagramm, welches das Ergebnis der Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
11 ist ein Diagramm, welches das Ergebnis der Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
12 ist ein Diagramm, welches das Ergebnis der Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
13 ist ein Diagramm, welches das Ergebnis der Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
14 ist ein Flussdiagramm, welches die Arbeitsweise des Bewertungsfunktionsberechners der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
15 ist ein erklärendes Diagramm, welches ein Beispiel einer Berechnung eines Verbindungswinkels durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
16 ist ein Diagramm, welches ein Beispiel einer Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
17 ist ein Diagramm, welches ein Beispiel einer Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
18 ist ein Diagramm, welches die Ergebnisse einer Kandidatenpunkterzeugung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
19 ist ein Diagramm, welches ein Beispiel einer Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
20 ist ein Diagramm, welches ein Beispiel einer Anordnung durch die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt;
-
21 ist ein erklärendes Diagramm, welches eine herkömmliche Anordnung einer Zeichenkette zeigt;
-
22 ist ein erklärendes Diagramm, welches eine herkömmliche Anordnung von Zeichenketten zeigt; und
-
23 ist ein erklärendes Diagramm, welches eine Verbesserung in der Lesbarkeit einer herkömmlichen Anordnung von Zeichenketten zeigt.
-
Ausführungsbeispiele der Erfindung
-
Nachstehend werden die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung mit Bezug auf die beigefügten Figuren beschrieben, um diese Erfindung näher zu erläutern.
-
Ausführungsbeispiel 1
-
1 ist ein Blockdiagramm, welches die Struktur einer Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel der vorliegenden Erfindung zeigt. Die Zeichenkettenanordnungsvorrichtung 100 umfasst einen Zeichenkettendatenspeicher 1, einen Zeichenkettendatenerfasser (Datenerfasser) 2, einen Kandidatenpunkterzeuger 3, einen Zeichenkettenanordner 4, einen Bewertungsfunktionsberechner 5, einen Minimumbewertungsfunktionswertspeicherer 6, einen Minimumbewertungsfunktionswertdatenspeicher 7, einen Zeichenkettenanordnungsdatenspeicher 8 und einen Zeichenkettenanordnungsstartpunktdatenspeicher 9.
-
Der Zeichenkettendatenspeicher 1 ist ein Speicherbereich zum Speichern einer Menge von Daten über eine Vielzahl von Zeichenketten und speichert die Anzahl der Zeichenketten, die Anzahl der in jeder der Zeichenketten enthaltenen Zeichen, die Breite und die Höhe jedes der Zeichen und eine Straßenknotenpunktserie, entlang welcher jede der Zeichenketten anzuordnen ist. Der Zeichenkettendatenerfasser 2 erfasst in dem Zeichenkettendatenspeicher 1 gespeicherte Zeichenkettendaten. Der Kandidatenpunkterzeuger 3 erzeugt zwei oder mehr Anordnungskandidaten (nachstehend als Kandidatenpunkte bezeichnet) für die Zeichenkette auf einem Straßenknotenpunkt, entlang welchem die Zeichenkette anzuordnen ist. Der Zeichenkettenanordner 4 ordnet die Zeichenkette entlang der Straßenknotenpunktserie von jedem Kandidatenpunkt aus an.
-
Der Bewertungsfunktionsberechner 5 bewertet die Lesbarkeit einer Zeichenkette, welche angeordnet wird. Der Minimumbewertungsfunktionswertspeicherer 6 speichert in jedem Speicherbereich einen Bewertungsfunktionswert, eine Zeichenkettenanordnung und einen Zeichenkettenanordnungsstartpunkt zu einer Zeit, wenn eine Bewertungsfunktion ein Minimum aufweist. Die Minimumbewertungsfunktionswertdatenspeichereinheit 7 ist ein Speicherbereich zum Speichern des Minimumbewertungsfunktionswerts. Die Zeichenkettenanordnungsdatenspeichereinheit 8 ist ein Speicherbereich zum Speichern der Zeichenkettenanordnung zu der Zeit, wenn die Bewertungsfunktion einen Minimumbewertungsfunktionswert aufweist. Die Zeichenkettenanordnungsstartpunktdatenspeichereinheit 9 ist ein Speicherbereich zum Speichern des Zeichenkettenanordnungsstartpunkts zu der Zeit, wenn der Bewertungsfunktionswert ein Minimum ist.
-
Als nächstes wird die Arbeitsweise der Zeichenkettenanordnungsvorrichtung erklärt. 2 ist ein Flussdiagramm, welches die Arbeitsweise der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel der vorliegenden Erfindung zeigt. Der Zeichenkettendatenerfasser 2 verweist auf den Zeichenkettendatenspeicher 1, um die Zeichenkettendaten über eine anzuordnende Zeichenkette zu erfassen (Schritt ST1). Der Kandidatenpunkterzeuger 3 erzeugt Kandidatenpunkte, wobei die in Schritt ST1 erfasste Zeichenkette von jedem dieser auf der Straßenknotenpunktserie, entlang welcher die Zeichenkette anzuordnen ist, anzuordnen ist (Schritt ST2). Der Zeichenkettenanordner 4 ordnet die Zeichenkette von jedem der in Schritt ST2 erzeugten Kandidatenpunkte aus entlang der Straßenknotenpunktserie an (Schritt ST3). Der Zeichenkettenanordner 4 verweist weiter auf das Ergebnis der Anordnung in Schritt ST3 und bestimmt, ob die Zeichenkette entlang der Straßenknotenpunktserie angeordnet werden kann oder nicht (Schritt ST4). Z. B., wenn die Zeichenkette angeordnet wird, solange sie über die Straßenknotenpunktserie hinausragt, bestimmt der Zeichenkettenanordner, dass die Zeichenkette nicht angeordnet werden kann. Wenn der Zeichenkettenanordner bestimmt, dass die Zeichenkette nicht entlang der Straßenknotenpunktserie angeordnet werden kann (wenn „NEIN” in Schritt ST4), beendet die Zeichenkettenanordnungsvorrichtung die Verarbeitung.
-
Im Gegensatz dazu, wenn der Zeichenkettenanordner bestimmt, dass die Zeichenkette entlang der Straßenknotenpunktserie angeordnet werden kann (wenn „JA” in Schritt ST4), berechnet der Bewertungsfunktionsberechner 5 den Bewertungsfunktionswert der Zeichenkette, die angeordnet wird (Schritt ST5). Der Minimumbewertungsfunktionswertspeicherer 6 bestimmt, ob der in Schritt ST5 berechnete Bewertungsfunktionswert kleiner ist als ein Minimumbewertungsfunktionswert mini_cost, welcher bereits in der Minimumbewertungsfunktionswertdatenspeichereinheit 7 gespeichert ist, oder nicht (Schritt ST6). Wenn der Bewertungsfunktionswert gleich oder größer als der Minimumbewertungsfunktionswert mini_cost ist (wenn „NEIN” in Schritt ST6), beendet die Zeichenkettenanordnungsvorrichtung die Verarbeitung. Dagegen, wenn der Bewertungsfunktionswert kleiner als der Minimumbewertungsfunktionswert mini_cost ist (wenn „JA” in Schritt ST6), speichert der Minimumbewertungsfunktionswertspeicherer 6 den in Schritt ST5 gespeicherten Bewertungsfunktionswert in dem Minimumbewertungsfunktionswertdatenspeicher 7 (Schritt ST7) und speichert jeweils Daten über die Zeichenkettenanordnung und Daten über den Zeichenkettenanordnungsstartpunkt in dem Zeichenkettenanordnungsdatenspeicher 8 und in dem Zeichenkettenanordnungsstartpunktdatenspeicher 9 (Schritt ST8), und die Zeichenkettenanordnungsvorrichtung beendet die Verarbeitung.
-
Als nächstes wird eine detailliertere Struktur und eine detailliertere Arbeitsweise der Zeichenkettenanordnungsvorrichtung 100 erklärt. 3–5 sind Blockdiagramme, welche jede strukturelle Komponente der Zeichenkettenanordnungsvorrichtung 100 in Einzelheiten zeigt. 3 ist ein Blockdiagramm, welches die Struktur des Kandidatenpunkterzeugers 3 zeigt, 4 ist ein Blockdiagramm, welches die Struktur des Zeichenkettenanordners 4 zeigt und 5 ist ein Blockdiagramm, welches die Struktur des Bewertungsfunktionsberechners 5 zeigt. Zuerst, wie in 3 gezeigt, umfasst der Kandidatenpunkterzeuger 3 einen ersten Verbindungslängenberechner 31, der die Länge jeder Verbindung, welche zwei Knotenpunkte in der Straßenknotenpunktserie miteinander verbindet, einen Verbindungsgesamtlängenaktualisierer 32, der die von dem ersten Verbindungslängenberechner 31 berechnete Länge jeder Verbindung addiert, um die Gesamtlänge der Straßenknotenpunktserie zu bestimmen, einen Kandidatenpunktlückenberechner 33, der die Lücke zwischen Kandidatenpunkten von der Gesamtlänge der Verbindungen berechnet, einen Erzeuger 34, der Kandidatenpunkte auf der Straßenknotenpunktserie erzeugt, einen zweiten Verbindungslängenberechner 35, der, wenn die Länge einer eingestellten Verbindung eine vorbestimmte Bedingung nicht erfüllt, die Knotenpunkte ändert und die Länge einer anderen Verbindung berechnet, einen Abstandaktualisierer 36, der die Verbindungslänge basierend auf der von dem zweiten Verbindungslängenberechner 35 berechneten Länge der anderen Verbindung aktualisiert, und eine Informationsspeichereinheit 37, die Informationen über Kandidatenpunkte inklusive der Kandidatenpunktlücke (cand_gap), einer Kandidatenpunktzahl (cand_idx) und der Länge (dist) einer Verbindung von dem führenden Knotenpunkt der Straßenknotenpunktserie zu einem vorbestimmten Knotenpunkt berechnet.
-
Als nächstes, wie in 4 gezeigt, umfasst der Zeichenkettenanordner 4 einen Anfangszeichenpositionsbestimmer 41, der die Position des ersten Zeichens einer Zeichenkette einstellt, einen Verbindungswinkelberechner 42, der einen Winkel einer Verbindung berechnet, einen Zeichenanordnungspositionsberechner 43, der die Anordnungsposition des Zeichens berechnet, einen Zeichen-außerhalb-Verbindung-Bestimmer 44, der bestimmt, ob das Zeichen außerhalb der Verbindung angeordnet ist oder nicht, einen Zeichenanordner 45, der die Anordnung des Zeichens einstellt, einen Überlappungsbestimmer 46, der bestimmt, ob das Zeichen ein anderes Zeichen, das vorher angeordnet wird, überlappt, einen ersten Parameteraktualisierer (Parameteraktualisierer) 47, der einen für die Anordnung des Zeichens notwendigen Parameter aktualisiert, wenn das Zeichen auf einer Verbindung existiert und kein anderes Zeichen überlappt, und einen zweiten Parameteraktualisierer 48, der einen für die Anordnung des Zeichens notwendigen Parameter aktualisiert, wenn das Zeichen außerhalb der Verbindung angeordnet wird.
-
Als nächstes, wie in 5 gezeigt, umfasst der Bewertungsfunktionsberechner 5 einen Zeichenlückenfunktionsberechner 51, der einen Funktionswert berechnet, welcher den Einfluss der Zeichenlücke zwischen Zeichenketten auf die Lesbarkeit einer Zeichenkette zeigt, einen Straßenwinkelfunktionsberechner 52, der einen Funktionswert berechnet, welcher den Einfluss eines Winkels einer Straße auf die Lesbarkeit der Zeichenkette zeigt, und einen Bewertungsfunktionswertberechner 53, der einen Bewertungsfunktionswert berechnet. Des Weiteren umfasst der Zeichenlückenfunktionsberechner 51 einen Anfangszeichenkettenbestimmer 54, der bestimmt, ob die Zeichenkette die erste ist oder nicht, einen ersten Gaußfunktionswertberechner 55, der einen Wert einer Gaußfunktion berechnet, und einen Zeichenlückenfunktionsaktualisierer 56, der einen Funktionswert, der den Einfluss der Zeichenlücke zwischen Zeichenketten auf die Lesbarkeit einer Zeichenkette zeigt, aktualisiert. Zusätzlich umfasst der Straßenwinkelfunktionsberechner 52 einen zweiten Gaußfunktionswertberechner 57, der einen Wert einer Gaußfunktion berechnet, und einen Straßenwinkelfunktionsaktualisierer 58, der einen Funktionswert aktualisiert, der den Einfluss eines Winkels einer Straße auf die Lesbarkeit einer Zeichenkette zeigt.
-
Als nächstes werden die detaillierten Arbeitsweisen des Kandidatenpunkterzeugers 3, des Zeichenkettenanordners 4 und des Bewertungsfunktionsberechners 5 erklärt. Die folgende Erklärung der Arbeitsweisen erfolgt unter der Annahme, dass die Zeichenkettendaten über Zeichenketten, von denen jede entlang einer Straßenknotenpunktserie angeordnet werden soll, die Daten über eine Zeichenkette „String11” und eine Zeichenkette „String2” sind, und die Breite aller Zeichen 5 ist und die Höhe aller Zeichen 10 ist. Des Weiteren wird eine Beziehung zwischen der Straßenknotenpunktserie, entlang welcher die Zeichenkette „String11” angeordnet werden soll, und der Straßenknotenpunktserie, entlang welcher die Zeichenkette „String2” angeordnet werden soll, in 6 gezeigt. Die Straßenknotenpunktserie P(0) bis P(2), entlang welcher die Zeichenkette „String11” angeordnet werden soll, besteht aus einem Knotenpunkt P(0) = (10, 20), einem Knotenpunkt P(1) = (10, 50) und einem Knotenpunkt P(2) = (100, 50). Gleichermaßen besteht die Straßenknotenpunktserie P(3) bis P(5), entlang welcher die Zeichenkette „String2” angeordnet werden soll, aus einem Knotenpunkt P(3) = (50, 70), einem Knotenpunkt P(4) = (50, 10) und einem Knotenpunkt P(5) = (110, 10). Zusätzlich wird STEP_SIZE auf 1 gesetzt und CANDIDATE_NUM (die Anzahl von Kandidatenpunkten) auf 3 gesetzt, F wird durch die folgende Gleichung (2) ausgedrückt, H wird durch die folgende Gleichung (3) ausgedrückt, RC wird auf 1 gesetzt und SC wird auf 1 gesetzt.
-
-
Als erstes, in Schritt ST1 des in 2 gezeigten Flussdiagramms, erfasst der Zeichenkettendatenerfasser 2 die erste Zeichenkette „String11”, die zweite Zeichenkette „String2”, die Straßenknotenpunktserie P(0) bis P(2) und die Straßenknotenpunktserie P(3) bis P(5), entlang welcher jeweils die Zeichenketten angeordnet werden sollen, und die Breite und die Höhe jedes der Zeichen, welche jede der Zeichenketten bilden, von dem Zeichenkettendatenspeicher 1. Als nächstes optimiert die Zeichenkettenanordnungsvorrichtung die Anordnung der ersten Zeichenkette „String11”. Als ein Verfahren zum Optimieren der Anordnung erzeugt der Kandidatenpunkterzeuger 3 Kandidatenpunkte, deren Anzahl gleich der voreingestellten CANDIDATE_NUM ist, auf der Straßenknotenpunktserie P(0) bis P(2), entlang welcher die Zeichenkette „String11” angeordnet werden soll, d. h. drei Kandidatenpunkte in gleichen Abständen.
-
Ein konkretes Verfahren zum Erzeugen von Kandidatenpunkten wird mit Bezug auf ein in 7 gezeigtes Flussdiagramm erklärt. 7 ist ein Flussdiagramm, welches die Arbeitsweise des Kandidatenpunkterzeugers der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt. Der erste Verbindungslängenberechner 31 des Kandidatenpunkterzeugers 3 verweist auf jede Knotenpunktinformation, welche in der Informationsspeichereinheit 37 gespeichert ist, und berechnet die Länge der Verbindung zwischen dem n-ten Knotenpunkt P(n) und dem (n + 1)-ten Knotenpunkt P(n + 1) (Schritt ST11). Nachdem der erste Verbindungslängenberechner 31 die Länge der Verbindung berechnet hat, addiert der Verbindungsgesamtlängenaktualisierer 32 die Länge zu einer Verbindungsgesamtlänge, welche der erste Verbindungslängenberechner das letzte Mal berechnet hat, und aktualisiert die Verbindungsgesamtlänge (total_dist) (Schritt ST12).
-
Der erste Verbindungslängenberechner 31 bestimmt, ob der erste Verbindungslängenberechner die Berechnung der Längen aller Verbindungen, welche die Straßenknotenpunktserie bilden, abgeschlossen hat (Schritt ST13). Wenn der erste Verbindungslängenberechner die Berechnung der Längen der mit allen Knotenpunkten assoziierten Verbindungen nicht abgeschlossen hat (wenn „NEIN” in Schritt ST13), kehrt die Zeichenkettenanordnungsvorrichtung zurück zu dem Vorgang des Schritts ST11 und wiederholt die oben beschriebenen Vorgänge. Dagegen, wenn der erste Verbindungslängenberechner die Berechnung der Längen der mit allen Knotenpunkten assoziierten Verbindungen abgeschlossen hat (wenn „JA” in Schritt ST13), erfasst der Kandidatenpunktlückenberechner 33 die Anzahl von Kandidatenpunkten (CANDIDATE_NUM) mit Verweis auf den Informationsspeicher 37, und berechnet die Lücke zwischen Kandidatenpunkten gemäß der folgenden Gleichung (4) und speichert die hierdurch berechnete Kandidatenpunktlücke (cand_gap) in dem Informationsspeicher 37 (Schritt ST14). cand_gap = total_dist/CANDIDATE_NUM (4)
-
Als nächstes verweist der Erzeuger 34 auf den Informationsspeicher 37 und erfasst die Informationen über die Kandidatenpunktlücke (cand_gap), die Kandidatenpunktzahl (cand_idx) und die Verbindungslänge (dist) der Verbindung zwischen dem führenden Knotenpunkt der Straßenknotenpunktserie und dem vorbestimmten Knotenpunkt, und bestimmt, ob der Kandidatenpunkt eine durch die folgende Gleichung (5) gezeigte Bedingung erfüllt (Schritt ST15). dist > cand_idxxcand_gap (5)
-
Ein Anfangswert der Kandidatenpunktzahl (cand_idx) ist 0, und eine Anfangsverbindungslange (dist) ist die Länge der Verbindung zwischen dem führenden Knotenpunkt der Straßenknotenpunktserie und dem Knotenpunkt, welcher neben dem führenden Knotenpunkt angeordnet ist. Es wird angenommen, dass diese Anfangsbedingungen vorher in dem Informationsspeicher 37 gespeichert worden sind.
-
Wenn die in der oben gezeigten Gleichung (5) gezeigte Bedingung erfüllt ist (wenn „JA” in Schritt ST15), erzeugt der Erzeuger 34 einen Kandidatenpunkt Q, welcher entlang der Straßenknotenpunktserie in einem Abstand der Kandidatenpunktzahl (cand_idx) x die Kandidatenpunktlücke (cand_gap) von dem führenden Knotenpunkt der Straßenknotenpunktserie angeordnet ist (Schritt ST16). Danach bestimmt der Erzeuger 34, ob der Erzeuger alle Kandidatenpunkte Q, deren Anzahl CANDIDATE_NUM ist, erzeugt hat (Schritt ST17). Wenn der Erzeuger alle Kandidatenpunkte erzeugt hat (wenn „JA” in Schritt ST17), beendet die Zeichenkettenanordnungsvorrichtung die Verarbeitung. Dagegen, wenn der Erzeuger nicht alle Kandidatenpunkte erzeugt hat (wenn „NEIN” in Schritt ST17), erhöht die Zeichenkettenanordnungsvorrichtung die Kandidatenpunktzahl um 1 und speichert die Kandidatenpunktzahl in dem Informationsspeicher 37 (cand_idx + 1 in Schritt ST18) und kehrt zu dem Vorgang des Schritts ST15 zurück.
-
Dagegen, wenn die in der oben erwähnten Gleichung (5) gezeigte Bedingung nicht erfüllt ist (wenn „NEIN” in Schritt ST15), erhöht der Erzeuger die Knotenpunktzahl in dem Bestimmungsvorgang des Schritts ST15 um 1 (Schritt ST19) und berechnet die Länge der Verbindung zwischen dem Knotenpunkt der erhöhten Knotenpunktzahl und dem Knotenpunkt, der neben dem Knotenpunkt der erhöhten Knotenpunktzahl angeordnet ist (Schritt ST20). Der Abstandaktualisierer 36 addiert die Länge der Verbindung, die in Schritt ST20 neu berechnet wird, zu der Verbindungslänge (dist), welche für den Bestimmungsvorgang des Schritts ST15 verwendet wird, und aktualisiert die Verbindungslänge (dist) (Schritt ST21). Die in den Schritten ST19 bis ST21 aktualisierten Informationen werden in dem Informationsspeicher 37 gespeichert. Danach kehrt das Flussdiagramm zu dem Vorgang des Schritts ST15 zurück.
-
Als nächstes erfolgt eine Erklärung eines in 6 gezeigten konkreten Beispiels zusammen mit dem in 7 gezeigten Flussdiagramm. In Schritt ST11 berechnet der erste Verbindungslängenberechner 31 die Länge: 30 der Verbindung zwischen dem 0-ten Knotenpunkt P(0) und dem ersten Knotenpunkt P(1). In Schritt ST12 addiert der Verbindungsgesamtlängenaktualisierer 32 die Länge: 30 der Verbindung zu der Verbindungsgesamtlänge: 0, welche das letzte Mal berechnet worden ist, und aktualisiert die Verbindungsgesamtlänge. Der erste Verbindungslängenberechner berechnet gleichermaßen die Länge: 90 der Verbindung zwischen dem ersten Knotenpunkt P(1) und dem zweiten Knotenpunkt P(2) und aktualisiert die Verbindungsgesamtlänge zu 120. Wenn bestimmt wird, in Schritt ST13, dass die Längen aller Verbindungen, welche die Straßenknotenpunktserie P(0) bis P(2) bilden, berechnet worden sind, erfasst der Kandidatenpunktlückenberechner 33 in Schritt ST14 die Anzahl von Kandidatenpunkten (CANDIDATE_NUM) = 3 mit Verweis auf den Informationsspeicher 37 und berechnet die Kandidatenpunktlücke (cand_gap): 120/3 = 40.
-
In Schritt ST15 verweist der Erzeuger 34 auf die Informationsspeichereinheit 37 und erfasst die Kandidatenpunktlücke (cand_gap): 40, die Kandidatenpunktzahl (cand_idx): 0 (Anfangswert), und die Verbindungslänge (dist): 30 (die Anfangsverbindung P(0), P(1)), und bestimmt, ob der Kandidatenpunkt Q(0) die durch die oben genannte Gleichung (5) gezeigte Bedingung erfüllt. In dem Beispiel der 6, weil 30 > 0·40, bestimmt der Erzeuger, dass der Kandidatenpunkt die durch Gleichung (5) gezeigte Bedingung erfüllt.
-
In Schritt ST16 erzeugt der Erzeuger 34 den Kandidatenpunkt Q(0) in einem Abstand von 0·40 = 0 von dem Startknotenpunkt P(0). Insbesondere ist der 0-te Kandidatenpunkt Q(0) an dem gleichen Punkt angeordnet wie P(0). Die Position des Kandidatenpunkts Q(0) ist (10, 20), der Index des Startknotenpunkts der Verbindung (P(0), P(1)), auf welcher der Kandidatenpunkt Q(0) angeordnet ist, ist 0 und der Abstand vom Startknotenpunkt P(0) der Verbindung, auf welcher der Kandidatenpunkt angeordnet ist, zu dem Kandidatenpunkt ist 0. In Schritt ST17 bestimmt der Erzeuger 34, dass er nicht alle Kandidatenpunkte erzeugt hat, und erhöht, in Schritt ST18, die Kandidatenpunktzahl um 1 und stellt auf Erzeugung eines Kandidatenpunkts Q(1) um, und kehrt zu dem Vorgang des Schritts ST15 zurück.
-
Als nächstes wird ein Erzeugungsvorgang zum Erzeugen des Kandidatenpunkts Q(1) erklärt. In Schritt ST15 verweist der Erzeuger 34 auf die Informationsspeichereinheit 37 und erfasst die Kandidatenpunktlücke (cand_gap): 40, die Kandidatenpunktzahl (cand_idx): 1 und die Verbindungslänge (dist): 30 (die Anfangsverbindung P(0), P(1)), und bestimmt, ob der Kandidatenpunkt Q(1) die durch die oben erwähnte Gleichung (5) gezeigte Bedingung erfüllt. In dem Beispiel der 6, weil 30 < 1·40, bestimmt der Erzeuger, dass der Kandidatenpunkt die durch Gleichung (5) gezeigte Bedingung nicht erfüllt. Dann, in Schritten ST19 und 20, addiert der Erzeuger 1 zu der Knotenpunktzahl des Knotenpunkts P(0) und wechselt zu dem Knotenpunkt P(1) und berechnet die Länge: 90 der Verbindung zwischen dem Knotenpunkt P(1) und dem Knotenpunkt P(2). In Schritt ST21 aktualisiert der Abstandaktualisierer 36 die Verbindungslänge (dist) auf einen Wert 120, welchen der Abstandaktualisierer durch Addieren der hierdurch berechneten Verbindungslänge: 90 zu der Verbindungslänge (dist): 30, welche für den Bestimmungsvorgang in dem oben erwähnten Schritt ST15 verwendet wird, erhält. Nach dem Speichern der aktualisierten Informationen in dem Informationsspeicher 37 kehrt die Zeichenkettenanordnungsvorrichtung zu dem Vorgang des Schritts ST15 zurück.
-
In Schritt ST15 verweist der Erzeuger 34 auf die Informationsspeichereinheit 37 und erfasst die Kandidatenpunktlücke (cand_gap): 40, die Kandidatenpunktzahl (cand_idx): 1 und die Verbindungslänge (dist): 120 (die Verbindung P(0), P(2)), und bestimmt, ob der Kandidatenpunkt Q(1) die durch die oben genannte Gleichung (5) gezeigte Bedingung erfüllt. In dem Beispiel der 6, weil 120 > 1·40, bestimmt der Erzeuger, dass der Kandidatenpunkt die durch Gleichung (5) gezeigte Bedingung erfüllt. In Schritt ST16 erzeugt der Erzeuger 34 den Kandidatenpunkt Q(1) in einem Abstand von 1·40 = 40 von dem Startknotenpunkt P(0). Danach, in Schritt ST17, bestimmt der Erzeuger 34, dass er nicht alle Kandidatenpunkte erzeugt hat und erhöht, in Schritt ST18, die Kandidatenpunktzahl um 1 und wechselt zur Erzeugung eines Kandidatenpunkts Q(2), und kehrt zurück zu dem Vorgang des Schritts ST15. Die Zeichenkettenanordnungsvorrichtung führt wiederholt die oben genannten Vorgänge durch, bis die Zeichenkettenanordnung den Kandidatenpunkt Q(2) erzeugt.
-
Die Ergebnisse des Erzeugens der Kandidatenpunkte für die Straßenknotenpunktserie P(0) bis P(2), welche in 6 gezeigt ist, sind in 8 gezeigt. Des Weiteren ist eine Positionsbeziehung zwischen den drei Kandidatenpunkten Q(0), Q(1) und Q(2) in 8 gezeigt, wie unten gezeigt wird.
Kandidatenpunkt Q(0) Position: (10, 20), Index des Startknotenpunkts: 0, Abstand vom Startknotenpunkt: 0
Kandidatenpunkt Q(1) Position: (20, 50), Index des Startknotenpunkts: 1, Abstand vom Startknotenpunkt: 10
Kandidatenpunkt Q(2) Position: (60, 50), Index des Startknotenpunkts: 1, Abstand vom Startknotenpunkt: 50
-
Als nächstes wird eine Arbeitsweise des Zeichenkettenanordners 4, der eine Zeichenkette an einem durch den Kandidatenpunkterzeuger 3 erzeugten Kandidatenpunkt Q anordnet, beschrieben. 9 ist ein Flussdiagramm, welches die Arbeitsweise des Zeichenkettenanordners der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt. Nachstehend wird der Index des Startknotenpunkts der Verbindung R(Q), auf welcher der Kandidatenpunkt Q angeordnet ist, als road_idx ausgedrückt, und der Abstand von dem führenden Knotenpunkt der Straßenknotenpunktserie, entlang welcher der Kandidatenpunkt Q angeordnet ist, zu dem Kandidatenpunkt Q wird als dist ausgedrückt.
-
Der Anfangszeichenpositionsbestimmer 41 führt eine Anfangseinstellung von road_idx und dist zu Beginn seines Vorgangs aus (Schritt ST31). Als nächstes berechnet der Verbindungswinkelberechner 42 einen Winkel θ der Verbindung zwischen dem road_idx(n)-ten Knotenpunkt und dem road_idx(n + 1)-ten Knotenpunkt (Schritt ST32). Der Winkel θ der Verbindung ist definiert als der Winkel der Verbindung (road_idx(n), road_idx(n + 1)), d. h. der Winkel des Vektors (road_idx(n), road_idx(n + 1)), wobei eine X-Achsenrichtung als 0° definiert ist und eine Y-Achsenrichtung als 90° definiert ist. Der Zeichenanordnungspositionsberechner 43 berechnet eine Position in einem Abstand von dist von dem road_idx(n)-ten Knotenpunkt in einer Richtung θ als eine Zeichenanordnungsposition (Schritt ST33).
-
Der Zeichen-außerhalb-Verbindung-Bestimmer
44 bestimmt, ob die Zeichenanordnungsposition auf der Verbindung (road_idx(n), road_idx(n + 1)) existiert (Schritt ST34). Wenn die Zeichenanordnungsposition auf der Verbindung (road_idx(n), road_idx(n + 1)) existiert (wenn „JA” in Schritt ST34), bestimmt der Zeichenanordner
45 die Anordnungsposition des Zeichens (Schritt ST35). In dem konkreten Vorgang stellt der Zeichenanordner die Koordinaten der Zeichenkettenanordnungsposition, welche der Zeichenanordnungspositionsberechner
43 in Schritt ST33 berechnet, zunächst als links-unten-Koordinaten des Zeichens. Zusätzlich berechnet der Zeichenanordner links-oben-Koordinaten, rechts-unten-Koordinaten und rechts-oben-Koordinaten des Zeichens gemäß der folgenden Gleichung (6).
-
In der Gleichung (6) ist char_idx ein Index, welcher die Anordnungsreihenfolge jedes Zeichens zeigt, welches die Zeichenkette bildet. Zusätzlich zeigt H(char_idx) die Höhe des char_idx-ten Zeichens, W(char_idx) die Breite des char_idx-ten Zeichens, LD(char_idx) die links-unten-Koordinaten des char_idx-ten Zeichens, LT(char_idx) die links-oben-Koordinaten des char_idx-ten Zeichens, RD(char_idx) die rechts-unten-Koordinaten des char_idx-ten Zeichens und RT(char_idx) die rechts-oben-Koordinaten des char_idx-ten Zeichens.
-
Der Überlappungsbestimmer 46 bestimmt, ob die in Schritt ST35 bestimmte Überlappungsposition ein Zeichen überlappt, welches durch einen vorhergehenden Vorgang angeordnet wird (Schritt ST36). Wenn die Anordnungsposition kein Zeichen überlappt (wenn „NEIN” in Schritt ST36), addiert der erste Parameteraktualisierer 47 die Breite des char_idx-ten-Zeichens zu dist und erhöht ebenso char_idx um „1” (Schritt ST37). Danach bestimmt der erste Parameteraktualisierer 47, ob der Zeichenanordner die Anordnungspositionen aller Zeichen, welche die Zeichenkette bilden, bestimmt hat (Schritt ST38). Nachdem der Zeichenanordner die Anordnungspositionen aller Zeichen bestimmt hat (wenn „JA” in Schritt ST38), beendet die Zeichenkette die Verarbeitung. Im Gegensatz dazu, wenn der Zeichenanordner noch nicht die Anordnungspositionen von allen Zeichen bestimmt hat (wenn „NEIN” in Schritt ST38), befiehlt der erste Parameteraktualisierer 47 dem Zeichenanordnungspositionsberechner 43, eine Anordnungsposition noch einmal basierend auf dem in Schritt ST37 aktualisierten Parameter zu berechnen (Schritt ST39). Danach kehrt die Zeichenkettenanordnungsvorrichtung zu dem Vorgang des Schritts ST33 zurück und wiederholt die oben beschriebenen Vorgänge.
-
Im Gegensatz dazu, wenn die Anordnungsposition ein Zeichen überlappt (wenn „JA” in Schritt ST36), addiert der Überlappungsbestimmer 46 STEP_SIZE zu dist (Schritt ST40) und befiehlt dem Zeichenanordnungspositionsberechner 43, eine Anordnungsposition noch einmal basierend auf dem in Schritt ST40 addierten Parameter zu berechnen (Schritt ST41). Danach kehrt die Zeichenkettenanordnungsvorrichtung zu dem Vorgang des Schritts ST33 zurück und wiederholt die oben beschriebenen Vorgänge.
-
Zusätzlich, wenn die Zeichenanordnungsposition nicht auf der Verbindung existiert (wenn „NEIN” in Schritt ST34), aktualisiert der zweite Parameteraktualisierer 48 den Parameter (Schritt ST42). Konkret aktualisiert der zweite Parameteraktualisierer 48 dist auf einen Wert, welchen der zweite Parameteraktualisierer durch Subtrahieren der Länge der Verbindung (road_idx(n), road_idx(n + 1)) von dist erhält und, nachdem er road_idx um 1 erhöht, befiehlt dem Zeichenanordnungspositionsberechner 43, auch eine Anordnungsposition noch einmal basierend auf dem aktualisierten Parameter zu berechnen (Schritt ST43). Danach kehrt die Zeichenkettenanordnungsvorrichtung zu dem Vorgang des Schritts ST32 zurück und wiederholt die oben beschriebenen Vorgänge.
-
Als nächstes erfolgt eine Erklärung unter Verwendung des in den 6 und 8 gezeigten konkreten Beispiels zusammen mit dem in 9 gezeigten Flussdiagramm. Als erstes, in Schritt ST31, führt der Anfangszeichenpositionsbestimmer 41 eine Anfangseinstellung von road_idx und dist aus, um den Index: 0, welcher den Startknotenpunkt zeigt, des Kandidatenpunkts Q(0) auf road_idx einzustellen und auch den Abstand: 0 von dem führenden Knotenpunkt P(0) der Straßenknotenpunktserie P(0) bis P(2) zu dem Kandidatenpunkt Q auf dist einzustellen. In Schritt ST32 berechnet der Verbindungswinkelberechner 42 den Winkel θ der Verbindung (P(0), P(1)) als 90°. In Schritt ST33 berechnet der Zeichenanordnungspositionsberechner 43, als die Zeichenkettenanordnungsposition, die Position LD(0) = (10, 20) in einem Abstand von dist = 0 von dem road_idx = 0-ten Knotenpunkt in einer Richtung von θ = 90°.
-
Der Zeichen-außerhalb-Verbindung-Bestimmer 44 bestimmt in dem Bestimmungsprozess des Schritts ST34, dass LD(0) auf der Verbindung (P(0), P(1)) existiert. In Schritt ST35 bestimmt der Zeichenanordner 45 die Anordnungsposition des 0-ten Zeichens „5” der Zeichenkette „String11”. Der Zeichenaußerhalb-Verbindung-Bestimmer stellt LD(0) zunächst als die links-unten-Koordinaten des Zeichens „5” ein und stellt dann LT(0) = (0, 20) als die links-oben-Koordinaten des Zeichens „S” ein. Danach stellt der Zeichen-außerhalb-Verbindung-Bestimmer RD(0) = (10, 25) als die rechts-unten-Koordinaten des Zeichens „S” ein. Schließlich stellt der Zeichen-außerhalb-Verbindung-Bestimmer RT(0) = (0, 25) als die rechts-oben-Koordinaten des Zeichens „5” ein. Die Anordnung eines umschriebenen Rechtecks des Zeichens „5” ist in 10 gezeigt. In Schritt ST36 bestimmt der Überlappungsbestimmer 46, ob es eine Überlappung zwischen dem Zeichen „5”, welcher in Schritt ST35 angeordnet wird, und dem Zeichen, welches das letzte Mal angeordnet worden ist, gibt oder nicht. In diesem Beispiel, da kein Zeichen, welches das letzte Mal angeordnet worden ist, existiert, bestimmt der Überlappungsbestimmer, dass es keine Überlappung gibt.
-
In Schritt ST37 addiert der erste Parameteraktualisierer 47 die 0-te Breite „5” zu dist und setzt dist auf dist = 0 + 5 = 5 und addiert „1” zu char_idx und setzt char_idx auf char_idx = 0 + 1 = 1. Weil der erste Parameteraktualisierer 47, in Schritt ST38, bestimmt, dass der Zeichenanordner nicht die Anordnungspositionen aller Zeichen, welche die Zeichenkette bilden, bestimmt hat, befiehlt der erste Parameteraktualisierer, in Schritt ST39, dem Zeichenanordnungspositionsberechner 43, eine Anordnungsposition noch einmal basierend auf dem aktualisierten Parameter zu berechnen, und kehrt zu dem Vorgang des Schritts ST33 zurück.
-
Der Zeichenanordnungspositionsberechner 43, welcher den Befehl in Schritt ST39 erhalten hat, berechnet die Zeichenanordnungsposition des zweiten Zeichens „t”. Die Berechnung wird basierend auf dist = 5 und char_idx = 1 ausgeführt, welche in Schritt ST37 aktualisiert werden. In Schritt ST33 berechnet der Zeichenanordnungspositionsberechner 43 die Position LD(1) = (10, 25) als die Zeichenkettenanordnungsposition. Die Zeichenkettenanordnungsvorrichtung führt die Vorgänge der Schritte ST34 bis ST36 aus. Infolgedessen wird bestimmt, dass LD(1) auf der Verbindung (P(0), P(1)) existiert, und die links-unten-Koordinaten, die links-oben-Koordinaten, die rechts-unten-Koordinaten und die rechts-oben-Koordinaten des zweiten Zeichens „t” jeweils LD(1) = (10, 25), LT(1) = (0, 25), RD(1) = (10, 30) und RT(1) = (0, 30) sind. Die Anordnung eines umschriebenen Rechtecks des zweiten Zeichens „t” ist in 11 gezeigt. Weil in Schritt ST36 bestimmt wird, dass das Zeichen, welches als erstes Zeichen angeordnet wird, das Zeichen überlappt, welches als das zweite Zeichen angeordnet wird, addiert der Überlappungsbestimmer 46 in Schritt ST40 STEP_SIZE = 1 zu dist und befiehlt, in Schritt ST41, dem Zeichenanordnungspositionsberechner 43, die Zeichenanordnungsposition des zweiten Zeichens „t” noch einmal basierend auf dem erhöhten Parameter zu berechnen.
-
Die Zeichenkettenanordnungsvorrichtung wiederholt die Vorgänge der Schritte ST33 bis ST36 noch einmal und berechnet die Zeichenanordnungsposition des zweiten Zeichens „t”. Die Berechnung wird basierend auf dist = 6, was in Schritt ST40 erhöht wird, und char_idx = 1 ausgeführt. Die Ergebnisse des Wiederholens der oben beschriebenen Vorgänge und des Anordnens des zweiten Zeichens LD(1) bis zum sechsten Zeichen LD(5) werden in 12 gezeigt. Nur die links-unten-Koordinaten jedes Zeichens sind in 12 gezeigt.
-
Nach dem Anordnen des sechsten Zeichens berechnet der Zeichenanordnungspositionsberechner 43 die Anordnungsposition des siebten Zeichens „1” der Zeichenkette „String11”. Dieses Mal, weil dist = 35, cand_idx = 6 und road_idx = 0, ist die Position in einem Abstand von dist von dem road_idx-ten Knotenpunkt in einer Richtung θ LD(6) = (10, 55). In Schritt ST34 bestimmt der Zeichen-außerhalb-Verbindung-Bestimmer 44, dass die Anordnungsposition (10, 55) außerhalb der Verbindung (P(0), P(1)) ist, und der zweite Parameteraktualisierer 48, in Schritt ST42, aktualisiert den Parameter. Konkret, weil die Länge der Verbindung zwischen dem 0-ten Knotenpunkt und dem ersten Knotenpunkt „30” ist, wird dist auf dist = 35 – 30 = 5 aktualisiert, und road_idx wird auf road_idx = 0 + 1 = 1 gesetzt. Danach gibt der zweite Parameteraktualisierer in Schritt ST43 einen Befehl zum erneuten Berechnen der Anordnungsposition basierend auf dem durch den zweiten Parameteraktualisierer 48 aktualisierten Parameter aus und kehrt zum dem Vorgang des Schritts ST32 zurück.
-
In Schritt ST32 berechnet der Verbindungswinkelberechner 42 den Winkel θ der Verbindung (P(1), P(2)) als 0° basierend auf dem aktualisierten Parameter. Danach führt die Zeichenkettenanordnungsvorrichtung die gleichen Vorgänge wie die oben Beschriebenen aus, um das siebte Zeichen und das achte Zeichen anzuordnen, und, wenn in dem Bestimmungsvorgang des Schritts ST38 bestimmt wird, dass die Anordnungspositionen aller Zeichen bestimmt worden sind, beendet die Verarbeitung. Die Ergebnisse des Anordnens aller Zeichen sind in 13 gezeigt. Auch in 13 sind nur die links-unten-Koordinaten jedes Zeichens gezeigt.
-
Als nächstes wird ein Verfahren zum Berechnen eines Bewertungsfunktionswerts erklärt, welcher den Einfluss einer angeordneten Zeichenkette auf die Lesbarkeit zeigt. 14 ist ein Flussdiagramm, welches die Arbeitsweise des Bewertungsfunktionsberechners der Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel zeigt. Als erstes berechnet der Zeichenlückenfunktionsberechner 51 einen Wert P(Sstring_idx/{Sstring_idx-1}) einer Zeichenlückenfunktion, welche eine Funktion ist, die die Zeichenlücke zwischen jeder Zeichenkette (jede der 0-ten bis (string_idx – 1)-ten Zeichenketten), deren Anordnung bereits bestimmt ist, und der string_idx(n)-ten Zeichenkette. Konkret bestimmt der Anfangszeichenkettenbestimmer 54 des Zeichenlückenfunktionsberechners 51, ob entweder string_idx = 0 oder string_idx ≥ 1 eingerichtet ist (Schritt ST51). Wenn bestimmt ist, in Schritt ST51, dass string_idx = 0 eingerichtet ist, setzt der Anfangszeichenkettenbestimmer „1” auf den Zeichenlückenfunktionswert P(Sstring_idx/{Sstring_idx-1}) (Schritt ST52), und schreitet dann zu dem Vorgang des Straßenwinkelfunktionsberechners 52 fort.
-
Dagegen, wenn bestimmt wird, in Schritt ST51, dass string_idx ≥ 1 eingerichtet ist, berechnet der Zeichenlückenfunktionsaktualisierer 56 den Zeichenlückenfunktionswert P(Sstring_idx/{Sstring_idx-1}) gemäß der folgenden Gleichung (7) (Schritt ST53), und schreitet zu dem Vorgang des Straßenwinkelfunktionsberechners 52 fort.
-
-
In der oben erwähnten Gleichung (7) zeigt Cstring_idx und Cstring_idx2 jeweils die Anzahl von Zeichen der string_idx-ten Zeichenkette und die Anzahl von Zeichen der string_idx2-ten Zeichenkette. Des Weiteren zeigen xchar_idx und xchar_idx2 in der Gleichung (7) jeweils die Mittelpunktskoordinaten des char_idx-ten Zeichens und die Mittelpunktskoordinaten des char_idx2-ten Zeichens.
-
N'(xchar_idx/xchar_idx2) in der oben erwähnten Gleichung (7) wird durch die erste Gaußfunktionsausgabeeinheit 55 gemäß der folgenden Gleichung (8) berechnet.
-
-
xchar_idx und xchar_idx2 in der oben erwähnten Gleichung (8) zeigen jeweils die Mittelpunktskoordinaten des char_idx-ten Zeichens und die Mittelpunktskoordinaten des char_idx2-ten Zeichens, SC zeigt eine Konstante, und H–1 zeigt eine Kovarianzmatrix.
-
Der Straßenwinkelfunktionsaktualisierer 58 berechnet einen Straßenwinkelfunktionswert P(Rstring_idx/Sstring_idx) gemäß der folgenden Gleichung (9) (Schritt ST54).
-
-
Nostring_idx in der oben erwähnten Gleichung (9) zeigt die Anzahl von Knotenpunkten in der Straßenknotenpunktserie, entlang welcher die string_idx-te Zeichenkette anzuordnen ist, und μroad_idx zeigt die Koordinaten des road_idx-ten Knotenpunkts in der Straßenknotenpunktserie.
-
N(xchar_idx/μroad_idx) in der oben erwähnten Gleichung (9) wird durch den zweiten Gaußfunktionswertberechner 57 gemäß der folgenden Gleichung (10) berechnet.
-
-
In der oben erwähnten Gleichung (10) sind xchar_idx und μroad_idx Vektoren, die Positionskoordinaten zeigen, xchar_idx zeigt den Mittelpunkt des char_idx-ten Zeichens, und μroad_idx zeigt den road_idx-ten Straßenknotenpunkt. Des Weiteren zeigt T eine Transposition und Σ–1 die inverse Matrix von Σ. Angle(road_idx) in der oben erwähnten Gleichung (10) zeigt eine Winkelvariation, welche die Verbindung zwischen dem (road_idx – 1)-ten Knotenpunkt und dem road_idx-ten Knotenpunkt mit der Verbindung zwischen dem (road_idx + 1)-ten Knotenpunkt und dem road_idx-ten Knotenpunkt bildet. Ein Beispiel für die Berechnung von Angle(road_idx) ist in 15 gezeigt. R(road_idx) in 15 zeigt den road_idx-ten Straßenknotenpunkt. Wie in 15 gezeigt, ist eine Winkelvariation, die zwei Verbindungen miteinander bilden, definiert als eine Variation in den Winkeln der Verbindungen.
-
Der Bewertungsfunktionswertberechner 53 berechnet den Bewertungsfunktionswert F unter Verwendung des Zeichenlückenfunktionswerts P(Sstring_idx/{Sstring_idx-1}), der in Schritt ST52 oder ST53 berechnet wird, und des Straßenwinkelfunktionswerts P(Rstring_idx/Sstring_idx), der in Schritt ST54 berechnet wird, gemäß der folgenden Gleichung (11) (Schritt ST55).
-
-
Der berechnete Bewertungsfunktionswert F wird an den Minimumbewertungsfunktionswertspeicherer 6 ausgegeben (Schritt ST56), und die Zeichenkettenanordnungsvorrichtung beendet die Verarbeitung.
-
Als nächstes erfolgt eine Erklärung unter Verwendung des in 13 gezeigten konkreten Beispiels zusammen mit dem in 14 gezeigten Flussdiagramm. In Schritt ST51 bestimmt der Anfangszeichenkettenbestimmer 54, ob entweder string_idx = 0 oder string_idx ≥ 1 eingerichtet ist. Als erstes, weil die Bestimmung die Erste ist, ist diesmal string_idx = 0 eingerichtet, und der Anfangszeichenkettenbestimmer setzt, in Schritt ST52, „1” auf den Zeichenlückenfunktionswert P(Sstring_idx/Sstring_idx-1}).
-
Als nächstes berechnet der Straßenwinkelfunktionsaktualisierer 58 in Schritt ST54 den Wert P(Rstring_idx/Sstring_idx) als 2.36036·10–85 gemäß der oben erwähnten Gleichung (9). Danach aktualisiert der Straßenwinkelfunktionsaktualisierer 58 char_idx und road_idx, um den Vorgang des Schritts ST54 zu wiederholen, und erfasst schließlich den Wert P(Rstring_idx/Sstring_idx) = 0.000777442.
-
In Schritt ST55 berechnet der Bewertungsfunktionswertberechner 53 den Bewertungsfunktionswert basierend auf dem Zeichenlückenfunktionswert P(Sstring_idx/{Sstring_idx-1}) = 1, welcher in Schritt ST52 berechnet wird, und dem Straßenwinkelfunktionswert P(Rstring_idx/Sstring_idx) = 0.000777442, welcher schließlich in Schritt ST54 gemäß der oben erwähnten Gleichung (11) erfasst wird, und erfasst den Bewertungsfunktionswert F = log0.000777442 + log1 = –3.109331764. In Schritt ST56 gibt der Bewertungsfunktionswertberechner den hierdurch berechneten Bewertungsfunktionswert F an den Minimum bewertungsfunktionswertspeicherer 6 aus. Der Minimumbewertungsfunktionswertspeicherer 6 bestimmt, dass der berechnete Bewertungsfunktionswert F kleiner ist als min_cost und setzt dann F = –3.109331764 auf den Wert min_cost und speichert diesen Wert in dem Minimumbewertungsfunktionswertdatenspeicher 7, und setzt auch Q(0) auf den Zeichenkettenstartpunkt der 0-ten Zeichenkette und speichert diesen Zeichenkettenstartpunkt in dem Zeichenkettenanordnungsstartpunktdatenspeicher 9. Der Minimumbewertungsfunktionswertspeicherer speichert weiter die Zeichenkettenanordnung, die in 13 gezeigt ist, in dem Zeichenkettenanordnungsdatenspeicher 8, und die Zeichenkettenanordnungsvorrichtung beendet die Verarbeitung.
-
Danach wiederholt die Zeichenkettenanordnungsvorrichtung die oben erwähnten Vorgänge, und der Zeichenkettenanordner 4 ordnet die 0-te Zeichenkette von dem ersten Kandidatenpunkt Q(1) aus an. Ein Beispiel der Anordnung in diesem Fall ist in 16 gezeigt. Der Bewertungsfunktionswertberechner 53 berechnet den Bewertungsfunktionswert F für das in 16 gezeigte Beispiel der Anordnung. In diesem Beispiel ist der Bewertungsfunktionswert F –19.48284883 und wird an den Minimumbewertungsfunktionswertspeicherer 6 ausgegeben. Weil der Bewertungsfunktionswert F kleiner ist als mini_cost, aktualisiert der Minimumbewertungsfunktionswertspeicherer 6 den Wert mini_cost auf –19.48284883 und setzt Q(1) auf den Zeichenkettenstartpunkt, und speichert die in 16 gezeigten Zeichenkettenanordnung in dem Zeichenkettendatenspeicher 7, und die Zeichenkettenanordnungsvorrichtung beendet die Verarbeitung.
-
Die Zeichenkettenanordnungsvorrichtung wiederholt weiter die gleichen Vorgänge und ordnet die Zeichenketten von dem zweiten Kandidatenpunkt Q(2) aus an. In diesem Fall wird bis zu dem siebten Zeichen angeordnet, wie in 17 gezeigt wird. Danach berechnet der Zeichenanordnungspositionsberechner 43 des Zeichenkettenanordners 4 die Anordnungsposition des achten Zeichens. Diesmal ist dist = 101 und road_idx = 1. Daher berechnet der Zeichenanordnungspositionsberechner eine Position LD(7) in einem Abstand von dist von dem road_idx-ten Knotenpunkt P(1) entlang der Verbindung zwischen dem road_idx-ten Knotenpunkt und dem (road_idx + 1)-ten Knotenpunkt. LD(7) = (101, 50) wird als das Ergebnis der Berechnung erhalten.
-
Danach bestimmt der Zeichen-außerhalb-Verbindung-Bestimmer 44, ob LD(7) außerhalb der Verbindung angeordnet ist oder nicht. Weil LD(7) außerhalb der Verbindung angeordnet ist, aktualisiert der zweite Parameteraktualisierer 48 dist. In diesem Fall wird dist auf dist = 1 aktualisiert. Danach, weil keine Verbindung existiert, entlang welcher das achte Zeichen anzuordnen ist, beendet die Zeichenkettenanordnungsvorrichtung die Verarbeitung. Insbesondere, weil es unmöglich ist, die Zeichenkette „String11” von dem Kandidatenpunkt Q(2) aus anzuordnen, wird die Berechnung unter Verwendung der Bewertungsfunktion nicht ausgeführt. Der Zeichenkettenanordnungsstartpunkt der 0-ten Zeichenkette wird auf diese Weise bestimmt. In diesem Fall wird der Zeichenkettenanordnungsstartpunkt der 0-ten Zeichenkette, welcher die Zeichenkette „String11” ist, auf Q(1) gesetzt. Weiter wird die Zeichenkettenanordnung (siehe 16) zur Anordnung der Zeichenkette von Q(1) aus entlang der Straßenknotenpunktserie zur Optimierung des Zeichenkettenanordnungsstartpunkts der ersten und folgenden Zeichenketten verwendet.
-
Nachdem der Zeichenkettenanordnungsstartpunkt der 0-ten Zeichenkette „String11” bestimmt worden ist, führt die Zeichenkettenanordnungsvorrichtung die gleichen Vorgänge ebenfalls auf „String2” aus, welche die erste Zeichenkette ist. Als erstes erzeugt der Kandidatenpunkterzeuger 3 Kandidatenpunkte auf der Straßenverbindung, entlang welcher die erste Zeichenkette anzuordnen ist. In diesem Fall, wie in 18 gezeigt, werden drei Kandidatenpunkte Q(3), Q(4) und Q(5) erzeugt. Als nächstes ordnet der Zeichenkettenanordner 4 die erste Zeichenkette von dem Kandidatenpunkt Q(3) aus an (siehe 19). Danach berechnet der Bewertungsfunktionsberechner 5 den Bewertungsfunktionswert F.
-
Konkret bestimmt der Anfangszeichenkettenbestimmer 54 in Schritt ST51, dass string_idx = 1 eingerichtet ist, und der Zeichenlückenfunktionsaktualisierer 56 berechnet in Schritt ST53 den Wert des Zeichenlückenfunktionswerts P(Sstring_idx/{Sstring_idx-1}) als 5.1·10–264 gemäß der oben erwähnten Gleichung (7). Danach wiederholt die Zeichenkettenanordnungsvorrichtung den Vorgang des Zeichenlückenfunktionsaktualisierers 56, um den Zeichenlückenfunktionswert P(Sstring_idx/{Sstring_idx-1}) zu aktualisieren, und erfasst schließlich den Wert P(Sstring_idx/{Sstring_idx-1}) = 0.040705.
-
Als nächstes berechnet der Straßenwinkelfunktionsaktualisierer 58 in Schritt ST54 den Wert P(Rstring_idx/Sstring_idx) als 1.96618·10–53. In Schritt ST55 berechnet der Bewertungsfunktionswertberechner 53 den Bewertungsfunktionswert F basierend auf dem Zeichenlückenfunktionswert P(Sstring_idx/{Sstring_idx-1}) = 0.040705 und dem Straßenwinkelfunktionswert P(Rstring_idx/Sstring_idx) = 1.96618·10–53 gemäß der oben erwähnten Gleichung (11). In diesem Fall ist der Bewertungsfunktionswert F = log1.96618·10–53 + log0.040705 = –52.7063767 – 1.3936 = –54.0999767. In Schritt ST56 gibt der Bewertungsfunktionswertberechner den hierdurch berechneten Bewertungsfunktionswert F an den Minimumbewertungsfunktionswertspeicherer 6 aus.
-
Danach bestimmt der Minimumbewertungsfunktionswertspeicherer 6, dass der berechnete Bewertungsfunktionswert F kleiner ist als min_cost, und setzt min_cost auf min_cost = –54.0999767 und speichert diesen Wert in dem Minimumbewertungsfunktionswertdatenspeicher 7. Der Minimumbewertungsfunktionswertspeicherer setzt auch den Zeichenkettenanordnungsstartpunkt der ersten Zeichenkette auf Q(3) und speichert diesen Zeichenkettenanordnungsstartpunkt in dem Zeichenkettenanordnungsstartpunktdatenspeicher 9, und speichert weiter die in 19 gezeigte Zeichenkettenanordnung in dem Zeichenkettenanordnungsdatenspeicher 8.
-
Danach ordnet der Zeichenkettenanordner 4 gleichermaßen die erste Zeichenkette „String2” von dem Kandidatenpunkt Q(4) aus an (siehe 20). Der Zeichenlückenfunktionsberechner 51 berechnet den Zeichenlückenfunktionswert P(Sstring_idx/{Sstring_idx-1}) = 2.7947·10–166. Danach berechnet der Straßenwinkelfunktionsberechner 52 den Straßenwinkelfunktionswert P(Rstring_idx/Sstring_idx) = 0.002850205. Der Bewertungsfunktionswertberechner 53 berechnet den Bewertungsfunktionswert F unter Verwendung dieser Werte gemäß der oben erwähnten Gleichung (11). In diesem Fall ist der Bewertungsfunktionswert F = log2.7947·10–66 + log0.002850205 = –165.55367 – 2.244993909 = –167.7977639. Der Minimumbewertungsfunktionswertspeicherer 6 bestimmt, dass der berechnete Bewertungsfunktionswert F kleiner ist als min_cost, und setzt min_cost auf min_cost = –167.7977639 und setzt auch den Zeichenkettenanordnungsstartpunkt der ersten Zeichenkette auf Q(4).
-
Gleichermaßen ordnet der Zeichenkettenanordner 4 die Zeichenkette von Q(5) aus an. In diesem Fall, weil in der Anordnung der Zeichenkette von Q(5) aus die Länge der Straßenverbindung nicht ausreichend ist und daher die Zeichenkette nicht passend angeordnet werden kann, bestimmt der Zeichenkettenanordner, dass die Zeichenkettenanordnung fehlgeschlagen ist, und die Zeichenkettenanordnungsvorrichtung beendet die Verarbeitung. Durch die oben erwähnten Vorgänge wird der Zeichenkettenanordnungsstartpunkt der ersten Zeichenkette, welche die Zeichenkette „String2” ist, als Q(4) bestimmt.
-
Wie oben erwähnt wurde, weil die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel derart aufgebaut ist, dass der Zeichenlückenfunktionsberechner 51, der einen Funktionswert berechnet, der den Einfluss der Zeichenlücke zwischen Zeichenketten auf die Lesbarkeit jeder der Zeichenketten zeigt, in dem Bewertungsfunktionsberechner 5 angeordnet ist, kann die Zeichenkettenanordnungsvorrichtung den Zeichenkettenanordnungsstartpunkt von jeder der Zeichenketten auf eine optimale Position derart setzen, dass die Lücke zwischen Zeichenketten groß wird, zusätzlich zu der Berücksichtigung einer Überlappung zwischen Zeichenketten und einer Variation in dem Winkel einer Straße, entlang welcher jede der Zeichenketten anzuordnen ist. Infolgedessen kann die Lücke zwischen Zeichenketten breit gestaltet werden, und es kann vermieden werden, dass der Nähegrad zwischen Zeichenketten hoch wird, und die Sichtbarkeit von jeder der Zeichenketten kann verbessert werden.
-
Des Weiteren, weil die Zeichenkettenanordnungsvorrichtung gemäß dem ersten Ausführungsbeispiel derart aufgebaut ist, dass sie einen ersten Gaußfunktionswertberechner 55 beinhaltet, der einen Gaußfunktionswert berechnet, wenn ein Zeichenlückenfunktionswert berechnet wird, kann eine Gaußverteilung in dem Mittelpunkt zwischen einem Straßenknotenpunkt und einem Zeichen, welches bereits angeordnet ist, angeordnet werden, und der Zeichenkettenanordnungsstartpunkt kann auf eine optimale Position derart geändert werden, dass die Lücke zwischen Zeichenketten breit wird.
-
Während die Erfindung anhand ihres bevorzugten Ausführungsbeispiels beschrieben worden ist, ist diese so zu verstehen, dass vielerlei Änderungen in einer beliebigen Komponente gemäß dem Ausführungsbeispiel vorgenommen werden können, und eine beliebige Komponente gemäß dem Ausführungsbeispiel kann innerhalb des Schutzbereichs der Erfindung weggelassen werden.
-
Industrielle Anwendung
-
Die Zeichenkettenanordnungsvorrichtung gemäß der vorliegenden Erfindung kann zur Verbesserung in der Lesbarkeit eines Anzeigegeräts oder ähnlichem verwendet werden, und kann auch zur Anwendung in einem Navigationsgerät benutzt werden, welches eine verbesserte Benutzersichtbarkeit usw. bereitstellt.
-
Bezugszeichenliste
-
- 1
- Zeichenkettendatenspeicher
- 2
- Zeichenkettendatenerfasser
- 3
- Kandidatenpunkterzeuger
- 4
- Zeichenkettenanordner
- 5
- Bewertungsfunktionsberechner
- 6
- Minimumbewertungsfunktionswertspeicherer
- 7
- Minimumbewertungsfunktionswertdatenspeicher
- 8
- Zeichenkettenanordnungsdatenspeicher
- 9
- Zeichenkettenanordnungsstartpunktdatenspeicher
- 31
- erster Verbindungslängenberechner
- 32
- Verbindungsgesamtlängenaktualisierer
- 33
- Kandidatenpunktlückenberechner
- 34
- Erzeuger
- 35
- zweiter Verbindungslängenberechner
- 36
- Abstandaktualisierer
- 37
- Informationsspeicher
- 41
- Anfangszeichenpositionsbestimmer
- 42
- Verbindungswinkelberechner
- 43
- Zeichenanordnungspositionsberechner
- 44
- Zeichen-außerhalb-Verbindung-Bestimmer
- 45
- Zeichenanordner
- 46
- Überlappungsbestimmer
- 47
- erster Parameteraktualisierer
- 48
- zweiter Parameteraktualisierer
- 51
- Zeichenlückenfunktionsberechner
- 52
- Straßenwinkelfunktionsberechner
- 53
- Bewertungsfunktionswertberechner
- 54
- Anfangszeichen kettenbestimmer
- 55
- erster Gaußfunktionswertberechner
- 56
- Zeichenlückenfunktionsaktualisierer
- 57
- zweiter Gaußfunktionswertberechner
- 58
- Straßenwinkelfunktionsaktualisierer
- 100
- Zeichenkettenanordnungsvorrichtung