"配置対象である文字列に関する文字列データおよび当該文字列を配置する道路ノード列に関する道路ノード列データを取得するデータ取得部と、前記データ取得部が取得した文字列データおよび道路ノード列データに基づいて、前記道路ノード列上に前記文字列を配置するための複数の候補点を作成する候補点作成部と、前記候補点作成部が作成した複数の候補点から前記文字列を配置する文字列配置部と、前記文字列配置部による文字列の配置に対する評価を示す評価関数値を算出する評価関数算出部と、前記評価関数算出部が算出した評価関数値のうち、最小値である最小評価関数値と、当該最小評価関数値における文字列配置および文字列配置開始点を記憶させる最小評価関数値保存部とを備え、前記評価関数算出部は、前記文字列配置部が複数の候補点から配置した複数の文字列間の文字間隔に対する評価を示す文字間隔関数値を算出する文字間隔関数算出部と、前記文字列配置部が配置した文字列が沿う道路ノード列の角度に対する評価を示す道路角度関数値を算出する道路角度関数算出部と、前記文字間隔関数算出部が算出した文字間隔関数値、および前記道路角度関数算出部が算出した道路角度関数値に基づいて前記評価関数値を算出する評価関数値算出部とを備えた文字列配置装置。前記候補点作成部は、前記道路ノード列における所定の道路ノード間を繋ぐリンクの長さを算出する第1のリンク長算出部と、前記第1のリンク長算出部が算出した道路ノード間を繋ぐリンクの長さを加算して更新し、前記道路ノード列の全長を算出するリンク全長更新部と、前記リンク全長更新部が算出した前記道路ノード列の全長、および予め設定された前記候補点作成部が作成する候補点数に基づいて、候補点作成間隔を算出する候補点間隔算出部と、前記道路ノード列上に、前記候補点間隔算出部が算出した候補点作成間隔で複数の候補点を作成する作成部とを備えたことを特徴とする請求項1記載の文字列配置装置。前記文字列配置部は、前記文字列の先頭の文字の配置位置を決定する初期文字位置決定部と、前記初期文字位置決定部が決定した先頭の文字の配置位置により決定される、前記文字列を配置する所定の道路ノード間を繋ぐリンクの角度を算出するリンク角度算出部と、前記初期文字位置決定部が決定した先頭の文字の配置位置、および前記リンク角度算出部が算出したリンクの角度に基づいて、前記文字列を構成する各文字の配置位置を算出する文字配置位置算出部と、前記文字配置位置算出部が算出した前記各文字の配置位置が前記リンク上に存在するか判定を行う文字リンク外判定部と、前記文字リンク外判定部において、前記各文字の配置位置が前記リンク上に存在すると判定された場合に、前記各文字の配置位置に基づいて配置座標を設定し、設定した配置座標に前記各文字を配置する文字配置部とを備えたことを特徴とする請求項1記載の文字列配置装置。前記文字列配置部は、前記文字配置部が前記各文字を配置した配置座標が、前回設定した文字の配置座標に重なるか判定を行う重なり判定部と、前記重なり判定部において、前記配置座標が前回設定した文字の配置座標に重なると判定された場合に、前記初期文字位置決定部が決定したパラメータに所定定数を加算して更新するパラメータ更新部とを備えたことを特徴とする請求項3記載の文字列配置装置。前記文字間隔関数算出部は、前記文字列配置部が配置した複数の文字列のうち、初めに配置した文字列であるか判定を行う初期文字列判定部と、前記初期文字列判定部において、初めに配置した文字列でないと判定された文字列について、その他の文字列との文字間隔を示すガウス関数値を算出する第1のガウス関数値算出部と、前記第1のガウス関数値算出部が算出したガウス関数値を用いて、前記文字列間隔関数値を更新する文字間隔関数更新部とを備えたことを特徴とする請求項1記載の文字列配置装置。前記道路角度関数算出部は、前記文字列と当該文字列を配置する道路ノード列との関係を示すガウス関数値を算出する第2のガウス関数値算出部と、前記第2のガウス関数値算出部が算出したガウス関数値を用いて、前記道路角度関数値を更新する道路角度関数更新部とを備えたことを特徴とする請求項1記載の文字列配置装置。しかしながら、上述した非特許文献1の方法は、図22aで示した文字列同士の重複、および図22bで示した文字列が沿う道路の角度変化による可読性低下を解決する方法であるため、図22cに示す文字列の密集による可読性低下を避けることができないという課題があった。この発明は、上記のような課題を解決するためになされたもので、文字列の重複、文字の表示角度の変化だけでなく、文字列の密集度合いも加味して文字列配置開始点を最適な位置に変更する文字列配置装置を提供することを目的とする。この発明に係る文字列配置装置は、配置対象である文字列に関する文字列データおよび当該文字列を配置する道路ノード列に関する道路ノード列データを取得するデータ取得部と、データ取得部が取得した文字列データおよび道路ノード列データに基づいて、道路ノード列上に文字列を配置するための複数の候補点を作成する候補点作成部と、候補点作成部が作成した複数の候補点から文字列を配置する文字列配置部と、文字列配置部による文字列の配置に対する評価を示す評価関数値を算出する評価関数算出部と、評価関数算出部が算出した評価関数値のうち、最小値である最小評価関数値と、当該最小評価関数値における文字列配置および文字列配置開始点を記憶させる最小評価関数値保存部とを備え、評価関数算出部は、文字列配置部が複数の候補点から配置した複数の文字列間の文字間隔に対する評価を示す文字間隔関数値を算出する文字間隔関数算出部と、文字列配置部が配置した文字列が沿う道路ノード列の角度に対する評価を示す道路角度関数値を算出する道路角度関数算出部と、文字間隔関数算出部が算出した文字間隔関数値、および道路角度関数算出部が算出した道路角度関数値に基づいて評価関数値を算出する評価関数値算出部とを備えるものである。この発明によれば、文字列同士の重なり、および文字の表示角度の変化による可読性の低下を抑制すると共に、文字列の密集を抑制することが可能となり、文字列の視認性を向上させることができる。以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。実施の形態1.図1は、この発明の実施の形態1による文字列配置装置の構成を示すブロック図である。文字列配置装置100は、文字列データ記憶部1、文字列データ取得部データ取得部2、候補点作成部3、文字列配置部4、評価関数算出部5、最小評価関数値保存部6、最小評価関数値データ記憶部7、文字列配置データ記憶部8および文字列配置開始点データ記憶部9で構成されている。文字列データ記憶部1は、複数の文字列のデータ集合を記憶する記憶領域であって、文字列の個数、各々の文字列が含む文字数、文字毎の横幅縦幅、文字列が沿う道路ノード列を格納する。文字列データ取得部2は、文字列データ記憶部1に記憶された文字列データを取得する。候補点作成部3は、文字列が沿う道路ノード上に文字列の配置候補以下、候補点と称するを複数作成する。文字列配置部4は、文字列を候補点から道路ノード列に沿って配置する。評価関数算出部5は、配置した文字列の可読性を数値化する。最小評価関数値保存部6は、評価関数が最小値となる際の評価関数値、文字列配置および文字列配置開始点を各記憶領域に格納させる。最小評価関数値データ記憶部7は、最小の評価関数値を保存する記憶領域である。文字列配置データ記憶部8は、最小の評価関数値を取る時の文字列配置を保存する記憶領域である。文字列配置開始点データ記憶部9は、評価関数値が最小の時の文字列配置開始点を保存する記憶領域である。次に、文字列配置装置の動作について説明する。図2は、この発明の実施の形態1による文字列配置装置の動作を示すフローチャートである。文字列データ取得部2は、文字列データ記憶部1を参照し、配置する文字列データを取得するステップST1。候補点作成部3は、ステップST1で取得した文字列が沿う道路ノード列上に、当該文字列を配置する候補点を作成するステップST2。文字列配置部4は、ステップST2で作成された候補点から道路ノード列に沿って文字列を配置するステップST3。さらに文字列配置部4は、ステップST3の配置結果を参照し、道路ノード列に沿って文字列の配置が可能か否か判断するステップST4。例えば、道路ノード列から文字列がはみ出しているなどの場合には、配置不可能であると判断するなどである。道路ノード列に沿って文字列の配置が不可能であると判断した場合ステップST4;NO、処理を終了する。一方、道路ノード列に沿って文字列の配置が可能である場合ステップST4;YES、評価関数算出部5は配置した文字列の評価関数値を算出するステップST5。最小評価関数値保存部6は、ステップST5で算出された評価関数値が、最小評価関数値データ記憶部7に既に記憶されている最小評価関数値minicost未満であるか判定を行うステップST6。評価関数値が最小評価関数値minicost以上である場合ステップST6;NOには、処理を終了する。一方、評価関数値が最小評価関数値minicost未満である場合ステップST6;YESには、最小評価関数値保存部6が、ステップST5で算出された評価関数値を最小評価関数値データ記憶部7に格納するステップST7と共に、文字列配置に関するデータおよび文字列配置開始点に関するデータを文字列配置データ記憶部8および文字列配置開始点データ記憶部9に格納しステップST8、処理を終了する。続いて、文字列配置装置100のより詳細な構成および動作について説明する。図3から図5は文字列配置装置100の各構成をより詳細に示したブロック図であり、図3は候補点作成部3の構成を示すブロック図、図4は文字列配置部4の構成を示すブロック図、図5は評価関数算出部5の構成を示すブロック図である。まず、図3に示すように、候補点作成部3は、道路ノード列中の2つのノードを結ぶリンクの長さを算出する第1のリンク長算出部31と、第1のリンク長算出部31で算出したリンクの長さを加算して道路ノード列の全長を求めるリンク全長更新部32と、リンクの全長から候補点の間隔を算出する候補点間隔算出部33と、道路ノード列上に候補点を作成する作成部34と、設定されたリンク長が所定の条件を満たさない場合に、ノードを更新してリンクの長さを算出する第2のリンク長算出部35と、第2のリンク長算出部35が算出したリンクの長さに基づいてリンク長を更新する距離更新部36と、候補点間隔candgap、候補点番号candidx、道路ノード列の先頭ノードから所定のノードを繋ぐリンク長distなど、候補点に関する情報を記憶する情報記憶部37で構成される。次に、図4に示すように、文字列配置部4は、文字列の1文字目の位置を設定する初期文字位置決定部41と、リンクの角度を算出するリンク角度算出部42と、文字の配置位置を算出する文字配置位置算出部43と、文字がリンク外か否かを判定する文字リンク外判定部44と、文字の配置を設定する文字配置部45と、前に配置した文字との重なりを判定する重なり判定部46と、文字がリンク上に存在し、且つ文字の重なりがない場合に文字の配置に必要なパラメータを更新する第1のパラメータ更新部パラメータ更新部47と、文字がリンク外に位置している場合に文字の配置に必要なパラメータを更新する第2のパラメータ更新部48で構成される。次に、図5に示すように、評価関数算出部5は、文字列同士の文字間隔が文字列の可読性に与える影響を示す関数値を算出する文字間隔関数算出部51と、道路の角度が文字列の可読性に与える影響示す関数値を算出する道路角度関数算出部52と、評価関数値を算出する評価関数値算出部53で構成される。さらに、文字間隔関数算出部51は、初めの文字列か否かを判定する初期文字列判定部54と、ガウス関数の値を算出する第1のガウス関数値算出部55と、文字列同士の文字間隔が文字列の可読性に与える影響を示す関数値を更新する文字間隔関数更新部56で構成されている。また、道路角度関数算出部52は、ガウス関数の値を算出する第2のガウス関数値算出部57と、道路の角度が文字列の可読性に与える影響を示す関数値を更新する道路角度関数更新部58で構成されている。次に、候補点作成部3、文字列配置部4および評価関数算出部5の詳細な動作について説明する。なお、以下の動作説明では、道路ノード列に配置する文字列データは、文字列String11および文字列String2から成るデータであり、各々の文字の横幅は全て5であり、縦幅は全て10として説明を行う。また、文字列String11および文字列String2が配置される道路ノード列の関係を図6に示す。文字列String11が沿う道路ノード列P0-P2は、ノードP0=10,20、ノードP1=10,50、ノードP2=100,50で構成される。同様に文字列String2が沿う道路ノード列P3-P5は、ノードP3=50,70、ノードP4=50,10、ノードP5=110,10で構成される。さらに、STEPSIZEを1とし、CANDIDATENUM候補点数を3とし、Σを以下の式2とし、Hを以下の式3とし、RCを1とし、SCを1とする。まず、図2で示したフローチャートのステップST1として、文字列データ取得部2が、文字列データ記憶部1から1つ目の文字列String11と、2つ目の文字列String2と、各々の文字列が配置される道路ノード列P0-P2および道路ノード列P3-P5と、各々の文字列を構成する各文字の横幅および縦幅を取得する。次に、1つ目の文字列String11の配置最適化を行う。その方法として、まず候補点作成部3が文字列String11が沿う道路ノード列P0-P2上にあらかじめ設定されたCANDIDATENUM個の候補点、すなわち3つの候補点を等間隔に作成する。具体的な候補点作成方法を、図7のフローチャートを参照しながら説明する。図7は、実施の形態1による文字列配列装置の候補点作成部の動作を示すフローチャートである。候補点作成部3の第1のリンク長算出部31は、情報記憶部37に記憶された各ノード情報を参照し、n番目のノードPnとn1番目のノードPn1を繋ぐリンクの長さを算出するステップST11。リンク全長更新部32は、第1のリンク長算出部31がリンク長を算出すると、前回算出したリンク全長に加算してリンク全長totaldistの値を更新するステップST12。第1のリンク長算出部31は、道路ノード列を構成する全てのリンクの長さを算出したか判定を行うステップST13。全てのノードについてリンクの長さを算出していない場合ステップST13;NOには、ステップST11の処理に戻り、上述した処理を繰り返す。一方、全てのノードについてリンクの長さを算出した場合ステップST13;YESには、候補点間隔算出部33は情報記憶部37を参照して候補点数CANDIDATENUMを取得し、以下の式4に基づいて候補点の間隔を算出し、算出した候補点間隔candgapを情報記憶部37に記憶させるステップST14。cand_gap=total_dist/CANDIDATE_NUM4次に、作成部34は、情報記憶部37を参照して候補点間隔candgap、候補点番号candidx、道路ノード列の先頭ノードから所定のノードを繋ぐリンク長distに関する情報を取得し、候補点が以下の式5で示す条件を満たすか判定を行うステップST15。dist>cand_idx×cand_gap5なお、候補点番号candidxの初期値は0であり、初期のリンク長は、道路ノード列の先頭ノードと、当該先頭ノードの次の位置に配置されたノードを繋ぐリンクの長さとなる。当該初期条件は予め情報記憶部37に記憶されているものとする。上記式5の条件を満たす場合ステップST15;YES、作成部34は道路ノード列の先頭ノードから、当該道路ノード列に沿って、候補点番号candidx×候補点間隔candgap離れた位置に候補点Qを作成するステップST16。その後作成部34は、CANDIDATENUM個全ての候補点Qを作成したか否か判定を行うステップST17。全ての候補点を作成した場合ステップST17;YESには、処理を終了する。一方、全ての候補点Qを作成していない場合ステップST17;NO、候補点番号を1加算して情報記憶部37に記憶させcandidx1、ステップST18、ステップST15の処理に戻る。また、上記式5の条件を満たさない場合ステップST15;NO、ステップST15の判定処理におけるノード番号に1を加算しステップST19、加算後のノードと、当該加算後のノードの次の位置に配置されたノードとを繋ぐリンクの長さを算出するステップST20。距離更新部36は、ステップST15の判定処理に用いたリンク長distにステップST20で新たに算出したリンクの長さを加算し、リンク長distを更新するステップST21。なお、ステップST19からステップST21で更新された情報は、情報記憶部37に記憶される。その後、フローチャートはステップST15の処理に戻る。次に、図7に示したフローチャートに沿って、図6で示した具体例を用いて説明を行う。ステップST11として、第1のリンク長算出部31は、0番目のノードP0と1番目のノードP1のノードを繋ぐリンクの長さ:30を算出する。ステップST12として、リンク全長更新部32は前回までに算出したリンク全長:0にリンクの長さ:30を加算して、リンク全長を更新する。同様に、1番目のノードP1と2番目のノードP2のノードを繋ぐリンクの長さ:90を算出し、リンク全長:120に更新する。ステップST13で道路ノード列P0-P2を構成する全てのリンクの長さを算出したと判定されると、ステップST14として、候補点間隔算出部33は情報記憶部37を参照して候補点数CANDIDATENUM=3を取得し、候補点間隔candgap:120/3=40を算出する。ステップST15として、作成部34は情報記憶部37を参照して候補点間隔candgap:40、候補点番号candidx:0初期値、リンク長dist:30初期リンクP0,P1を取得し、候補点Q0が上記式5の条件を満たすか判定を行う。図6の例では、30>0×40であることから、式5の条件を満たすと判定する。ステップST16として、作成部34は開始ノードP0から0×40=0離れた位置に候補点Q0を作成する。即ち、0番目の候補点Q0は、P0と同一地点となる。なお、候補点Q0は、位置10,20、候補点Q0が存在するリンクP0,P1の開始ノードのインデックス:0、候補点が存在するリンクの開始ノードP0からの距離:0となる。ステップST17として、作成部34は全ての候補点を作成していないと判定し、ステップ18として候補点番号に1加算して候補点Q1とし、ステップST15の処理に戻る。続いて、候補点Q1の作成処理について説明する。ステップST15として、作成部34は情報記憶部37を参照して候補点間隔candgap:40、候補点番号candidx:1、リンク長dist:30初期リンクP0,P1を取得し、候補点Q1が上記式5の条件を満たすか判定を行う。図6の例では、30<1×40であることから、式5の条件を満たさないと判定する。そこでステップST19,20として、ノードP0のノード番号に1を加算してノードP1とし、ノードP1とノードP2とを繋ぐリンクの長さ:90を算出する。ステップST21として、距離更新部36は、上述したステップST15の判定処理に用いたリンク長dist:30に算出したリンク長:90を加算した値をリンク長dist:120に更新する。更新した情報を情報記憶部37に記憶させた後、ステップST15の処理に戻る。ステップST15として、作成部34は情報記憶部37を参照して候補点間隔candgap:40、候補点番号candidx:1、リンク長dist:120リンクP0,P2を取得し、候補点Q1が上記式5の条件を満たすか判定を行う。図6の例では、120>1×40であることから、式5の条件を満たすと判定する。ステップST16として、作成部34は開始ノードP0から1×40=40離れた位置に候補点Q1を作成する。その後、ステップST17として、作成部34は全ての候補点を作成していないと判定し、ステップ18として候補点番号に1加算して候補点Q2とし、ステップST15の処理に戻る。候補点Q2を作成するまで、上述した処理を繰り返し行う。図6に示した道路ノード列P0-P2に対して候補点を作成した結果を図8に示している。また、図8に示した3つの候補点Q0,Q1,Q2の位置関係は以下に示すとおりである。候補点Q0位置:10,20、開始ノードのインデックス:0、開始ノードからの距離:0候補点Q1位置:20,50、開始ノードのインデックス:1、開始ノードからの距離:10候補点Q2位置:60,50、開始ノードのインデックス:1、開始ノードからの距離:50次に、候補点作成部3が作成した候補点Qに、文字列配置部4が文字列を配置する動作について説明する。図9は、実施の形態1による文字列配置装置の文字列配置部の動作を示すフローチャートである。なお、以下では、候補点Qが存在するリンクRQの開始ノードのインデックスをroadidxとし、候補点Qが存在する道路ノード列の先頭ノードから候補点Qまでの距離をdistと記載する。初期文字位置決定部41は、処理開始時にroadidxとdistの初期設定を行うステップST31。次にリンク角度算出部42は、roadidxn番目のノードとroadidxn1番目のノードを繋ぐリンクの角度θを算出するステップST32。ここでリンクの角度θは、X軸方向を0°、Y軸方向を90°とし、リンクroadidxn,roadidxn1の角度、即ちベクトルroadidxn,roadidxn1の角度とする。文字配置位置算出部43は、roadidxn番目のノードからθ方向に、dist分離れた位置を文字配置位置として算出するステップST33。文字リンク外判定部44は、文字配置位置がリンクroadidxn,roadidxn1上に存在するか判定を行うステップST34。文字配置位置がリンクroadidxn,roadidxn1上に存在する場合ステップST34;YES、文字配置部45が文字の配置位置を決定するステップST35。具体的な処理としては、まずステップST33で文字配置位置算出部43が算出した文字列配置位置の座標を文字の左下座標に設定する。さらに、次の式6に基づいて文字の左上座標、右下座標、右上座標を算出する。なお、式6において、charidxは、文字列を構成する文字の配置順を示すインデックスである。さらに、Hはcharidx番目の文字の縦幅、Wはcharidx番目の文字の横幅、LDはcharidx番目の文字の左下座標、LTはcharidx番目の文字の左上座標、RDはcharidx番目の文字の右下座標、RTはcharidx番目の文字の右上座標を示す。重なり判定部46は、ステップST35で決定した配置位置が、前回の処理で配置した文字と重なるか判定を行うステップST36。文字の重なりがない場合ステップST36;NO、第1のパラメータ更新部47が、distにcharidx番目の文字の横幅を加算すると共に、charidxを1増加させるステップST37。その後、第1のパラメータ更新部47は、文字列を構成する全ての文字の配置位置を求めたか否か判定を行うステップST38。全ての文字の配置位置を求めた場合ステップST38;YES処理を終了する。一方、全ての文字の配置位置を求めていない場合ステップST38;NO、第1のパラメータ更新部47は、文字配置位置算出部43に対して、ステップST37で更新したパラメータに基づき再度配置位置の算出を指示するステップST39。その後、ステップST33の処理に戻り、上述した処理を繰り返す。一方、文字の重なりがある場合ステップST36;YES、重なり判定部46はdistにSTEPSIZEを加算しステップST40、文字配置位置算出部43に対して、ステップST40で加算したパラメータに基づき再度配置位置の算出を指示するステップST41。その後、ステップST33の処理に戻り、上述した処理を繰り返す。さらに、文字配置位置がリンク上の存在していない場合ステップST34;NO、第2のパラメータ更新部48においてパラメータの更新を行うステップST42。具体的には、第2のパラメータ更新部48が、distからリンクroadidxn,roadidxn1の長さを引いた値をdistに更新すると共に、roadidxに1を加算した後、文字配置位置算出部43に対して、更新したパラメータに基づき再度配置位置の算出を指示するステップST43。その後、ステップST32の処理に戻り、上述した処理を繰り返す。次に、図9に示したフローチャートに沿って、図6および図8で示した具体例を用いて説明を行う。まず、ステップST31として、初期文字位置決定部41は、roadidxとdistの初期設定を行い、候補点Q0の開始ノードのインデックス:0をroadidx、道路ノード列P0-P2の先頭ノードP0から候補点Qまでの距離:0をdistとする。ステップST32として、リンク角度算出部42は、リンクP0,P1の角度θ=90°を算出する。ステップST33として、文字配置位置算出部43は、roadidx=0番目のノードからθ=90°の方向にdist=0離れた位置LD=を文字列配置位置として算出する。ステップST34の判定処理において、文字リンク外判定部44は、LDがリンクP0,P1上に存在すると判定する。ステップST35として、文字配置部45は、文字列String11の0番目の文字Sの配置位置を決定する。まずLDを文字Sの左下座標に設定し、次にLT=を文字Sの左上座標に設定する。その後、RD=を文字Sの右下座標に設定する。最後にRT=を文字Sの右上座標に設定する。文字Sの外接矩形の配置を図10に示す。ステップST36として、重なり判定部46がステップST35で配置した文字Sと前回配置した文字の重なりを判定するが、この例では前回配置した文字が存在しないことから、重なりは無いと判定する。ステップST37として第1のパラメータ更新部47は、distに0番目の横幅5を付加してdist=05=5とし、charidxに1を付加してcharidx=01=1とする。ステップST38として、第1のパラメータ更新部47は、文字列を構成する全ての文字の配置位置を求めていないと判定するため、ステップST39として文字配置位置算出部43に更新後のパラメータに基づいて、再度配置位置の算出を指示し、ステップST33の処理に戻る。ステップST39の指示を受けた文字配置位置算出部43は、2文字目tの文字配置位置を算出する。算出は、ステップST37で更新したdist=5、およびcharidx=1に基づいて行われる。ステップST33として文字配置位置算出部43は、位置LD1=10,25を文字列配置位置として算出する。さらにステップST34からステップST36の処理を行い、LD1はリンクP0,P1上に存在し、2文字目tの左下座標、左上座標、右下座標、右上座標は、それぞれLD1=10,25、LT1=0,25、RD1=10,30、RT1=0,30となる。2文字目tの外接矩形の配置を図11に示す。ステップST36において、1文字目に配置した文字と、2文字目に配置した文字が重なっていると判定されるため、ステップST40として重なり判定部46がdistにSTEPSIZE=1を加算し、ステップST41として加算後のパラメータに基づいて再度2文字目tの文字配置位置を算出するように文字配置位置算出部43に指示する。再度ステップST33からステップST36の処理を繰り返し、2文字目tの文字配置位置を算出する。算出は、ステップST40で加算されたdist=6、およびcharidx=1に基づいて行われる。図12に、上述した処理を繰り返し2文字目LD1から6文字目LD5までを配置した結果を示している。なお、図12では、各文字の左下座標のみを記載している。6文字目を配置した後、文字配置位置算出部43は文字列String11の7文字目1の配置位置を算出する。この時、dist=35、candidx=6、roadidx=0であるため、roadidx番目のノードからθの方向にdist離れた位置は、LD6=10,55となる。ステップST34として、文字リンク外判定部44は配置位置10,55がリンクP0,P1外であると判定し、ステップST42として第2のパラメータ更新部48がパラメータの更新を行う。具体的には、0番目のノードと1番目のノードを繋ぐリンクの長さは30であるため、dist=35-30=5に更新され、roadidx=01=1となる。その後ステップST43として、第2のパラメータ更新部48により更新されたパラメータに基づいて、再度配置位置の算出を指示し、ステップST32の処理に戻る。ステップST32として、リンク角度算出部42は更新されたパラメータに基づいて、リンクP1,P2の角度θ=0°を算出する。以降、上記と同様の処理を行い、7文字目および8文字目の配置を行い、ステップST38の判定処理において、全ての文字の配置位置を求めたと判定され、処理を終了する。全ての文字を配置した結果を図13に示している。図13においても、各文字の左下座標のみを記載している。次に、配置した文字列が可読性に与える影響を示す評価関数値を算出する方法について説明する。図14は、実施の形態1による文字列配置装置の評価関数算出部の動作を示すフローチャートである。まず、文字間隔関数算出部51は、既に配置が決定した文字列0番目からstringidx1番目の文字列と、stringidx番目の文字列との文字間隔を示す関数である文字間隔関数値P算出を行いステップST53、道路角度関数算出部52の処理に進む。上記式7において、Cstring_idx、Cstring_idx2は、それぞれstringidx番目、stringidx2番目の文字列の文字数を示している。また、式7におけるxchar_idx、xchar_idx2はそれぞれ、charidx番目、charidx2番目の文字の中心座標を示す。なお、上記式7中のN ́xchar_idx|xchar_idx2は、第1のガウス関数出部55により以下の式8に基づいて算出される。上記式8において、xchar_idx、xchar_idx2はそれぞれ、charidx番目、charidx2番目の文字の中心座標を示し、SCは定数、H-1は共分散行列を示している。道路角度関数更新部58は、以下の式9に基づいて道路角度関数値Pは、第2のガウス関数値算出部57により以下の式10に基づいて算出される。上記式10において、xcharidx、μroadidxは位置座標を示すベクトルであり、xcharidxはcharidx番目の文字の中心、μroadidxはroadidx番目の道路ノードを示す。また、Tは転置を示し、Σ1はΣの逆行列を示す。なお、上記式10におけるAngleは、roadidx1番目のノードとroadidx番目のノードを繋ぐリンクと、roadidx1番目のノードとroadidx番目のノードを繋ぐリンクの角度変化を示す。Angleの算出例を図15に示す。図15におけるRは、roadidx番目の道路ノードを示す。図15に示すように、2つのリンクの角度変化が、リンクの角度変化となる。評価関数値算出部53は、ステップST52またはステップST53で算出された文字間隔関数値P、およびステップST54で算出された道路角度関数値P=27947×10166と算出する。その後、道路角度関数算出部52において道路角度関数値PRstringidx|Sstringidx=0002850205と算出する。評価関数値算出部53は、これらの値を用いて上述した式11に基づいて評価関数値Fを算出する。この場合F=log27947×10166log0002850205=165553672244093909=1677977639となる。最小評価関数値保存部6は、算出された評価関数値Fがmincost未満であると判定し、mincost=1677977639、1番目の文字列の文字列配置開始点はQ4と設定する。同様に、文字列配置部4において、Q5から文字列を配置する。この場合、文字列をQ5から配置すると、道路リンクの長さ不足となり配置することができないため、文字列配置失敗となり処理を終了する。上述した処理により、文字列String2の1番目の文字列の文字列配置開始点がQ4に決定される。以上のように、この実施の形態1によれば、評価関数算出部5に、文字列同士の文字間隔が文字列の可読性に与える影響を示す関数値を算出する文字間隔関数算出部51を設けるように構成したので、文字列同士の重なり、および文字列が沿う道路の角度変化に加え、文字列同士の間隔が広くなるように、文字列の文字列配置開始点を最適位置に設定することができる。これにより、文字列同士の間隔が広がり、文字列の密集を抑制し、文字列の視認性を向上させることができる。また、この実施の形態1によれば、文字間隔関数値を算出する際にガウス関数値を算出する第1のガウス関数値算出部55を備えるように構成したので、道路ノードと既に配置した文字の中心座標にガウス分布を配置し、文字列同士の間隔が広くなるように、文字列配置開始点を最適位置に変更することができる。なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。"