(57)【要約】  本発明の目的は、道路網を辿る処理に要する時間の短縮化を図ることである。地図情報処理装置は、道路網を規定するノードおよびリンクの接続関係を示す情報として、ノードに接続されるリンクの情報と当該リンクが属するメッシュの情報とを含む接続リンク情報を有する道路網データを、地図情報記憶部３に格納している。プロセッサ４は、接続リンク情報に基づき、特定のノードから１つのリンクを介して繋がるノードである隣接ノードを示す隣接ノード情報を求め、メモリに格納する。プロセッサ４は、取得した道路網データに含まれる全てのノードに対する全ての隣接ノードの隣接ノード情報を求めた上で、道路網データと隣接ノード情報を用いて地図情報に対する処理を行う。
2013121560.tif 000002
【特許請求の範囲】
【請求項１】
地図情報をメッシュに分割して記憶する記憶手段であって、前記メッシュに設けられたノードと前記ノード間を接続するリンクとで道路網を規定し、前記ノードに接続されるリンクの情報と当該リンクが属する前記メッシュの情報とを含む接続リンク情報を有する道路網データを、前記地図情報に含めて前記メッシュごとに記憶する地図情報記憶手段と、
前記地図情報記憶手段から所望の前記道路網データを取得する道路網データ取得手段と、
取得した前記道路網データの前記接続リンク情報に基づき、特定のノードから１つのリンクを介して繋がるノードである隣接ノードを示す隣接ノード情報を求める隣接ノード算出手段と、
前記隣接ノード算出手段が求めた隣接ノード情報を格納する隣接ノード情報格納手段と、
取得した前記道路網データに含まれる全てのノードに対する全ての隣接ノードの隣接ノード情報を求めて、前記隣接ノード情報格納手段に格納した上で、前記道路網データと前記隣接ノード情報を用いて前記地図情報に対する処理を行う地図情報処理手段と、
を備える、地図情報処理装置。
【請求項２】
前記隣接ノード算出手段は、リンクの両端のノードが１つのメッシュに含まれる場合は、当該メッシュの道路網データの接続リンク情報から前記隣接ノード情報を求め、リンクが複数のメッシュに跨る場合は、当該リンクの両端のノードが含まれる２つのメッシュの道路網データの接続リンク情報から前記隣接ノード情報を求める
請求項１記載の地図情報処理装置。
【請求項３】
前記隣接ノード情報格納手段に格納される前記隣接ノード情報には、隣接ノード情報を求めることができなかった隣接ノードを示す情報も含まれる
請求項１記載の地図情報処理装置。
【請求項４】
前記道路網データは、３つ以上のメッシュに跨るリンクを含まない
請求項１記載の地図情報処理装置。
【請求項５】
前記地図情報処理手段は、前記地図情報に対する処理として道路網を辿る処理を行う場合、前記接続リンク情報と前記隣接ノード情報とから、前記道路網を規定するノードおよびリンクの接続関係を求める
請求項１記載の地図情報処理装置。
【請求項６】
前記地図情報処理手段は、前記地図情報に対する処理として道路網を辿る処理を行う場合、隣接ノード情報を求めることができなかった隣接ノードについては、それ以上道路網を辿る処理を行わない
請求項３記載の地図情報処理装置。
【請求項７】
前記接続リンク情報において、各ノードに接続したるリンクが属するメッシュは、当該ノードが属するメッシュを基準とする相対位置を表すコードを用いて特定される
請求項１に記載の地図情報処理装置。
【請求項８】
前記コードは、基準となるメッシュおよびその上、右上、右、右下、下、左下、左、左上の各メッシュのいずれかを表すものである
請求項７記載の地図情報処理装置。
【請求項９】
前記隣接ノード情報において、各隣接ノードが属するメッシュは、前記特定のノードが属するメッシュを基準とする相対位置を表すコードを用いて特定される
請求項１に記載の地図情報処理装置。
【請求項１０】
前記コードは、基準となるメッシュおよびその上、右上、右、右下、下、左下、左、左上の各メッシュのいずれかを示すものである
請求項９記載の地図情報処理装置。
【請求項１１】
前記道路網データ取得手段は、前記地図情報に対する処理の対象となるメッシュである対象メッシュの前記道路網データと、前記対象メッシュに隣接するメッシュである隣接メッシュの前記道路網データとを取得する
請求項１記載の地図情報処理装置。
【請求項１２】
前記隣接メッシュは、前記対象メッシュの上、右上、右、右下、下、左下、左、左上の各メッシュを含む
請求項１１記載の地図情報処理装置。
【請求項１３】
前記地図情報に対する処理において、前記隣接メッシュは、前記対象メッシュを基準とする相対位置を表すコードを用いて特定される
請求項１１記載の地図情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、地図情報処理装置に関し、特に、地図データに基づくマップマッチング処理や経路探索処理を含む地図情報処理を行う地図情報処理装置に関する。
【背景技術】
【０００２】
一般的な地図情報処理装置において、地図データは、交差点など特定地点を示すノードの情報およびノード間の道路を示すリンクの情報を含む道路網の情報を有している。地図データは、矩形状に区切られたメッシュ（ユニット）ごとに分割されて、地図データ記憶部に格納される。【０００３】
従来の地図情報処理装置は、地図データとして、リンクからノード（あるいは、ノードからリンク）への接続関係を示す接続情報（一方側接続情報）と、ノードからリンク（あるいは、リンクからノード）への接続関係を示す接続情報（他方側接続情報）とを、地図データ記憶部に格納し、それらを用いた地図情報処理を行うものであった。しかし、一方側接続情報と他方側接続情報の両方を格納する方式では、取り扱う地図の範囲が広くなると格納する地図データの量が膨大となるという問題があった。【０００４】
特許文献１の地図情報処理装置では、地図データとして、一方側接続情報のみを格納し、必要に応じて他方側接続情報を補完することにより、予め地図データ格納部に格納させる地図データの量を少なくする技術が提案されている。特許文献１の地図情報処理装置は、リンクからノード（あるいは、ノードからリンク）への接続関係を示す一方側接続情報のみを格納しており、地図情報処理時に地図データ記憶部から必要なメッシュの地図データを読み出し、当該地図データに含まれる一方側接続情報を元にして、ノードからリンク（あるいは、リンクからノード）への接続関係を示す他方側接続情報を生成する。地図情報処理を、予め格納している一方側接続情報のみを用いて実行するのでなく、処理に必要な他方側接続情報を補完した上で実行することにより、従来と同様の処理速度が維持される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３６５０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マップマッチングや経路探索の処理において道路網を辿る場合、辿るノード毎に、そのノードから１つのリンクを介して繋がる他のノード（隣接ノード）を求める必要がある。特許文献１では、各ノードの隣接ノードを求めるには、まず、ノードからリンクへの接続関係を表す接続情報から当該ノードに接続する各リンクを求め、次に、リンクからノードへの接続関係を表す接続情報から当該ノードに接続する各リンクに接続した他のノード（すなわち隣接ノード）を求める、といった手順を踏む必要がある。このように、隣接ノードを直接的に求めることができないため、道路網を辿る処理に時間がかかるという問題がある。【０００７】
本発明は以上のような課題を解決するためになされたものであり、道路網を辿る処理に要する時間の短縮化を図ることが可能な地図情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る地図情報処理装置は、地図情報をメッシュに分割して記憶する記憶手段であって、メッシュに設けられたノードとノード間を接続するリンクとで道路網を規定し、ノードに接続されるリンクの情報と当該リンクが属するメッシュの情報とを含む接続リンク情報を有する道路網データを、地図情報に含めてメッシュごとに記憶する地図情報記憶手段と、地図情報記憶手段から所望の道路網データを取得する道路網データ取得手段と、取得した道路網データの接続リンク情報に基づき、特定のノードから１つのリンクを介して繋がるノードである隣接ノードを示す隣接ノード情報を求める隣接ノード算出手段と、隣接ノード算出手段が求めた隣接ノード情報を格納する隣接ノード情報格納手段と、取得した道路網データに含まれる全てのノードに対する全ての隣接ノードの隣接ノード情報を求めて、隣接ノード情報格納手段に格納した上で、道路網データと隣接ノード情報を用いて地図情報に対する処理を行う地図情報処理手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、地図情報処理手段が、隣接ノード情報を参照することにより、隣接ノードを直ちに取得することができる。そのため、道路網を辿る処理を高速に行うことができ、例えば経路探索やマップマッチングなどの地図情報処理を高速にできる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る地図情報処理装置の構成の一例を示すブロック図である。
【図２】本発明の実施の形態に係る地図情報記憶部に記憶された地図情報のデータ構造の一例を示す図である。
【図３】本発明の実施の形態に係る道路網データの構造の一例を示す図である。
【図４】本発明の実施の形態に係る隣接メッシュコードの一例を示す図である。
【図５】本発明の実施の形態に係るリンクとメッシュとの関係の一例を示す図である。
【図６】本発明の実施の形態に係るリンクの接続方向の一例を示す図である。
【図７】ノードおよびリンクで表される道路網の一例を示す図である。
【図８】図７のメッシュＭＡにおけるノードリストに格納される各ノードレコードの一例を示す図である。
【図９】図７のメッシュＭＡにおけるリンクリストに格納される各リンクレコードの一例を示す図である。
【図１０】図７のメッシュＭＢにおけるノードリストに格納される各ノードレコードの一例を示す図である。
【図１１】図７のメッシュＭＢにおける各リンクリストの一例を示す図である。
【図１２】本発明の実施の形態に係るノードオフセットテーブルの一例を示す図である。
【図１３】本発明の実施の形態に係るリンクオフセットテーブルの一例を示す図である。
【図１４】本発明の実施の形態に係る隣接リストの一例を示す図である。
【図１５】本発明の実施の形態に係る道路網補助データを生成する処理動作を示すフローチャートである。
【図１６】図７のメッシュＭＡに対応する隣接ノードテーブルおよび隣接オフセットテーブルの一例を示す図である。
【図１７】図７のメッシュＭＢに対応する隣接ノードテーブルおよび隣接オフセットテーブルの一例を示す図である。
【図１８】本発明の実施の形態に係る隣接関係テーブルの一例を示す図である。
【図１９】図７のメッシュＭＡに対応する隣接関係テーブルの一例を示す図である。
【図２０】図７のメッシュＭＢに対応する隣接関係テーブルの一例を示す図である。
【図２１】本発明の実施の形態に係る地図情報処理装置における、道路網補助データの生成処理を示すフローチャートである。
【図２２】本発明の実施の形態に係る道路網補助データの生成処理に使用するメモリの内容の一例を示す図である。
【図２３】図２１のステップＳＴ１３０およびステップＳＴ１５０における隣接リストの隣接ノードテーブルの登録内容の具体例を示す図である。
【図２４】図２１のステップＳＴ１３０の処理の詳細を示すフローチャートである。
【図２５】図２１のステップＳＴ１５０の処理の詳細を示すフローチャートである。
【図２６】本発明の実施の形態に係る地図情報処理装置のプロセッサにおける、隣接ノードの算出処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の実施の形態について、図面に基づいて以下に説明する。
【００１２】
＜地図情報処理装置の構成＞
まず、本発明の実施の形態に係る地図情報処理装置の構成について説明する。
【００１３】
図１は、本発明の実施の形態に係る地図情報処理装置の構成の一例を示すブロック図である。図１に示すように、本実施の形態に係る地図情報処理装置は、以下に説明する入力部１、位置検出部２、地図情報記憶部３、プロセッサ４、表示部５および音声出力部６を備えている。
【００１４】
入力部１は、使用者の操作または指示に基づく指示信号をプロセッサ４に伝達する操作スイッチ群であり、入力手段として機能する。
【００１５】
位置検出部２は、例えば、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）受信機、車速センサ、加速度センサ、角速度センサ等を用いて位置検出を行う位置検出手段として機能する。位置検出部２は、本実施の形態に係る地図情報処理装置を保持する移動体の現在位置を検出し、検出した現在位置を示す位置情報をプロセッサ４に伝達する。
【００１６】
地図情報記憶部３（地図情報記憶手段）は、例えば、地図情報を記録する媒体としてハードディスクドライブにより構成される地図情報記憶手段として機能する。地図情報記憶部３には、後述の地図情報が予め記憶されている。
【００１７】
プロセッサ４は、入力部１から取得した指示信号、位置検出部２から取得した位置情報、および地図情報記憶部３から読み出した地図情報に基づき、各種の地図情報処理を行う地図情報処理手段として機能する。また、プロセッサ４は、表示部５における表示処理も行い、その制御に用いるための描画メモリ（図示せず）、描画処理部（図示せず）および表示制御部（図示せず）を有している。描画処理部がその画像を描画メモリに描画し、表示制御部が描画メモリに描画された画像を読み出して表示部５へ送ることにより、表示部５にその画像が表示される。
【００１８】
プロセッサ４にて行われる各種の地図情報処理としては、位置検出部２から取得した位置情報と地図情報記憶部３から読み出した地図情報とに基づいて移動体の現在位置を推定するマップマッチング処理や、出発地から目的地までの経路を算出する経路探索処理や、経路探索処理によって得られた経路に従って出発地から目的地まで案内を行う経路誘導処理や、現在位置周辺の地図表示処理や、都市、道路、施設、住所、電話番号、交差点等の各種情報を検索する各種検索処理などが含まれる。
【００１９】
また、地図情報記憶部３から読み出した地図情報に基づき、マップマッチング処理により推定された現在位置を中心とした地図の描画や、当該描画された地図上に上記の地図情報処理によって得られた移動体の現在位置、経路探索処理によって得られた好適な経路、当該経路に従って出発地から目的地まで案内を行うための案内情報の描画や、各種入力情報の描画や、検索によって得られた各種情報の描画等、プロセッサ４の描画処理部による描画処理も上記の地図情報処理に含まれる。
【００２０】
表示部５は、例えば、液晶ディスプレイからなる表示装置であり、表示手段として機能する。表示部５は、プロセッサ４の描画処理部による上記各種の描画処理に従って描画メモリに描画された内容を、プロセッサ４の表示制御部の制御に基づいて表示する。
【００２１】
音声出力部６は、プロセッサ４によって行われた各種の地図情報処理の結果として得られた情報を音声で使用者に伝える音声出力手段として機能する。音声出力部６は、例えば、経路探索処理によって得られた好適な経路に従って出発地から目的地まで案内を行うための情報や、検索によって得られた各種情報等を音声で使用者に伝える。
【００２２】
＜地図情報＞
地図情報記憶部３に記憶される地図情報について説明する。地図情報記憶部３に記憶される地図情報は、所定の間隔の緯度および経度によって囲まれた４辺形の領域で区画されたメッシュごとに管理される。すなわち、地図情報記憶部３は、地図情報をメッシュに分割して記憶している。また、地図情報は、情報の詳細さの度合いによって階層化され、各階層で区画されたメッシュごとに管理される。
【００２３】
それぞれの階層を識別するために、最も詳細な情報を有する階層から順に０，１，２，・・・と、各階層に対して番号（階層番号）が付与される。また、各階層において、それぞれのメッシュを識別するために、各メッシュに対して固有の番号（メッシュ番号）が付与される。
【００２４】
例えば、ある階層のメッシュが、地図における緯度方向に１６分割、かつ、経度方向に１６分割して得られる２５６個の領域として規定されているとすると、当該階層の各メッシュには０〜２５５のいずれかのメッシュ番号が付与される。なお、以下では、処理の対象となるメッシュを「対象メッシュ」と称し、対象メッシュに隣接するメッシュを「隣接メッシュ」と称することもある。
【００２５】
図２は、本実施の形態に係る地図情報記憶部３に記憶された地図情報のデータ構造の一例を示す図である。図２に示すように、地図情報は、地図管理情報、地図データ、並びに検索情報（都市、道路、施設、住所、電話番号、交差点等の各種情報を検索するためのデータ）を有している。
【００２６】
地図管理情報は、地図情報のバージョンを示すバージョン情報や、階層ごとに各地図データを管理する階層管理情報や、各種の検索情報を管理する検索管理情報等を有している。階層管理情報は、各メッシュのメッシュ番号、地図情報における各地図データの格納位置、データサイズ等の情報を階層ごとに有している。
【００２７】
地図データは、地図データヘッダ、道路網データ、背景データ、名称データ、経路誘導データを有しており、各階層の各メッシュごとに用意される。地図データヘッダは、地図データ内の各データを管理する情報を有している。道路網データは、各メッシュにおける道路網を示す情報を有している。背景データは、河川、海等を示す面データや、線状の河川、鉄道等を示す線データや、施設シンボル等を示す点データを有している。名称データは、地名、河川名、施設名等を示す文字列データを有する。経路誘導データは、交差点等での経路案内に必要な情報を有している。
【００２８】
＜道路網データ＞
地図情報の地図データに含まれる道路網データについて、より詳細に説明する。図３は、道路網データの構造の一例を示す図である。道路網データは、交差点や道路上の特定地点を示すノードの情報と、ノード間を接続する道路を示すリンクの情報とで規定される道路網のデータである。図３に示すように、道路網データは、道路網データヘッダ、ノードリスト、リンクリストおよび形状リストを有する。
【００２９】
（ａ）道路網データヘッダ
道路網データに含まれる道路網データヘッダは、都市計画法に基づいて計画された道路の有無を示す計画道路有無情報と、メッシュ内に存在するノードの数を示すノード数と、メッシュ内に存在するリンクの数を示すリンク数と、道路網データにおけるノードリスト、リンクリスト、および形状リストの格納位置やデータサイズを示すリスト管理情報といった、道路網データの管理に必要な情報を有する。
【００３０】
（ｂ）ノードリスト
道路網データに含まれるノードリストは、メッシュ内に存在する各ノードに対応して設けられたノードレコードを有する。各ノードレコードには、ノードリストにおけるノードレコードの並び順に対応するノード番号が付されているものとする。
【００３１】
各ノードのノードレコードは、ノードの地理的位置を示すノード座標と、当該ノードに接続するリンクの数を示す接続リンク数と、当該ノードに接続するリンクの情報である接続リンク情報を有する接続リンクテーブルとから構成される。接続リンクテーブルには、当該ノードに接続するリンクと同じ数の接続リンク情報が含まれている。
【００３２】
接続リンク情報は、当該ノードに接続するリンクが属するメッシュを表す接続リンクメッシュ情報と、当該ノードに接続するリンクの接続方向と、そのリンクを特定する番号（接続リンク番号）とを有する。以下では、ノードに接続するリンクのことを「接続リンク」とも称する。
【００３３】
接続リンクメッシュ情報は、当該ノードの接続リンクが属するメッシュを特定する情報である。本実施の形態において、接続リンクメッシュ情報は、接続リンクが属するメッシュを、当該ノードが属するメッシュ（対象メッシュ）との相対位置で特定する「隣接メッシュコード」で示すものとする。隣接メッシュコードは、対象メッシュおよび隣接メッシュのそれぞれに対応づけられた値を持つ。
【００３４】
図４は、隣接メッシュコードの一例を示す図である。隣接メッシュは、対象メッシュの上、右上、右、右下、下、左下、左、左上に隣接する各メッシュであり、対象メッシュおよび隣接メッシュは、隣接メッシュコード「０」〜「８」で示される。図４に示すように、本実施の形態では、対象メッシュの隣接メッシュコードを「０」で示し、各隣接メッシュの隣接メッシュコードは、対象メッシュの上、右上、右、右下、下、左下、左、左上の順に「１」〜「８」で示す。なお、ここで言う「上」、「下」、「左」、「右」、は、地図上の平面的な方向を表しており、例えば、それぞれ「北」、「南」、「西」、「東」に対応する。
【００３５】
このように本実施の形態の地図情報処理装置では、道路網データにおいて、各接続リンクの属するメッシュが、対象メッシュとの相対位置を示す隣接メッシュコードを用いて特定される。この場合、各接続メッシュを、各メッシュ固有のメッシュ番号で示すのに比べて情報量を削減することができる。
【００３６】
但し、この手法では、接続リンクが複数のメッシュに跨る場合を考慮する必要がある。例えば、接続リンクが２つのメッシュに跨っている場合、その接続リンクがどちらのメッシュに属するのかを規定する必要がある。本実施の形態では、各リンクに方向の属性を持たせることによって、各リンクの属するメッシュが１つに定まるようにしている。つまり、リンクの片方の端を始点（始点ノード）、もう片方の端を終点（終点ノード）と仮定し、各リンクは、その始点を含む側のメッシュに属するものとして規定する（もちろん、終点を含む側のメッシュに属するものと規定してもよい）。これにより、接続リンクが複数のメッシュに跨っていても、それが属するメッシュは１つに決まる。なお、各リンクの方向（始点および終点）は、道路網データの作成時に予め決定されるものとする。
【００３７】
また、図４に示した隣接メッシュコードは、対象メッシュから２つ以上離れたメッシュ（隣接メッシュよりも外側のメッシュ）は特定の対象となっていないので、接続リンクが３つ以上のメッシュに跨っている場合には、その接続リンクの属するメッシュを特定できない場合がある。例えば、対象メッシュに位置するノードに接続リンクの終点が接続しており、且つ、その接続リンクが３つ以上のメッシュに跨っている場合、その接続リンクの始点は隣接メッシュよりも外側のメッシュに位置する。この場合、その接続リンクの属するメッシュ（始点ノードが位置するメッシュ）は、隣接メッシュコードを用いて表すことができない。
【００３８】
本実施の形態では、その対策として、３つ以上のメッシュに跨るリンクを複数に分割する。例えば、図５（ａ）に示すように３つのメッシュに跨るリンク（接続リンク）Ｌａが存在し、その３つのメッシュのうち左側のメッシュが対象メッシュであると仮定する。つまり、中央のメッシュは隣接メッシュであり、右側のメッシュは隣接メッシュよりも外側のメッシュである。図５（ａ）の如く、リンクＬａの一端のノードは対象メッシュ内に存在し、他端のノードは隣接メッシュよりも外側のメッシュ内に存在している。
【００３９】
本実施の形態では、このように３つのメッシュに跨るリンクＬａが存在する場合、図５（ｂ）のように、隣接メッシュ内に新たにノードを生成して、リンクＬａを２つのリンクＬａ１，Ｌａ２に分割する。その結果得られたリンクＬａ１，Ｌａ２は、２つのメッシュに跨るため、それらが属するメッシュは隣接メッシュコードで特定することができる。この分割処理は、道路網データの作成時に予め行っておく。４つ以上のメッシュに跨るリンクが存在する場合も、上記の手法を繰り返して、複数のリンクに分割すればよい。
【００４０】
このように３つ以上のメッシュに跨るリンクを、２つのメッシュに跨る複数のリンクに分割する手法には、他の利点もある。例えば、現在地が対象メッシュ内に存在し、現在地周辺でマップマッチング処理や経路探索処理を行う場合に、図５（ａ）のように、リンクが３つのメッシュに跨って存在すると、対象メッシュおよび隣接メッシュの道路網データに加え、対象メッシュから２つ離れたメッシュ（図５（ａ）の右端のメッシュ）の道路網データまで地図情報記憶部３から取得して処理を行う必要が生じる。
【００４１】
一方、図５（ｂ）のように、２つのメッシュに跨るリンクだけが存在するのであれば、対象メッシュおよび隣接メッシュの道路網データのみを地図情報記憶部３から取得すれば処理を行うことができる。つまり、３つ以上のメッシュに跨るリンクを、２つのメッシュに跨るリンクに分割することによって、対象メッシュから２つ以上離れたメッシュの道路網データを地図情報記憶部３から取得する必要がなくなり、道路網データの効率的な読み出しが可能となる。また、地図情報記憶部３から読み出す道路網データのデータ量が削減されるため、地図情報記憶部３に対するアクセスが早くなる。
【００４２】
以下では、説明の簡単のため、３つ以上のメッシュに跨るリンクは存在しない（もしくは、３つ以上のメッシュに跨るリンクの分割処理が予め行われている）という前提で説明する。
【００４３】
上記したように、本実施の形態では各リンクが方向の属性（始点および終点）を有している。図３に示した接続リンク情報に含まれる「接続方向」は、当該ノードが接続リンクの始点側に接続しているか、終点側に接続しているかを示す情報である。当該ノードが接続リンクの始点である場合の接続方向を「順方向」と定義し、当該ノードが接続リンクの終点である場合の接続方向を「順方向」と定義する。
【００４４】
例えば図６に示すように、リンクＬｘが、ノードＮｘ１とノードＮｘ２との間を接続しており（矢印はリンクＬｘの方向を表している）、ノードＮｘ１が始点ノード、ノードＮｘ２を終点ノードとなっているとする。この場合、始点ノードＮｘ１に対するリンクＬｘの接続方向は順方向であり、終点ノードＮｘ２に対するリンクＬｘの接続方向は逆方向である。なお、各リンクのどちらを始点（または終点）にするのかは、道路網データの作成時に、各リンクの方向に合わせて定められるものとする。
【００４５】
（ｃ）リンクリスト
道路網データに含まれるリンクリストは、メッシュ内に存在する各リンクに対応して設けられたリンクレコードを有する。リンクレコードは、リンクの道路種別、幅員、リンク長等の各種属性を示すリンク属性情報と、リンクに対応する形状レコードの、形状リスト内での格納位置を示す形状レコード格納位置とを有する。各リンクレコードには、リンクリストにおけるリンクレコードの並び順に対応した、リンク番号が付与されるものとする。
【００４６】
本実施の形態において、リンクレコードには、リンクからノードへの接続関係を示す情報（始点ノードおよび終点ノードを表すノード番号）が格納されていない。これにより、地図情報記憶部３に記憶させる道路網データのデータ量を従来よりも削減することができる。
【００４７】
リンクが複数のメッシュに跨る場合、当該リンクは、その始点ノードが存在するメッシュに属するものとする。また、リンクレコードは、当該リンクが属するメッシュに対応したリンクリストに格納されるものとする。それにより、リンクが複数のメッシュを跨る場合でも、当該リンクのリンクレコードを格納するリンクリストが１つに決まる。その結果、リンクレコードが、当該リンクの両端のノードが存在する２つのメッシュのリンクリストに重複して格納されることがなく（すなわち、当該リンクの一端のノードが存在するメッシュのリンクリストのみに格納される）、地図情報記憶部３に記憶される道路網データのデータ量を削減することができる。
【００４８】
（ｄ）形状リスト
形状リストは、メッシュ内に存在するリンクに対応して設けられた形状レコードを有する。形状レコードは、リンクの道路形状の形状点の数を示す形状点数と、リンクの道路形状を折れ線近似で表し、表された折れ線の頂点である形状点の地理的位置を示す形状点リストとを有する。
【００４９】
（ｅ）道路網データの具体例
ここでは、道路網データに含まれるノードリストとリンクリストの具体例を示す。
【００５０】
図７は、リンクおよびノードで表した道路網の一例を示す図である。図７には３つのメッシュＭＡ，ＭＢ，ＭＣ内のリンクおよびノードが示されている（矢印はリンクの方向を示す）。例えば、メッシュＭＡを対象メッシュとした場合、メッシュＭＢは対象メッシュＭＡの右側に隣接する隣接メッシュである。また、メッシュＭＣは隣接メッシュＭＢの右側に隣接しているが、対象メッシュＭＡに隣接していない。すなわち、メッシュＭＣは対象メッシュＭＡの隣接メッシュではない。
【００５１】
図８は、図７のメッシュＭＡのノードリストに格納される各ノードレコードの一例を示す図である。図８の如く、メッシュＭＡのノードリストには、ノード番号０，１，２，３がそれぞれ付与されたノードＮＡ０，ＮＡ１，ＮＡ２，ＮＡ３の各ノードレコードが格納されている。また、先に図３を用いて説明したように、各ノードレコードには、ノード座標、接続リンク数、接続リンクテーブルが格納されており、さらに、接続リンクテーブルには、接続リンク情報として、接続リンクメッシュ情報、接続方向および接続リンク番号が格納されている。
【００５２】
ここで、接続リンクメッシュ情報は、図４に示した隣接メッシュコードで表すものとする。接続リンクの接続方向の情報は、リンクの接続方向が順方向の場合を０、逆方向の場合を１と表すものとする。また、メッシュＭＡにおいて、始点がメッシュＭＡに位置するリンクＬＡ０，ＬＡ１，ＬＡ２のそれぞれに０，１，２のリンク番号が付されているものとする（これらは図９に示す各リンクレコードのリンク番号に対応する）。同様に、メッシュＭＢでは、始点がメッシュＭＢに位置するリンクＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３のそれぞれに０，１，２，３のリンク番号が付されているものとする（これらは図１０に示す各リンクレコードのリンク番号に対応する）。
【００５３】
図９は、図７のメッシュＭＡのリンクリストに格納されるリンクレコードの一例を示す図である。図９の如く、メッシュＭＡのリンクリストには、メッシュＭＡに属する（メッシュＭＡに始点が位置する）リンクＬＡ０，ＬＡ１，ＬＡ２のリンクレコードＡ０，Ａ１，Ａ２が、それぞれリンク番号０，１，２を付与されて格納されている。なお、リンクＬＢ０は、メッシュＭＡ内のノードＮＡ０に接続するが、メッシュＭＢに属する（始点がメッシュＭＢに位置する）ものであるため、リンクＬＢ０のリンクレコードはメッシュＭＡのリンクリストには格納されていない。
【００５４】
図１０は、図７のメッシュＭＢのノードリストに格納される各ノードレコードの一例を示す図である。図１０の如く、メッシュＭＢのノードリストには、ノード番号０，１，２がそれぞれ付与されたノードＮＢ０，ＮＢ１，ＮＢ２のノードレコードが格納されている。また、図８と同様に、各ノードレコードには、ノード座標、接続リンク数、接続リンクテーブルが格納されており、さらに、接続リンクテーブルには、接続リンク情報として、接続リンクメッシュ情報、接続方向および接続リンク番号が格納されている。
【００５５】
図１１は、図７のメッシュＭＢのリンクリストに格納されるリンクレコードの一例を示す図である。図１１に示すように、メッシュＭＢのリンクリストには、メッシュＭＢに属するリンクＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３のリンクレコードが、それぞれリンク番号０，１，２，３を付されて格納されている。
【００５６】
このように本実施の形態では、道路網が、メッシュに設けられたノードと、ノード間を接続するリンクとで規定される。地図情報処理装置の地図情報記憶部３（地図情報記憶手段）には、ノードに接続するリンクの情報、および当該リンクが属するメッシュの情報を含む接続リンク情報を含む道路網データ（地図情報）が、メッシュごとに分割されて記憶される。
【００５７】
＜道路網補助データ＞
マップマッチングや経路探索の処理において道路網を辿る場合、辿るノード毎に、そのノードから１つのリンクを介して繋がる他のノード（隣接ノード）を求める必要がある。本実施の形態に係る地図情報処理装置では、隣接ノードを求める処理の効率よく（高速に）実行するための道路網補助データが作成される。道路網補助データは、プロセッサ４が、地図情報記憶部３から読み取った道路網データに基づいて生成し、道路網データと共にプロセッサ４のメモリに格納される。
【００５８】
道路網補助データは、以下に説明するノードオフセットテーブル、リンクオフセットテーブル、隣接リスト、隣接オフセットテーブル、隣接関係テーブルから構成される。
【００５９】
（ａ）ノードオフセットテーブル
図１２は、ノードオフセットテーブルのデータ構成の一例を示す図である。ノードオフセットテーブルは、ノードリスト内における各ノードのノードレコードの記録位置を表すノードレコードオフセット（ノードリストの先頭から各ノードレコードの先頭までのバイト数）を格納したものである。ノードレコードオフセットのそれぞれは固定長のレコードあるため、各ノードのノード番号から当該ノードに対応するノードレコードオフセットの格納位置が分かる。よって、プロセッサ４は、ノードオフセットテーブルを参照することにより、所望のノードのノードレコードに直ちにアクセスして、当該ノードレコードを取得することができる。
【００６０】
（ｂ）リンクオフセットテーブル
図１３は、リンクオフセットテーブルのデータ構成の一例を示す図である。リンクオフセットテーブルは、リンクリスト内における各リンクのリンクレコードの記録位置を表すリンクレコードオフセット（リンクリストの先頭から各リンクレコードの先頭までのバイト数）を格納したものである。リンクレコードオフセットのそれぞれは固定長のレコードあるため、各リンクのリンク番号から当該リンクに対応するリンクレコードオフセットの格納位置が分かる。よって、プロセッサ４は、リンクオフセットテーブルを参照することにより、所望のリンクのリンクレコードに直ちにアクセスして、当該リンクレコードを取得することができる。
【００６１】
（ｃ）隣接リスト
図１４は、隣接リストのデータ構成の一例を示す図である。隣接リストは、各ノードに対応する隣接ノードテーブルを含んでいる。隣接ノードテーブルは、対応するノードの各隣接ノードを特定するための情報である隣接ノードレコードが、その隣接ノードに繋がる接続リンクに対応付けされて、並べて格納される。
【００６２】
隣接ノードレコードは、隣接ノードが属するメッシュを隣接メッシュコードで表した隣接ノードメッシュ情報と、隣接ノードのノード番号である隣接ノード番号とを含んでおり、その隣接ノードに繋がる接続リンクと対応づけされている。よって、プロセッサ４は、隣接リストを参照することにより、任意のノードについて、その隣接ノードを直ちに求めることができる。
【００６３】
但し、図３に示したように、本実施の形態の道路網データにおいては、ノードリストにはノードからリンクへの接続関係を示す情報（接続リンク情報）が格納されているが、リンクリストにはリンクからノードへの接続関係を示す情報が格納されていない。つまり、道路網データには、各リンクの片側に接続したノードの情報しか記述されておらず、そのノードにどのノードが隣接するのかという情報は記述されていない。そのため、プロセッサ４は、予め各ノードの隣接ノードを検索して、その検索結果に基づいて隣接リストを作成する。
【００６４】
ここで、プロセッサ４が道路網データから、隣接リストを作成する方法（各ノードの隣接ノードを検索する方法）の概略を説明する。以下では、あるノードが「隣接ノード」として特定されるとき、それを隣接ノードとして特定する基準となったノードを「元ノード」と呼ぶこととする。
【００６５】
例えば、あるリンクＬ１の両端にノードＮ１，Ｎ２が接続している場合、ノードＮ１を基準とすると、ノードＮ２はリンクＬ１を介したノードＮ１の隣接ノードであり、ノードＮ１がその元ノードになる。この場合、リンクＬ１を「リンクＬ１の元ノード」、リンクＬ２を「リンクＬ１の接続ノード」と称することもある。
【００６６】
逆に、ノードＮ２を基準とすると、ノードＮ１はリンクＬ１を介したノードＮ２の隣接ノードであり、ノードＮ２がその元ノードになる。この場合、リンクＬ２を「リンクＬ１の元ノード」、リンクＬ１を「リンクＬ１の接続ノード」と称することもある。
【００６７】
このように、リンクＬ１に繋がる２つのノードＮ１，Ｎ２は、どちらもリンクＬ１の元ノードにも隣接ノードにもなることができる。つまり、リンクＬ１の両端のノードを入れ替えたときに、それぞれ元ノード（または隣接ノード）として現れる２つのノードは、リンクＬ１を介して隣接関係にあると判断できる。
【００６８】
従って、例えばノードＮ１がリンクＬ１の元ノードとして記述された第１のレコードと、ノードＮ２がリンクＬ１の元ノードとして記述された第２のレコードとが、それぞれメモリに格納されている場合、そのレコードを入れ替えると、それらの格納箇所のそれぞれに、隣接ノードが記述されたレコードが得られる。つまり、第１のレコードが格納されていた箇所に、ノードＮ２がリンクＬ１の元ノードとして記述された第３のレコードが得られ、第２のレコードが格納されていた箇所に、ノードＮ１がリンクＬ１の元ノードとして記述された第２のレコードとが、それぞれ得られる。
【００６９】
第１および第３のレコード（または第２および第４のレコード）を参照すると、リンクＬ１の一端はノードＮ１に接続し、他端はノードＮ２に接続していることが分かる。つまり、ノードＮ１とノードＮ２とが、リンクＬ１を介して隣接関係にあると判断できる。
【００７０】
プロセッサ４は、この性質を利用して、ノードリストの接続リンク情報から、各ノードの隣接ノードを検索して、その検索結果に基づいて隣接リストを作成する。
【００７１】
（ｄ）隣接オフセットテーブル
図１５は、隣接オフセットテーブルのデータ構成の一例を示す図である。隣接オフセットテーブルは、隣接リスト内における各隣接ノードテーブルの記録位置を表す隣接ノードテーブルオフセット（隣接リストの先頭から各隣接ノードテーブルの先頭までのバイト数）を格納したものである。隣接ノードテーブルオフセットのそれぞれは固定長のレコードあるため、各ノードのノード番号から当該ノードの隣接ノードテーブルオフセットの格納位置が分かる。よって、プロセッサ４は、隣接オフセットテーブルを参照することにより、所望のノードの隣接ノードテーブルに直ちにアクセスして、当該隣接ノードテーブルを取得することができる。
【００７２】
（ｅ）隣接リストの具体例
図１６は、図７のメッシュＭＡに対応する隣接リストの隣接ノードテーブル、および、それに対応付けされる隣接オフセットテーブルの一例を示す図である。図１６の如く、メッシュＭＡの隣接リストには、メッシュＭＡに属するノードＮＡ０，ＮＡ１，ＮＡ２，ＮＡ３のそれぞれに対応する隣接ノードテーブルが設けられる。また、メッシュＭＡの隣接オフセットテーブルには、ノードＮＡ０，ＮＡ１，ＮＡ２，ＮＡ３に対応する隣接ノードテーブルそれぞれの格納位置を示す隣接ノードテーブルオフセットが格納される。
【００７３】
ノードＮＡ０の隣接ノードテーブルは、ノードＮＡ０の接続ノードＬＡ０，ＬＡ１，ＬＡ２，ＬＢ０のそれぞれに対応する隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２，ＮＮＲＡ０３から構成される。これらの隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２，ＮＮＲＡ０３は、ノードリスト（図８）においてノードＮＡ０のノードレコードに記述されている接続リンク情報Ａ００，Ａ０１，Ａ０２，Ａ０３に対応している。隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２，ＮＮＲＡ０３のそれぞれは、接続ノードＬＡ０，ＬＡ１，ＬＡ２，ＬＢ０を介してノードＮＡ０に繋がる隣接ノードＮＡ１，ＮＡ２，ＮＡ３，ＮＢ０を表している。
【００７４】
また、ノードＮＡ１の隣接ノードテーブルは、その接続ノードＬＡ０に対応する隣接ノードレコードＮＮＲＡ１０から構成される。隣接ノードレコードＮＮＲＡ１０は、ノードリスト（図８）においてノードＮＡ１のノードレコードに記述されている接続リンク情報Ａ１０に対応しており、接続ノードＬＡ１を介してノードＮＡ０に繋がる隣接ノードＮＡ０を表している。同様に、ノードＮＡ２の隣接ノードテーブルは、接続ノードＬＡ１に対応付けされ隣接ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ２０から構成される。ノードＮＡ３の隣接ノードテーブルは、接続ノードＬＡ２に対応付けされ隣接ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ３０から構成される。
【００７５】
また、図１７は、図７のメッシュＭＢに対応する隣接リストの隣接ノードテーブル、および、それに対応付けされる隣接オフセットテーブルの一例を示す図である。図１７の如く、メッシュＭＢの隣接リストには、メッシュＭＢに属するノードＮＢ０，ＮＢ１，ＮＢ２のそれぞれに対応する隣接ノードテーブルが設けられる。また、メッシュＭＢの隣接オフセットテーブルは、ノードＮＢ０，ＮＢ１，ＮＢ２に対応する隣接ノードテーブルそれぞれの格納位置を示す隣接ノードテーブルオフセットが格納される。
【００７６】
ノードＮＢ０の隣接ノードテーブルには、ノードＮＢ０の接続ノードＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３のそれぞれに対応する隣接ノードレコードＮＮＲＢ００，ＮＮＲＢ０１，ＮＮＲＢ０２，ＮＮＲＢ０３から構成される。これらの隣接ノードレコードＮＮＲＢ００，ＮＮＲＢ０１，ＮＮＲＢ０２，ＮＮＲＢ０３は、ノードリスト（図１０）においてノードＮＢ０のノードレコードに記述されている接続リンク情報Ｂ００，Ｂ０１，Ｂ０２，Ｂ０３に対応している。隣接ノードレコードＮＮＲＢ００，ＮＮＲＢ０１，ＮＮＲＢ０２，ＮＮＲＢ０３のそれぞれは、接続ノードＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３を介してノードＮＢ０に繋がる隣接ノードＮＡ０，ＮＢ１，ＮＣ０，ＮＢ２を表している。
【００７７】
同様に、ノードＮＢ１の隣接ノードテーブルは、接続ノードＬＢ１に対応付けされ隣接ノードＮＢ０を表す隣接ノードレコードＮＮＲＢ１０から構成される。ノードＮＢ２の隣接ノードテーブルは、接続ノードＬＢ３対応付けされ隣接ノードＮＢ０を表す隣接ノードレコードＮＮＲＢ２０から構成される。
【００７８】
上記したように、ノード番号からそれに対応するノードの隣接ノードテーブルのオフセットが分かるため、プロセッサ４は、隣接オフセットテーブルを参照することによって、その隣接ノードテーブルを直ちに取得できる。そして、取得した隣接ノードテーブルから、当該所望のノードの隣接ノードを直ちに求めることができる。よって、プロセッサ４は、隣接ノードを求める処理を効率よく（高速に）実行することができる。
【００７９】
（ｆ）隣接関係テーブル
図１８は、隣接関係テーブルの構成を示す図である。隣接関係テーブルは、互いに隣接関係にある２つのノードを表す各隣接ノードレコードの、プロセッサ４のメモリにおける格納位置を示すものである。
【００８０】
隣接関係テーブルは、各リンクに対応付けされた隣接関係レコードから構成される。隣接関係レコードとリンクとの対応付けは、隣接関係レコードをそれに対応するリンクのリンク番号で特定することにより成される。
【００８１】
隣接関係レコードの各々は、第１の隣接ノードレコードオフセットと第２の隣接ノードレコードオフセットとを含んでいる。第１および第２の隣接ノードレコードオフセットは、互いに隣接関係にある２つのノードに対応する隣接ノードレコードのオフセットを示す。隣接ノードレコードのオフセットは、各隣接ノードレコードの格納位置を示す情報であり、例えば、隣接リストが隣接メッシュコードの昇順に並べてメモリに格納されている場合には、隣接メッシュコードが「０」の隣接リストの先頭から、該当する隣接ノードレコードまでのバイト数で表すことができる。従って、第１および第２の隣接ノードレコードオフセットは、どのメッシュの隣接リストの隣接ノードレコードでも指し示すことができる。
【００８２】
（ｇ）隣接関係テーブルの具体例
図１９は、図７のメッシュＭＡに対応する隣接関係テーブルを示す図である。メッシュＭＡの隣接関係テーブルには、メッシュＭＡに属するリンクＬＡ０、ＬＡ１，ＬＡ２に対応する隣接関係レコード（第１および第２の隣接ノードレコードオフセット）が格納される。
【００８３】
例えば、リンクＬＡ０は、隣接関係にあるノードＮＡ０とノードＮＡ１とを繋ぐものである。よって、リンクＬＡ０に対応する隣接関係レコードには、第１の隣接ノードレコードオフセットとして、リンクＬＡ０に対応付けされノードＮＡ１を表す隣接ノードレコードＮＮＲＡ００のオフセットが格納され、第２の隣接ノードレコードオフセットとして、リンクＬＡ０に対応付けされノードＮＡ０を表す隣接ノードレコードＮＮＲＡ１０のオフセットが格納される。
【００８４】
同様に、リンクＬＡ１に対応する隣接関係レコードには、第１の隣接ノードレコードオフセットとして、リンクＬＡ１に対応付けされノードＮＡ２を表す隣接ノードレコードＮＮＲＡ０１のオフセットが格納され、第２の隣接ノードレコードオフセットとして、リンクＬＡ１に対応付けされノードＮＡ０を表す隣接ノードレコードＮＮＲＡ２０のオフセットが格納される。
【００８５】
さらに、リンクＬＡ２に対応する隣接関係レコードには、第１の隣接ノードレコードオフセットとして、リンクＬＡ２に対応付けされノードＮＡ３を表す隣接ノードレコードＮＮＲＡ０２のオフセットが格納され、第２の隣接ノードレコードオフセットとして、リンクＬＡ２に対応付けされノードＮＡ０を表す隣接ノードレコードＮＮＲＡ３０のオフセットが格納される。
【００８６】
図２０は、図７のメッシュＭＢに対応する隣接関係テーブルを示す図である。メッシュＭＢの隣接関係テーブルには、当該メッシュＭＢに属するリンクＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３に対応する隣接関係レコード（第１および第２の隣接ノードレコードオフセット）が格納される。
【００８７】
例えば、リンクＬＢ２は隣接関係にあるノードＮＢ０とノードＮＣ０との間に介在するが、対象メッシュがノードＭＡの場合、ノードＮＣ０の属するメッシュＭＣは隣接メッシュではない。プロセッサ４が、対象メッシュと隣接メッシュ以外のノードレコードを取得しない場合、ノードＮＣ０のノードレコードが取得されていないため、ノードＮＣ０の接続リンクとしてのリンクＬＢ２に対応する隣接ノードレコードは作成されていない。その場合、リンクＬＢ２に対応する隣接関係レコードの第２の隣接ノードレコードオフセットを特定することができないので、図２０に示すように、第２の隣接ノードレコードオフセットは「無効」を表す値に設定される。
【００８８】
＜地図情報処理装置の動作＞
（ａ）道路網補助データの生成処理
図２１は、本実施の形態に係る地図情報処理装置のプロセッサ４における、道路網補助データの生成処理を示すフローチャートであり、経路探索処理やマップマッチング処理において、現在地を含む対象メッシュと、対象メッシュに隣接する隣接メッシュとの道路網補助データを生成する動作を示している。
【００８９】
図２２は、道路網補助データの生成処理に使用する、プロセッサ４のメモリの内容の一例を示す図である。なお、プロセッサ４のメモリには、図２２に示すデータ、リストおよびテーブルを管理するために、それらの格納位置およびレコード数なども格納されるが、それらの図示は省略する。
【００９０】
以下では、地図情報処理装置が作成する道路網補助データの具体例として、図７に示した道路網において、メッシュＭＡが現在地の存在する対象メッシュ（隣接メッシュコード＝０）である場合の道路網補助データを示す。この具体例において、隣接メッシュに対する処理については、メッシュＭＡの右側に隣接するメッシュＭＢ（隣接メッシュコード＝３）に関してのみ説明する。メッシュＭＢ以外の隣接メッシュ（隣接メッシュコード＝１，２，４〜８）に対する処理は、メッシュＭＢに対する処理と同様であるため説明を省略する。
【００９１】
道路網補助データの生成処理が開始されると、プロセッサ４は、現在地が位置する対象メッシュおよびその隣接メッシュに対し、道路網データの読み取り処理（ステップＳＴ１００）と、それに対応する道路網補助データの初期化処理（ステップＳＴ１１０）とを実行する。これらの処理は、隣接メッシュコードの番号順に実行される。つまり、各処理を実行するメッシュの順番は、最初が対象メッシュ、それ以降は対象メッシュの上、右上、右、右下、下、左下、左、左上の隣接メッシュの順となる。
【００９２】
ステップＳＴ１００では、プロセッサ４が、対象メッシュとその隣接メッシュの道路網データ（図３）を、隣接メッシュコードの番号順に、地図情報記憶部３から読み取り、さらにその順番で、図２２のようにプロセッサ４のメモリに格納する。
【００９３】
例えば、図７に示す対象メッシュＭＡに対しては、図８のノードリスト、図９のリンクリスト、形状リスト（図示せず）を地図情報記憶部３から読み取り、図２２のようにプロセッサ４のメモリに格納する。隣接メッシュＭＢに対しても、図１０のノードリスト、図１１のリンクリスト、形状リスト（図示せず）を読み取り、図２２のようにプロセッサ４のメモリに格納する。
【００９４】
なお、該当するメッシュが存在しない場合や、読み取りエラーなどにより道路網データが取得できない場合には、ノード数、リンク数を０とした道路網ヘッダのみからなる道路網データをメモリに格納する。
【００９５】
ステップＳＴ１１０では、ステップＳＴ１００で読み取った道路網データに対応するノードオフセットテーブル（図１２）、リンクオフセットテーブル（図１３）、隣接リスト（図１４）、隣接オフセットテーブル（図１５）、および隣接関係テーブル（図１８）を、図２２に示すようにプロセッサ４のメモリ内に作成し、それらを道路網データに基づいて以下のように初期化する。
【００９６】
ノードオフセットテーブルに対しては、各ノードレコードのオフセットを設定する。リンクオフセットテーブルに対しては、各リンクレコードのオフセットを設定する。隣接オフセットテーブルに対しては、各隣接ノードテーブルのオフセットを設定する。
【００９７】
隣接リストに対しては、各隣接ノードテーブルの全ての隣接ノードレコード（隣接ノードメッシュ情報および隣接ノード番号）を次のように設定する。すなわち、隣接ノードメッシュ情報を「無効」を表す値（例えば０ｘＦ）に設定し、隣接ノード番号も「無効」を表す値（例えば０ｘＦＦＦＦ）に設定する。
【００９８】
隣接関係テーブルに対しては、全ての隣接関係レコード（第１および第２の隣接ノードレコードオフセット）を次のように設定する。すなわち、第１および第２の隣接ノードレコードオフセットの両方を「無効」を表す値（例えば０ｘＦＦＦＦＦＦＦＦ）に設定する。
【００９９】
なお、読み取り対象となるメッシュが存在しない場合や、読み取りエラーなどにより道路網データ（図３）が取得できない場合（道路網ヘッダのノード数およびリンク数が０の場合）には、上記の各リストおよびテーブルは作成しない。
【０１００】
ステップＳＴ１００，ＳＴ１１０の処理が、対象メッシュおよび隣接メッシュの全てに対して終了すると（ステップＳＴ１２０にてＹＥＳ）、ステップＳＴ１３０へと進む。
【０１０１】
ステップＳＴ１３０では、対象メッシュおよび隣接メッシュのそれぞれに対し、プロセッサ４は、以下の処理を行う。このステップＳＴ１３０の処理も、隣接メッシュコードの番号順に実行される。ここで、処理の対象になっているメッシュを「当該メッシュ」と呼ぶこととする。
【０１０２】
ステップＳＴ１３０において、プロセッサ４は、当該メッシュのノードリストに基づいて、当該メッシュの隣接関係テーブルに、当該メッシュに属する各リンクを介して隣接関係にある２つのノードの隣接ノードレコードのオフセットを、第１および第２の隣接ノードレコードオフセットとして格納する。つまり、隣接リストの中から、当該メッシュに属する同一のリンクに対応付けされている一組の隣接ノードレコードを、それらの各オフセットを、第１および第２の隣接ノードレコードオフセットとして格納する。またそれと共に、第１および第２の隣接ノードレコードオフセットに登録した隣接ノードレコードのそれぞれに、その接続リンクの元ノードを登録する。なお、該当するメッシュが存在しない場合や、該当するメッシュの道路網データ（図３）が読み取れなかった場合は、上記処理を行わずに処理の対象を次のメッシュへ移行させる。
【０１０３】
図２３は、道路網補助データの生成処理に係る地図情報処理装置の動作を説明するための図であり、ステップＳＴ１３０およびステップＳＴ１５０における隣接リストの隣接ノードテーブルの登録内容の具体例を示している。例えば、図７に示す道路網データの場合、隣接関係テーブルには、図１９および図２０のように、各リンクに対応する第１および第２の隣接ノードレコードオフセットが格納され、隣接ノードテーブルの隣接ノードレコードに、図２３の「登録ノード（ＳＴ１３０）」の列に示すように、各リンクの元ノードが登録される。
【０１０４】
なお、ステップＳＴ１３０の処理については、後でより詳しく説明する。
【０１０５】
ステップＳＴ１３０の処理が、対象メッシュおよび隣接メッシュの全てに対して終了すると（ステップＳＴ１４０にてＹＥＳ）、ステップＳＴ１５０へ移行する。
【０１０６】
ステップＳＴ１５０では、プロセッサ４が、各メッシュに対し、隣接関係レコード（第１および第２の隣接ノードレコードオフセット）が示す２つの隣接ノードレコードに登録されているノード（元ノード）を入れ替える処理を行う。ステップＳＴ１５０の処理も、隣接メッシュコードの番号順に実行される。ここでも、処理の対象になっているメッシュを「当該メッシュ」と呼ぶこととする。
【０１０７】
上記のステップＳＴ１３０にて、隣接関係レコード（第１および第２の隣接ノードレコードオフセット）が示す２つの隣接ノードレコードには、互いに隣接関係にある２つのノードが登録されている。この２つのノードは共に隣接関係レコードに対応するリンクの元ノードであるため、それを入れ替えて登録すれば、それぞれの隣接ノードレコードに、元ノードの隣接ノードが登録されることになる。
【０１０８】
なお、該当するメッシュが存在しない場合や、該当するメッシュの道路網データ（図３）が読み取れなかった場合は、上記処理の対象を次のメッシュに移行させる。
【０１０９】
例えば、図７に示す道路網データの場合、ステップＳＴ１５０の処理により、隣接ノードテーブルの隣接ノードレコードには、図２３の「登録ノード（ＳＴ１５０）」列に示すノードが登録されることになる。図２３から分かるように、このとき登録されたノードは、ステップＳＴ１３０で登録したノード（元ノード）に対して隣接関係にある。つまり、ステップＳＴ１５０の処理によって、隣接ノードレコードの登録内容が、各ノードの隣接ノードとなっていることが分かる。
【０１１０】
なお、ステップＳＴ１５０の処理については、後でより詳しく説明する。
【０１１１】
ステップＳＴ１５０の処理が、対象メッシュおよび隣接メッシュの全てに対して終了すると（ステップＳＴ１６０にてＹＥＳ）、道路網補助データの生成処理が終了する。
【０１１２】
この結果、図２２のように、現在地が位置する対象メッシュおよびその隣接メッシュの各道路網データと、その道路網データに基づいて得られた、対象メッシュおよびその隣接メッシュの道路網補助データとが、プロセッサ４のメモリ内の所定の位置に格納される。
【０１１３】
このように、プロセッサ４は、道路網データの接続リンク情報に基づき、特定のノード（対象ノード）の隣接ノードを示す隣接ノードレコード（隣接ノード情報）を求める隣接ノード算出手段としても機能する。
【０１１４】
本実施の形態では、リンクが２以上のメッシュを跨がないように分割されているため、対象メッシュとその隣接メッシュの道路網データのみを地図情報記憶部３から取得すれば足りる。つまり、２メッシュ以上離れたメッシュの道路網データの取得する必要がないため、取り扱うデータ量を少なく、処理の効率化が図られている。
【０１１５】
（ｂ）ステップＳＴ１３０の詳細
図２１のステップＳＴ１３０の処理についてより詳細に説明する。図２４はステップＳＴ１３０における処理の詳細を示すフローチャートである。プロセッサ４は、ステップ１３０において、以下の処理を行う。
【０１１６】
まず、ステップＳＴ２００において、当該メッシュのノードリストのノードレコードをノード番号の順に選択する。すなわち、当該メッシュ内に位置するノードがノード番号の順に選択される。以下では、ステップＳＴ２００で選択されたノードを「当該ノード」と呼ぶ。
【０１１７】
例えば、当該メッシュが図７のメッシュＭＡの場合、ステップＳＴ２００が実行されるごとに、図８に示すノード番号０，１，２，３のノードレコードが順に選択される。当該メッシュがＭＢの場合も同様に、図１０に示すノード番号０，１，２のノードレコードが順に選択される。
【０１１８】
次のステップＳＴ２１０では、当該ノードの接続リンク情報を、接続リンクテーブルに格納された順に選択する。以下では、ステップＳＴ２１０で選択された接続リンク情報を「当該接続リンク情報」と呼び、当該接続リンク情報に対応するリンクを「当該接続リンク」と呼ぶ。
【０１１９】
例えば、当該メッシュがＭＡの場合は、ステップＳＴ２１０が実行されるごとに、図８の接続リンク情報Ａ００，Ａ０１，Ａ０２，Ａ０３，Ａ１０，Ａ２０，Ａ３０が順に選択される。当該メッシュがＭＢの場合も同様に、図１０に示す接続リンク情報Ｂ００，Ｂ０１，Ｂ０２，Ｂ０３，Ｂ１０，Ｂ２０が順に選択される。
【０１２０】
次のステップＳＴ２２０では、当該接続リンクが所属するメッシュの有無を判断する。つまり、道路網データにおいて、当該接続リンク情報の接続リンクメッシュ情報が示すメッシュに対応するノード数が０の場合、又は、当該接続リンク情報の接続リンクメッシュ情報が示すメッシュが隣接メッシュよりも外側のメッシュ（例えば図７のメッシュＭＣ）である場合には、当該接続リンクの所属メッシュが無いと判断する。
【０１２１】
また、隣接メッシュの道路網データを読み取れなかった場合にも、当該接続リンクの所属メッシュが無いと判断する。例えば、当該ノードがノードＮＡ０であるとき、その接続リンクＬＢ０は隣接メッシュＭＢに所属するが、メッシュＭＢの道路網データを読み取れなかったときは、接続リンクＬＢ０の所属メッシュが無いと判断する。
【０１２２】
当該接続リンクの所属メッシュが無いと判断された場合は（ステップＳＴ２２０にてＹＥＳ）、後述のステップＳＴ２６０へ進む。そうでない場合は、以下のステップＳＴ２３０〜ＳＴ２５０を実行した後に、ステップＳＴ２６０へ進む。
【０１２３】
ステップＳＴ２３０では、当該接続リンク情報の接続リンクメッシュ情報が示すメッシュの隣接関係テーブルを選択し、その隣接関係テーブルから、当該接続リンク情報の接続リンク番号が特定する隣接関係レコードを選択する。
【０１２４】
例えば、当該メッシュがＭＡで、当該ノードがＮＡ０である場合、当該接続リンクがＬＡ０のときは、メッシュＭＡの隣接関係テーブル（図１９）から、接続リンク情報Ａ００が示すリンクＬＡ０に対応する隣接関係レコードが選択される。当該接続リンクがＬＡ１のときは、接続リンク情報Ａ０１が示すリンクＬＡ１に対応する隣接関係レコードが選択される。当該接続リンクがＬＡ２のときは、接続リンク情報Ａ０２が示すリンクＬＡ２に対応する隣接関係レコードが選択される。また、当該接続リンクがＬＢ０であれば、メッシュＭＢの隣接関係テーブル（図２０）から、接続リンク情報Ａ０３が示すリンクＬＢ０に対応する隣接関係レコードが選択される。他の場合も同様である。
【０１２５】
続いて、ステップＳＴ２４０へと進み、当該接続リンクに対応する隣接ノードレコードのオフセットを、ステップＳＴ２３０で選択した隣接関係レコードに格納する。このとき、第１の隣接ノードレコードオフセットが「無効」となっている場合は、上記オフセットを第１の隣接ノードレコードオフセットとして格納し、第１の隣接ノードレコードオフセットが「無効」となっていない場合（第１の隣接ノードオフセットとして既に他のオフセットが格納されている場合）は、上記オフセットを第２の隣接ノードレコードオフセットとして格納する。
【０１２６】
図１９、図２０は、メッシュＭＡ，ＭＢの全てのノードとその接続リンクに対してステップＳＴ２４０が実行された後における、隣接関係レコード（第１および第２の隣接ノードレコードオフセット）の格納結果である。
【０１２７】
上記したように、ステップＳＴ１３０の処理対象である当該メッシュは、隣接メッシュコードの順で変わり、ステップＳＴ２００で選択される当該ノードは、ノード番号の順に変わる。よって、当該メッシュがＭＡで、当該ノードがＮＡ０である場合、当該接続リンクがＬＡ０，ＬＡ１，ＬＡ２になったとき、それらに対応する隣接関係レコードの第１および第２の隣接ノードレコードオフセットは共に「無効」となっている。従って、メッシュＭＡの隣接関係テーブルの、接続リンクＬＡ０，ＬＡ１，ＬＡ２に対応する隣接関係レコードには、図１９の如く、それらの第１の隣接ノードレコードオフセットとして、接続リンクＬＡ０，ＬＡ１，ＬＡ２に対応する隣接ノードレコードＮＮＲＡ００，ＮＮＤＡ０１，ＮＮＲＡ０２のオフセットが格納される。
【０１２８】
また、当該接続リンクがＬＢ０のときも、それに対応する隣接関係レコードの第１および第２の隣接ノードレコードオフセットは共に「無効」となっている。従って、図２０の如く、その接続リンク対応するメッシュＭＢの隣接関係レコードの第１の隣接ノードレコードオフセットに、第１の隣接ノードレコードオフセットとして、接続リンクＬＢ０に対応する隣接ノードレコードＮＮＲＡ０３のオフセットが格納される。
【０１２９】
一方、当該ノードＮＡ１の接続リンクＬＡ０、当該ノードＮＡ１の接続リンクＬＡ１および当該ノードＮＡ２の接続リンクＬＡ２がそれぞれ当該接続リンクとなったときには、上記の処理によって第１の隣接ノードレコードオフセットは「無効」ではなくなっている（既に他のオフセットが格納されている）。従って、図１９の如く、それらに対応する隣接関係レコードＮＮＲＡ１０，ＮＮＤＡ２０，ＮＮＲＡ３０のオフセットは、第２の隣接ノードレコードオフセットとして格納される。
【０１３０】
当該メッシュがメッシュＭＢとなった場合も同様であり、各隣接関係レコードの内容（第１および第２の隣接ノードレコードオフセット）は、図２０に示すようになる。当該ノードがメッシュＮＢ０で当該接続リンクがＬＢ０のときは、上記により第１の隣接ノードレコードオフセットには、隣接ノードレコードＮＮＲＡ０３が格納されている。従って、メッシュＮＢ０で当該接続リンクがＬＢ０のときは、それに対応する隣接関係レコードＮＮＲＢ００のオフセットは、第２の隣接ノードレコードオフセットとして格納される。
【０１３１】
なお、リンクＬＢ２に対応する隣接関係レコードは、ノードＮＣ０がメッシュＭＣに属し、メッシュＭＣに対してはステップＳＴ１３０の処理は実行されないため、図２０の如く、第２の隣接ノードレコードオフセットは「無効」のままとなる。
【０１３２】
このようにステップＳＴ２４０では、隣接関係レコードのそれぞれに、その隣接関係レコードに対応するリンクを介して隣接関係にある２つのノードに対応する隣接ノードレコードのオフセットが格納される。
【０１３３】
例えば、リンクＬＡ０を介してはノードＮＡ０とノードＮＡ１とが隣接関係にあるが、図１９の如く、リンクＬＡ０に対応付けされた隣接関係レコードには、その隣接関係と一致するように、ノードＮＡ１を表す隣接ノードレコードＮＮＲＡ００のオフセットと、ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ１０とのオフセットとが、格納される。
【０１３４】
続くステップＳＴ２５０では、当該接続リンクに対応する隣接ノードレコードに、当該ノードを登録する処理が行われる。すなわち、当該接続リンクに対応する隣接ノードレコードに、隣接ノードメッシュ情報として対象メッシュから見た当該メッシュの隣接メッシュコードを格納し、隣接ノード番号として当該ノードのノード番号を格納する。
【０１３５】
この時点では、隣接ノードレコードには当該接続リンクの隣接ノードではなく、当該接続リンクの元ノードである当該ノードが登録されている。各隣接ノードレコードのオフセットは、ステップＳＴ２４０において、当該接続リンクに対応する隣接関係レコードに格納されているため、接続リンクに対応する隣接関係レコードを参照すれば、その接続リンクの元ノードが登録されている隣接ノードレコードが分かる。
【０１３６】
図２３の「登録ノード（ＳＴ１３０）」の列は、メッシュＭＡ，ＭＢの全てのノードと、その接続リンクに対してステップＳＴ２５０が実行されたときに隣接ノードレコードに登録されたノードとが示されている。
【０１３７】
例えば、当該メッシュがＭＡで、当該ノードがＮＡ０の場合、当該接続リンクがＬＡ０，ＬＡ１，ＬＡ２，ＬＢ０に対して、それぞれの接続リンクに対応する隣接ノードレコードに元ノードである当該ノードＮＡ０が登録される。当該メッシュがＭＡで、当該ノードがその他の場合も同様である。
【０１３８】
また、当該メッシュがＭＢで、当該ノードがＮＢ０の場合、当該接続リンクがＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３に対して、それぞれの接続リンクに対応する隣接ノードレコードに元ノードである当該ノードＮＢ０が登録される。当該メッシュがＭＢで、当該ノード他その他の場合も同様である。
【０１３９】
このように、ステップＳＴ２５０では、接続リンクに対応する隣接ノードレコードに、その接続リンクの元ノードが登録される。
【０１４０】
例えば図１９に示すように、接続リンクＬＡ０を介するノードＮＡ０の隣接ノードＮＡ１を表す隣接ノードレコードＮＮＲＡ００には、元ノードであるノードＮＡ０が登録される。逆に、リンクＬＡ０介するノードＮＡ１の隣接ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ１０には、元ノードであるノードＮＡ１が登録される。また、上記のステップＳＴ２４０によって、隣接関係テーブルには、リンクＬＡ０に対応する隣接関係レコードとして、それらノードＮＡ０，ＮＡ１に対応する隣接ノードレコードのオフセットが格納されている。
【０１４１】
なお、先のステップＳＴ２２０において、当該接続リンクの所属メッシュが無いと判断された場合は、ステップＳＴ２３０〜ＳＴ２５０は実行されない。その場合、接続リンクＬＢ０に対応する隣接関係レコードは「無効」のままとなる。
【０１４２】
続いて、ステップＳＴ２６０において、当該ノードの全ての接続リンク情報について、以上の処理が終了しているかを判断する。全て終了していればステップＳＴ２７０へと進み、終了していなければステップＳＴ２１０へと戻る。
【０１４３】
さらに、ステップＳＴ２７０では、当該メッシュの全てのノードリストの全てのノードレコードについて、以上の処理が終了しているかを判断する。全て終了しなければステップＳＴ２００へ戻り、全て終了していればステップＳＴ１３０の処理を終了し、図２１のステップ１４０へと進む。
【０１４４】
ステップ１３０では、このような処理が行われることにより、互いに隣接関係にあるノードの隣接ノードレコードのオフセットが隣接関係テーブルに格納され、さらに、各接続ノードの元ノードが隣接ノードテーブルに登録される。
【０１４５】
（ｃ）ステップＳＴ１５０の詳細
図２１のステップＳＴ１５０の処理についてより詳細に説明する。図２５はステップＳＴ１５０の詳細の動作を示すフローチャートである。
【０１４６】
まず、ステップＳＴ３００において、プロセッサ４は、当該メッシュの隣接関係テーブルから所定の隣接関係レコードを選択する。選択される隣接関係レコードは、ステップＳＴ３００が実行されるごとに変わり、当該メッシュの隣接関係テーブルの先頭のものから順に選択される。
【０１４７】
続いてステップＳＴ３１０において、ステップＳＴ３００選択された隣接関係レコードの第１の隣接ノードレコードオフセットが「無効」か否かを調べる。「無効」であればステップＳＴ３４０へ進み、「無効」でなければステップＳＴ３２０へと進む。
【０１４８】
ステップＳＴ３２０では、ステップＳＴ３００で選択された隣接関係レコードの第２の隣接ノードレコードオフセットが「無効」か否かを調べる。「無効」であればステップＳＴ３２５へと進み、「無効」でなければステップＳＴ３３０へと進む。
【０１４９】
ステップＳＴ３２５では、第１の隣接ノードレコードオフセットが示す隣接ノードレコードが有する隣接ノードメッシュ情報および隣接ノード番号に「無効」を表す値を格納する。例えば、図２０のリンクＬＢ２に対応する隣接関係レコードでは、第２の隣接ノードレコードオフセットが「無効」である。この場合、図２３のように、第１の隣接ノードレコードオフセットが示す隣接ノードレコードオフセットＮＮＲＢ０２を「無効」にする。ステップＳＴ３２５の処理の後は、ステップＳＴ３４０へと進む。
【０１５０】
ステップＳＴ３３０では、ステップＳＴ３００で選択された隣接関係レコードの、第１の隣接ノードレコードオフセットが示す隣接ノードレコードに登録されたノードと、第２の隣接ノードレコードオフセットが示す隣接ノードレコードに登録されたノードとの入れ替えを行う。
【０１５１】
隣接関係レコードの第１および第２の隣接ノードレコードオフセットが示す隣接ノードレコードには、その隣接関係レコードに対応するリンクの元ノードが登録されている。上記したように、各リンクの両端のノードは、どちらも元ノードにも隣接ノードにもなることができるので、リンクの両端のノードを入れ替えたときに、それぞれ元ノードとして現れる２つのノードは、そのリンクを介して隣接関係にあると判断できる。従って、同じリンクに対応する隣接ノードレコードに登録されている元ノードを入れ替えると、各隣接ノードレコードの登録内容はその隣接ノードになる。
【０１５２】
例えば、当該メッシュがＭＡであり、ステップＳＴ３００で選択された隣接関係レコードが、リンクＬＡ０に対応する隣接関係レコードである場合、図１９のように、第１の隣接ノードレコードオフセットは隣接ノードレコードＮＮＲＡ００を示し、第２の隣接ノードレコードオフセットは隣接ノードレコードＮＮＲＡ１０を示している。ステップＳＴ３３０の処理前には、図２３の「登録ノード（ＳＴ１３０）」の列に示すように、隣接ノードレコードＮＮＲＡ００にノードＮＡ０が登録され、隣接ノードレコードＮＮＲＡ１０にノードＮＡ１が登録されている。ステップＳＴ３３０では、それを入れ替え、隣接ノードレコードＮＮＲＡ００にノードＮＡ１を登録し、隣接ノードレコードＮＮＲＡ１０にノードＮＡ０を登録する。
【０１５３】
この結果、図２３の「登録ノード（ＳＴ１５０）」の列に示すように、隣接ノードレコードＮＮＲＡ００は、ノードＮＡ０のリンクＬＡ０を介した隣接ノードＮＡ１を示すようになり、隣接ノードレコードＮＮＲＡ１０は、ノードＮＡ１のリンクＬＡ０を介した隣接ノードＮＡ０を示すようになる。ステップＳＴ３３０の処理の後は、ステップＳＴ３４０へと進む。
【０１５４】
ステップＳＴ３４０では、当該メッシュの全ての隣接関係レコードについて以上の処理が終了しているかを判断する。全て終了していれば、ステップＳＴ１５０の処理を終了して図２１のステップＳＴ１６０へと進み、全て終了していなければ、ステップＳＴ３００へと戻る。
【０１５５】
このようにして、図２３の「登録ノード（ＳＴ１５０）」の列に示すように、各ノードに対応付けられた隣接ノードテーブルに、そのノードの隣接ノードが登録される。つまり、当該メッシュの隣接リストは、当該メッシュ内に位置する各ノードに対応付けられて、その全ての隣接ノードが登録される。その結果、プロセッサ４のメモリ（隣接ノード情報格納手段）には、プロセッサ４が取得した道路網データ（対象メッシュおよび全ての隣接メッシュの道路網データ）に含まれる全てのノードに対する、全ての隣接ノードの隣接ノードレコードが格納された隣接リストが作成される。よって、プロセッサ４は、隣接リストを参照すれば、各ノードの隣接ノードを直接的に求めることができる。
【０１５６】
なお、以上の処理において、リンクＬＢ０は２つのメッシュＭＡ，ＭＢに跨っているため、ノードＮＢ０の接続リンクＬＢ０を介した隣接ノードＮＡ０は、メッシュＭＡ及びメッシュＭＢの片方のノードリストのみからは求めることができない。そのため、ステップ１３０におけるステップＳＴ２４０、ＳＴ２５０（図２４）では、メッシュＭＡのノードリストを用いて第１の隣接リードレコードオフセットと元ノードＮＡ０を求め、さらに、メッシュＭＢのノードリストを用いて第２の隣接リードレコードオフセットと元ノードＮＢ０とを求めている。つまり、メッシュＭＡ，ＭＢに跨るリンクＬＢ０を介する隣接ノードは、それらメッシュＭＡ，ＭＢの両方のノードリストを使用して求められている。
【０１５７】
（ｄ）隣接ノード算出処理
地図情報処理装置が行う経路探索やマップマッチングの処理では、道路網を辿る処理が行われる。道路網を辿る処理は、現在辿り着いているノードを対象ノードと規定して、その対象ノードと隣接関係にある隣接ノード（次ノード）を求め、その後いずれかの隣接ノードに辿りつけば、そのノードを新たな対象ノードと規定して、その対象ノードと隣接関係にある隣接ノードを求める、という処理を繰り返しながら、次々と道路網のノードを辿っていくことにより行われる。
【０１５８】
図２６は、本実施の形態に係る地図情報処理装置が隣接ノードを算出する動作を示すフローチャートである。図２６に示す動作は、現在辿りついているノードを対象ノードと規定してその隣接ノードを算出し、プロセッサ４のメモリ（図２２）に設けられた「次ノードリスト」に登録する処理を行うものである。
【０１５９】
次ノードリストは、図１４に示した隣接リストと同様のデータ構造である。すなわち、次ノードリストは、対象ノードの接続リンクに対応付けされた隣接ノードレコードを有しており、隣接ノードレコードには、その接続リンクを介して対象ノードに隣接する隣接ノードを特定する隣接ノードメッシュ情報および隣接ノード番号が格納される。隣接ノードメッシュ情報は、隣接ノードが属するメッシュを隣接メッシュコードで表したものであり、隣接ノード番号は、隣接ノードのノード番号である。次ノードレコードは、対象ノードの隣接ノードの数だけ、次ノードレコードを有する。
【０１６０】
道路網を辿る処理が、任意のノードに辿り着くと、そのノードが対象ノードと規定されて、隣接ノードの算出処理が開始される。
【０１６１】
まず、ステップＳＴ４００において、次ノードリストを初期化する。つまり、次ノードリストに登録されている隣接ノード数を０にする。
【０１６２】
そして、以下のステップＳＴ４１０〜ステップＳＴ４５０の処理を、対象ノードのノードレコードが有する接続リンク情報を順に参照して行う。例えば、対象ノードが図７のメッシュＭＡに位置するノードＮＡであるとき、対象ノードのノードレコードは、図８に示すノードリストのノード番号０のノードレコードである。この場合、ステップＳＴ４１０〜ステップＳＴ４５０の処理が、接続リンク情報Ａ００，Ａ０１，Ａ０２，Ａ０３に対してこの順番で行われる。
【０１６３】
ステップＳＴ４１０では、対象ノードの隣接ノードテーブルを選択する。つまり、対象ノードが属するメッシュ（対象メッシュ）の隣接リストにおける、対象ノードの隣接ノードテーブルのオフセットを、対象メッシュの隣接オフセットテーブルを参照して求める。
【０１６４】
ステップＳＴ４２０では、対象ノードの接続リンクに対応する隣接ノードレコードを、ステップＳＴ４１０で選択した隣接ノードテーブルの中から選択する。例えば、対象ノードが図７のノードＮＡ（図８のノード番号０のノードレコードに対応）であるとき、接続リンク情報Ａ００（接続リンクＬＡ０）に対して図１６の隣接ノードレコードＮＮＲＡ００（ＬＡ０）が選択され、接続リンク情報Ａ０１（接続リンクＬＡ１）に対して図１６の隣接ノードレコードＮＮＲＡ０１（ＬＡ１）が選択され、接続リンク情報Ａ０２（接続リンクＬＡ２）に対して図１６の隣接ノードレコードＮＮＲＡ０２（ＬＡ２）が選択され、接続リンク情報Ａ０３（接続リンクＬＢ０）に対して図１６の隣接ノードレコードＮＮＲＡ０３（ＬＢ０）が選択される。
【０１６５】
ステップＳＴ４３０では、ステップＳＴ４２０で選択した隣接ノードレコードを、隣接ノードを表す次ノードレコードとして、次ノードリストに格納する。なお、隣接ノードレコードの隣接ノード番号が「無効」（０ｘＦＦＦＦ）の場合は、次ノードリストに格納しないものとする。それにより、これ以上先を辿ることができないノードが次ノードとして登録されることが防止される。
【０１６６】
ステップＳＴ４４０では、対象ノードの接続リンク情報の全てに対してステップＳＴ４１０〜ステップＳＴ４３０の処理が終了したかを調べる。つまり、対象ノードのノードレコードに記述されている接続リンク数だけの接続リンク情報について、ステップＳＴ４１０〜ステップＳＴ４３０の処理が終了したかを確認する。終了していれば隣接ノードの算出処理が終わり、終了していなければステップＳＴ４１０へ戻る。
【０１６７】
例えば、道路網を辿る処理において、対象ノードが図７のノードＮＡ（図８のノード番号０のノードレコードに対応）になると、以上の処理により、次ノードリストには、対象メッシュのＭＡの隣接リスト（図１６）から選択された、対象メッシュＭＡ内の隣接ノード表す隣接ノードレコードＮＮＲＡ００（ＬＡ０），ＮＮＲＡ０１（ＬＡ１），ＮＮＲＡ０２（ＬＡ２）が格納され、また隣接メッシュＭＢ内の隣接ノード表す隣接ノードレコードＮＮＲＡ０３（ＬＢ０）が格納される。よって、プロセッサ４は、次ノードリストを参照することにより、対象メッシュＭＡ内の隣接ノードＮＡ１，ＮＡ２，ＮＡ３と、隣接メッシュＭＢ内の隣接ノードＮＢ０とを直ちに得ることができる。
【０１６８】
このように、道路網補助データとして、プロセッサ４が取得した道路網データ（対象メッシュおよび全ての隣接メッシュの道路網データ）に含まれる全てのノードに対する、全ての隣接ノードの隣接ノードレコードが格納された隣接リストを用いることにより、プロセッサ４は、接続リンクがメッシュを跨る場合でも、そうでない場合でも、対象ノードの隣接ノードを直ちに求めることができ、道路網を迅速に辿ることができる。
【０１６９】
＜変形例＞
なお、本実施の形態に係る地図情報処理装置の入力部１（図１参照）は、操作スイッチ群であるものとして説明したが、操作スイッチ群以外にも、表示部５の表示面に装着されたタッチパネル（図示せず）、リモートコントロールスイッチ（図示せず）、音声認識装置（図示せず）等を入力手段として使用してもよい。
【０１７０】
また、本実施の形態において、各リンクに対応するリンクレコードは、その始点ノードが属するメッシュのリンクリストのみに格納されるが、終点ノードが属するメッシュのリンクリストのみに格納するようにしてもよい。
【０１７１】
また、本実施の形態では、接続リンクが属するメッシュを示す接続リンクメッシュ情報を隣接メッシュコードで示したが、隣接メッシュコードに代えて、各メッシュに固有のメッシュ番号などで示してもよい。
【０１７２】
また、本実施の形態において、隣接ノードメッシュ情報および隣接ノード番号を含む隣接ノードレコードを、ノードリストとは別の隣接リストとして設けたが、リンクリストのリンクレコード内に設けるようにしてもよい。
【０１７３】
また、本実施の形態において、リンクが３つ以上のメッシュに跨って存在する場合は、予め２つのメッシュに跨るようにリンクを分割したが、リンクを分割しなくてもよい。このとき、リンクが所属するメッシュの接続リンクメッシュ情報として隣接メッシュコードが使用できないため、隣接メッシュコードに代えてメッシュ番号を接続リンクメッシュ情報として示してもよい。
【０１７４】
なお、本発明は、その発明の範囲内において、実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【０１７５】
１  入力部、２  位置検出部、３  地図情報記憶部、４  プロセッサ、５  表示部、６  音声出力部。
【図１】
2013121560.tif 000003
【図２】
2013121560.tif 000004
【図３】
2013121560.tif 000005
【図４】
2013121560.tif 000006
【図５】
2013121560.tif 000007
【図６】
2013121560.tif 000008
【図７】
2013121560.tif 000009
【図８】
2013121560.tif 000010
【図９】
2013121560.tif 000011
【図１０】
2013121560.tif 000012
【図１１】
2013121560.tif 000013
【図１２】
2013121560.tif 000014
【図１３】
2013121560.tif 000015
【図１４】
2013121560.tif 000016
【図１５】
2013121560.tif 000017
【図１６】
2013121560.tif 000018
【図１７】
2013121560.tif 000019
【図１８】
2013121560.tif 000020
【図１９】
2013121560.tif 000021
【図２０】
2013121560.tif 000022
【図２１】
2013121560.tif 000023
【図２２】
2013121560.tif 000024
【図２３】
2013121560.tif 000025
【図２４】
2013121560.tif 000026
【図２５】
2013121560.tif 000027
【図２６】
2013121560.tif 000028
【手続補正書】
【提出日】平成26年2月24日(2014.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
地図情報をメッシュに分割して記憶する記憶手段であって、前記メッシュに設けられたノードと前記ノード間を接続するリンクとで道路網を規定し、前記ノードに接続されるリンクを特定するための情報と当該リンクが属する前記メッシュの情報とを含む接続リンク情報であって、前記リンクを介して前記ノードに繋がる他のノードである隣接ノードを示す隣接ノード情報を含まないようにした接続リンク情報を有する道路網データであり、リンクに対応して設けた情報には当該リンク端のノードを表す情報を含まないようにした道路網データを、前記地図情報に含めて前記メッシュごとに記憶する地図情報記憶手段と、
前記地図情報記憶手段から所望の前記道路網データを取得する道路網データ取得手段と、
取得した前記道路網データの前記接続リンク情報に基づき、隣接ノード情報を求める隣接ノード算出手段と、
前記隣接ノード算出手段が求めた隣接ノード情報を格納する隣接ノード情報格納手段と、
取得した前記道路網データに含まれる全てのノードに対する全ての隣接ノードの隣接ノード情報を求めて、前記隣接ノード情報格納手段に格納した上で、前記道路網データと前記隣接ノード情報を用いて前記地図情報に対する処理を行う地図情報処理手段と、
を備える、地図情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明に係る地図情報処理装置は、地図情報をメッシュに分割して記憶する記憶手段であって、メッシュに設けられたノードとノード間を接続するリンクとで道路網を規定し、ノードに接続されるリンクを特定するための情報と当該リンクが属するメッシュの情報とを含む接続リンク情報であって、リンクを介してノードに繋がる他のノードである隣接ノードを示す隣接ノード情報を含まないようにした接続リンク情報を有する道路網データであり、リンクに対応して設けた情報には当該リンク端のノードを表す情報を含まないようにした道路網データを、地図情報に含めてメッシュごとに記憶する地図情報記憶手段と、地図情報記憶手段から所望の道路網データを取得する道路網データ取得手段と、取得した道路網データの接続リンク情報に基づき、隣接ノード情報を求める隣接ノード算出手段と、隣接ノード算出手段が求めた隣接ノード情報を格納する隣接ノード情報格納手段と、取得した道路網データに含まれる全てのノードに対する全ての隣接ノードの隣接ノード情報を求めて、隣接ノード情報格納手段に格納した上で、道路網データと隣接ノード情報を用いて地図情報に対する処理を行う地図情報処理手段と、を備える。
【手続補正書】
【提出日】平成26年4月3日(2014.4.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
上記したように、本実施の形態では各リンクが方向の属性（始点および終点）を有している。図３に示した接続リンク情報に含まれる「接続方向」は、当該ノードが接続リンクの始点側に接続しているか、終点側に接続しているかを示す情報である。当該ノードが接続リンクの始点である場合の接続方向を「順方向」と定義し、当該ノードが接続リンクの終点である場合の接続方向を「逆方向」と定義する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
ここで、接続リンクメッシュ情報は、図４に示した隣接メッシュコードで表すものとする。接続リンクの接続方向の情報は、リンクの接続方向が順方向の場合を０、逆方向の場合を１と表すものとする。また、メッシュＭＡにおいて、始点がメッシュＭＡに位置するリンクＬＡ０，ＬＡ１，ＬＡ２のそれぞれに０，１，２のリンク番号が付されているものとする（これらは図９に示す各リンクレコードのリンク番号に対応する）。同様に、メッシュＭＢでは、始点がメッシュＭＢに位置するリンクＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３のそれぞれに０，１，２，３のリンク番号が付されているものとする（これらは図１１に示す各リンクレコードのリンク番号に対応する）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
例えば、あるリンクＬ１の両端にノードＮ１，Ｎ２が接続している場合、ノードＮ１を基準とすると、ノードＮ２はリンクＬ１を介したノードＮ１の隣接ノードであり、ノードＮ１がその元ノードになる。この場合、ノードＮ１を「リンクＬ１の元ノード」、ノードＮ２を「リンクＬ１の隣接ノード」と称することもある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
逆に、ノードＮ２を基準とすると、ノードＮ１はリンクＬ１を介したノードＮ２の隣接ノードであり、ノードＮ２がその元ノードになる。この場合、ノードＮ２を「リンクＬ１の元ノード」、ノードＮ１を「リンクＬ１の隣接ノード」と称することもある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
従って、例えばノードＮ１がリンクＬ１の元ノードとして記述された第１のレコードと、ノードＮ２がリンクＬ１の元ノードとして記述された第２のレコードとが、それぞれメモリに格納されている場合、そのレコードを入れ替えると、それらの格納箇所のそれぞれに、隣接ノードが記述されたレコードが得られる。つまり、第１のレコードが格納されていた箇所に、ノードＮ２がリンクＬ１の元ノードとして記述された第３のレコードが得られ、第２のレコードが格納されていた箇所に、ノードＮ１がリンクＬ１の元ノードとして記述された第４のレコードが得られる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
ノードＮＡ０の隣接ノードテーブルは、ノードＮＡ０の接続リンクＬＡ０，ＬＡ１，ＬＡ２，ＬＢ０のそれぞれに対応する隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２，ＮＮＲＡ０３から構成される。これらの隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２，ＮＮＲＡ０３は、ノードリスト（図８）においてノードＮＡ０のノードレコードに記述されている接続リンク情報Ａ００，Ａ０１，Ａ０２，Ａ０３に対応している。隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２，ＮＮＲＡ０３のそれぞれは、接続リンクＬＡ０，ＬＡ１，ＬＡ２，ＬＢ０を介してノードＮＡ０に繋がる隣接ノードＮＡ１，ＮＡ２，ＮＡ３，ＮＢ０を表している。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
また、ノードＮＡ１の隣接ノードテーブルは、その接続リンクＬＡ０に対応する隣接ノードレコードＮＮＲＡ１０から構成される。隣接ノードレコードＮＮＲＡ１０は、ノードリスト（図８）においてノードＮＡ１のノードレコードに記述されている接続リンク情報Ａ１０に対応しており、接続リンクＬＡ１を介してノードＮＡ０に繋がる隣接ノードＮＡ０を表している。同様に、ノードＮＡ２の隣接ノードテーブルは、接続リンクＬＡ１に対応付けされ隣接ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ２０から構成される。ノードＮＡ３の隣接ノードテーブルは、接続リンクＬＡ２に対応付けされ隣接ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ３０から構成される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
ノードＮＢ０の隣接ノードテーブルには、ノードＮＢ０の接続リンクＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３のそれぞれに対応する隣接ノードレコードＮＮＲＢ００，ＮＮＲＢ０１，ＮＮＲＢ０２，ＮＮＲＢ０３から構成される。これらの隣接ノードレコードＮＮＲＢ００，ＮＮＲＢ０１，ＮＮＲＢ０２，ＮＮＲＢ０３は、ノードリスト（図１０）においてノードＮＢ０のノードレコードに記述されている接続リンク情報Ｂ００，Ｂ０１，Ｂ０２，Ｂ０３に対応している。隣接ノードレコードＮＮＲＢ００，ＮＮＲＢ０１，ＮＮＲＢ０２，ＮＮＲＢ０３のそれぞれは、接続リンクＬＢ０，ＬＢ１，ＬＢ２，ＬＢ３を介してノードＮＢ０に繋がる隣接ノードＮＡ０，ＮＢ１，ＮＣ０，ＮＢ２を表している。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
同様に、ノードＮＢ１の隣接ノードテーブルは、接続リンクＬＢ１に対応付けされ隣接ノードＮＢ０を表す隣接ノードレコードＮＮＲＢ１０から構成される。ノードＮＢ２の隣接ノードテーブルは、接続リンクＬＢ３対応付けされ隣接ノードＮＢ０を表す隣接ノードレコードＮＮＲＢ２０から構成される。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１２７
【補正方法】変更
【補正の内容】
【０１２７】
上記したように、ステップＳＴ１３０の処理対象である当該メッシュは、隣接メッシュコードの順で変わり、ステップＳＴ２００で選択される当該ノードは、ノード番号の順に変わる。よって、当該メッシュがＭＡで、当該ノードがＮＡ０である場合、当該接続リンクがＬＡ０，ＬＡ１，ＬＡ２になったとき、それらに対応する隣接関係レコードの第１および第２の隣接ノードレコードオフセットは共に「無効」となっている。従って、メッシュＭＡの隣接関係テーブルの、接続リンクＬＡ０，ＬＡ１，ＬＡ２に対応する隣接関係レコードには、図１９の如く、それらの第１の隣接ノードレコードオフセットとして、接続リンクＬＡ０，ＬＡ１，ＬＡ２に対応する隣接ノードレコードＮＮＲＡ００，ＮＮＲＡ０１，ＮＮＲＡ０２のオフセットが格納される。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１２９
【補正方法】変更
【補正の内容】
【０１２９】
一方、当該ノードＮＡ１の接続リンクＬＡ０、当該ノードＮＡ２の接続リンクＬＡ１および当該ノードＮＡ３の接続リンクＬＡ２がそれぞれ当該接続リンクとなったときには、上記の処理によって第１の隣接ノードレコードオフセットは「無効」ではなくなっている（既に他のオフセットが格納されている）。従って、図１９の如く、それらに対応する隣接関係レコードＮＮＲＡ１０，ＮＮＲＡ２０，ＮＮＲＡ３０のオフセットは、第２の隣接ノードレコードオフセットとして格納される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１３０
【補正方法】変更
【補正の内容】
【０１３０】
当該メッシュがメッシュＭＢとなった場合も同様であり、各隣接関係レコードの内容（第１および第２の隣接ノードレコードオフセット）は、図２０に示すようになる。当該ノードがＮＢ０で当該接続リンクがＬＢ０のときは、上記により第１の隣接ノードレコードオフセットには、隣接ノードレコードＮＮＲＡ０３が格納されている。従って、メッシュＭＢで当該接続リンクがＬＢ０のときは、それに対応する隣接関係レコードＮＮＲＢ００のオフセットは、第２の隣接ノードレコードオフセットとして格納される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１４０
【補正方法】変更
【補正の内容】
【０１４０】
例えば図２３に示すように、接続リンクＬＡ０を介するノードＮＡ０の隣接ノードＮＡ１を表す隣接ノードレコードＮＮＲＡ００には、元ノードであるノードＮＡ０が登録される。逆に、リンクＬＡ０介するノードＮＡ１の隣接ノードＮＡ０を表す隣接ノードレコードＮＮＲＡ１０には、元ノードであるノードＮＡ１が登録される。また、上記のステップＳＴ２４０によって、隣接関係テーブルには、リンクＬＡ０に対応する隣接関係レコードとして、それらノードＮＡ０，ＮＡ１に対応する隣接ノードレコードのオフセットが格納されている。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１４４
【補正方法】変更
【補正の内容】
【０１４４】
ステップ１３０では、このような処理が行われることにより、互いに隣接関係にあるノードの隣接ノードレコードのオフセットが隣接関係テーブルに格納され、さらに、各接続リンクの元ノードが隣接ノードテーブルに登録される。
【手続補正１５】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2013121560.tif 000029
【手続補正１６】
【補正対象書類名】図面
【補正対象項目名】図２５
【補正方法】変更
【補正の内容】
【図２５】
2013121560.tif 000030
【手続補正１７】
【補正対象書類名】図面
【補正対象項目名】図２６
【補正方法】変更
【補正の内容】
【図２６】
2013121560.tif 000031
【国際調査報告】
2013121560.tif 000032
2013121560.tif 000033