図1は、本発明の実施の一形態である地図情報処理装置1を備える情報処理システム10の構成を示すブロック図である。情報処理システム10は、地図情報処理装置1、位置検出部21、入力部22、描画処理部23、表示部24および音声出力部25を備えて構成される。地図情報処理装置1は、制御部11および地図情報記憶部12を備える。位置検出部21、入力部22、描画処理部23、表示部24および音声出力部25のうちの1つまたは複数は、地図情報処理装置1に備えられてもよく、情報処理システム10全体が地図情報処理装置1として構成されてもよい。
情報処理システム10は、たとえば、車両などの移動体に搭載されて、または人などの移動体に携帯されて使用される。情報処理システム10は、たとえば、出発地から目的地までの経路を探索し、探索した経路に従って、使用者を目的地まで案内するナビゲーションシステムである。
制御部11は、たとえば、中央演算処理装置(Central Processing Unit;略称:CPU)と、書き込み可能なRAM(Random Access Memory)などのメモリとによって構成される。メモリは、制御プログラムなどを格納する。制御部11は、地図情報記憶部12、位置検出部21、入力部22、描画処理部23および音声出力部25と接続されている。制御部11は、メモリに格納されている制御プログラムに従って、地図情報記憶部12、位置検出部21、入力部22、描画処理部23および音声出力部25を統括的に制御する。制御部11は、経路探索部および経路変換部に相当する。
地図情報記憶部12は、たとえばハードディスクドライブ(Hard Disk Drive;略称:HDD)装置、ディジタルバーサタイルディスク(Digital Versatile Disk;略称:DVD)もしくはそのドライブ装置、ブルーレイディスク(Blu-ray Disc(登録商標))もしくはそのドライブ装置、または半導体メモリなどの記憶装置によって構成される。地図情報記憶部12は、地図を表す地図情報を格納する。
位置検出部21は、たとえば全地球測位システム(Global Positioning System;略称:GPS)受信機、速度センサ、加速度センサおよび角速度センサの少なくともいずれか1つを備えて構成される。GPS受信機は、GPS衛星から送信される電波信号を受信する。速度センサは、情報処理システム10が搭載または携帯される移動体の速度を検出する。加速度センサは、移動体の加速度を検出する。角速度センサは、移動体の角速度を検出する。
位置検出部21は、たとえばGPS受信機によって構成されている場合には、受信した電波信号などに基づいて、地図上における移動体の現在位置、たとえば緯度および経度などの座標を検出する。位置検出部21は、検出した移動体の現在位置を示す位置情報を、制御部11に与える。
入力部22は、たとえば、使用者によって操作される複数の操作スイッチを含む操作スイッチ群によって構成される。入力部22は、使用者が、数字情報、文字情報および制御部11への指示情報などの情報を入力するときに用いられる。使用者によって入力部22が操作されると、入力部22は、使用者の入力操作に応じた指示を表す指示信号を生成して、制御部11に与える。
入力部22は、操作スイッチ群の代わりに、タッチパネルまたは音声認識装置によって構成されてもよい。入力部22がタッチパネルで構成される場合、タッチパネルは、液晶表示装置などの表面に設置され、使用者のタッチ操作とタッチ位置とを検出する。音声認識装置は、入力された音声を認識する。入力部22が音声認識装置で構成される場合、音声認識装置は、認識した音声に応じた指示を表す指示信号を生成して、制御部11に与える。
制御部11は、位置検出部21から与えられる位置情報と、入力部22から与えられる指示信号と、地図情報記憶部12から読み出した地図情報とを用いて、位置情報が示す現在位置を地図上の位置に整合させるマップマッチング処理を行う。また制御部11は、マッチング処理によって得られた現在位置およびその周辺の地図を表示部24に表示させるとともに、現在位置を出発地とする目的地までの経路を探索し、探索した経路に従って使用者を目的地まで案内する各種のナビゲーション処理を行う。
描画処理部23は、制御部11から与えられる制御信号に従って、表示部24に表示させる画像を表す画像データを生成する。描画処理部23は、たとえば、使用者とのヒューマンインターフェースのための画像を表す画像データ、現在位置およびその周辺の地図画像を表す画像データ、前記地図画像に、現在位置を出発地とする目的地までの経路を重畳した画像を表す画像データ、ならびに経路案内のための画像を表す画像データなどを生成する。描画処理部23は、生成した画像データを表示部24に与える。
表示部24は、たとえば、液晶表示装置によって構成される。表示部24は、描画処理部23から与えられた画像データが表す画像を表示する。表示部24は、道路表示部および経路表示部に相当する。
音声出力部25は、たとえば、スピーカによって構成される。制御部11は、各種のナビゲーション処理によって得られた情報を、スピーカで取り扱い可能な音声情報に変換して、音声出力部25に与える。音声出力部25は、制御部11から与えられる音声情報が表す音声を出力する。音声情報は、たとえば、地図上における経路探索処理によって得られた目的地までの経路に沿って出発地から目的地までの経路案内を行うための案内情報、および検索処理によって得られた目的地の施設に関する施設情報である。
図2は、地図情報記憶部12に格納される地図情報30のデータ構造の一例を示す図である。地図情報30は、地図管理情報31、地図データ32および検索情報33を含む。地図データ32は、各階層のメッシュに対応して設けられる。検索情報33は、検索する情報の種類毎に設けられる。階層およびメッシュについては後述する。
地図管理情報31は、たとえば、地図情報30のバージョンを表すバージョン情報、階層毎に各地図データ32を管理する階層管理情報、および各種検索情報33を管理する検索管理情報を含む。階層管理情報は、各メッシュのメッシュ番号、地図情報30における地図データ32の格納位置、およびデータサイズなどの情報を階層毎に有する。
地図データ32は、地図データヘッダ41、道路網データ42、背景データ43、名称データ44および経路誘導データ45を含む。地図データヘッダ41は、地図データ32内の各データを管理する情報を含む。道路網データ42は、メッシュにおける道路網を表す情報を含む。背景データ43は、河川および海などを表す面データ、線状の河川および鉄道などを表す線データ、施設シンボルなどを表す点データを含む。名称データ44は、道路の名称を表す道路名称情報、地名を表す地名情報、ならびに河川、海および施設シンボルなどの名称を表す背景名称情報を含む。経路誘導データ45は、交差点などにおける経路案内に要する情報を含む。
検索情報33は、都市、道路、施設、住所、電話番号および交差点などの各種情報を検索するための情報を含む。
地図データ32は、情報の詳細さの度合いによって階層化される。地図データ32は、階層毎に、予め定める間隔の緯線および経線によって囲まれた領域であるメッシュに区画して管理される。メッシュは、各階層の地図を予め定める範囲毎に区画して得られる。階層を識別するために、情報の詳細さの度合いが最も詳しい階層から粗くなる順に、各階層に0,1,2,・・・と番号を付与し、これを階層番号とする。
本実施の形態では、地図データ32は、縮尺が異なる複数の階層に階層化される。縮尺が最も大きい階層から、縮尺が小さくなる順に、階層番号が大きくなるように、0,1,2,・・・の階層番号が各階層に付与される。階層番号は、0以上の整数である。
地図データ32は、たとえば、階層番号が0,1,2の3つの階層に階層化される。この場合、道路網データ42は、たとえば道路種別によって階層化される。3つの階層のうち、縮尺が最も大きい階層番号が「0」の階層では、全ての種類の道路が採択される。縮尺が次に大きい階層番号が「1」の階層では、高速道路、国道および都道府県道のみが採択される。縮尺が最も小さい階層番号が「2」の階層では、高速道路および国道のみが採択される。各階層の道路網データ42には、採択された道路から構成される道路網を表す情報が格納される。
このように道路網データ42の階層化では、階層番号が相対的に大きい上層の道路は、階層番号が相対的に小さい下層の道路を間引いたものとなる。また、後述するように、上層の道路は、下層の1つ以上の道路を1本の道路に統合したものとなっている。
縮尺が小さい広域の地図表示を行う場合は、上位の階層の地図データ32が使用される。縮尺が大きい狭域の詳細な地図表示を行う場合は、下位の階層の地図データ32が使用される。ここで、大小、広狭、上下は、それぞれ、相対的なものである。
長距離の経路探索を行う場合は、上位の階層の道路網データ42が使用される。短距離の経路探索を行う場合は、下位の階層の道路網データ42が使用される。ここで、長短、上下は、それぞれ、相対的なものである。
1つの階層内で、メッシュを識別するために、各メッシュには、固有の番号(以下「メッシュ番号」という場合がある)が付与される。たとえば、南北方向を上下方向とし、東西方向を左右方向とした地図におけるメッシュの左下隅の経度および緯度によってメッシュをソートし、このソート順をメッシュ番号とする。ソートは、経度の昇順になるように行われる。経度が同一の場合は、緯度の昇順になるようにソートが行われる。
図3〜図5は、階層およびメッシュの一例を示す図である。図3は、階層番号が0(L0)の階層およびメッシュの一例を示す図である。図4は、階層番号が1(L1)の階層およびメッシュの一例を示す図である。図5は、階層番号が2(L2)の階層およびメッシュの一例を示す図である。
図3〜図5では、上層のメッシュは、下層の4つのメッシュを結合したものである。たとえば、図4に示す階層番号が1(L1)の階層におけるメッシュ番号が「0」のメッシュは、図3に示す階層番号が0(L0)の階層におけるメッシュ番号が「0」、「1」、「16」、「17」の4つのメッシュを結合したものである。すなわち、図4において参照符号「S0」で示す部分のメッシュは、図3において参照符号「S0」で示され、太い実線で囲まれた部分のメッシュを結合したものである。図5に示す階層番号が2(L2)の階層におけるメッシュ番号が「0」のメッシュは、図4に示す階層番号が1(L1)の階層におけるメッシュ番号が「0」、「1」、「8」、「9」の4つのメッシュを結合したものである。すなわち、図5において参照符号「S1」で示す部分のメッシュは、図4において参照符号「S1」で示され、太い破線で囲まれた部分のメッシュを結合したものである。
図3に示す階層番号が0(L0)の階層は、256個のメッシュによって構成される。前述の結合によって、図4に示す階層番号が1(L1)の階層は、64個のメッシュによって構成され、図5に示す階層番号が2(L2)の階層は、16個のメッシュによって構成されることになる。図3に示す階層番号が0(L0)の階層において、空白になっているメッシュは、そのメッシュ番号の記載を省略したものである。
以上に述べた図3〜図5に示す階層とメッシュとの関係から、階層が異なる2つのメッシュの階層番号とメッシュ番号とが判れば、それらのメッシュの包含関係が判る。
図6は、地図データを階層化した場合における道路網の一例を示す図である。道路網は、交差点および道路上の地点を表すノードと、ノード間を結ぶ道路を表すリンクとを用いて表す。図6では、図3〜図5において斜線のハッチングを付した部分のメッシュにおける道路網を構成するノードおよびリンクの一部を示している。実線の直線はリンクを表し、円はノードを表し、破線で結ばれた階層間のノードは、それらのノードが同じ交差点または道路上の地点であることを表している。
図6において、「Mh_m」は、階層番号がh(hは0以上の整数)で、メッシュ番号がm(mは0以上の整数)のメッシュを表す。
本実施の形態において、連続して接続している1以上のリンクを、上層で1本のリンクに纏めることを「統合する」という。また、統合によって得られたリンクを「統合リンク」といい、その統合されたリンクを「被統合リンク」という。1本のリンクをそのまま上層のリンクとする場合も、「統合する」という。
階層番号が0(L0)の階層から順に上層に向かって下層のリンクを統合していくことによって、各階層のリンクを生成する。統合は、その階層で採択される道路を表すリンクについて行う。
以下に、図6を用いて上記統合の例を説明する。たとえば、メッシュM0_8のリンクL0_18と、メッシュM0_9のリンクL0_25,L0_26,L0_27とが統合されて、メッシュM1_4のリンクL1_10となる。また、メッシュM0_9のリンクL0_28が統合されて、メッシュM1_4のリンクL1_11となる。また、メッシュM1_4のリンクL1_10およびリンクL1_11が統合されて、メッシュM2_2のリンクL2_3となる。
したがって、メッシュM0_8のリンクL0_18と、メッシュM0_9のリンクL0_25,L0_26,L0_27,L0_28とが統合されて、メッシュM2_2のリンクL2_3となる。
メッシュM0_9のリンクL0_21,L0_22は、統合されて、メッシュM1_4のリンクL1_7となる。メッシュM1_4のリンクL1_7は、より上層の階層番号が2(L2)の階層では統合されず、階層番号が2(L2)の階層には存在しない。
メッシュM0_10のリンクL0_30,L0_31は、より上層の階層番号が1(L1)および階層番号が2(L2)の階層では統合されず、階層番号が1(L1)および階層番号が2(L2)の階層には存在しない。
メッシュM0_8のリンクL0_18と、メッシュM0_9のリンクL0_25,L0_26,L0_27とは、メッシュM1_4のリンクL1_10の被統合リンクである。メッシュM0_9のリンクL0_28は、メッシュM1_4のリンクL1_11の被統合リンクである。メッシュM1_4のリンクL1_10,L1_11は、メッシュM2_2のリンクL2_3の被統合リンクである。
したがって、メッシュM0_8のリンクL0_18と、メッシュM0_9のリンクL0_25,L0_26,L0_27,L0_28とは、メッシュM2_2のリンクL2_3の被統合リンクである。メッシュM0_9のリンクL0_21,L0_22は、メッシュM1_4のリンクL1_7の被統合リンクである。
前述のように、リンクがどの階層まで統合されているか、従ってリンクがどの階層まで存在するかはリンクによって異なる。リンクが統合される最上位の階層、すなわちリンクが統合されて存在する最も上の階層を「最上統合階層」といい、最上統合階層の階層番号を「最上統合階層番号」といい、リンクを統合して得られた最上統合階層番号の階層におけるリンク、すなわち最上統合階層のリンクを「最上統合階層リンク」という。また、それ以上の階層では統合されないリンクの最上統合階層番号は、そのリンクが属する階層の階層番号とする。
たとえば、リンクL0_18,L0_25,L0_26,L0_27,L0_28は、階層番号が2(L2)の階層まで統合されるので、これらのリンクの最上統合階層番号は「2」である。同様に、リンクL1_10,L1_11は、階層番号が2(L2)の階層まで統合されるので、これらの最上統合階層番号は「2」である。
リンクL0_21,L0_22は、階層番号が1(L1)の階層までしか統合されないので、それらのリンクの最上統合階層番号は「1」である。リンクL1_7は、上層で統合されないので、最上統合階層番号は、自身の階層番号と同じ「1」である。リンクL0_30,L0_31は、上層で統合されないので、最上統合階層番号は、最下層の階層番号と同じ「0」である。
最上統合階層リンクおよび最上統合階層リンクの被統合リンクの各々には、同じ値の識別子(以下「共通リンクID」という場合がある)が付与される。共通リンクIDは、共通リンク識別子に相当する。
共通リンクIDは、最上統合階層リンクが属するメッシュにおける最上統合階層リンクのメッシュ内リンクIDとする。メッシュ内リンクIDは、メッシュ内リンク識別子に相当する。メッシュ内リンクIDについては、後述する。
異なる階層のリンクで、同じ共通リンクIDを有するリンク同士は、互いに対応付けられていること、すなわち同じ道路を表していることが判る。これによって、ある階層の経路探索で得られた経路のリンクを下層または上層に表示するときに、前記経路のリンクに対応する下層または上層リンクが容易に判る。
また、共通リンクIDの値は、1メッシュのリンク数を超えることがなく、リンクに全国で固有のリンクIDを付す場合に比べて、データを削減することができる。以下に、図6を用いて共通リンクIDの例を説明する。たとえば、リンクL2_3のメッシュM2_2におけるメッシュ内リンクIDをIID2_3とすると、リンクL2_3の共通リンクIDは、IID2_3となる。また、リンクL2_3の被統合リンクであるリンクL1_10,L1_11,L0_18,L0_25,L0_26,L0_27,L0_28の共通リンクIDも、IID2_3となる。
リンクL1_7のメッシュM1_4におけるメッシュ内リンクIDをIID1_7とすると、リンクL1_7の共通リンクIDは、IID1_7となる。また、リンクL1_7の被統合リンクであるリンクL0_21,L0_22の共通リンクIDも、IID1_7となる。
リンクL0_30,L031のメッシュM0_10におけるメッシュ内リンクIDを、それぞれ、IID0_30、IID0_31とすると、リンクL0_30,L031は、より上層の階層番号が1(L1)の階層および階層番号が2(L2)の階層では統合されないので、リンクL0_30,L031の共通リンクIDは、それぞれ、IID0_30、IID0_31となる。
メッシュM2_2を経路探索して得られた経路のリンクをL2_3とすると、リンクL2_3の共通リンクIDはIID2_3であるので、階層番号が1(L1)の階層で、メッシュM1_4の共通リンクIDがIID2_3であるリンクL1_10,L1_11が対応し、これらのリンクを描画すれば、階層番号が1(L1)の階層に経路を描画することができる。
また、階層番号が0(L0)の階層で、メッシュM0_8の共通リンクIDがIID2_3であるリンクL0_18、およびメッシュM0_9のリンクL0_25,L0_26,L0_27,L0_28が対応し、これらのリンクを描画すれば、階層番号が0(L0)の階層に経路を描画することができる。
メッシュM0_9を経路探索して得られた経路のリンクをL0_26とすると、リンクL0_26の共通リンクIDはIID2_3であるので、階層番号が1(L1)の階層で、メッシュM1_4の共通リンクIDがIID2_3であるリンクL1_10,L1_11が対応し、これらのリンクを描画すれば、階層番号が1(L1)の階層に経路を描画することができる。
また、階層番号が2(L2)の階層で、メッシュM2_2の共通リンクIDがIID2_3であるL2_3が対応し、このリンクを描画すれば、階層番号が2(L2)の階層に経路を描画することができる。
このように共通リンクIDによって、上層リンクから下層リンクへ、また下層リンクから上層リンクへ対応付けることができる。
リンクの一端のノードを「始点ノード」とし、他端のノードを「終点ノード」とする。始点ノードは、リンクの始点を表し、終点ノードは、リンクの終点を表す。始点ノードから終点ノードに向かう方向を「リンクの向き」とする。
被統合リンクの向きは、統合リンクの向きに一致するように統合するものとする。したがって、被統合リンクの始点ノードは、その最上統合階層リンクの始点ノード側に位置し、被統合リンクの終点ノードは、その最上統合階層リンクの終点ノード側に位置する。最上統合階層リンク自体の始点ノードおよび終点ノードは、データ作成者が任意に定める。
図6において、データ作成者が、メッシュM2_1のリンクL2_0の左側のノードを始点ノード、右側のノードを終点ノードと定めると、メッシュM1_2のリンクL1_3,L1_4の左側のノードが始点ノード、右側のノードが終点ノードとなる。図6においては、上記以外の各リンクでより左側にあるノードを始点ノード、より右側にあるノードを終点ノードとなるように定める。
メッシュ内リンクIDは、メッシュ内のリンクを識別するための識別子であり、リンクリストにおけるリンクレコードの並び順によって定める。
最上統合階層リンクの最下層の各被統合リンクには、最上統合階層リンクの向きの順に連続した番号、具体的には0,1,2,・・・が付与される。この番号を、最下層の被統合リンクの「副共通リンクID」という。
最下層以外の統合リンクの副共通リンクIDとしては、前記統合リンクの最下層の被統合リンクで、前記統合リンクの始点ノード側の最下層における被統合リンクの副共通リンクIDが付与される。これによって、最大階層統合リンクでは、副共通リンクIDは必ず「0」となる。最下層で、上層で統合されないリンクの副共通リンクIDは、「0」とする。副共通リンクIDによって、同じ共通リンクIDを有する被統合リンク同士を識別することができる。
図6において、四角で囲まれた数値が副共通リンクIDである。リンクL2_3の最下層の被統合リンクであるリンクL0_18,L0_25,L0_26,L0_27,L0_28には、リンクL2_3の始点ノードから終点ノードに向かう順にそれぞれ、「0」、「1」、「2」、「3」、「4」の副共通リンクIDが付与される。
リンクL1_10の副リンク共通IDとして、その始点ノード側の最下層の被統合リンクL0_18の副共通リンクIDである「0」が付与される。また、リンクL1_11の副リンク共通IDとして、その始点ノード側の最下層の被統合リンクL0_28の副共通リンクIDである「4」が付与される。また、最下層のリンクL0_30,L0_31は、上層で統合されないので、副共通リンクIDとして「0」が付与される。
図7は、道路網データの一例を示す図である。道路網データは、メッシュの道路網を表す。道路網データは、道路網ヘッダ、ノードリスト、リンクリスト、形状リストおよびID管理テーブルを備える。ID管理テーブルは、識別子管理情報に相当する。
道路網ヘッダは、メッシュに存在するノード数およびリンク数、ID管理レコード数、各リストの格納位置およびデータサイズ、ならびに各テーブルの格納位置およびデータサイズなどの道路網データの管理に必要な情報を備える。
ノードリストは、メッシュに存在するノードに関するデータである。ノードリストは、ノードに対応して設けたノードレコードを備える。ノードリストにおけるノードレコードの並び順を、ノードIDとする。ノードIDは、メッシュ内でノードと一対一に対応し、メッシュ内におけるノードの識別に使用される。
ノードレコードは、ノードレコードサイズ、ノード座標、接続リンク数、接続情報、リンク間規制情報、上層ノードIDおよび下層ノードIDを備える。
ノードレコードサイズは、ノードレコードのデータサイズを表す。ノード座標は、ノードの地理的位置を、経度および緯度で表す。接続リンク数は、ノードに接続するリンクの数を表す。接続情報は、ノードに接続するリンクのメッシュ内リンクIDを示す。
たとえば、図6のメッシュM0_2のリンクL0_2における右側のノードの接続情報として、前記ノードに接続するリンクL0_1,L0_2,L0_3のメッシュ内リンクIDが格納される。このように、接続情報によって、リンクの接続関係が判る。
また、接続情報は、ノードに接続するリンクが所属するメッシュを表すメッシュ情報を有する。メッシュ情報は、前記リンクが、当該メッシュ、ならびに当該メッシュの上、右上、右、右下、下、左下、左および左上のメッシュのいずれのメッシュに所属するかを、たとえばそれぞれ0,1,・・・,7,8で表す。たとえば、図6のメッシュM0_2のリンクL0_3における右側のノードに接続するリンクL0_3,L0_5に対しては、当該メッシュを表すメッシュ情報が格納され、リンクL0_6に対しては、右のメッシュを表すメッシュ情報が格納される。このように、接続情報によって、メッシュ間のリンクの接続関係も判る。
リンク間規制情報は、ノードに接続するリンク間の通行に関する規制を表す。上層ノードIDは、当該メッシュを含む上層のメッシュにおける当該ノードに該当するノードのノードIDを表す。上層ノードIDは、経路探索を下層のメッシュから上層のメッシュに遷移するために使用される。該当するノードが存在しない場合は、上層ノードIDとして、空値が格納される。空値は、たとえばノードIDを2バイトで表すとき、「0xFFFF」とする。
下層ノードIDは、当該メッシュに含まれる下層のメッシュにおける当該ノードに該当するノードのノードIDを表す。下層ノードIDは、経路探索を上層のメッシュから下層のメッシュに遷移するために使用される。該当するノードが存在しない場合は、下層ノードIDとして、空値が格納される。空値は、たとえばノードIDを2バイトで表すとき、「0xFFFF」とする。
リンクリストは、当該メッシュに存在するリンクに関するデータである。リンクリストは、前記リンクに対応して設けられたリンクレコードによって構成される。リンクリストにおけるリンクレコードの並び順を、メッシュ内リンクIDとする。メッシュ内リンクIDは、メッシュ内でリンクと一対一に対応し、メッシュ内でのリンクを識別するために使用される。
リンクレコードは、当該リンクの副共通リンクID、始点ノードID、終点ノードID、リンク属性情報および形状レコード格納位置を備える。
最下層における副共通リンクIDは、リンクレコードの並び順によって求めることができるので、最下層のリンクレコードには副共通リンクIDを格納しないものとする。従来、最下層のリンクにおいて、上層で統合されないリンクにもリンクIDを設けていたが、本実施の形態では、前述のように副共通リンクIDを設けないので、データの削減が可能となる。また、最上統合階層リンクの副共通リンクIDは、常に「0」であるので、最上統合階層リンクのリンクレコードには副共通リンクIDを設けないようにする。これによって、データを削減することができる。
始点ノードIDは、当該リンクの始点側のノードである始点ノードのノードIDを表す。当該リンクがある最上統合階層リンクを被統合リンクとするとき、その最上統合階層リンクの始点側に位置するノードを、始点ノードとする。最上統合階層リンク自体の始点ノードは、データ作成者が任意に定める。
終点ノードIDは、当該リンクの終点側のノードである終点ノードのノードIDを表す。当該リンクがある最上統合階層リンクを被統合リンクとするとき、その最上統合階層リンクの終点側に位置するノードを、終点ノードとする。最上統合階層リンク自体の終点ノードは、データ作成者が任意に定める。
リンク属性情報は、当該リンクの道路種別、幅員、レーン数、リンク長、平均旅行時間および通行規制などの当該リンクに関する各種属性を表す。リンク属性情報は、地図を表示するときの道路線の幅および色などの表示態様の決定、経路を探索するときの当該リンクの通行に要するコストの算出、ならびに経路案内などに使用される。
形状レコード格納位置は、当該リンクに対応する形状レコードの形状リストにおける格納位置を表す。形状レコード格納位置は、たとえば、形状リストの先頭から前記形状レコードへ至るまでのバイト数で表される。
リンクレコードは、対応するリンクの最上統合階層番号、共通リンクIDおよび副共通リンクIDによってソートして配置される。リンクレコードは、最上統合階層番号の昇順に配置され、最上統合階層番号が同じリンクレコードは、共通リンクIDの昇順に配置され、最上統合階層番号および共通リンクIDが同じリンクレコードは、副共通リンクIDの昇順に配置される。
図示はしないが、ノードに接続情報を設ける代わりに、リンクの始点ノードに接続するリンクのメッシュ情報およびメッシュ内リンクIDとその数、リンクの終点ノードに接続するリンクのメッシュ情報およびメッシュ内リンクIDとその数を設けてもよい。
図8は、図6に示すメッシュM2_1のリンクリストLL(M2_1)の一例を示す図である。最上統合階層番号が「2」のリンクがN2_1_2個であるとすると、それらのリンク内メッシュID(以下「MID」という場合がある)は、0〜N2_1_2−1をとり、IID2_0=0、IID2_1=1、IID2_5=2、・・・である。
図9は、図6に示すメッシュM2_2のリンクリストLL(M2_2)の一例を示す図である。最上統合階層番号が「2」のリンクがN2_2_2個であるとすると、それらのリンク内メッシュID(MID)は、0〜N2_2_2−1をとり、IID2_2=0、IID2_3=1、IID2_4=2、・・・である。
図10は、図6に示すメッシュM1_2のID管理テーブルIDMT(M1_2)およびメッシュM1_2のリンクリストLL(M1_2)の一例を示す図である。ID管理テーブルIDMT(M1_2)については、後述する。階層番号が「2」の階層では、統合されない最上統合階層番号が「1」のリンクがN1_2_1個であるとすると、それらのリンク内メッシュIDは、0〜N1_2_1−1をとる。残りのリンクが、最上統合階層番号が「2」のリンクであり、N1_2_2個であるとすると、それらのリンク内メッシュID(MID)は、N1_2_1〜N1_2_1+N1_2_2−1をとり、IID1_3=N1_2_1、IID1_4=N1_2_1+1、IID1_14=N1_2_1+2、・・・となる。
図11は、図6に示すメッシュM1_4のID管理テーブルIDMT(M1_4)およびメッシュM1_4のリンクリストLL(M1_4)の一例を示す図である。ID管理テーブルIDMT(M1_4)については、後述する。階層番号が「2」の階層では、統合されない最上統合階層番号が「1」のリンクがN1_4_1個であるとすると、それらのリンク内メッシュID(MID)は、0〜N1_4_1−1をとり、IID1_7=0、IID1_8=1、・・・となる。
残りのリンクが、最上統合階層番号が「2」のリンクであり、N1_4_2個であるとすると、それらのリンク内メッシュID(MID)は、N1_4_1〜N1_4_1+N1_4_2−1をとり、IID1_9=N1_4_1、IID1_10=N1_4_1+1、IID1_11=N1_4_1+2、IID1_12=N1_4_1+3、・・・となる。
図12は、図6に示すメッシュM0_2のID管理テーブルIDMT(M0_2)およびメッシュM0_2のリンクリストLL(M0_2)の一例を示す図である。ID管理テーブルIDMT(M0_2)については、後述する。最上統合階層番号が「0」のリンクがN0_2_0個であるとすると、それらのリンク内メッシュID(MID)は、0〜N0_2_0−1をとり、IID0_0=0、IID0_1=1、・・・となる。
最上統合階層番号が「1」のリンクがN0_2_1個であるとすると、それらのリンク内メッシュID(MID)は、N0_2_0〜N0_2_0+N0_2_1−1をとり、IID0_2=N0_2_0、IID0_3=N0_2_0+1、IID0_4=N0_2_0+2、IID0_5=N0_2_0+3、・・・となる。
残りのリンクが、最上統合階層番号が「2」のリンクであり、N0_2_2個であるとすると、それらのリンク内メッシュID(MID)は、N0_2_0+N0_2_1〜N0_2_0+N0_2_1+N0_2_2−1をとる。
図13は、図6に示すメッシュM0_9のID管理テーブルIDMT(M0_9)およびメッシュM0_9のリンクリストLL(M0_9)の一例を示す図である。最上統合階層番号が「0」のリンクがN0_9_0個であるとすると、それらのリンク内メッシュID(MID)は、0〜N0_9_0−1をとり、IID0_19=0、IID0_20=1、・・・となる。
最上統合階層番号が「1」のリンクがN0_9_1個であるとすると、それらのリンク内メッシュID(MID)は、N0_9_0〜N0_9_0+N0_9_1−1をとり、IID0_21=N0_9_0、IID0_22=N0_9_0+1、IID0_23=N0_9_0+2、IID0_24=N0_9_0+3、・・・となる。
残りのリンクが、最上統合階層番号が「2」のリンクであり、N0_9_2個であるとすると、それらのリンク内メッシュID(MID)は、N0_9_0+N0_9_1〜N0_9_0+N0_9_1+N0_9_2−1をとり、IID0_25=N0_9_0+N0_9_1、IID0_26=N0_9_0+N0_9_1+1、IID0_27=N0_9_0+N0_9_1+2、IID0_28=N0_9_0+N0_9_1+3、IID0_29=N0_9_0+N0_9_1+4、・・・となる。
ここで、図7に戻って、図7に示す形状リストは、当該メッシュに存在するリンクの道路形状を表すデータである。形状リストは、前記リンクに対応して設けられた形状レコードによって構成される。形状レコードは、形状点数および形状点リストを備える。
形状点数は、当該リンクの道路形状を折れ線で表したときの頂点(以下「形状点」という場合がある)の数を表す。道路形状が、始点ノードと終点ノードとを結ぶ直線のときは、形状点数を「0」とする。
形状点リストは、当該リンクの道路形状を折れ線で表し、その折れ線の頂点である形状点の座標を並べたものである。形状点には、始点ノードおよび終点ノードは含まれない。形状点の座標は、その地理的位置を、緯度および経度で表す。形状点の座標は、前の形状点からの相対的な緯度および経度で表してもよい。このとき、最初の形状点の座標は、リンク始点からの相対的な緯度および経度で表す。
図7に示すID管理テーブルは、当該メッシュ内の同じ最上統合階層番号および共通リンクIDを有し、1以上のリンクから成るリンク群を管理するためのテーブルである。ID管理テーブルは、1以上の固定長のID管理レコードを備えて構成される。ID管理レコードは、最上統合階層番号、共通リンクID、先頭副共通リンクIDおよび先頭メッシュ内リンクIDを備える。
最上統合階層番号は、当該レコードが管理対象とするリンク群の最上統合階層番号を表す。共通リンクIDは、当該レコードが管理対象とするリンク群の共通リンクIDを表す。先頭副共通リンクIDは、当該レコードが管理対象とするリンク群の先頭のリンクの副共通リンクIDを表す。先頭副共通リンクIDは、最下層のメッシュにのみ設けるものとする。先頭メッシュ内リンクIDは、当該レコードが管理対象とするリンク群の先頭のリンクのメッシュ内リンクIDを表す。
ID管理レコードは、検索を容易にするために、最上統合階層番号、共通リンクIDおよび先頭副共通リンクIDによってソートして配置される。
ID管理レコードは、最上統合階層番号の昇順に配置され、最上統合階層番号が同じID管理レコードは、共通リンクIDの昇順に配置される。最下層のメッシュでは、さらに最上統合階層番号および共通リンクIDが同じID管理レコードは、先頭副共通リンクIDの昇順に配置される。
リンクリストのリンクレコードは、前述の順にソートして並べられる。メッシュ内リンクIDは、リンクレコードの並び順と同一であるので、ID管理レコードは、先頭メッシュ内リンクIDの昇順に並ぶことになる。
0から、先頭のID管理レコードの先頭メッシュ内リンクID未満のメッシュ内リンクIDを有するリンクは、当該メッシュの階層番号と最上統合階層番号とが一致し、当該メッシュより上層では統合されないリンクである。
最上層のメッシュでは、各リンクについて、共通リンクIDはメッシュ内リンクIDに一致し、副共通リンクIDは「0」であるので、データを削減するために、ID管理テーブルは設けないものとする。
同様に、上層で統合されるリンクが1つもないメッシュでは、各リンクについて、共通リンクIDはメッシュ内リンクIDに一致し、副共通リンクIDは「0」であるので、データを削減するために、ID管理テーブルは設けないものとする。
図10に示すメッシュM1_2のID管理テーブルIDMT(M1_2)において、ID管理レコードR1_2_0は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_0であるリンクL1_3,L1_4によって構成されるリンク群を管理する。
0から、先頭のID管理レコードR1_2_0の先頭メッシュ内リンクIDであるIID1_3未満のメッシュ内リンクIDを有するリンクは、それらの階層番号(=1)と最上統合階層番号(=1)とが一致し、階層番号が「2」以上の階層では統合されないリンクである。
図10に示すメッシュM1_2のID管理テーブルIDMT(M1_2)において、ID管理レコードR1_2_1は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_5であるリンクL1_14によって構成されるリンク群を管理する。ID管理レコードR1_2_1の後には、リンクレコードがL1_14のリンクレコードより後に並ぶ最上統合階層番号が「2」で、同じ共通リンクIDを有するリンク群を管理するためのID管理レコードが、前記リンク群の数だけ並ぶ。
図11に示すメッシュM1_4のID管理テーブルIDMT(M1_4)において、ID管理レコードR1_4_0は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_2であるリンクL1_9によって構成されるリンク群を管理する。
0(=IID1_7)から、先頭のID管理レコードR1_4_0の先頭メッシュ内リンクIDであるIID1_9未満のメッシュ内リンクIDを有するリンクは、それらの階層番号(=1)と最上統合階層番号(=1)とが一致し、階層番号が「2」以上の階層では統合されないリンクである。
図11に示すメッシュM1_4のID管理テーブルIDMT(M1_4)において、ID管理レコードR1_4_1は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_3であるリンクL1_10,L1_11によって構成されるリンク群を管理する。ID管理レコードR1_4_2は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_4であるリンクL1_12によって構成されるリンク群を管理する。ID管理レコードR1_4_2の後には、リンクレコードがL1_12のリンクレコードより後に並ぶ最上統合階層番号が「2」で、同じ共通リンクIDを有するリンク群を管理するためのID管理レコードが、前記リンク群の数だけ並ぶ。
図12に示すメッシュM0_2のID管理テーブルIDMT(M0_2)において、ID管理レコードR0_2_0は、最上統合階層番号が「1」で、かつ共通リンクIDがIID1_0であるリンクL0_2,L0_3によって構成されるリンク群を管理し、前記リンク群の先頭副共通リンクIDが「0」であることを示す。
0(=IID0_0)から、先頭のID管理レコードR0_2_0の先頭メッシュ内リンクIDであるIID0_2未満のメッシュ内リンクIDを有するリンクは、それらの階層番号(=0)と最上統合階層番号(=0)とが一致し、階層番号が「1」以上の階層では統合されないリンクである。
図12に示すメッシュM0_2のID管理テーブルIDMT(M0_2)において、ID管理レコードR0_2_1は、最上統合階層番号が「1」で、かつ共通リンクIDがIID1_2であるリンクL0_4,L0_5によって構成されるリンク群を管理し、前記リンク群の先頭副共通リンクIDが「0」であることを示す。ID管理レコードR1_2_1の後には、リンクレコードがL0_5のリンクレコードより後に並ぶ最上統合階層番号が「1」で、同じ共通リンクIDを有するリンク群を管理するためのID管理レコードが、前記リンク群の数だけ並ぶ。さらに、その後に最上統合階層番号が「2」で、同じ共通リンクIDを有するリンク群を管理するためのID管理レコードが、前記リンク群の数だけ並ぶ。
図13に示すメッシュM0_9のID管理テーブルIDMT(M0_9)において、ID管理レコードR0_9_0は、最上統合階層番号が「1」で、かつ共通リンクIDがIID1_7であるリンクL0_21,L0_22によって構成されるリンク群を管理し、前記リンク群の先頭副共通リンクIDが「0」であることを示す。
0(=IID0_19)から、先頭のID管理レコードR0_9_0の先頭メッシュ内リンクIDであるIID0_21未満のメッシュ内リンクIDを有するリンクは、それらの階層番号(=0)と最上統合階層番号(=0)とが一致し、階層番号が「1」以上の階層では統合されないリンクである。
図13に示すメッシュM0_9のID管理テーブルIDMT(M0_9)において、ID管理レコードR0_9_1は、最上統合階層番号が「1」で、かつ共通リンクIDがIID1_8であるリンクL0_23,L0_24によって構成されるリンク群を管理し、前記リンク群の先頭副共通リンクIDが「0」であることを示す。ID管理レコードR0_9_1の後には、リンクレコードがL0_24のリンクレコードより後に並ぶ最上統合階層番号が「1」で、同じ共通リンクIDを有するリンク群を管理するためのID管理レコードが、前記リンク群の数だけ並ぶ。
図13に示すメッシュM0_9のID管理テーブルIDMT(M0_9)において、ID管理レコードR0_9_2は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_3であるリンクL0_25,L0_26,L0_27,L0_28によって構成されるリンク群を管理し、前記リンク群の先頭副共通リンクIDが「1」であることを示す。
図13に示すメッシュM0_9のID管理テーブルIDMT(M0_9)において、ID管理レコードR0_9_3は、最上統合階層番号が「2」で、かつ共通リンクIDがIID2_4であるリンクL0_29によって構成されるリンク群を管理し、前記リンク群の先頭副共通リンクIDが「4」であることを示す。ID管理レコードR0_9_3の後には、リンクレコードがL0_29のリンクレコードより後に並ぶ最上統合階層番号が「2」で、同じ共通リンクIDを有するリンク群を管理するためのID管理レコードが、前記リンク群の数だけ並ぶ。
上記以外で、最下層の被統合リンクが、あるメッシュから隣接する他のメッシュへ出て、再び元のメッシュへ戻る場合は、被統合リンクの最上統合階層番号および共通リンクIDが同じであるが、先頭副共通リンクIDおよび先頭メッシュ内リンクIDが異なる、2つのID管理レコードが発生することがある。
図14は、リンクL2_w0の最下層の被統合リンクが、メッシュM0_uから、隣接するメッシュM0_vへ出て再びメッシュM0_uへ戻る例を示す図である。図15は、メッシュM0_uのID管理テーブルIDMT(M0_u)およびメッシュM0_uのリンクリストLL(M0_u)の一例を示す図である。
図15に示すメッシュM0_uのID管理テーブルIDMT(M0_u)において、ID管理レコードR0_u_0と、ID管理レコードR0_u_1とでは、最上統合階層番号(=2)および共通リンクID(=IID2_w0)が同じである。しかし、ID管理レコードR0_u_0と、ID管理レコードR0_u_1とでは、先頭副共通リンクIDが異なっており、それぞれ「0」、「7」であり、また先頭メッシュ内リンクIDも異なっており、それぞれIID0_u0、IID0_u3である。
リンクレコードおよびID管理レコードは、前述のようにソートされているので、リンクのメッシュ内リンクIDが判っていれば、ID管理レコードの先頭メッシュ内リンクIDを、先頭のID管理レコードから順に調べることによって、そのリンクの最上統合階層番号、共通リンクIDおよび副共通リンクIDが判る。
また、リンクの最上統合階層番号、共通リンクIDおよび副共通リンクIDが判れば、先頭のID管理レコードから順に調べることによって、そのリンクのメッシュ内リンクIDを求めることができる。
以下に、図13を用いて、具体的な例を説明する。リンクL0_20のメッシュ内リンクID(IID0_20)が判っているとき、リンクL0_20のメッシュ内リンクID(IID0_20)は、先頭のID管理レコードR0_9_0の先頭メッシュ内リンクID(=IID0_21)より小さいので、リンクL0_20は、階層番号が「1」以上で統合されず、リンクL0_20の最上統合階層番号は「0」、共通リンクIDはIID0_20であることが判る。
リンクL0_22のメッシュ内リンクID(IID0_22)が判っているとき、リンクL0_22のメッシュ内リンクID(IID0_22)は、ID管理レコードR0_9_0の先頭メッシュ内リンクID(=IID0_21)より大きく、ID管理レコードR0_9_1の先頭メッシュ内リンクID(=IID0_23)より小さいので、リンクL0_22は、ID管理レコードR0_9_0によって管理されることが判り、リンクL0_22の最上統合階層番号は「1」、共通リンクIDはIID1_7であることが判る。
また、先頭副共通リンクIDが「0」であるので、リンクL0_21の副共通リンクIDは「0」である。また、リンクL0_22のリンクレコードは、リンクL0_21の次にあるので、リンクL0_22の副共通リンクIDは「1」であることが判る。
最上統合階層番号が「2」、共通リンクIDがIID2_3であると判っているとき、最上統合階層番号、共通リンクIDが前記と一致するID管理レコードR0_9_2とその次にあるID管理レコードR0_9_3の先頭メッシュ内リンクIDから、IID0_25、IID0_29が得られ、最上統合階層番号が「2」、共通リンクIDがIID2_3のリンクは、メッシュ内リンクIDから、IID0_25〜IID0_29−1のリンクL0_25,L0_26,L0_27,L0_28であることが判る。
さらに、副共通リンクIDが「3」と判っている場合は、ID管理レコードR0_9_2の先頭副共通リンクIDが「1」、先頭メッシュ内リンクIDがIID0_25であるので、リンクL0_25の副共通リンクIDが「1」であり、副共通リンクIDが「3」であるリンクは、リンクL0_27であることが判る。
図16は、出発地から目的地までの好適な経路を求めて、求めた経路を地図上に重畳して表示させる処理の処理手順を示すフローチャートである。図16に示すフローチャートの各処理は、制御部11によって実行される。図16に示すフローチャートの処理は、使用者によって入力部22が操作されて目的地が入力されると開始され、ステップa1に移行する。
ステップa1において、制御部11は、目的地を設定する。具体的には、制御部11は、使用者によって入力部22が操作され、目的地として入力された施設の名称に基づいて、その施設の近傍のリンクを、検索情報から求める。求めたリンクを目的地リンクとする。たとえば、図6に示すメッシュM0_10のリンクL0_31を目的地リンクとする。
ステップa2において、制御部11は、出発地を設定する。具体的には、制御部11は、マップマッチング処理によって得られた現在位置が位置するリンクを求める。求めたリンクを出発地リンクとする。たとえば、図6に示すメッシュM0_2のリンクL0_2を出発地リンクとする。
ステップa3において、制御部11は、出発地リンクから目的地リンクへ至る経路として、コストが最小となる経路を求める経路探索を行う。経路探索には、たとえばダイクストラ法が用いられる。使用される道路網データは、出発地リンクと目的地リンクとの距離によって異なる。出発地リンクと目的地リンクとの距離が短距離の場合は、図3に示す階層番号が0(L0)のメッシュの道路網データが用いられる。出発地リンクと目的地リンクとの距離が中距離の場合は、図3および図4に示す階層番号が0(L0)、1(L1)のメッシュの道路網データが用いられる。出発地リンクと目的地リンクとの距離が長距離の場合は、図3〜図5に示す階層番号が0(L0)、1(L1)、2(L2)のメッシュの道路網データが用いられる。たとえば、出発地リンクと目的地リンクとの距離が長距離の場合には、制御部11は、以下に示すように、階層番号が0(L0)、1(L1)、2(L2)、1(L1)、0(L0)の順に探索を進める。
階層番号が0(L0)のメッシュの出発地リンクから、メッシュの境界上のノードであって、空値でない上層ノードIDを有するノードへの経路およびコストを求める。
前記上層ノードIDを示す階層番号が1(L1)のノードから、階層番号が1(L1)のメッシュの境界上のノードであって、空値でない上層ノードIDを有するノードへの経路およびコストを求める。
前記上層ノードIDを示す階層番号が2(L2)のノードから、階層番号が2(L2)のメッシュの境界上のノードであって、空値でない下層ノードIDを有するノードへの経路およびコストを求める。
前記上層ノードIDを示す階層番号が1(L1)のノードから、階層番号が1(L1)のメッシュの境界上のノードであって、空値でない下層ノードIDを有するノードへの経路およびコストを求める。
前記上層ノードIDを示す階層番号が0(L0)のノードから、目的地リンクへの経路およびコストを求める。
前記経路の組み合わせの中から、出発地リンクから目的地リンクへのコストが最小となる経路を選択して探索経路とする。
探索経路を構成するリンクを「経路リンク」という。経路探索の結果、たとえば、図6において、参照符号「51」〜「56」で示す経路、すなわちL0_2,L0_3,L1_1,L2_0,L2_1,L1_9,L1_10,L1_7,L0_30,L0_31の経路リンクの列からなる経路が得られる。経路探索の結果として得られた経路を表す情報は、中間経路情報として、制御部11のメモリに格納する。
図17は、中間経路情報のデータ構造の一例を示す図である。中間経路情報は、中間経路情報ヘッダおよび中間経路リンクレコードを備える。中間経路情報ヘッダは、経路リンクの数などを表す。中間経路リンクレコードは、経路リンクを表す。中間経路リンクレコードは、階層番号、メッシュ番号、メッシュ内リンクID、始点ノード座標、終点ノード座標および経路方向を含む。
階層番号は、当該経路リンクが属する階層の番号を表す。メッシュ番号は、当該経路リンクが属するメッシュの番号を表す。メッシュ内リンクIDは、当該経路リンクのメッシュ内のリンクを識別するための識別子を表す。始点ノード座標は、当該経路リンクの始点ノードの位置を、経度および緯度で表す。終点ノード座標は、当該経路リンクの終点ノードの位置を、経度および緯度で表す。経路方向は、リンクの方向に対する経路の方向を示す。経路が当該経路リンクの始点ノードから終点ノードへ向かうときの経路方向は、順方向とする。経路が当該経路リンクの終点ノードから始点ノードへ向かうときの経路方向は、逆方向とする。中間経路リンクレコードは、出発地リンクから目的地リンクへ向かう順に並べる。
表1に、前述のL0_2,L0_3,L1_1,L2_0,L2_1,L1_9,L1_10,L1_7,L0_30,L0_31の経路リンクに対するそれぞれの中間経路リンクレコードの設定値を示す。
ここで、図16に示すフローチャートに戻り、ステップa4において、制御部11は、メッシュ内リンクIDで表された経路リンクを、共通リンクIDおよび副共通リンクIDで表すように変換する。具体的には、制御部11は、ステップa3で得られた中間経路情報の各中間経路リンクレコードのメッシュ内リンクID以外の階層番号、メッシュ番号、始点ノード座標、終点ノード座標および経路方向に、メッシュ内リンクIDから変換して得られた共通リンクID、副共通リンクIDおよび次副共通リンクIDを追加して経路情報を生成する。生成した経路情報は、制御部11のメモリに格納する。
図18は、経路情報のデータ構造の一例を示す図である。経路情報は、経路情報ヘッダおよび経路リンクレコードを備える。経路情報ヘッダは、経路リンクの数などを表す。経路リンクレコードは、経路リンクを表す。経路リンクレコードは、階層番号、メッシュ番号、始点ノード座標、終点ノード座標、経路方向、最上統合階層番号、当該経路リンクの共通リンクID、副共通リンクIDおよび次副共通リンクIDを含む。
階層番号は、当該経路リンクが属する階層の番号を表す。メッシュ番号は、当該経路リンクが属するメッシュの番号を表す。始点ノード座標は、当該経路リンクの始点ノードの位置を、経度および緯度で表す。終点ノード座標は、当該経路リンクの終点ノードの位置を、経度および緯度で表す。経路方向は、リンクの方向に対する経路の方向を示す。最上統合階層番号は、当該経路リンクの最上統合階層の番号を表す。次副共通リンクIDは、当該経路リンクと同一階層に存在するリンクであって、当該経路リンクに接続し、当該経路リンクと同一の最上統合階層番号と共通リンクIDとを有するリンクの副共通リンクIDである。
中間経路情報の各中間経路リンクレコードに対して、中間経路リンクレコードが示す階層番号およびメッシュ番号の道路網データを読み取る。道路網データに含まれるID管理テーブルから、経路リンクの最上統合階層番号、共通リンクIDおよび副共通リンクIDを求める。求めた最上統合階層番号、共通リンクID、副共通リンクIDおよび次副共通リンクIDを、中間経路リンクレコードのメッシュ内リンクID以外の階層番号、メッシュ番号、始点ノード座標、終点ノード座標および経路方向に追加し、経路情報の経路リンクレコードを生成する。
前述のようにして生成された経路情報は、経路リンクを最上統合階層番号、共通リンクID、副共通リンクIDおよび次副共通リンクIDで表す。これらの最上統合階層番号、共通リンクID、副共通リンクIDおよび次副共通リンクIDは、描画しようとするメッシュにおけるメッシュ内リンクIDに依存しないので、経路リンクを任意の階層のリンクに対応付けることが容易となる。表2に、経路リンクレコードの一例を示す。
たとえば、階層番号が1の階層のメッシュM1_4の経路探索で得られた経路リンクL1_10のリンクレコードである表2の経路リンクレコード6は、階層番号が1の階層のメッシュM1_4では最上統合階層番号が2、共通リンクIDがIID2_3、副共通リンクIDが0のリンクL1_10が該当する経路リンクであることを示す。
また、階層番号が0の階層のメッシュM0_9では、最上統合階層番号が2、共通リンクIDがIID2_3、副共通リンクIDが0〜3のリンクL0_25,L0_26,L0_27が該当する経路リンクであることを示す。
また、階層番号が2の階層のメッシュM2_2では、最上統合階層番号が2、共通リンクIDがIID2_3、副共通リンクIDが0のリンクL2_3が該当する経路リンクであることを示す。ただし、この場合は始点ノード座標および終点ノード座標を利用して、リンクL2_3上の該当する箇所を特定する。
ここで、再び図16に示すフローチャートに戻り、ステップa5において、制御部11は、地図を表示させる。具体的には、制御部11は、使用者によって入力部22が操作されて入力された地図表示縮尺と、マップマッチング処理によって得られた現在位置とに基いて、所要の階層のメッシュを決定する。制御部11は、決定したメッシュの地図データを地図情報記憶部12から読み取る。描画処理部23によって、前記決定したメッシュの背景、道路および名称を描画させる。前記決定したメッシュの地図画像を生成して、表示部24に与える。これによって、制御部11は、表示部24に地図を表示させる。地図情報記憶部12から読み取る地図データは、たとえば、大縮尺では、図3に示す階層番号が0(L0)の階層のメッシュ、中縮尺では図4に示す階層番号が1(L1)の階層のメッシュ、小縮尺では図5に示す階層番号が2(L2)の階層のメッシュであり、現在位置を含むメッシュとその周辺のメッシュを含むデータである。
ステップa6において、制御部11は、経路を表示させる。具体的には、制御部11は、経路情報の各経路リンクレコードが表す経路リンクを、ステップa5で生成した地図画像上に強調して描画し、その地図画像を表示部24に与える。これによって、制御部11は、表示部24に経路を表示させる。ステップa6の処理が終了すると、全ての処理手順が終了する。
図19〜図21は、図16のステップa4における経路情報の生成処理に関する詳細な処理手順を示すフローチャートである。本実施の形態では、中間経路情報の中間経路リンクレコードそれぞれについて、図19〜図21の各処理を行う。以下の説明で用いる各変数は、制御部11のメモリに設けるものとする。
図19〜図21に示すフローチャートの各処理は、制御部11によって実行される。図19〜図21に示すフローチャートの処理は、図16のステップa3の処理が終了すると開始され、ステップb1に移行する。
ステップb1において、制御部11は、中間経路リンクレコードの階層番号、メッシュ番号、メッシュ内リンクID、始点ノード座標、終点ノード座標および経路方向を求め、それぞれを変数LV,MN,IID,(Xs,Ys),(Xe,Ye),DIRに格納する。
ステップb2において、制御部11は、経路リンクレコードの階層番号、メッシュ番号、始点ノード座標、終点ノード座標および経路方向に、変数LV,MN,(Xs,Ys),(Xe,Ye),DIRの値を設定する。
ステップb3において、制御部11は、変数LVが示す階層番号の階層の変数MNが示すメッシュ番号のメッシュの道路網データを、地図情報記憶部12から取得して、制御部11のメモリに格納する。既に道路網データを取得している場合は、取得している道路網データを使用する。
ステップb4において、制御部11は、ステップa3で取得した道路網データにID管理テーブルが無いか否かを判断する。道路網データにID管理テーブルが無いと判断された場合は、ステップb5に移行し、道路網データにID管理テーブルがあると判断された場合は、ステップb6に移行する。変数LVが示す階層番号の階層が最上層のときは、ID管理テーブルは設けないので、ステップb5に移行することになる。
ステップb5において、制御部11は、中間経路リンクレコードに対応する経路リンクレコードの最上統合階層番号、共通リンクID、副共通リンクID、次副共通リンクIDに、変数LVの値、変数IIDの値、0、空値を設定する。空値としては、たとえば次副共通リンクIDを1バイト長として「0xFF」を設定する。ステップb5の処理を終了した後は、中間経路リンクレコードに関する全ての処理手順を終了する。
ステップb6において、制御部11は、ID管理レコードを指定する変数Nの値を0に初期化する。ID管理テーブルの先頭を0番目とし、ID管理テーブルのN(Nは自然数)番目のID管理レコードを「ID管理レコード[N]」で表す。ステップb6の処理が終了すると、図20のステップb7に移行する。
図20のステップb7において、制御部11は、経路リンクを管理対象とするID管理レコード[N]から、最上統合階層番号、共通リンクID、先頭副共通リンクID、先頭メッシュ内リンクIDを求め、それぞれを変数LVmax,CID,SIDtop,IIDtopに格納する。最下層以外のメッシュでは、先頭副共通リンクIDがないので、変数SIDtopに空値を格納する。空値としては、たとえば次副共通リンクIDを1バイト長として「0xFF」を設定する。
ステップb8において、制御部11は、変数Nが示すレコード番号の次にあるID管理レコード、すなわちID管理レコード[N+1]から、先頭メッシュ内リンクIDを求め、それを変数IIDtop’に格納する。ID管理レコード[N]が最後のID管理レコードのときは、本ステップでは変数IIDtop’に当該メッシュのリンク数を格納する。
ステップb9において、制御部11は、当該経路リンクがID管理レコード[N]の管理対象か否かを判断する。ID管理レコード[N]の管理対象であると判断された場合は、ステップb10に移行し、ID管理レコード[N]の管理対象ではないと判断された場合は、ステップb11に移行する。制御部11は、変数IIDの値が、変数IIDtopの値以上で、変数IIDtop’の値未満であるときは、当該経路リンクを管理対象と判断する。
ステップb10において、制御部11は、当該経路リンクが上層で統合されないか否かを判断する。当該経路リンクが上層で統合されないと判断された場合は、図19のステップb5に戻り、当該経路リンクが上層で統合されると判断された場合は、図21のステップb13に移行する。変数Nの値が0であり、かつ変数IIDの値が変数IIDtopの値未満である場合は、当該経路リンクが上層で統合されないと判断される。変数Nの値が0であり、かつ変数IIDの値が変数IIDtopの値未満でない、すなわち変数IIDの値が変数IIDtopの値以上である場合は、当該経路リンクが上層で統合されると判断される。
ステップb11において、制御部11は、変数Nの値を1増加させ、変数Nが次のID管理レコードを指定するようにする。
ステップb12において、制御部11は、変数Nの値がID管理レコード数未満(N<ID管理レコード数)であるか否かを判断する。変数Nの値がID管理レコード数未満(N<ID管理レコード数)であると判断された場合は、ステップb7に戻り、変数Nの値がID管理レコード数以上(N≧ID管理レコード数)であると判断された場合は、中間経路リンクレコードに関する全ての処理手順を終了する。
図21のステップb13において、制御部11は、当該中間経路リンクレコードに対応する経路リンクレコードの最上統合階層番号、共通リンクIDのそれぞれに、変数LVmaxの値、変数CIDの値を設定する。
ステップb14において、制御部11は、変数LVが示す階層番号が最下層の階層番号であるか否か、すなわち変数LVが示す階層が最下層であるか否かを判断する。変数LVが示す階層が最下層であると判断された場合は、ステップb15に移行し、変数LVが示す階層が最下層ではないと判断された場合は、ステップb17に移行する。
ステップb14において、変数LVが示す階層が最下層である、すなわち当該経路リンクが最下層であると判断された場合、当該経路リンクの副共通リンクIDは、変数SIDtopの値からメッシュ内リンクIDの順に付与されている。したがって、ステップb15において、制御部11は、当該中間経路リンクレコードに対応する経路リンクレコードの副共通リンクIDに、以下の式(1)によって求めた値を設定する。
SIDtop+(IID−IIDtop) …(1)
ステップb16において、制御部11は、最下層次副共通リンクIDを求める。具体的には、制御部11は、ノードテーブルを参照して、当該経路リンクの経路方向が順方向側のノードに接続する各リンクのメッシュ内リンクIDを求める。次に、制御部11は、ID管理テーブルを参照して、前記各リンクの最上統合階層番号、共通リンクIDを求める。
次に、制御部11は、前記各リンクの中で最上統合階層番号、共通リンクIDが、それぞれ、変数LVmax,CIDに一致するリンクを検索する。制御部11は、一致するリンクが検出された場合、すなわち当該経路リンクの経路方向が順方向側のノードに接続するリンクがある場合は、次副共通リンクIDを、経路リンクレコードの副共通リンクIDに1を加えた値とする。制御部11は、一致するリンクが検出されなかった場合、すなわち当該経路リンクの経路方向が順方向側のノードに接続するリンクがない場合は、次副共通リンクIDを空値とする。最下層における副共通リンクIDは連続した番号となるので、前述のように1を加えることによって、次副共通リンクIDを求めることができる。
制御部11は、当該経路リンクの経路方向が順方向側のノードに接続するリンクが、隣接するメッシュに存在する場合は、隣接するメッシュの道路網データを取得し、取得した道路網データを用いて、前述と同様の処理を行う。
当該経路リンクの経路方向が順方向側のノードに接続する各リンクの最上統合階層番号および共通リンクIDを求める処理では、変数LVが示す階層番号の階層が最上層である場合は、最上統合階層番号がLVとされ、共通リンクIDが前記各リンクのメッシュ内リンクIDとされる。
また、変数LVが示す階層番号の階層が最上層でない場合は、当該経路リンクの経路方向が順方向側のノードに接続するリンクのリンク内メッシュIDの値が変数IIDに格納され、図19のステップb5、図20のステップb7〜b9,b11,b12と同様の処理が行われる。
そして、図20のステップb9において、変数IIDが示すリンクが管理対象となったときに、図20のステップb7で得られた変数LVmax,CIDが、変数IIDの示すリンクの最上統合階層番号、共通リンクIDとされる。ステップb16の処理が終了した後は、ステップb19に移行する。
ステップb14において、変数LVが示す階層が最下層でない、すなわち当該経路リンクが最下層でないと判断された場合、当該経路リンクの副共通リンクIDは、そのリンクレコード内に格納されている。したがって、ステップb17において、制御部11は、変数IIDが示すメッシュ内リンクIDのリンクレコードをリンクリストから取得する。制御部11は、取得したリンクレコード内の副共通リンクIDを求め、当該中間経路リンクレコードに対応する経路リンクレコードの副共通リンクIDに、求めた副共通リンクIDを設定する。
ステップb18において、制御部11は、次副共通リンクIDを求める。具体的には、ノードテーブルを参照して、当該経路リンクの経路方向が順方向側のノードに接続する各リンクについて、そのメッシュ内リンクIDを求める。次に、ID管理テーブルを参照して、前記各リンクの最上統合階層番号、共通リンクIDを求める。次に、前記各リンクの中で最上統合階層番号、共通リンクIDが、それぞれ、変数LVmax,CIDに一致するリンクを特定し、特定したリンクのリンクレコードの副共通リンクIDを次副共通リンクIDとして求める。該当するリンクが無い場合は、次副共通リンクIDは、空値とする。空値は、たとえば、次副共通リンクIDを1バイト長とするとき、「0xFF」とする。当該経路リンクレコードに接続するリンクが、隣接するメッシュに存在する場合は、隣接するメッシュの道路網データを取得し、取得した道路網データを用いて、前述と同様の処理を行う。ステップb18の処理が終了した後は、ステップb19に移行する。
ステップb19において、制御部11は、ステップb16またはステップb18で求めた次副共通リンクIDを、経路リンクレコードの次副共通リンクIDに設定する。ステップb19の処理が終了した後は、当該中間経路リンクレコードに関する全ての処理手順を終了する。
以下に、表1に示す中間経路リンクレコードから表2に示す経路リンクレコードへの変換について、前述の図19〜図21に示すフローチャートの各処理の具体例を示して説明する。
中間経路リンクレコード0から経路リンクレコード0への変換について説明する。経路リンクL0_2の中間経路リンクレコード0に対して、図19のステップb1,b2において、中間経路リンクレコード0の階層番号、メッシュ番号、始点ノード座標、終点ノード座標および経路方向が経路リンクレコード0に格納され、以下の処理によって、残りの最上統合階層番号、共通リンクID、副共通リンクIDおよび次副共通リンクIDが経路リンクレコード0に格納される。
ステップb3の処理を終了した後、変数LVが示す階層番号が0で、ID管理テーブルが存在するので、ステップb4,b6を経由し、ステップb7において、ID管理レコード[0](図12に示すメッシュM0_2のID管理テーブルにおけるID管理レコードR0_2_0)から、変数LVmaxが1、変数CIDがIID1_0、変数SIDtopが0、変数IIDtopがIID0_2となる。また、ステップb8において、ID管理レコード[1](図12に示すメッシュM0_2のID管理テーブルにおけるID管理レコードR0_2_1)から、変数IIDtop’がIID0_4となる。
ステップb9において、変数IIDの値(=IID0_2)が、変数IIDtopの値(=IID0_2)以上で、変数IIDtop’の値(=IID0_4)未満であることから、当該経路リンクL0_2は、ID管理レコード[0]の管理対象であると判断する。
ステップb10において、変数Nは0であるが、変数IIDの値(=IID0_2)は、変数IIDtopの値(=IID0_2)未満ではないので、上層で統合されると判断される。
図21のステップb13において、経路リンクレコード0の最上統合階層番号に変数LVmaxの値(=1)を格納し、共通リンクIDに変数CIDの値(=IID1_0)を格納する。
ステップb14において、変数LVが0であり、最下層であるので、ステップb15において、経路リンクレコード0の副共通リンクIDに、以下の式(2)によって求めた値0を設定する。
SIDtop(=0)+(IID(=IID0_2)
−IIDtop(=IID0_2)) …(2)
ステップb16において、当該経路リンクL0_2の経路の順方向側のノードに接続するリンク(L0_1,L0_3)のメッシュ内リンクIDを求め、メッシュ内リンクIDに基づいて、それぞれの最上統合階層番号、共通リンクIDを図12に示すメッシュM0_2のID管理テーブルIDMT(M0_2)から求める。最上統合階層番号、共通リンクIDが経路リンクL0_2と同一であるリンクL0_3が見つかり、経路リンクレコード0の副共通リンクID(=0)に1を加えた値(=1)を次副共通リンクIDとし、ステップb19において、経路リンクレコード0の次副共通リンクIDに格納する。
以上のような処理を行うことによって、中間経路リンクレコード0から経路リンクレコード0に変換される。
次に、中間経路リンクレコード1から経路リンクレコード1への変換について説明する。経路リンクL0_3の中間経路リンクレコード1に対する処理は、中間経路リンクレコード0と同様であるが、ステップb16において、当該経路リンクL0_3の経路の順方向側のノードに接続するリンク、すなわちリンクL0_5,L0_6の最上統合階層番号、共通リンクIDは、当該経路リンクL0_3の最上統合階層番号、共通リンクIDに一致しないので、次副共通リンクIDを空値とする。リンクL0_6は、隣接するメッシュM0_3に属するので、メッシュM0_3の道路網データを取得して、最上統合階層番号、共通リンクIDを求める。
次に、中間経路リンクレコード2から経路リンクレコード2への変換について説明する。経路リンクL1_1は、経路リンクL1_7と同様に上層で統合されないので、後述の中間経路リンクレコード7から経路リンクレコード7への変換の処理と同様にして、中間経路リンクレコード2から経路リンクレコード2に変換される。
次に、中間経路リンクレコード3から経路リンクレコード3への変換について説明する。経路リンクL2_0の中間経路リンクレコード3に対して、ステップb1,b2において、中間経路リンクレコード3の階層番号、メッシュ番号、始点ノード座標、終点ノード座標および経路方向が経路リンクレコード3に格納され、以下の処理によって、残りの最上統合階層番号、共通リンクID、副共通リンクIDおよび次副共通リンクIDが経路リンクレコード3に格納される。
ステップb3の処理を終了した後、変数LVが示す階層番号が2で、最上層にはID管理テーブルがないので、ステップb4からステップb5へ移行し、ステップb5において、経路リンクレコード3の最上統合階層番号、共通リンクID、副共通リンクID、次副共通リンクIDのそれぞれに、変数LVの値(=2)、変数IIDの値(=IID2_0)、0、空値を設定する。以上のような処理を行うことによって、中間経路リンクレコード3から経路リンクレコード3に変換される。
次に、中間経路リンクレコード4から経路リンクレコード4への変換について説明する。経路リンクL2_1の中間経路リンクレコード4に対して、中間経路リンクレコード3の場合と同様にして、中間経路リンクレコード4から経路リンクレコード4に変換される。
次に、中間経路リンクレコード5から経路リンクレコード5への変換について説明する。経路リンクL1_9の中間経路リンクレコード5に対して、ステップb1からステップb14に至るまでは、中間経路リンクレコード0の変換と同様の処理を行う。ステップb14において、変数LVが示す階層番号が1であり、最下層ではないので、ステップb17に移行する。ステップb17において、IIDが示すメッシュ内リンクID(IID1_9)のリンクレコードを、図11に示すメッシュM1_4のリンクリストLL(M1_4)から取得し、取得したリンクレコードの副共通リンクIDを経路リンクレコード5の副共通リンクIDに格納する。
ステップb18において、当該経路リンクL1_9の経路の順方向側のノードに接続するリンク(L1_10)のメッシュ内リンクIDを求め、メッシュ内リンクIDに基づいて、それぞれの最上統合階層番号、共通リンクIDを図11に示すメッシュM1_4のID管理テーブルIDMT(M1_4)から求める。これによって、最上統合階層番号は2、共通リンクIDはIID2_3が得られるが、経路リンクL2_2とは異なるので、次副共通リンクIDを空値とし、ステップb19において、経路リンクレコード5の次副共通リンクIDに格納する。以上のような処理を行うことによって、中間経路リンクレコード5から経路リンクレコード5に変換される。
次に、中間経路リンクレコード6から経路リンクレコード6への変換について説明する。経路リンクL1_10の中間経路リンクレコード6に対して、ステップb1からステップb18に至るまでは、中間経路リンクレコード5から経路リンクレコード5への変換と同様にして処理を行う。
ステップb18において、当該経路リンクL1_10の経路の順方向側のノードに接続するリンク(L1_7,L1_11)のメッシュ内リンクIDを求め、メッシュ内リンクIDに基づいて、それぞれの最上統合階層番号、共通リンクIDを図11に示すメッシュM1_4のID管理テーブルIDMT(M1_4)から求める。
これによって、最上統合階層番号、共通リンクIDが経路リンクL1_10と同一であるリンクL1_11が見つかり、リンクL1_11のメッシュ内リンクIDのリンクレコードを、図11に示すメッシュM1_4のリンクリストLL(M1_4)から取得し、取得したリンクレコードの副共通リンクIDを経路リンクレコード6の副共通リンクIDに格納する。
ステップb19において、経路リンクレコード6の次副共通リンクIDに格納する。以上のような処理を行うことによって、中間経路リンクレコード6から経路リンクレコード6に変換される。
次に、中間経路リンクレコード7から経路リンクレコード7への変換について説明する。経路リンクL1_7の中間経路リンクレコード7に対して、ステップb1からステップb10に至るまでは、中間経路リンクレコード6から経路リンクレコード6への変換と同様にして処理を行う。ステップb10において、変数Nが0のとき、IIDの値(=IID1_7)は、ID管理レコードR1_4_0から求めた変数IIDtopの値(=IID1_9)未満であるので、上層で統合されないと判断される。ステップb5において、経路リンクレコード7の最上統合階層番号、共通リンクID、副共通リンク番号、次副共通リンク番号に、それぞれ変数LVの値、変数IIDの値、0、空値を格納する。以上のような処理を行うことによって、中間経路リンクレコード7から経路リンクレコード7に変換される。
次に、中間経路リンクレコード8から経路リンクレコード8への変換について説明する。経路リンクL0_30は、経路リンクL1_7と同様に、上層で統合されないので、中間経路リンクレコード7から経路リンクレコード7へ変換の処理と同様にして、中間経路リンクレコード8から経路リンクレコード8に変換される。
次に、中間経路リンクレコード9から経路リンクレコード9への変換について説明する。経路リンクL0_31は、経路リンクL1_7と同様に、上層で統合されないので、中間経路リンクレコード7から経路リンクレコード7への変換の処理と同様にして、中間経路リンクレコード9から経路リンクレコード9に変換される。
図22〜図24は、図16のステップa6における経路表示に関する処理の詳細な処理手順を示すフローチャートである。以下の説明で用いる各変数は、制御部11のメモリに設けるものとする。
図22〜図24に示すフローチャートの各処理は、制御部11によって実行される。図22〜図24に示すフローチャートの処理は、図16のステップa5の処理が終了すると開始され、ステップc1に移行する。
ステップc1において、制御部11は、経路情報から経路リンクレコードを順に取得する。制御部11は、取得した経路リンクレコードから、階層番号、メッシュ番号、始点ノード座標X、始点ノード座標Y、終点ノード座標X、終点ノード座標Y、経路方向、最上統合階層番号、共通リンクID、副共通リンクIDおよび次副共通リンクIDを求め、それぞれを変数LV_D,MN_D,Xs,Ys,Xe,Ye,DIR,LVmax_D,CID_D,SID_D,NSID_Dに格納する。また、制御部11は、経路リンクレコードの取得数を計数する。
ステップc2において、制御部11は、描画が必要か否かを判断する。描画が必要であると判断された場合は、ステップc3に移行し、描画が必要ではないと判断された場合は、図24のステップc19に移行する。
さらに具体的に述べると、経路リンクを上層に描画するとき、すなわち、図16のステップa5で描画したメッシュの階層が変数LV_Dよりも上位のときは、前記メッシュが、変数LV_Dが示す階層番号および変数MN_Dが示すメッシュ番号のメッシュを含まない場合、図16のステップa5で描画したメッシュは当該経路リンクを含まないので、当該経路リンクは描画する必要がないとして、図24のステップc19に移行する。前記メッシュが、変数LV_Dが示す階層番号および変数MN_Dが示すメッシュ番号のメッシュを含む場合は、ステップc3に移行する。
また、経路リンクを下層または同一階層に描画するとき、すなわち、図16のステップa5で描画したメッシュの階層が変数LV_Dよりも下位または同一階層のときは、前記メッシュが、変数LDV_Dが示す階層番号および変数MN_Dが示すメッシュ番号のメッシュに含まれない場合、図16のステップa5で描画したメッシュは当該経路リンクを含まないので、当該経路リンクは描画する必要がないとして、図24のステップc19に移行する。前記メッシュが、変数LV_Dが示す階層番号および変数MN_Dが示すメッシュ番号のメッシュを含む場合は、ステップc3に移行する。
以下に、描画が必要ではない場合の具体例を説明する。図16のステップa5において、階層番号が1のメッシュM1_0の地図を描画したとき、表2の経路リンクL0_2の経路リンクレコード0に対して、LV_D(=0)、MN_D(=2)はメッシュM0_2を示し、メッシュM1_0はメッシュM0_2を含まないので、経路リンクL0_2は、メッシュM1_0の地図に描画する必要がない。
また、図16のステップa5において、階層番号が0のメッシュM0_0の地図を描画したとき、表2の経路リンクL1_1の経路リンクレコード2に対して、LV_D(=1)、MN_D(=1)はメッシュM1_1を示し、メッシュM0_0はメッシュM1_1に含まれないので、経路リンクL1_1は、メッシュM0_0の地図に描画する必要がない。
ステップc3において、制御部11は、図16のステップa5で描画したメッシュの階層が、変数LVmax_Dが示す最上統合階層番号の階層と同じか否かを判断する。描画したメッシュの階層が、変数LVmax_Dが示す最上統合階層番号の階層と同じと判断された場合は、ステップc4に移行し、描画したメッシュの階層が、変数LVmax_Dが示す最上統合階層番号の階層と同じでないと判断された場合は、ステップc5に移行する。変数LVmax_Dが示す最上統合階層番号の階層よりも上層となる経路リンクは存在しないので、ステップc5に移行するのは、図16のステップa5で描画したメッシュの階層が、変数LVmax_Dが示す最上統合階層番号の階層よりも下層のときのみとなる。
ステップc4において、制御部11は、図16のステップa5で道路の描画に使用した道路網データのリンクリストから、メッシュ内リンクIDが変数CID_Dであるリンクレコードを取得する。ステップc4の処理を終了した後は、図24のステップc14に移行する。
本フローチャートでは、ステップc3において、図16のステップa5で描画したメッシュの階層と、変数LVmax_Dが示す最上統合階層番号の階層とが同一であり、変数CID_Dは、前記メッシュにおける当該経路リンクのメッシュ内リンクIDに一致するので、本ステップc4において、当該経路リンクのリンクレコードを取得することができる。
ステップc5において、制御部11は、図16のステップa5で道路の描画に使用した道路網データのID管理テーブルを検索する。そして、制御部11は、最上統合階層番号、共通リンクIDがそれぞれ変数LVmax_D,CID_Dに一致するID管理レコードを検出する。
ステップc6において、制御部11は、ステップc5で検出したID管理レコードから、先頭メッシュ内リンクIDを求め、変数IIDtopに格納する。
ステップc7において、制御部11は、ステップc5で検出したID管理レコードの次にあるID管理レコードから、先頭メッシュ内リンクIDを求め、変数IIDtop’に格納する。ステップc5で検出したID管理レコードの次にID管理レコードがなければ、変数IIDtop’に当該メッシュのリンク数を格納する。ステップc7の処理を終了した後は、図23のステップc8に移行する。
ステップc8において、制御部11は、図16のステップa5で描画したメッシュの階層が最下層か否かを判断する。描画したメッシュの階層が最下層であると判断された場合は、ステップc9に移行し、描画したメッシュの階層が最下層でないと判断された場合は、ステップc11に移行する。
ステップc9において、制御部11は、副共通リンクIDがSID_D〜NSID_D−1の範囲にある経路リンクのメッシュ内リンクIDの下限値IID0、上限値IID1を、以下の式(3),(4)によって求める。ただし、NSID_Dが空値である場合は、IID1は、IIDtop’−1とする。
IID0=IIDtop+SID_D−SIDtop …(3)
IID1=IIDtop+NSID_D−1−SIDtop …(4)
ステップc10において、制御部11は、メッシュ内リンクIDがIID0〜IID1のリンクレコードを取得する。ステップc10の処理を終了した後は、図24のステップc14に移行する。
ステップc11において、制御部11は、図16のステップa5で描画したメッシュの階層が、変数LV_Dが示す階層番号の階層よりも上位か否かを判断する。描画したメッシュの階層が、変数LV_Dが示す階層番号の階層よりも上位であると判断された場合は、ステップc12に移行し、描画したメッシュの階層が、変数LV_Dが示す階層番号の階層よりも上位でないと判断された場合は、ステップc13に移行する。
ステップc12において、制御部11は、図16のステップa5で道路の描画に使用した道路網データのリンクリストのメッシュ内リンクIDが、IIDtopからIIDtop’−1の範囲のリンクレコードを検索し、リンクレコードの副共通リンクIDがSID_D以下で、かつ最大となるリンクレコードを取得する。ステップc12の処理を終了した後は、図24のステップc14に移行する。
ステップc13において、制御部11は、図16のステップa5で道路の描画に使用した道路網データのリンクリストのメッシュ内リンクIDが、IIDtopからIIDtop’−1の範囲のリンクレコードを検索し、リンクレコードの副共通リンクIDがSID_D〜NSID_D−1の範囲にあるリンクレコードを取得する。ただし、NSID_Dが空値である場合は、SID_D−1を有するリンクレコードとそれ以降に並ぶメッシュ内リンクIDがIIDtop’−1までの全てのリンクレコードを取得する。ステップc13の処理を終了した後は、図24のステップc14に移行する。
図24のステップc14において、制御部11は、ステップc4、ステップc10、ステップc12、ステップc13で取得した各リンクレコードについて、対応するリンクの形状を表す折れ線情報を生成する。具体的には、前記リンクレコードの形状レコード格納位置が示す形状レコードを、図16のステップa5で道路の描画に使用した道路網データの形状リストから取得する。そして、前記リンクレコードの始点ノードID、終点ノードIDに対応するノードレコードから、始点ノード座標、終点ノード座標を求める。次いで、折れ線情報に前記始点ノード座標を格納し、前記形状レコードの形状点の座標を、順に折れ線情報に格納し、最後に前記終点ノード座標を格納する。
ステップc15において、制御部11は、図16のステップa5で描画したメッシュの階層が、変数LV_Dが示す階層番号の階層よりも上位か否かを判断する。描画したメッシュの階層が、変数LV_Dが示す階層番号の階層よりも上位であると判断された場合は、ステップc16に移行し、描画したメッシュの階層が、変数LV_Dが示す階層番号の階層よりも上位でないと判断された場合は、ステップc18に移行する。
ステップc16において、制御部11は、ステップc14で生成した折れ線情報の各座標を結んだ折れ線上に、始点ノード座標(Xs,Ys)から垂線を下ろしてできる点である経路開始点rsの座標を求め、終点ノード座標(Xe,Ye)から垂線を下ろしてできる点である経路終了点reの座標を求める。
ステップc17において、制御部11は、経路開始点rsから経路終了点reまでを描画する。具体的には、経路開始点rsと経路終了点reと、それらの間にある折れ線情報の各座標とからなる折れ線を強調して描画する。ステップc17の処理を終了した後は、ステップc19に移行する。
ステップc18において、制御部11は、ステップc14で生成した各折れ線情報に基づいて、各折れ線を、図16のステップa5で描画した地図上に強調して描画する。ステップc18の処理を終了した後は、ステップc19に移行する。
ステップc19において、制御部11は、全経路リンクの処理が終了したか否かを判断する。全経路リンクの処理が終了したと判断された場合は、全ての処理手順を終了し、全経路リンクの処理が終了していないと判断された場合は、図22のステップc1に戻り、前述の処理を繰返す。具体的には、経路リンクレコードの取得数が、経路情報の経路リンクレコード数になったとき、経路情報の全ての経路リンクレコードについての前記一連の処理が終了したと判断する。
以下に、図22〜図24に示すフローチャートの各処理に基づく経路リンクの具体的な描画例を示す。まず、メッシュM2_1に経路リンクL2_0を描画するときの具体例について説明する。図16のステップa5で描画した階層番号(=2)と、経路リンクの最上統合階層番号と、探索階層とが同じ場合の例である。
図16のステップa5で描画した階層番号が2のメッシュM2_1の地図上に、経路リンクL2_0を描画する場合、経路リンクL2_0のリンクレコードである表2の経路リンクレコード3に対して、図16のステップa5で描画した階層番号が2で、変数LVmax_Dが示す最上統合階層番号が2であるので、ステップc3を経由して、ステップc4において、図8に示すメッシュM2_1のリンクリストLL(M2_1)から、メッシュ内リンクIDが変数CID_D(=IID2_0)であるリンクL2_0のリンクレコードを取得する。ステップc14において、リンクL2_0の形状情報を生成し、描画する階層が変数LV_D(=2)と同じであるので、ステップc15を経由し、ステップc18において、ステップc14で生成した形状情報に基づいて、リンクL2_0の形状を強調して描画する。以上のようにして、経路リンクL2_0が、図16のステップa5で描画した階層番号が2のメッシュM2_1の地図上に強調して描画される。
次に、メッシュM1_4に経路リンクL1_7を描画するときの具体例について説明する。図16のステップa5で描画した階層番号(=1)と、経路リンクの最上統合階層番号と、探索階層とが同じ場合の例である。
図16のステップa5で描画した階層番号が1のメッシュM1_4の地図上に、経路リンクL1_7を描画する場合、経路リンクL1_7の表2に示す経路リンクレコード7に対して、図16のステップa5で描画した階層番号が1で、変数LVmax_Dが示す最上統合階層番号が1であるので、ステップc3を経由して、ステップc4において、図11に示すメッシュM1_4のリンクリストLL(M1_4)から、メッシュ内リンクIDが変数CID_D(=IID1_7)であるリンクL1_7のリンクレコードを取得する。ステップc14において、リンクL2_0の形状情報を生成し、描画する階層が変数LV_D(=1)と同じであるので、ステップc15を経由し、ステップc18において、ステップc14で生成した形状情報に基づいて、リンクL1_7の形状を強調して描画する。以上のようにして、経路リンクL1_7が、図16のステップa5で描画した階層番号が2のメッシュM1_4の地図上に強調して描画される。
次に、メッシュM1_2に経路リンクL2_0を描画するときの具体例について説明する。図16のステップa5で描画した階層番号(=1)が、経路リンクの最上統合階層番号および探索階層よりも下層である場合の例である。
図16のステップa5で描画した階層番号が1のメッシュM1_2の地図上に、経路リンクL2_0を描画する場合、経路リンクL2_0の表2に示す経路リンクレコード3に対して、図16のステップa5で描画した階層番号が1で、変数LVmax_Dが示す最上統合階層番号が2であるので、ステップc3を経由して、ステップc4、c6,c7によって、図10に示すID管理テーブルを検索して、最上統合階層番号、共通リンクIDが、それぞれLVmax_D(=2)、CID_D(=IID2_0)に一致するID管理レコードR1_2_0を検出する。その先頭メッシュ内リンクID(=IID1_3)を、変数IIDtopに格納し、検出したID管理レコードの次にあるID管理レコードR1_2_1の先頭メッシュ内リンクID(=IID1_14)を、変数IIDtop’に格納する。
描画する階層が最下層ではなく、変数LV_D(=2)が示す階層番号より下位であるので、ステップc8,c11を経由し、ステップc13によって、図10に示すメッシュM1_2のリンクリストLL(M1_2)のメッシュ内リンクIDから、IIDtop(=IID1_3)からIIDtop’−1(=IID1_14−1)までの範囲にあるリンクL1_3,L1_4のリンクレコードを取得する。NSID_Dは空値であるので、副共通リンクIDが変数SID_D(=0)に一致するリンクL1_3のリンクレコードとそれ以降にあるリンクL1_4のリンクレコードを取得する。
ステップc14において、リンクL1_3とリンクL1_4との形状情報を生成し、描画する階層がLV_D(=2)より下位であるので、ステップc15を経由し、ステップc18において、ステップc14で生成した形状情報に基づいて、リンクL1_3とリンクL1_4との形状を強調して描画する。以上のようにして、経路リンクL2_0が、図16のステップa5で描画した階層番号が1のメッシュM1_2の地図上に強調して描画される。
次に、メッシュM1_4に経路リンクL1_10を描画するときの具体例について説明する。図16のステップa5で描画した階層番号(=1)が、経路リンクの最上統合階層番号(=2)よりも下層で、探索階層(=1)と同一である場合の例である。
図16のステップa5で描画した階層番号が1のメッシュM1_4の地図上に、経路リンクL1_10を描画する場合、経路リンクL1_10の表2に示す経路リンクレコード6に対して、図16のステップa5で描画した階層番号が1で、変数LVmax_Dが示す最上統合階層番号が2であるので、ステップc3を経由して、ステップc5,c6,c7によって、図11に示すID管理テーブルを検索して、最上統合階層番号、共通リンクIDが、それぞれLVmax_D(=2)、CID_D(=IID2_3)に一致するID管理レコードR1_4_1を検出する。その先頭メッシュ内リンクID(=IID1_10)を、変数IIDtopに格納し、検出したID管理レコードの次にあるID管理レコードR1_4_2の先頭メッシュ内リンクID(=IID1_12)を、変数IIDtop’に格納する。
描画する階層が最下層ではなく、変数LV_D(=1)が示す階層番号と同一であるので、ステップc8,c11を経由し、ステップc13によって、図11に示すメッシュM1_4のリンクリストLL(M1_4)のメッシュ内リンクIDから、IIDtop(=IID1_10)からIIDtop’−1(=IID1_12−1=IID_11)までの範囲にあるリンクL1_10,L1_11のリンクレコードを検索し、副共通リンクIDがSID_D(=0)〜NSID_D−1(=4−1=3)の範囲にあるリンクL1_10のリンクレコードを取得する。
ステップc14において、リンクL1_10の形状情報を生成し、描画する階層がLV_D(=1)と同一であるので、ステップc15を経由し、ステップc18において、ステップc14で生成した形状情報に基づいて、リンクL1_10の形状を強調して描画する。以上のようにして、経路リンクL1_10が、図16のステップa5で描画した階層番号が1のメッシュM1_4の地図上に強調して描画される。
上記によれば、最上統合階層番号、共通リンクIDが同じリンクL1_10,L1_11でも、副共通リンクIDがそれぞれ0,4と異なり、前記双方のリンクの識別が可能で、前記双方のリンクが経路として描画されることなく、リンクL1_10のみを正しく描画できる。
次に、メッシュM0_9に経路リンクL1_10を描画するときの具体例について説明する。図16のステップa5で描画した階層(最下層)が、経路リンクの最上統合階層番号(=2)よりも下層で、探索階層(=1)よりも下層である場合の例である。
図16のステップa5で描画した階層番号が0のメッシュM0_9の地図上に、経路リンクL1_10を描画する場合、経路リンクL1_10の表2に示す経路リンクレコード6に対して、図16のステップa5で描画した階層番号が0で、変数LVmax_Dが示す最上統合階層番号が2であるので、ステップc3を経由して、ステップc5,c6,c7によって、図13に示すID管理テーブルを検索して、最上統合階層番号、共通リンクIDが、それぞれLVmax_D(=2)、CID_D(=IID2_3)に一致するID管理レコードR0_9_2を検出する。その先頭メッシュ内リンクID(=IID0_25)、先頭副共通リンクID(=1)を、それぞれ変数IIDtop、SIDTopに格納し、検出したID管理レコードの次にあるID管理レコードR0_9_3の先頭メッシュ内リンクID(=IID0_29)を、変数IIDtop’に格納する。
描画する階層が最下層であるので、ステップc8を経由し、ステップc9によって、経路リンクL1_10のメッシュM0_9における被統合リンクの範囲を、以下に示す式(5),(6)に従って求める。
IID0=IIDtop(=IID1_10)+SID_D(=1)
−SIDtop(=1)=IID1_10 …(5)
IID1=IIDtop(=IID1_10)+NSID_D(=4)
−1−SIDtop(=1)=IID1_10+2 …(6)
ステップc10によって、メッシュ内リンクIDがIID1_10〜IID1_10+2のリンクL0_25,L0_26,L0_27のリンクレコードを取得する。
ステップc14において、リンクL0_25,L0_26,L0_27の形状情報を生成し、描画する階層が変数LV_D(=1)よりも下位であるので、ステップc15を経由し、ステップc18において、ステップc14で生成した形状情報に基づいて、リンクL0_25,L0_26,L0_27の形状を強調して描画する。以上のようにして、経路リンクL1_10が、図16のステップa5で描画した階層番号が0のメッシュM0_9の地図上に強調して描画される。
上記によれば、リンクL0_25,L0_26,L0_27,L0_28は、最上統合階層番号、共通リンクIDが同じでも、副共通リンクIDが異なり、リンクL1_10の被統合リンクであるか、リンクL1_11の被統合リンクであるかを識別することができる。したがって、リンクL1_10の被統合リンクであるリンクL0_25,L0_26,L0_27のみを正しく描画することができる。
次に、メッシュM1_4に経路リンクL0_26を描画するときの具体例について説明する。図16のステップa5で描画した階層(=1)が、経路リンクの最上統合階層番号(=2)よりも下層で、探索階層(=0)よりも上層である場合の例である。
表3に、経路情報の他の例を示す。表3に示す経路情報は、表2に示す経路とは異なる経路を表す経路情報であり、リンクL0_19,L0_26,L0_20からなる経路を示す。
図25は、強調描画した経路の一例を示す図である。図25では、図16のステップa5で描画した階層番号が1のメッシュM1_4の地図のリンクL1_10上に、表3の経路情報が表す経路の経路リンクL0_26を描画する例を示す。
経路リンクL0_26の表3に示す経路リンクレコード1に対して、ステップc5,c6,c7によって、最上統合階層番号、共通リンクIDが、それぞれLVmax_D(=2)、CID_D(=IID2_3)である図11に示す管理レコードR1_4_1とその次のID管理レコードR1_4_2から、IIDtop(=IID1_10)、IIDtop’(=IID1_12)が得られる。ステップc12によって、図11に示すメッシュM1_4のリンクリストLL(M1_4)のメッシュ内リンクIDから、IIDtop(=IID1_10)からIIDtop’−1(=IID1_12−1=IID_11)までの範囲にあるリンクL1_10,L1_11のリンクレコードで、副共通リンクIDがSID_D(=2)以下で、かつ最大であるリンクL1_10が取得される。リンクL1_11の副共通リンクIDは4であるので、そのリンクレコードは取得されない。
図25において、N1_10s、N1_10eは、リンクL1_10のノードを示し、p1〜p8はリンクL1_10の形状点を示し、これらからなる折れ線が、図16のステップa5において、リンクL1_10として既に描画されている。図25では、経路リンクL0_26の経路リンクレコードの始点ノード座標を「(Xs,Ys)」で示し、終点ノード座標を「(Xe,Ye)」で示している。
図24のステップc14によって、ノードN1_10sの座標、形状点p1〜p8の座標、ノードN1_10eの座標からなるリンクL1_10の形状情報が得られる。ステップc16によって、始点ノード座標(Xs,Ys)から前記ノードN1_10s,N1_10eと形状点p1〜p8からなる折れ線に垂線を下ろした点rs、終点ノード座標(Xe,Ye)から前記ノードと形状点p1〜p8からなる折れ線に垂線を下ろした点reが得られる。ステップc17によって、前述のようにリンクL1_10として描画された折れ線の上に、経路リンクL0_26としてrs,p2〜p5,reからなる折れ線を強調して表示する。
経路リンクL0_19,L0_20に対して、経路リンクL0_19の始点ノードとrs、経路リンクL0_20の終点ノードとreを結ぶ直線を強調して描画してもよい。
上記のように任意の階層の経路探索で得られた経路リンクを任意の階層に正しく描画することができる。
以上のように本実施の形態によれば、道路網データは、図7に示すように、先頭メッシュ内リンクID、共通リンクID、副共通リンクIDおよび接続情報を含む。これによって、比較的少ないデータ量で精度良く地図を表すことができる地図情報を得ることができる。
本実施の形態の地図情報処理装置1では、このような地図情報に基づいて、経路探索部として機能する制御部11によって、出発地から目的地までの経路が探索される。したがって、精度良く経路探索を行うことができる。
また本実施の形態では、道路表示部および経路表示部として機能する表示部24が設けられる。この表示部24に、制御部11による経路探索によって探索された経路が表示される。これによって、経路を精度良く表示させることができる。
また地図情報処理装置1の制御部11は、経路変換部としても機能し、経路リンクをメッシュ内リンクIDを用いて表した中間経路情報を、最上統合階層番号と共通リンクIDと副共通リンクIDとを用いて経路リンクを表す経路情報に変換する。これによって、経路探索によって探索された経路をより正確に表示させることができる。
また道路網データは、リンクリストを含み、メッシュ内リンクIDは、対応するリンクレコードのリンクリストにおける並びの順番である。これによって、各リンクレコードにリンクIDを格納する必要がないので、データ量を削減することができる。また、共通リンクIDは、最上統合階層リンクのメッシュ内リンクIDとしているので、共通リンクIDは、メッシュ内のリンク数を超えることがない。したがって、共通リンクIDのためのデータ量を削減することが可能となる。
また最下層の被統合リンクの副共通リンクIDは、最下層に含まれる被統合リンクを、その向きが最上統合階層リンクの向きに一致するように接続したときの接続順を表す連続した番号である。また、最下層よりも上位の各階層の被統合リンクの副共通リンクIDは、その被統合リンクの始点側または終点側に対応する最下層の被統合リンクの副共通リンク識別子と同じである。したがって、同じ共通リンクIDを有するリンク同士を識別することが可能となる。
また副共通リンクIDは、最上層と最下層とを除く階層のリンクであって、最上統合階層リンクでないリンクのリンクレコードに格納され、その他のリンクのリンクレコードには格納されない。すなわち、算出可能な副共通リンクIDは、リンクレコードに格納しないようにしている。これによって、地図情報記憶部12に格納すべきデータ量を削減することができる。
また道路網データは、メッシュ内に含まれるリンクのうち、最上統合階層番号が同じであり、かつ共通リンクIDが同じであるリンクで構成されるリンク群と、そのリンク群に含まれるリンクの最上統合階層番号および共通リンクIDとを対応付けるID管理情報として、ID管理テーブルを含む。これによって、個々のリンクレコード毎に最上統合階層と共通リンクIDとを格納する必要がないので、地図情報記憶部12に格納すべきデータ量を削減することができる。
またリンクリストには、上層で統合されないリンクのリンクレコードが先頭から並べられる。その次に、統合リンクのリンクレコードが、その統合リンクの最上統合階層が低い順に並べられる。統合リンクのリンクレコードのうち、最上統合階層が同じ統合リンクのリンクレコードは、その統合リンクの共通リンクIDの昇順に並べられる。また、統合リンクのリンクレコードのうち、最上統合階層が同じであり、かつ共通リンクIDが同じである統合リンクのリンクレコードは、その統合リンクの副共通リンクIDの昇順に並べられる。これによって、最上統合階層、共通リンクIDおよび副共通リンクIDと、リンク群との対応付けを容易にすることができる。
また最下層を除く残余の階層のID管理情報は、最上統合階層番号と、共通リンクIDと、最上統合階層番号および共通リンクIDに対応するリンク群の先頭のリンクのメッシュ内リンクIDとを含むID管理レコードを並べたものである。このID管理レコードは、最上統合階層番号の昇順に配置される。また、ID管理レコードのうち、最上統合階層番号が同じであるリンクのID管理レコードは、共通リンクIDの昇順に配置される。これによって、最上統合階層および共通リンクIDと、リンク群との対応付けを容易にすることができる。
また最下層のID管理情報は、最上統合階層番号と、共通リンクIDと、先頭副共通リンクIDと、最上統合階層番号、共通リンクIDおよび先頭副共通リンクIDに対応するリンク群の先頭のリンクのメッシュ内リンクIDとを含むID管理レコードを並べたものである。ID管理レコードは、最上統合階層番号の昇順に配置される。ID管理レコードのうち、最上統合階層番号が同じであるリンクのID管理レコードは、共通リンクIDの昇順に配置される。また、ID管理レコードのうち、最上統合階層番号が同じであり、かつ共通リンクIDが同じであるリンクのID管理レコードは、先頭副共通リンクIDの昇順に配置される。これによって、最上統合階層、共通リンクIDおよび副共通リンクIDと、リンク群との対応付けを容易にすることができる。
また道路網データは、最上層を除く残余の階層のID管理情報を含み、最上層のID管理情報を含まない。これによって、地図情報記憶部12に格納すべきデータ量を削減することができる。
また本実施の形態では、制御部11は、経路変換部として機能し、メッシュ内リンクIDを用いて経路リンクを表した中間経路情報を、ID管理情報を用いて経路リンクを表す経路情報に変換する。これによって、経路を任意の階層に描画することが可能な経路情報を得ることができる。
また本実施の形態では、制御部11は、経路探索部として機能し、ID管理情報を用いて、経路探索に用いた道路網データの階層における経路リンクのメッシュ内リンクIDを求める。制御部11は、求めたメッシュ内リンクIDに対応するリンクの形状を表示部24に強調して描画させる。これによって、任意の階層に経路を描画することができる。
以上に述べた本実施の形態の地図情報処理装置1は、車両に搭載されて使用されるナビゲーション装置だけでなく、車両に搭載可能な通信端末装置、およびサーバ装置などを適宜に組み合わせたシステムとして構築される地図情報処理装置にも適用することができる。通信端末装置は、たとえばサーバ装置と通信を行う機能を有するPND(Portable Navigation Device)および携帯通信装置である。携帯通信装置は、たとえば携帯電話機、スマートフォンおよびタブレット型端末装置である。
前述のように地図情報処理装置1と通信端末装置とサーバ装置とを備えて、システムが構築される場合、本実施の形態の地図情報処理装置1の各機能および各構成要素は、前記システムを構築する各装置に分散して配置される。
たとえば、以上の説明では、地図情報処理装置1を、ナビゲーション装置に適用した構成について説明したが、これに限定されるものではなく、PND、通信端末、および、サーバのいずれかに適用してもよい。
なお、本発明は、その発明の範囲内において、実施の形態の任意の構成要素を適宜、変更または省略することが可能である。