"文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部と、前記文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする道路ノード列間引き部と、前記道路ノード列間引き部で間引きされた後の道路ノード列から制御点列を作成する制御点列作成部と、前記制御点列作成部で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部と、前記曲線近似部で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部と、前記曲線近似ノード列記憶部に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部とを備えた文字列配置装置。曲線近似部は、制御点列作成部で作成された制御点列による曲線を直線で近似できるか否かを判定する直線判定部と、前記直線判定部において直線で近似できないことが判定された場合に、前記制御点列作成部で作成された制御点列による曲線上の中間点を作成する曲線上中間点作成部と、前記制御点列作成部からの制御点列による曲線のうち、前記曲線上中間点作成部で作成された中間点より前の曲線を直線で近似して作成されたノード列を出力する前半曲線近似部と、前記制御点列作成部からの制御点列による曲線のうち、前記曲線上中間点作成部で作成された中間点より後の曲線を直線で近似して作成されたノード列を、前記前半曲線近似部で直線を近似して作成されたノード列に繋げて出力する後半曲線近似部と、前記直線判定部において直線で近似できることが判定された場合に、前記制御点列作成部で作成された制御点列による曲線を1本の直線で近似して作成されたノード列を出力する単数直線近似部と、前記後半曲線近似部からのノード列、または、前記単数直線近似部からのノード列を曲線近似ノード列として曲線近似ノード列記憶部に登録する曲線近似ノード登録部とを備えたことを特徴とする請求項1記載の文字列配置装置。文字列配置処理部は、曲線近似ノード列記憶部から文字列が沿うノード列を取得する曲線近似ノード列取得部と、前記曲線近似ノード列取得部で取得された曲線近似ノード列に基づき文字列の配置位置を算出する文字列配置算出部と、文字列の配置位置を保存する出力文字列配置記憶部と、前記文字列配置算出部で算出された文字列の配置位置を前記出力文字列配置記憶部に登録する文字列配置登録部とを備えたことを特徴とする請求項1記載の文字列配置装置。文字列配置算出部は、曲線近似ノード列取得部で取得された曲線近似ノード列に基づいて、各ノードにおいてリンクにより形成されるリンク角度を算出するリンク角度算出部と、前記リンク角度算出部において算出されたリンク角度に基づき文字を配置する文字配置部と、前記文字配置部で配置された文字がリンク外であるか否かを判定する文字リンク外判定部と、前記文字リンク外判定部でリンク外でないことが判定された場合に文字同士が重複するか否かを判定する重複判定部と、前記重複判定部での判定結果に応じてパラメータを更新するパラメータ更新部と、前記パラメータ更新部で更新されたパラメータに基づき既定の文字数に達したか否かを判定し、既定の文字数に達したことが判定された場合に処理を終了させる文字数判定部とを備えたことを特徴とする請求項3記載の文字列配置装置。文字配置部は、リンク角度算出部で算出されたリンク角度に基づき配置された文字が文字列中の1番目の文字であるか否かを判定する初期文字判定部と、前記初期文字判定部における判定結果に応じて、文字の左下座標を算出する文字左下座標算出部と、前記初期文字判定部による判定結果または文字左下座標算出部で算出された文字の左下座標に応じて文字の配置位置を決める文字配置位置決定部と、前記文字左下座標算出部で算出された文字の左下座標に基づき次の文字までの距離を決める次文字配置距離更新部とを備えたことを特徴とする請求項4記載の文字列配置装置。上述した従来の文字列配置装置における文字列配置機能を用いて表示された文字列は、道路角度変化と文字角度変化が等しいので、道路角度変化が大きくなるに連れて文字角度変化も大きくなり、文字列の可読性が低下するという問題がある。この発明は、この問題を解決するためになされたものであり、文字列の可読性を向上させた文字列配置装置を提供することを課題とする。この発明に係る文字列配置装置は、文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部と、文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする道路ノード列間引き部と、道路ノード列間引き部で間引きされた後の道路ノード列から制御点列を作成する制御点列作成部と、制御点列作成部で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部と、曲線近似部で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部と、曲線近似ノード列記憶部に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部を備えている。この発明に係る文字列配置装置によれば、道路リンクから作成した曲線上に文字列を配置することにより文字角度変化を小さくできるので、文字列の可読性を向上させることができる。以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。実施の形態1.図1は、この発明の実施の形態1に係る文字列配置装置の構成を示すブロック図である。この文字列配置装置は、文字列配置データ記憶部1、文字列配置データ取得部2、道路ノード列間引き部3、制御点列作成部4、曲線近似部5、曲線近似ノード列記憶部6および文字列配置処理部13aを備えており、さらに、文字列配置処理部13aは、曲線近似ノード列取得部13、文字列配置算出部14、文字列配置登録部15および出力文字列配置記憶部16を備えている。文字列配置データ記憶部1は、文字列配置データを記憶する。文字列配置データは、文字列を構成する複数の文字、各文字の縦幅および横幅、文字列が沿う道路ノード列および文字列の配置開始ノードを表すデータを含む。文字列配置データ記憶部1に記憶されている文字列配置データは、文字列配置データ取得部2によって読み出される。文字列配置データ取得部2は、文字列配置データ記憶部1から文字列配置データを読み出して取得する。この文字列配置データ取得部2で取得された文字列配置データは、道路ノード列間引き部3に送られる。道路ノード列間引き部3は、文字列配置データ取得部2から送られてきた文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする。この道路ノード列間引き部3でノードの一部が間引きされた後の道路ノード列は、制御点列作成部4に送られる。この道路ノード列間引き部3における間引きによって、文字列の軌跡を滑らかにすることができる。制御点列作成部4は、道路ノード列間引き部3から送られてきた、文字列が沿う道路ノード列から曲線を生成するための制御点列を作成する。この制御点列作成部4で作成された制御点列は、曲線近似部5に送られる。曲線近似部5は、制御点列作成部4から送られてきた制御点列から曲線を作成し、この作成した曲線を直線近似してノード列を生成する。この曲線近似部5で生成されたノード列は、曲線近似ノード列として曲線近似ノード列記憶部6に送られる。この曲線近似部5において道路リンクから作成される曲線を直線で近似することにより、文字配置を高速化することができる。この曲線近似部5の詳細については後述する。曲線近似ノード列記憶部6は、曲線近似部5から送られてきた曲線近似ノード列を保存する。この曲線近似ノード列記憶部6に保存されている曲線近似ノード列は、曲線近似ノード列取得部13によって読み出される。曲線近似ノード列取得部13は、曲線近似ノード列記憶部6から曲線近似ノード列を読み出して取得する。この曲線近似ノード列取得部13で取得された曲線近似ノード列は、文字列配置算出部14に送られる。文字列配置算出部14は、曲線近似ノード列取得部13から送られてきた曲線近似ノード列に基づき文字列の配置位置を算出する。この文字列配置算出部14によって算出された文字列の配置位置は、文字列配置登録部15に送られる。この文字列配置算出部14の詳細については後述する。文字列配置登録部15は、文字列配置算出部14から送られてきた文字列の配置位置を、該文字列配置算出部14から送られてきた判定結果が既定の文字数に達したことを示している場合に、出力文字列配置記憶部16に登録する。出力文字列配置記憶部16は、文字列配置登録部15によって登録された文字列の配置位置を記憶する。次に、上述した曲線近似部5の詳細を説明する。図2は、曲線近似部5の詳細な構成を示すブロック図である。曲線近似部5は、曲線近似ノード登録部7、直線判定部8、曲線上中間点作成部9、前半曲線近似部10、後半曲線近似部11および単数直線近似部12を備えている。曲線近似ノード登録部7は、後半曲線近似部11または単数直線近似部12から送られてきた曲線近似ノード列を曲線近似ノード列記憶部6に登録する。直線判定部8は、制御点列作成部4から送られてきた制御点列から作成される曲線が直線で近似できるか否か、換言すれば、直線に近いか否かを判定する。この直線判定部8において直線に近くないことが判断されるとシーケンスは曲線上中間点作成部9での処理に移り、直線に近いことが判断されると単数直線近似部12での処理に移る。曲線上中間点作成部9は、制御点列作成部4から送られてきた制御点列から作成される曲線上の中間点を作成する。この曲線上中間点作成部9で作成された中間点は、前半曲線近似部10および後半曲線近似部11に送られる。前半曲線近似部10は、制御点列作成部4から送られてきた制御点列から作成される曲線のうち、曲線上中間点作成部9から送られてきた中間点より前の曲線を直線で近似する。この前半曲線近似部10における直線近似によって作成されたノード列は、後半曲線近似部11に送られる。後半曲線近似部11は、制御点列作成部4から送られてきた制御点列から作成される曲線のうち、曲線上中間点作成部9から送られてきた中間点より後の曲線を直線で近似する。この後半曲線近似部11における直線近似によって作成されたノード列は、前半曲線近似部10から送られてくるノード列に繋げられ、曲線近似ノード列として曲線近似ノード登録部7に送られる。単数直線近似部12は、制御点列作成部4から送られてきた制御点列から作成される曲線を1本の直線で近似する。この単数直線近似部12において直線近似によって作成されたノード列は、曲線近似ノード列として曲線近似ノード登録部7に送られる。次に、上述した文字列配置算出部14の詳細を説明する。図3は、文字列配置算出部14の詳細な構成を示すブロック図である。文字列配置算出部14は、リンク角度算出部17、文字配置部18、文字リンク外判定部19、重複判定部20、パラメータ更新部21および文字数判定部22を備えている。リンク角度算出部17は、曲線近似ノード列取得部13から送られてくる曲線近似ノード列に基づいて、各ノードにおいてリンクが形成する角度以下、リンク角度というを算出する。このリンク角度算出部17で算出されたリンク角度は、文字配置部18に送られる。文字配置部18は、リンク角度算出部17から送られてきたリンク角度に基づき文字を配置する。この文字配置部18で配置された文字は、文字リンク外判定部19に送られる。この文字配置部18の詳細は、後述する。文字リンク外判定部19は、文字配置部18から送られてきた文字がリンク外であるか否かを判定する。この文字リンク外判定部19における判定結果は、重複判定部20に送られる。重複判定部20は、文字リンク外判定部19から送られてくる判定結果に基づき、文字同士が重複するか否かを判定する。この重複判定部20における判定結果は、パラメータ更新部21に送られる。パラメータ更新部21は、重複判定部20から送られてきた判定結果に従って、文字列配置に使用されるパラメータを更新する。このパラメータ更新部21で更新されたパラメータは、文字数判定部22に送られる。文字数判定部22は、パラメータ更新部21から送られてきたパラメータを参照し、既定の文字数に達したか否かを判定する。この文字数判定部22における判定結果は、文字列配置登録部15に送られる。次に、上述した文字配置部18の詳細を説明する。図4は、文字配置部18の詳細な構成を示すブロック図である。文字配置部18は、初期文字判定部23、文字配置位置決定部24、文字左下座標算出部25および次文字配置距離更新部26を備えている。初期文字判定部23は、リンク角度算出部17から送られてくるリンク角度に基づいて配置された文字が文字列中の1番目の文字であるか否かを判定する。この初期文字判定部23における判定結果は、文字配置位置決定部24および文字左下座標算出部25に送られる。文字配置位置決定部24は、初期文字判定部23から送られてきた判定結果に応じて、または、文字左下座標算出部25で算出された文字の左下座標に応じて文字の配置位置を決める。この文字配置位置決定部24で決められた配置位置は、文字配置位置決定部24または文字左下座標算出部25に送られる。文字左下座標算出部25は、初期文字判定部23から送られてきた判定結果に応じて、文字の左下座標を算出する。文字左下座標算出部25で算出された文字の左下座標は、文字配置位置決定部24または次文字配置距離更新部26に送られる。次文字配置距離更新部26は、文字左下座標算出部25で算出された文字の左下座標に基づき、次の文字までの距離を決め、文字間隔を更新する。この次文字配置距離更新部26で更新された文字間隔は、文字リンク外判定部19に送られる。次に、上記のように構成される実施の形態1に係る文字列配置装置の動作を説明する。図5は、文字列配置装置の動作を示すフローチャートである。実施の形態1では、一例として、文字列配置データは、文字列String中の各文字の横幅、縦幅および文字列Stringが沿う道路ノード列を含み、文字列String中の各文字の縦幅は10、横幅は5であり、文字列Stringが沿う道路ノード列はP1=0,10、P2=5,10、P3=10,10、P4=50,10およびP5=10,50であり、文字列の配置を開始するノードはP1=0,10であるものとして説明する。また、詳細は後述するが、曲線を直線近似する場合のリンクの本数を示すARATE_NUMは2であり、1本のリンクで曲線を近似するか複数のリンクで曲線を近似するか否かの判断に用いられる距離の境界であるARATE_THRESHOLDは15であり、1本のリンクで曲線を近似するか複数のリンクで曲線を近似するか否かの判断に用いられる角度変化の境界であるSTRAIGHT_THRESHOLDは10であり、間引きの可否を判断する距離の境界であるCULLING_THRESHOLDは10であり、rangeの増分であるSTEP_SIZEは1であるものとする。図6は、道路ノード列中のノードとリンクの関係の例を示している。文字列配置装置の動作が開始されると、まず、文字列データが取得されるステップST11。すなわち、文字列配置データ取得部2は、文字列配置データ記憶部1から文字列配置データを読み出し、文字列が沿う道路ノード列と文字列の配置開始ノードを取得する。この例では、文字列Stringが沿う道路ノード列と、文字列Stringの配置を開始するノードが取得される。次いで、道路ノード列の間引きが行われるステップST12。すなわち、道路ノード列間引き部3は、滑らかな曲線を作成するために、文字列配置データ取得部2で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする。ここで、道路ノード列間引き部3で行われる道路ノード列の間引き処理の詳細を、図7に示すフローチャートを参照しながら説明する。道路ノード列の間引き処理では、道路ノード列に含まれるノードが順々に走査され、以下の3つの条件の全て満たすノードが道路ノード列から間引かれる。1ノードが道路ノード列の配置開始ノードまたは配置終了ノードでない2前のノードを間引きしていない3前のノードとの距離がCULLING_THRESHOLD以下である道路ノード列の間引き処理が開始されると、まず、変数irが1に初期化されるステップST121。次いで、変数irが道路ノード数以下であればループが開始されるステップST122。ループが開始されると、まず、ノードPirは配置開始ノードまたは配置終了ノードであるかどうかが調べられるステップST123。すなわち、道路ノード列間引き部3は、文字列配置データ取得部2から送られてきた文字列配置データに含まれる道路ノード列の中のノードPirが配置開始ノードまたは配置終了ノードであるかどうかを調べる。このステップST123において、ノードPirは配置開始ノードまたは配置終了ノードであることが判断されると、上記3つの条件のうちの1が満たされないのでノードPirの間引きは行われず、シーケンスはステップST127に進む。上記ステップST123において、ノードPirは配置開始ノードまたは配置終了ノードでないことが判断されると、次いで、ノードPir-1が間引きされたかどうかが調べられるステップST124。すなわち、道路ノード列間引き部3は、1つ前のノードPir-1を間引きしたかどうかを調べる。このステップST124において、ノードPir-1が間引きされたことが判断されると、上記3つの条件のうちの2が満たされないのでノードPirの間引きは行われず、シーケンスはステップST127に進む。上記ステップST124において、ノードPir-1が間引きされていないことが判断されると、次いで、ノードPir-1とノードPirとの距離がCULLING_THRESHOLD以下であるかどうかが調べられるステップST125。すなわち、道路ノード列間引き部3は、前のノードPir-1と現在のノードPirとの間の距離がCULLING_THRESHOLDこの例では10以下であるかどうかを調べる。このステップST125において、ノードPir-1とノードPirとの距離がCULLING_THRESHOLD以下でないことが判断されると、上記3つの条件のうちの3が満たされないのでノードPirの間引きは行われず、シーケンスはステップST127に進む。一方、ステップST125において、ノードPir-1とノードPirとの距離がCULLING_THRESHOLD以下であることが判断されると、上記3つの条件の全てが満たされた旨が認識され、次いで、ノードPirの削除が行われるステップST126。すなわち、道路ノード列間引き部3は、文字列配置データ取得部2から送られてきた文字列配置データに含まれる道路ノード列の中のノードirを間引きする。その後、シーケンスはステップST127に進む。ステップST127では、変数irがインクリメントされ、以下、変数irが道路ノード数より大きくなるまでステップST122とステップST127との間の処理が繰り返される。以上の繰り返し処理により、ノードP1~P5は次のように処理される。まず、ノードP1の間引きの可否が検討される。ここで、ノードP1は道路ノード列の配置開始ノードであるので、間引きされない。次に、ノードP2の間引きの可否が検討される。ここで、ノードP2は道路ノード列の配置開始ノードまたは配置終了ノードでなく、前のノードP1は間引きされておらず、且つ、ノードP1とノードP2との間の距離は5でありCULLING_THRESHOLDである10以下である。したがって、上記3つの条件の全てが満たされるので、ノードP2は間引きされる。次に、ノードP3の間引きの可否が検討される。ここで、ノードP3は道路リンクの配置開始ノードまたは配置終了ノードではないが、前のノードP2が間引きされているので、ノードP3は間引きされない。以下同様にして、ノードP4以降も処理される。以上の処理の結果、図8に示すように、ノードP2が間引かれた道路ノード列、つまり、ノードP1、P3、P4およびP5で構成される道路ノード列が作成される。ここで、図9に示すように、間引き後の道路ノード列P1、P3、P4およびP5を、それぞれP’1、P’2、P’3およびP’4として、以降の処理を説明する。以上の道路ノード列の間引き処理が終了すると、次いで、図5のフローチャートに示すように、制御点列が作成されるステップST13。すなわち、制御点列作成部4は、間引き後の道路ノード列から制御点列を作成する。ここで、制御点列の作成処理の詳細を、図10に示すフローチャートを参照しながら説明する。制御点列の作成処理では、まず、制御点列Bic{ic=1,...,間引き後の道路ノード数-2}が設定される。詳しくは、まず、変数icが1に初期化されるステップST131。次いで、変数icが間引き後の道路ノード数-2以下であればループが開始されるステップST132。ループが開始されると、下記1式に従って制御点Bicが計算されるステップST133。その後、シーケンスはステップST134に進む。ここで、ic=1,...,間引き後の道路ノード数-2である。ステップST134では、変数icがインクリメントされ、以下、変数icが間引き後の道路ノード数-2より大きくなるまでステップST132とステップST134との間の処理、つまりステップST133の処理が繰り返される。以上の繰り返し処理においては、間引き後の道路ノード数=4であり、制御点B1=P’2=10,10および制御点B2=P’3=50,10が得られる。次いで、制御点列Aic{ic=1,...,間引き後の道路ノード数-1}が設定される。詳しくは、まず、変数icが1に初期化されるステップST135。次いで、変数icが間引き後の道路ノード数-1以下であればループが開始されるステップST136。ループが開始されると、まず、変数icが1であるかどうかが調べられるステップST137。このステップST137において、変数icが1であることが判断されると、次いで、制御点Aic=P’icが設定されるステップST138。その後、シーケンスはステップST142に進む。上記ステップST137において、変数icが1でないことが判断されると、次いで、変数icが道路ノード数-1であるかどうかが調べられるステップST139。このステップST139において、変数icが道路ノード数-1であることが判断されると、制御点Aic-1=P’icに設定されるステップST140。その後、シーケンスはステップST142に進む。一方、ステップST139において、変数icが道路ノード数-1でないことが判断されると、制御点Aic=Bic-1Bic/2に設定されるステップST141。その後、シーケンスはステップST142に進む。ステップST142では、変数icがインクリメントされ、以下、変数icが間引き後の道路ノード数-1より大きくなるまでステップST136とステップST142との間の処理が繰り返される。以上の繰り返し処理により、制御点Aicは、以下に示すように、変数icの値によって設定値が変化する。まず、ic=1の場合、制御点AicにノードP’1が設定され、変数icが道路ノード数-1の場合、制御点Aic-1にノードP’icが設定される。変数icが1でも間引き後の道路ノード数-1でもない場合、制御点Aicに制御点BicとBic-1の中点が設定される。以上の処理の結果、まず、制御点A1が設定される。制御点A1は、ic=1であるので、ノードP’1が設定される。次に、制御点A2が設定される。制御点A2は、ic≠1,3であるので、制御点B1とB2の中点30,10となる。その後、制御点A3が設定される。制御点A3は、ic=3であるので、ノードP’4が設定される。このようにして、図11に示すように、制御点列A1、A2およびA3と、制御点列B1およびB2が求められる。以上の制御点列の作成処理が終了すると、次いで、図5のフローチャートに示すように、曲線を近似した直線が作成されるステップST14。すなわち、曲線近似部5は、制御点列から、曲線を近似した直線を作成する。ここで、曲線近似部5で行われる曲線を近似した直線以下、曲線近似ノード列の作成処理の詳細を、図12に示すフローチャートを参照しながら説明する。曲線近似ノード列の作成処理では、まず、変数iaが1に初期化されるステップST151。次いで、ノードの登録が行われるステップST152。すなわち、曲線近似ノード登録部7は、制御点A1を曲線近似ノード列記憶部6に保存する。この場合、A1=0,10が曲線近似ノード列記憶部6に保存される。次いで、変数iaが間引き後の道路ノード数-2以下であればループが開始されるステップST153。ループが開始されると、リンクAia、BiaとリンクBia、Aia1の角度変化<STRAIGHT_THRESHOLDであるか否かが調べられるステップST154。すなわち、直線判定部8は、制御点Aia、BiaおよびAia1によって作成される2次ベジエ曲線以後、単にベジエ曲線というが直線で近似できるか否かを判定する。具体的には、まず、リンクAia,BiaとリンクBia,Aia1の角度変化がSTRAIGHT_THRESHOLD未満か否かを判定する。なお、変数iaは制御点列のインデックスを示し、リンクAia,BiaとリンクBia,Aia1の角度変化θは、図13に示すように、リンクAia,Biaの向きとリンクBia,Aia1の向きの差分の絶対値である。ここで、リンクAia,Biaの向きは、x軸を0°、y軸を90°とした時の偏角である。この例では、変数icが1の場合は、図11に示すように、リンクA1,B1の向きは0°となり、リンクB1,A2の向きも0°となる。したがって、リンクA1,B1とリンクB1,A2の角度変化は0°となり、ステップST154ではYESと判定される。上記ステップST154において、リンクAia、BiaとリンクBia、Aia1の角度変化<STRAIGHT_THRESHOLDであることが判断されると、1本のリンクで曲線が近似されるステップST155。すなわち、単数直線近似部12は、制御点Aia、BiaおよびAia1で作成されるベジエ曲線をリンクAia,Aia1で近似する。この例では、制御点A1、B1およびA2で作成されるベジエ曲線が、リンクA1,A2で近似される。次いで、ノードの登録が行われるステップST156。すなわち、曲線近似ノード登録部7は、単数直線近似部12から送られてきたリンクのうち、既に登録されているA1以外のノードを曲線近似ノードとして曲線近似ノード列記憶部6に保存する。この例では、制御点A2が保存される。その後、シーケンスはステップST166に進む。上記ステップST154において、リンクAia、BiaとリンクBia、Aia1の角度変化<STRAIGHT_THRESHOLDでないことが判断されると、シーケンスはステップST157に進む。この例では、次のループに入って変数icが2になると、直線判定部8は、リンクA2,B2とリンクB2,A3の角度変化がSTRAIGHT_THRESHOLD未満か否かを調べ、リンクA2,B2の向きは0°、リンクB2,A3の向きは135°であるので、リンクA2,B2とリンクB2,A3の角度変化はSTRAIGHT_THRESHOLD以上であると判定する。したがって、ステップST154ではNOと判定されてシーケンスはステップST157に進み、制御点A2、B2およびA3で作成されるベジエ曲線を複数の直線で近似する処理が行われる。具体的には、ステップST157においては、曲線上の中間点である点MPiaが算出される。すなわち、曲線上中間点作成部9は、ベジエ曲線上の点MPiaを下記2式に従って算出する。この例では、2式にA2=30,10,B2=50,10,A3=10,50を代入すると、曲線上の点MP2=35,20となる。次いで、曲線上の点MPiaと制御点Aiaとの間の距離<ARATE_THRESHOLDであるか否かが調べられるステップST158。すなわち、前半曲線近似部10は、下記3式によって求められる制御点Aiaと曲線上の点MPiaとの間の距離Dist1が、ARATE_THRESHOLDより小さいかどうかを調べる。このステップST158において、曲線上の点MPiaと制御点Aiaとの間の距離<ARATE_THRESHOLDであることが判断されると、1本のリンクで曲線が近似されるステップST159。すなわち、単数直線近似部12は、制御点Aiaと曲線上の点MPiaとの間のベジエ曲線を1本のリンクAia,MPiaで近似する。次いで、ノードの登録が行われるステップST160。すなわち、曲線近似ノード登録部7は、単数直線近似部12から送られてきた、1本のリンクで近似されたノードを曲線近似ノード列記憶部6に保存する。その後、シーケンスはステップST162に進む。一方、ステップST158において、曲線上の点MPiaと制御点Aiaとの間の距離<ARATE_THRESHOLDでないことが判断されると、すなわち、距離Dist1がARATE_THRESHOLD以上であることが判断されると、制御点Aiaと曲線上の点MPiaとの間のベジエ曲線がARATE_NUMで示される本数のリンクで近似されるステップST161。このステップST161で行われる処理の詳細を、図14に示すフローチャートを参照しながら説明する。この処理では、まず、変数imが1に初期化されるステップST171。次いで、変数imがARATE_NUM以下であればループが開始されるステップST172。ループが開始されると、まず、曲線上のノードが算出されるステップST173。すなわち、前半曲線近似部10は、下記4式に従って、曲線上の点MPiaと制御点Aiaと間の曲線上のノードを算出する。ここで、4式中のtimは5式に示す値であり、BPia,imは制御点Aiaと曲線上の点MPiaとの間のベジエ曲線上に作成されるim番目のノードである。次いで、ノードの登録が行われるステップST174。すなわち、曲線近似ノード登録部7は、前半曲線近似部10で算出されたノードのうち、既に登録されているノード以外の曲線上のノードを、曲線近似ノード列記憶部6に登録する。次いで、変数imがインクリメントされ、以下、変数imがARATE_NUMより大きくなるまでステップST172とステップST175との間の処理が繰り返される。この繰り返し処理において、変数imがARATE_NUMより大きくなると、シーケンスは図12に示すステップST162に進む。この場合、Dist1は11.18であり、ARATE_THRESHOLD以下である。したがって、制御点A2と曲線上の点MP2との間の曲線はリンクA2,MP2で近似される。この場合、ノードの登録では、曲線上の点MP2が保存される。ステップST162においては、曲線上の点MPiaと制御点Aia1との間の距離<ARATE_THRESHOLDであるか否かが調べられる。すなわち、後半曲線近似部11は、下記6式に従って算出される曲線上の点MPiaと制御点Aia1との距離Dist2が、ARATE_THRESHOLDより小さいかどうかを調べる。このステップST162において、曲線上の点MPiaと制御点Aia1との間の距離<ARATE_THRESHOLDであることが判断されると、1本のリンクで曲線が近似されるステップST163。すなわち、単数直線近似部12は、曲線上の点MPiaと制御点Aia1との間のベジエ曲線を1本のリンクMPia,Aiaで近似する。次いで、ノードの登録が行われるステップST164。すなわち、曲線近似ノード登録部7は、単数直線近似部12から送られてきた1本のリンクで近似されたノードを曲線近似ノード列記憶部6に保存する。その後、シーケンスはステップST166に進む。一方、ステップST162において、曲線上の点MPiaと制御点Aia1との間の距離<ARATE_THRESHOLDでない、すなわち、距離Dist2がARATE_THRESHOLD以上であることが判断されると、曲線上の点MPiaと制御点Aia1との間のベジエ曲線がARATE_NUMで示される本数のリンクで近似されるステップST165。その後、シーケンスはステップST166に進む。上記ステップST165で行われる処理の詳細を、図14に示すフローチャートを参照しながら説明する。この処理では、まず、変数imが1に初期化されるステップST171。次いで、変数imがARATE_NUM以下であればループが開始されるステップST172。ループが開始されると、まず、曲線上のノードが算出されるステップST173。すなわち、前半曲線近似部10は、上記4式に従って、曲線上の点MPiaと制御点Aiaと間の曲線上のノードを算出する。ここで、4式中のtimは7式に示す値であり、このときのBPia,imは曲線上の点MPiaと制御点Aia1との間のベジエ曲線上に作成されるim番目のノードである。次いで、ノードの登録が行われるステップST174。すなわち、曲線近似ノード登録部7は、後半曲線近似部11で算出されたノードのうち、既に登録されているノード以外の曲線上のノードを、曲線近似ノード列記憶部6に登録する。次いで、変数imがインクリメントされ、以下、変数imがARATE_NUMより大きくなるまでステップST172とステップST175との間の処理が繰り返される。その後、シーケンスはステップST166に進む。この場合、Dist2は26.9であり、ARATE_THRESHOLD以上である。したがって、曲線上の点MP2と制御点Aia1との間の曲線はARATE_NUM個のリンクで近似される。具体的には、まず、im=1のノードが算出される。7式より、t1=0.75となり、BP2,1=26.25,32.5となる。その後、BP2,1が曲線近似ノード列記憶部6に保存される。次に、BP2,2が算出される。同様に、7式で求めたt2=1より、BP2,2=10,50を算出した後、BP2,2が曲線近似ノード列記憶部6に保存される。ステップST166では、変数iaがインクリメントされ、以下、変数iaが間引き後の道路ノード数-2より大きくなるまでステップST153とステップST166との間の処理が繰り返される。このようにして、制御点列から作成された曲線を直線近似した曲線近似ノードが曲線近似ノード列記憶部6に逐次保存される。なお、前半曲線近似部10と後半曲線近似部11は、timの算出方法以外は同じ処理であるので、前半曲線近似部10のMPiaと制御点Aiaとの間の距離がARATE_THRESHOLD以上の場合と、後半曲線近似部11のMPiaと制御点Aia1との間の距離がARATE_THRESHOLD以上の場合の処理は同じである。以上の曲線を近似した直線の作成処理が終了すると、次いで、図5のフローチャートに示すように、文字列データが取得されるステップST15。すなわち、文字列配置データ取得部2は、文字列配置データ記憶部1から文字列配置データを読み出し、1つの文字列を構成する複数の文字と、各文字の縦幅および横幅を取得する。この場合、文字列Stringの文字S、t、r、i、n、g、ならびに、String中の各文字の縦幅および横幅が取得される。次いで、曲線近似ノード列が取得されるステップST16。すなわち、曲線近似ノード列取得部13は、曲線近似ノード列記憶部6から曲線近似ノード列を取得する。この場合、上述した処理において登録されたノードP1=0,10、P2=30,10、P3=MP2=35,20、P4=BP2,1=26.25,32.5およびP5=BP2,2=10,50が取得される。図15は、取得された曲線近似ノード列と、道路ノード列の関係を示す。次いで、文字列の配置が行われるステップST17。すなわち、文字列配置算出部14は、文字列を配置する。ここで、文字列配置処理の詳細を、図16に示すフローチャートを参照しながら説明する。文字列配置処理では、まず、パラメータip=1、is=1およびrange=0に初期化されるステップST181。次いで、パラメータipが曲線近似ノード列の数-1以下であればループが開始されるステップST182。ループが開始されると、次いで、このループ内において、さらに無限ループが開始されるステップST183。無限ループが開始されると、次いで、リンクの向きθ’が算出されるステップST184。すなわち、リンク角度算出部17は、リンクPip,Pip1の向きθ’を算出する。この例では、リンクP1,P2の向きθ’=0°となる。次いで、is番目の文字以下、文字isというの配置が行われるステップST185。すなわち、文字配置部18は、リンクの向きθ’および文字間隔rangeに基づき文字isの配置を決める。ここで、文字isの配置を決める文字配置処理の詳細を、図17に示すフローチャートを参照しながら説明する。文字配置処理では、まず、is=1であるか否かが調べられるステップST200。すなわち、初期文字判定部23は、配置する文字を示すパラメータisが1であるか否か、つまり1番目の文字であるか否かを判定する。このステップST200において、is=1であることが判断されると、文字isを配置する処理に移行する。この例では、初期状態ではis=1であるので、文字isを配置する処理に移行する。文字isを配置する処理では、文字配置位置決定部24は、ノードP1に文字isを配置し、文字リンク内として文字配置処理を終了する。より詳しくは、まず、文字isの左下座標LDisがノードP1に設定されるステップST201。すなわち、文字配置位置決定部24は、文字isの左下座標LDisをノードP1に設定する。次いで、LDisに文字isが配置されるステップST202。すなわち、文字配置位置決定部24は、文字isの左下座標LDisに文字isを配置する。ここで、文字配置とは、文字isの左下座標LDisをノードP1に設定した後、文字isの左上座標LTis、右下座標RDisおよび右上座標RTisに、下記8式で求めた値を設定する処理をいう。なお、8式中のWisおよびHisは文字isの横幅および縦幅をそれぞれ示す。この例では、LD1=0,10,LT1=0,20,RD1=5,10,RT1=5,20となる。上記ステップST200において、is=1でないことが判断されると、文字is-1の左下座標LDis-1からrangeだけ離れた位置にある左下座標LDisが算出されるステップST203。次いで、文字isの左下座標LDisがリンク内であるかどうかが調べられるステップST204。このステップST204において、文字isの左下座標LDisがリンク内であることが判断されると、文字isの左下座標LDisに文字isが配置されるステップST205。すなわち、文字配置位置決定部24は、文字isの左下座標LDisに文字isを配置し、文字リンク内として文字配置処理を終了する。ステップST204において、文字isの左下座標LDisがリンク内でないことが判断されると、文字isの左下座標LDisからノードPip1までの距離がrangeとして設定されるステップST206。その後、文字リンク外として文字配置処理は終了する。上述した文字配置処理が終了すると、次いで、図16に示すように、文字isがリンク外であるかどうかが調べられるステップST186。すなわち、文字リンク外判定部19は、文字配置位置決定部24における配置結果が文字リンク外であるかどうかを判定する。このステップST186において、文字isがリンク内であることが判断されると、文字is-1との重複判定が行われるステップST187。すなわち、重複判定部20は、文字isと文字is-1とが重複しているか否かを判定する。このステップST187において、重複なしと判断されると、次いで、rangeが文字isの横幅に設定されるステップST188。すなわち、パラメータ更新部21は、rangeを文字isの横幅に設定する。次いで、isに1が加えられるステップST189。すなわち、パラメータ更新部21は、isに1を加える。この例では、range=5,is=2となる。次いで、is=文字数であるかどうかが調べられるステップST190。すなわち、文字数判定部22は、isが文字数になったかどうかを調べる。このステップST190において、is=文字数であることが判断されると、文字列配置可として文字列配置処理は終了する。一方、ステップST190において、is=文字数でないことが判断されると、シーケンスはステップST191に進み、無限ループ中である旨が判断される。したがって、以後はステップST183とステップST191との間の処理、つまり、文字配置部18による文字isの配置が繰り返される。上記ステップST186において、文字isがリンク外であることが判断されると、rangeがノードPip1と左下座標LDisとの間の距離に設定されるステップST193。すなわち、パラメータ更新部21は、rangeをノードPip1と左下座標LDisとの間の距離に設定する。その後、シーケンスはステップST194に進み、無限ループを抜け出す。以後、ステップST194においてはipがインクリメントされ、ステップST182とステップST194との間の処理が繰り返される。上記無限ループ内の2回目の処理では、is=2≠文字数であるので、文字配置部18は文字isを配置する処理に移る。この処理では、上記ステップST200において、is=1でないことが判断される。この場合、is=2であるので、文字左下座標算出部25により、文字isの左下座標LDisが求められる。すなわち、文字左下座標算出部25は、文字is-1の左下座標LDis-1よりrangeだけ離れた位置を、下記9式で求め、文字isの左下座標LDisとして設定する。この場合、θ’=0°,range=5であるので、LD2=LD1range,0=5,10となる。文字22番目の文字の左下座標LD2は、リンクP1,P2上であるので、文字配置位置決定部24は、上記と同様にして左下座標LD2以外の左上座標LT2、右下座標RD2および右上座標RT2を算出し、その後、文字リンク内として処理を終了する。この場合、LT2=5,20,RD2=10,10,RT2=10,20となり、文字リンク内で処理は終了する。その後、ステップST186において、文字リンク外判定部19で文字isがリンク内であることが判定され、次いで、ステップST187において、重複判定部20で文字is-1との重複が判定される。この場合、図18に示すように、文字is-1の右辺RT1,RD1と文字isの左辺LT2,LD2は重複する。したがって、ステップST187においては、重複ありと判断され、rangeにSTEP_SIZEが加えられるステップST192。その後、シーケンスはステップST185に戻り、再度、文字配置部18で文字が配置される。この場合、range=51=6となる。この文字を再度配置する処理においては、上記と同様に、文字配置部18は文字2を配置する。まず、初期文字判定部23にて、is=1であるかを判定する。is≠1であるので、文字左下座標算出部25で文字2の左下座標LD2を算出する。この場合、θ’=0°、range=6であるので、LD2=LD1range,0=6,10となる。6,10はリンクP1,P2上であるので、文字配置位置決定部24にて、上記と同様にしてLT2,RD2,RT2が算出される。この場合、LT2=6,20,RD2=11,10,RT2=11,20となり、文字リンク内で処理を終了する。次に、重複判定部20にて、文字isと文字is-1の重複が判定される。この場合、図19に示すように、文字2と文字1は重複しないので、パラメータ更新部21でパラメータを更新する処理に移る。上記と同様にしてパラメータが更新されると、range=5,is=3となる。その後、上記と同様にして文字数判定部22にてis=文字数か否かが判定される。この場合、is≠文字数であるので、文字列を配置する処理に移る。以下同様にして文字3、4および5を配置すると、図20に示すような文字列が配置される。文字3の外接矩形はLD3=12,10、LT3=12,20、RD3=17,10およびRT3=17,20となり、文字4の外接矩形はLD4=18,10、LT4=18,20、RD4=23,10およびRT4=23,20となり、文字5の外接矩形はLD5=24,10、LT5=24,20、RD5=29,10およびRT5=29,20となる。次に、文字6がリンクP1,P2に配置される。まず、初期文字判定部23にてis=1か否かが判定される。この場合、is=6であるので、文字左下座標算出部25にて文字の左下座標が算出される。上記と同様にして文字左下座標が算出されると、左下座標LD6=34,10となる。左下座標LD6はリンクP1,P2外であるので、rangeが左下座標LD6からノードP2との間の距離4、ipが1から2に更新され、文字リンク外で処理を終了する。その後、文字リンク外で処理を終了したので、次のリンクに文字が配置される。この場合、リンクP2,P3に文字6が配置される。上述した処理と同様の処理より文字を配置すると、文字6の外接矩形はLD6=34.02,18.05、LT6=25.05,22.52、RD6=36.26,22.52およびRT6=27.31,26.99となる。図21は、文字列Stringを配置した結果を示す。以上のようにして、文字列が道路リンク上に配置される。以上説明したように、道路リンクから作成した曲線を近似した直線上に文字列を配置することにより、従来に較べて文字配置角度変化が少なくなるように、文字列を配置することができる。その結果、従来に較べて文字角度変化を低減できるので、文字列を容易に認識することができる。また、道路リンクから作成した曲線を複数の直線に近似するように構成したので、文字の位置を決める際に曲線上の距離計算を省くことができ、特許文献1に開示された技術に比べて高速に文字の位置を決めることができる。なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。"