本発明の実施例について以下の順序で説明する。
A.システム構成:
B.経路探索データのデータ構造:
C.地図DB生成処理:
D.経路探索処理:
E.経路案内処理:
F.第2実施例:
A.システム構成:
図1は実施例としての経路案内システムの構成を示す説明図である。経路案内システムは、ユーザから指定された出発地から目的地に至る歩行者用の経路を探索し、現在位置に応じて、地図上に経路を表示するシステムである。経路案内システムは、携帯電話を利用した端末100、経路探索および案内の主要な機能を奏するサーバ200、および経路探索に要求される地図DB250を整備するためのデータ生成装置300から構成される。端末100とサーバ200とは、無線のインターネットなどのネットワークINTで接続されており、サーバ200とデータ生成装置300とはLANなどのネットワークNETで接続されている。端末100としては、携帯電話に限らず、いわゆる車両用のナビゲーション装置や、PDA、ネットワーク通信機能を有する汎用のパーソナルコンピュータなども用いることができる。また、データ生成装置300が汎用のパーソナルコンピュータで構成される例を示すが、この他、サーバ200にデータ生成装置300としての機能を組み込むなど、種々の態様で構成することができる。
図中に、端末100、サーバ200およびデータ生成装置300のそれぞれの機能ブロックを示した。本実施例では、これらの各機能ブロックは、それぞれの装置に所定のコンピュータプログラムをインストールすることによって、ソフトウェア的に構成されている。各機能ブロックの少なくとも一部は、ASIC等によってハードウェア的に構成することもできる。
端末100では、主制御部110の制御下で図示する機能ブロックが稼働する。コマンド入力部130は、ユーザの操作に応じてコマンドを入力する。GPS140は、グローバルポジショニングシステム(Global Positioning System)であり、端末100の現在位置を計測する。コマンドとしては、例えば、GPS140で検出された現在位置、経路探索の目的地の指定、探索条件の指定などが挙げられる。通信部120は、ネットワークINTを介した通信を行う。端末100からサーバ200に送信される情報としては、上述のコマンドが含まれ、サーバ200から端末100への情報としては、経路探索の結果が含まれる。表示制御部150は、端末100の画面表示を制御する。画面表示には、コマンドを入力するための画面、経路案内用の画面などが含まれる。
サーバ200は、端末100からのコマンドに応じて経路探索を行う。また、端末100の現在位置に応じて、地図上に経路を表した経路案内用の画面を表示するための表示制御データを端末100に出力する。サーバ200は、地図DB250を参照して、これらの機能を実現する。地図DB250には、経路探索用に歩行者の通路をノード・リンクのネットワークで表したデータ(以下、「経路探索データ」と称することもある)、および地図を表示するためのポリゴンデータ(以下、「描画データ」と称することもある)を格納している。先に説明した通り、地図DB250は、データ生成装置300によって整備される。サーバ200と、端末100およびデータ生成装置300とは、それぞれネットワークINT、NETを介して接続されており、これらのネットワークINT、NETを介した通信は、通信部210によって制御される。
経路探索部230は、ユーザからのコマンドに応じて経路探索を実行する。地図DB参照部260は、この経路探索に必要な経路探索データを地図DB250から読み出し、経路探索部230に受け渡す。経路探索部230には、経路探索を行うエンジンとして、詳細サーチ部232、簡易サーチ部234の2種類が用意されている。詳細サーチ部232は、探索される経路に対するユーザの要望、例えば、階段や坂道を回避したいといった移動負荷に関する要望や、ガードレールや街灯が整備された通路を優先したいといった安全性に関する要望などを考慮した経路探索を実行する。
この要望は、経路探索時にユーザが端末100から逐一指定することも可能ではあるが、本実施例では、予めユーザDB240に登録しておくものとした。詳細サーチ部232は、経路探索時には、ユーザIDや氏名などの識別情報に基づいて、ユーザDB240を参照し、経路探索に対する要望事項の設定データを読み取り、経路探索を実行する。経路探索に対する要望事項は、ユーザDB240に登録された設定データを一旦、端末100に送信し、ユーザがこれを修正して、詳細サーチ部232が使用すべき最終的な探索条件を設定するという方法を採っても良い。
簡易サーチ部234は、移動負荷や安全性に対するユーザの要望を考慮せずに経路探索を行う。距離優先モード、時間優先モードなど既知の探索モードの選択は可能である。本実施例では、このように簡易サーチ部234がユーザの要望を無視する場合を例示するが、無視するまでは至らずに、要望を考慮する程度、要望反映度を詳細サーチ部232よりも低下させる程度にとどめるものとしてもよい。例えば、移動負荷に関する要望のみを考慮し、安全性に関する要望は無視するという態様や、階段の有無については考慮するが坂道か否かは考慮しないという態様など、要望事項の一部についてのみ経路探索時に考慮するという態様を採ることができる。詳細サーチ部232と、簡易サーチ部234の使い分けは、地図DB250に格納される領域IDに基づいて行われる。領域IDの意味、および詳細サーチ部232と、簡易サーチ部234の使い分けの制御処理については、後述する。
経路案内部220は、経路探索部230で得られた経路を案内するための表示データを生成し、端末100に送信する。地図DB参照部260は、経路案内に要求される経路探索データ、描画データを地図DB250から読み出し、経路案内部220に提供する。本実施例では、経路案内部220も、上述した領域IDに応じて表示内容を切り換える制御を実行する。この制御内容については後述する。
データ生成装置300は、地図DB250に格納される経路探索データを生成するための装置である。併せて、描画データを生成する機能を持たせることもできる。本実施例では、経路探索データの整備を、高密度整備領域、低密度整備領域に分けて行う。高密度整備領域は、オペレータからの対話方式でのコマンド入力に従って、経路探索データを整備すべき領域である。低密度整備領域は、車両の経路探索用に整備された道路ネットワークデータを利用して、経路探索データを整備する領域である。道路ネットワークDB310は、この道路ネットワークデータ、即ち車両が通行する道路をノード・リンクのネットワークで表したデータを格納している。
後述する通り、低密度整備領域は、流用領域と称する領域とその他の領域に細分化されている。流用領域以外の領域では、道路ネットワークデータを利用して経路探索データを整備した上で、更に、オペレータからのコマンド入力による修正や追加が許容される領域である。流用領域は、道路ネットワークデータを利用した経路探索データの整備のみが行われる領域である。領域指定テーブル320は、整備対象となる地域を所定サイズの方眼状のメッシュに分割し、各メッシュごとに、高密度整備領域、流用領域、およびその他の低密度整備領域のいずれに該当するかを記憶している。
転用ネットワーク設定部360は、道路ネットワークデータを利用して経路探索データを設定する。つまり、転用ネットワーク設定部360は、低密度整備領域の経路探索データの整備時に利用される機能ブロックである。ワークデータ管理部380は、整備された経路探索データを、一旦、格納し、管理する。
コマンド入力部330は、キーボードやマウスなどの操作を通じて、オペレータからのコマンドを入力する機能を奏する。歩行者ネットワーク設定部340は、このコマンドに応じて経路探索データを設定する。設定されたデータは、ワークデータ管理部380で管理される。歩行者ネットワーク設定部340は、流用領域を除く低密度整備領域、および高密度整備領域における経路探索データの設定に利用される。経路探索データを設定する際のコマンドの入力方法としては、ディスプレイ上に地図を表示し、オペレータがマウス等の操作によってノード、リンクを設置する位置を指定していく方法を採ることができる。表示制御部370はこのコマンド入力に要求される地図表示等を行う。この地図表示に必要となるデータは、地図DB250または道路ネットワークDB310に含まれる描画データを利用することができる。オペレータが設定したリンクおよびノードは、ワークデータ管理部380に管理されたデータを参照することで表示可能である。
マージ処理部350は、低密度整備領域および高密度整備領域の領域間において経路探索データを整合されるための処理(以下、「マージ処理」と称する)を行う。即ち、ワークデータ管理部380に格納された各領域の経路探索データを読み出し、境界部分において、相互に接続していないリンク間を接続させる処理を行う。また、各経路探索データを、地図DB250に格納するためのフォーマットに整える処理も実行する。地図DB更新部390は、マージ処理が完了した経路探索データを、サーバ200の地図DB250に格納する。
B.経路探索データのデータ構造:
図2は領域ごとの経路探索データの設定状態を示す説明図である。図の中央に、低密度整備領域および高密度整備領域の設定例を示した。この図は、都市の中心部および郊外を含む所定範囲の地図を表している。ここでは、図の煩雑化を回避するため、地物として鉄道および高速道路のみを簡易に示した。本実施例では、地図データは、図示するように方眼状のメッシュに区分されて整備されている。各メッシュは、図の横方向の番号Nxと、縦方向の番号Nyとの組み合わせからなるメッシュ番号を用いてメッシュNxNyの形式で特定可能である。
中央付近のクロスハッチを付した領域(例えば、メッシュ63など)は高密度整備領域を意味している。外周の空白領域(例えば、メッシュ11など)は、流用領域を表している。両者の間のハッチング領域(例えば、メッシュ32など)は、流用領域を除く低密度整備領域を表している。各メッシュをいずれの領域に割り当てるかは任意に設定可能であるが、図示するように、高密度整備領域の周囲を取り囲むように順次、流用領域を除く低密度整備領域、流用領域を設定することが好ましい。高密度整備領域は、都会の中心部のように、階段や歩道橋、建物、地下街、ペディストリアンデッキなど、種々の立体的な構造物が設けられている箇所に設定することが好ましい。
図の上方の地図A1には、高密度整備領域における経路探索データの整備例を示した。図中の細い実線はリンクを示し、黒丸はノードを示している。この領域では、歩行者が通行する通路に対してリンクが設定される。例えば、リンクL11に示すように、歩行者用のリンクは、車道の両側に設けられた歩道に沿って設定することができる。このため、一本の道路に対して、歩行者用のリンクは、両側の2条で設けられることもある。また、リンクL12のように横断歩道上に設定されるものや、リンクL14のように歩道橋などの構造物上に設けられるものもある。また、建物の入り口に続くリンクL13も設けられる。
歩行者用のリンクは、必ずしも歩道にのみ設けられるとは限らない。リンクL15に示すように、歩道が設けられていない道路であっても、その両側に歩行者用のリンクを設けることができる。このような道路の交差点C1では、横断歩道がない場合でも、それぞれのリンクに沿った通行や道路の横断が可能なようにノード・リンク(以下、「横断リンク」と称する)を設けることができる。このような横断リンクを設けるべき交差点C1は、例えば、i)道路幅が所定値以下であること、ii)通行量が所定値以下であること、iii)所定の距離内に横断歩道が設けられていないことを条件として選択することができる。条件i)、ii)は横断歩道がない場所ではあるが、横断に大きな危険は伴わない箇所を選択するための条件である。条件iii)は無用に横断箇所を増やし、経路探索データが複雑化することを回避するための条件である。もっとも、これらの条件は任意に設定可能であり、例えば、横断歩道が存在しない全ての交差点を対象として、交差点C1に示すような横断リンクを設けるようにしてもよい。
下左の地図A2には、流用領域を除く低密度整備領域における経路探索データの整備例を示した。この領域では、道路ネットワークデータ内の道路リンクの転用によって経路探索データが設定されている。従って、リンクL21、L22に示すように、歩行者用のリンクであっても、車道の中心付近に設定されることがある。もっとも、この領域では、道路リンクをそのまま適用する必要はなく、例えば、道路リンクを道路幅に応じて平行移動し、車道の端に歩行者用のリンクを設定するようにしてもよい。
また、この領域では、道路リンクの全てを歩行者用の経路探索データとして利用する訳ではない。例えば、高速道路のように歩行者が通行できない道路については、歩行者用の経路探索データには転用しない。図中の破線で示したリンクL23は、高速道路上の道路リンクを表しており、破線で描かれているのは、経路探索データに不採用であることを示している。
地図A2の領域では、道路リンクから転用されたリンクの他、高密度整備領域と同様、オペレータのコマンドによってリンクの修正、追加をすることもできる。例えば、図中では、陸橋上に設けられたリンクL25や、公園敷地内の通路に設けられたリンクL24が、これに該当する。このように修正、追加を許容することにより、道路リンクを転用しつつ、歩行者に固有の通路も経路探索データとして整備することができ、軽い負荷で利便性の高い経路探索を実現することが可能となる。
下右の地図A3には、流用領域における経路探索データの整備例を示した。この領域では、道路リンクの転用によってのみ経路探索データが設定される。従って、リンクL31、L32に示すように、歩行者用のリンクは車道上に設定されることになる。地図A2で説明したのと同様、道路リンクを平行移動することによって、道路の端に歩行者用のリンクを設定するようにしてもよい。
図3は経路探索データのデータ構造を示す説明図である。図の下方から、道路ネットワークDB310のデータ構造、ワークデータ管理部380に格納されているワークデータ381のデータ構造、および地図DB250のデータ構造を示した。道路ネットワークDB310には、リンクデータおよびノードデータが含まれる。図中では、リンクデータのみを例示した。リンクデータは、リンクの識別情報となる「リンクID」、リンク形状、および属性が格納されている。リンク形状は、リンクが通過する点列Nr1,Nr2…を(緯度、経度)の座標で定義したデータである。属性には、道路種別、車線数などの情報が格納されている。ノードデータの構造は図示を省略したが、リンクデータと同様の形式で、ノードID、位置、および属性が格納されている。
ワークデータ381には、道路ネットワークデータを転用したリンクデータ、ノードデータが格納されている。また、高密度整備領域などでオペレータのコマンドに応じて設定されたリンクデータ、ノードデータも格納される。ワークデータ381に格納されるリンクデータ、ノードデータのデータ構造は、道路ネットワークDB310と完全に一致している訳ではない。リンクデータについては、リンクID、形状および属性に加えて、領域ID、接続リンクなるデータが付加される。また、ノードデータについては、ノードID、位置および属性に加えて、接続ノードなるデータが付加される。領域IDとは、リンクデータが、図2で示した高密度整備領域および低密度整備領域のいずれに含まれるかを示すフラグである。低密度整備領域は、更に流用領域とその他の領域に細分化されているが、本実施例では、領域IDは両者を含めて扱うものとした。接続リンク、接続ノードとは、後述するマージ処理の過程で、設定されたリンクおよびノードであることを示すフラグである。リンクデータの形状、およびノードデータの位置のデータ構造も道路ネットワークデータとは異なっているが、この点については、地図DB250のデータ構造と併せて示す。
地図DB250の経路探索データは、ワークデータ381に基づいて生成される。リンクデータは、リンクID、領域ID、形状および属性データを格納している。ワークデータ381で設定された「接続リンク」のフラグは、地図DB250では不要なため、削除される。形状データは、リンクが通過する点列N1、N2…Nnの座標が格納される。ただし、本実施例では、地図DB250においては、各点の位置は、(緯度、経度、高さ値)という3次元のデータで設定されている。高さ値とは、構造物間の相対的な上下関係を示すためのデータである。本実施例では、地上の道路をレベル「0」、高架道路をレベル「1」、更に高い位置にある高架道路をレベル「2」、地下または半地下道路をレベル「−1」と定義した。各構造物の絶対的な高さを用いるようにしてもよいが、上述の態様によれば、少ないデータ量で、構造物間の上下関係を特定することができる利点がある。レベルは、各リンクの点列で統一されている必要はない。例えば、図3中のリンクL1についてノードN1、Nnの高さ値を異なるレベルとすれば、異なる階層にまたがる斜めのリンクとなり、坂道、エスカレータ、エレベータ、階段などを表現することができる。本実施例では、道路ネットワークデータでは、この高さ値は設定されていないものとする。従って、道路ネットワークデータを転用したリンク、ノードについては、地図DB250では、高さ値はレベル「0」がデフォルト値として設定されている。
リンクデータの属性には、種別、距離、屋根の有無などの通路に関する種々の情報が格納される。種別としては、平坦な通路、坂道、歩道橋、横断歩道、階段、エスカレータ、エレベータなどの情報が格納される。併せて、各種別ごとの固有のデータを格納してもよく、例えば、坂道の場合には、上り下りの別、傾斜角度などの情報を格納することができる。ノードの属性には、信号の有無、ノードの周辺に位置する目印の有無などの情報が格納される。属性には、図3中に例示したものに限らず、種々の情報を格納可能である。道路ネットワークデータからの転用では設定し得ない属性については、予めデフォルト値が設定される。例えば、リンクの種別としては平坦な道と設定し、屋根の有無、信号の有無、目印などについては、それぞれ「無し」と設定することができる。
地図DB250の描画データについては、図示を省略した。描画データには、道路や建築物などの形状を表すポリゴンデータが格納されている。このポリゴンデータを描画することによって、地図を表示することができる。
C.地図DB生成処理:
図4は地図DB生成処理のフローチャートである。地図DB250のうち、経路探索データを整備する処理である。データ生成装置300の各機能ブロック(図1参照)が連携して実行する処理であり、ハードウェア的には、データ生成装置300のCPUが実行する処理である。
この処理では、CPUは、処理対象メッシュを入力する(ステップS10)。オペレータから、処理対象となるべきメッシュ番号の指定を受け付けるようにしてもよいし、ワークデータ管理部380に格納された結果を見て、未処理のメッシュ番号からいずれかを選択するようにしてもよい。
CPUは、処理対象となるメッシュが決まると、領域指定テーブル320を参照して、そのメッシュが高密度整備領域、低密度整備領域のいずれに当たるかを判断する(ステップS12)。低密度整備領域に当たる場合には、CPUは道路ネットワークDB310を読込み、その転用を行う(ステップS14)。この処理によって、先に図3で示したように、道路ネットワークDB310の各データがワークデータ381に格納される。ただし、高速道度など、歩行者が通行できないリンクは除外される。歩行者の通行可否は、例えば、道路リンクの属性によって判断することができる。
転用処理が完了すると、CPUは歩行者ネットワーク設定処理を実行する(ステップS16)。処理対象となる領域が高密度整備領域である場合には(ステップS12)、転用処理(ステップS14)をスキップして、歩行者ネットワーク設定処理を開始する(ステップS16)。
歩行者ネットワーク設定処理とは、オペレータからのコマンドに応じて、歩行者用のリンクデータ、ノードデータを設定する処理である。先に図2の地図A1に示した各ノード、リンクの設定や、地図A2に示したリンクL24、L25の設定などがこの処理に対応する。流用領域については、ステップS16をスキップさせてもよい。
CPUは以上の処理を全メッシュについて完了するまで繰り返す(ステップS18)。この処理が完了すると、整備対象となる全領域についてワークデータ381が用意されることとなる。CPUは、このワークデータ381を対象として、マージ処理を実行し(ステップS100)、地図DB250を更新して(ステップS200)、地図DB生成処理を終了する。次に、このマージ処理の内容について説明する。
図5はマージ処理の概要を示す説明図である。マージ処理とは、高密度整備領域と低密度整備領域との境界において、未接続のリンクを相互に接続するための処理である。図中では、高さ値がLEVEL0、LEVEL1の2つの階層に位置するリンクを示した。図の左側の領域が高密度整備領域であり、右側の領域が低密度整備領域である。
図中の白丸はノードを表している。また、二重線は道路リンクを転用して設定されたリンクを表し、細線はオペレータによって設定されたリンクを表している。二重線のうち破線で表したものは、高密度整備領域に含まれている道路リンクであり、各リンクの位置関係を把握するための便宜上、示したものである。図中の黒丸は接続ノード、一点鎖線は接続リンクを表している。これら接続ノードおよび接続リンクの設定が、マージ処理における主要な処理となる。
まず、高密度整備領域におけるリンクL04、L06のマージ処理について説明する。これらのリンクは、接続ノード、接続リンクを設ける前の時点では、その端のノードN05、N06は他のいずれのリンクにも接続されていない端点となっている。マージ処理では、このような端点を有するリンクが処理対象となる。
リンクL04、L05の処理時には、これらのリンクの接続先となる道路リンクL05を選択し、その上に接続ノードC01を設定し、ノードN05、N06との間で接続リンクLC1,LC2を設定する。この道路リンクの選択方法、および接続ノードの設定方法については後述する。リンクL04、L05については、道路リンクL05が共通の接続先として選択されている。本実施例では、このように共通の道路リンクへの接続を行う場合には、接続ノードC01も共用するものとした。こうすることで、道路リンクL05上に接続ノードを無用に増大させることなくマージ処理を行うことができ、経路探索データの複雑化を回避することができる。
道路リンクL05は、本来、高密度整備領域内のノードN01までのびるリンクであるが、上述の接続によって、接続ノードC01とノードN01との間の部分(図中のハッチングを付した部分)は不要となる。この部分のリンクがなくなっても、高密度整備領域のリンクL05,L06が存在することによって支障なく経路探索が可能だからである。従って、CPUは接続ノードC01、接続リンクLC1、LC2を設定した後は、上述のハッチングを付した部分を削除する。この結果、低密度整備領域におけるリンクL05は、ノードN02と接続ノードC01間の短いリンクに修正されることになる。
先に説明した通り、本実施例では、高密度整備領域および低密度整備領域をそれぞれメッシュ単位で定義している。この場合、図5においても、高密度整備領域の境界線は、メッシュの境界線と一致する。メッシュに分けてネットワークデータを整備する場合、リンクL05のように、2つのメッシュにまたがるリンクについては、メッシュの境界部分にノードを設置し、このノードで分断されていることが多い。リンクL05のうちハッチングを付した部分を削除する処理は、このようにリンクL05が高密度整備領域の境界で分断されていたとしても、そのまま適用することができる。このように分断されている場合、リンクL05は、この処理を開始した時点で、高密度領域の境界よりも左側(ノードN01側)は既に経路探索データに含まれていない状態となり(図5中では破線で表現されるべきリンクとなる)、削除されるべきハッチングを付した部分が、最初から短くなっているに過ぎないからである。
次に、リンクL07のマージ処理について説明する。リンクL07の端点に位置するノードN07の接続先として、近傍に位置する道路リンクL08が選択される。従って、この上に接続ノードC02が設定され、ノードC02とN07の間に接続リンクLC3が設定される。このケースでは、道路リンクL08は接続ノードC02によって分断されることになるが、道路リンクL05の場合と異なり、分断後のいずれのリンクも高密度整備領域には含まれず、いずれも低密度整備領域における歩行者用のリンクデータとして必要である。従って、道路リンクL08は分断後も削除されず、リンクデータとして残存することになる。
最後に、リンクL11,L12のマージ処理について説明する。リンクL11,L12は、LEVEL1に設定されたリンクデータである。これらのリンクは、道路リンクL01の側方に設けられている歩道に相当し、これらのリンクが接続されるべき道路リンクはL02である。本実施例では、道路ネットワークデータには高さ値が格納されていないものとしている。従って、道路リンクL01、L02は、高さ値LEVEL0に設定されてしまう。この結果、リンクL11、L12は、異なる階層の道路リンクL02を接続対象としてマージ処理される必要が生じる。
本実施例では、このような場合には、まず、リンクL11、L12の端点ノードN11,N12からLEVEL0への垂線の足に接続ノードC03、C04を設定する。接続ノードC03、C04は、端点ノードN11,N12と同じ位置にあり、高さ値のみが異なるノードである。そして、端点ノードN11、N12から接続ノードC03、C04にそれぞれ接続リンクLC6、LC7を設定する。これらの接続ノードC03、C04および接続リンクLC6、LC7は、それぞれ階層間の移動のみを行うための経路となることから、それぞれ階層移動ノード、階層移動リンクと呼ぶこともある。
このようにして階層移動ノード、階層移動リンクが設定されると、リンクL11、L12の端点は、道路リンクL02と同じ階層に存在する階層移動ノードC03、C04とみなすことが可能となる。従って、先にリンクL04,L05で説明したのと同じく、道路リンクL02上に接続ノードC05を設定し、階層移動ノードC03、C04と接続ノードC05とをそれぞれ連結する接続リンクLC4、LC5を設定する。道路リンクL02のうち、接続ノードC05とノードN04の間は削除される。図5の例では、上の階層LEVEL1から下の階層LEVEL0に下がる階層移動リンクを例示したが、同様の処理によって、「LEVEL−1」などの下の階層からLEVEL0などの上の階層に移動する階層移動リンクを設けるようにしてもよい。また、図5の例では、LEVEL1のノードN11、N12をLEVEL0に接続するための階層移動リンクを例示したが、逆に、LEVEL0のリンクL02上に設けられた接続ノードC05をLEVEL1に持ち上げるための階層移動リンクを設けるようにしてもよい。また、接続対象となるリンクL11、L12、L02のいずれとも異なる第3の階層に移行させる階層移動リンクを、各リンクL11、L12、L02に接続するようにしてもよい。
図6は接続先となる道路リンクの選択方法および接続ノードの設定方法を示す説明図である。以下、図6を参照しつつ、図5で示したマージ処理において、高密度整備領域側のリンクの接続先となる道路リンクを選択するための規則、および接続ノードの位置を決定するための規則について説明する。
まず、図の上方に示すように、車道の両側に歩道が設けられている道路を対象とする場合の処理を説明する。道路リンクLL1は、車道の中央付近に設定されている。高密度整備領域におけるリンクLH1、LH2は、歩道の中央付近に設定されている。これらのリンクLH1、LH2、および道路リンクLL1は、地図で道路を描画する際に、同一のポリゴンPOL1に含まれている。このように、処理対象となるリンクLH1、LH2の端点ノードNH1、NH2と、同一の描画ポリゴンに含まれる道路リンクLL1が存在する場合には、その道路リンクLL1を接続先として選択することができる。
次に道路リンクLL1上に接続ノードNC1を設定する方法について説明する。本実施例では、端点ノードNH1、NH2から道路リンクLL1に垂線をおろし、その足と、道路リンクLL1のノードNL2との中点に接続ノードNC1を設定するものとした(図中で距離l1はl2と等しくなる)。このように接続ノードNC1を設定し、接続リンクLC1、LC2を設定することにより、各リンク間のなす角θを鈍角にすることができる。この角度が鈍角となっていることにより、リンクLH1から道路リンクLL1に至る経路を案内する際に不自然な屈曲を回避でき、経路案内時の違和感を軽減することができる。
接続ノードの設定方法は、図示した方法に限られない。図中の距離l1、l2の比は任意に設定可能である。また、別の設定方法として、端点ノードNH1から、予め規定されたなす角θ方向に接続リンクLC1をのばし、道路リンクLL1との交点を接続ノードNC1と設定してもよい。更に別の設定方法として、垂線の足からノードNL2方向に所定距離だけ移動した位置に接続ノードNC1を設定するようにしてもよい。もちろん、なす角θが鈍角であることは必須の条件ではないため、垂線の足を接続ノードNC1とすることも可能である。
マージ処理では、上述の通り、高密度整備領域のリンクデータの近傍に、接続先となる道路リンクが存在していることが処理の前提となる。仮に、図6の状態において、境界BL内が高密度整備領域であるとする。高密度整備領域では、道路リンクLL1は転用されないため、この状態では、リンクLH1、LH2の近傍の道路リンクLL1は存在しないこととなり、上述のマージ処理を実行することができなくなる可能性がある。従って、マージ処理を円滑に実行するという観点からは、高密度整備領域のリンクを設定する際には、少なくともその端点ノードは低密度整備領域内に設けることが好ましい。本実施例のデータ生成装置300には、高密度整備領域のリンクデータおよびノードデータを設定する際に、この条件を満たしているか否かを自動的に判定する機能を設けても良い。
次に、リンクLH3のように、同一の描画ポリゴンに含まれる道路リンクが不明の場合の処理について説明する。この場合には、端点ノードNH3から、近傍の道路リンクLL3、LL2、LL4に垂線LC3,LC4、LC5をおろし、その距離が最短となる道路リンクを選択する。ただし、この垂線が、建築物その他の構造物を横切る場合には、選択対象から除外する。
図の例では、垂線の長さは「LC4<LC3<LC5」という関係にある。しかし、垂線LC4は、建築物BLDを横切っている。従って、垂線LC4の先にある道路リンクLL2は選択の対象から除外され、道路リンクLL3が選択されることとなる。この結果、リンクLH3のマージ処理では、リンクLL3上に接続ノードNC2が設定され、端点NH3から接続ノードNC2に接続リンクLC3が設定されることとなる。
本実施例では、接続リンクは接続先から除外するものとした。一例として、リンクLH4のマージ処理を考える。リンクLH3のマージ処理が完了しているとすると、リンクLH4の端点ノードNH4の近傍には、道路リンクLL3の他、接続リンクLC3が存在することになる。端点ノードNH4から両リンクへの距離は同等である。しかし、接続リンクLC3は接続先の選択対象から除外される。従って、リンクLH4のマージ処理では、接続先として道路リンクLL3が選択され、道路リンクLL3上に接続ノードNC3が設定されるとともに、端点ノードNH4と接続ノードNC3とを結ぶ接続リンクLC6が設定されることになる。このように接続リンクを選択先から除外することによって、経路探索データのノード・リンクデータの構造が複雑化することを回避できる利点がある。
接続先の選択、および接続ノードの設定は、上述した方法の他、種々の方法を採ることができる。上述の方法のいずれを優先させるかという点についても任意に設定可能である。また、上述の条件の少なくとも一部を省略してもよい。上述の例では、いずれも低密度整備領域内に接続ノードを設ける例を示したが、接続ノードは高密度整備領域と低密度整備領域との境界上に設けるようにしてもよい。また、図5のリンクL05に示したように、道路リンクが高密度整備領域に入り込んでいるような場合には、高密度整備領域内で接続ノードを設定してもよい。
図7はマージ処理のフローチャートである。図5、図6で説明した処理を実現するための処理、即ち主としてデータ生成装置300のマージ処理部350(図1参照)の機能に相当する処理であり、ハードウェア的にはデータ生成装置300のCPUが実行する処理である。このマージ処理は、全メッシュについての処理が完了するまで繰り返し実行される。
この処理では、CPUは隣接する2つのメッシュのワークデータ381を入力する(ステップS102)。そして、両メッシュが同種の領域であるか否かを判断する(ステップS104)。両メッシュが高密度整備領域同士または低密度整備領域(流用領域とその他の領域とが隣接している場合も含む)である場合には、同種の領域であると判断される。この場合には、リンク同士の整合性は保たれているので、図5,6で示した複雑なマージ処理は不要である。従って、CPUは図3に示した通り、接続リンク、接続ノードのフラグを削除するなどのデータフォーマット変換を行って(ステップS118)、マージ処理を終了する。
隣接する2のメッシュが異種の領域である場合には(ステップS104)、図5、6に示した手順でのマージ処理を実行する。CPUは、まず高密度領域のリンクデータから端点ノードを抽出する(ステップS106)。端点ノードとは、リンクの端のノードのうち、他のいずれのリンクにも接続されていないノードである。
次に、CPUはこの端点ノードから、LEVEL0の階層への接続ノード、接続リンク、即ち階層移動ノード、階層移動リンクを設定する(ステップS108)。具体的な処理内容は、図5のリンクL11、L12の処理内容として説明した通りである。この処理によって、図5中のノードC03,C04およびリンクLC6、LC7が設定されることになる。端点ノードが既にLEVEL0の階層に位置している場合には、この処理は省略可能である。
次に、CPUは、接続先となる転用リンク、即ち低密度整備領域において道路リンクからの転用によって設定されたリンクを選択する(ステップS110)。選択方法は、図6において説明した通りである。CPUはこうして選択された転用リンク上に、図6で説明した方法に従って接続ノードを設定し、端点ノードと接続ノードとを連結する接続リンクを設定する(ステップS112)。そして、図5のリンクL05で説明したように、転用リンクの切断処理、即ち転用リンクのうち高密度整理領域内にあるノードと接続ノードとの間を削除する処理を実行する(ステップS114)。以上の処理を、CPUは選択されたメッシュ内の全端点ノードについて完了するまで繰り返し実行する(ステップS116)。この処理が完了すると、CPUは図3に示した通り、接続リンク、接続ノードのフラグを削除するなどのデータフォーマット変換を行って(ステップS118)、マージ処理を終了する。
以上の処理を、全メッシュについて完了するまで繰り返し実行することにより、マージ処理が完了する。図4で示した通り、マージ処理が完了したデータは、地図DB250に格納され、以下で示す経路探索処理、経路案内処理に供される。
D.経路探索処理:
図8は経路探索処理のフローチャートである。端末100からの指示に従って、サーバ200の経路探索部230(図1参照)が実行する処理であり、ハードウェア的にはサーバ200のCPUが実行する処理である。
この処理では、サーバ200は端末100から、現在位置、目的地、および探索条件を入力する(ステップS300)。探索条件としては、距離優先/時間優先などの探索モードの指定、階段や坂道を回避したいなど移動負荷に関する要望事項、ガードレールや街灯が整備されている道を優先したいなど安全性に関する要望事項が含まれる。先に説明した通り、本実施例では、これらの要望事項は、ユーザIDと対応づけてユーザDB240に予め登録されている。経路探索時には、端末100でユーザIDを入力すると、ユーザDB240に登録されたデータが探索条件として指定されることになる。
CPUは、上述の条件に基づいて経路探索を開始し、現在位置に接続されたリンクデータを検索して順次、候補経路を延伸する(ステップS302)。本実施例では、経路探索は、ダイクストラ法によって行う。ダイクストラ法とは、各リンクに対して、距離、移動の所要時間などに応じて設定されたコストを予め付しておき、出発地から目的地に至る多数の経路の中から、このコストの総和が最小となる経路を見いだす演算方法である。ダイクストラ法では、各リンクのコストに対して、ユーザからの要望を反映させることによって、要望に添った経路探索を行うことができる。例えば、階段を回避したいという要望が設定されている場合には、階段に対して付されているコストを、増大させればよい。要望をコストに反映させる方法は、任意に設定可能である。
階段のコストを平坦な通路よりも増大させた上で経路探索を行うことは、階段の上り下りに伴う体力的な負荷を考慮していることに相当する。このほか、経路に対する歩行者の心理的な影響を考慮するようにしてもよい。例えば、地上の通路から一旦、地下の通路に降り、再度地上に上る通路がある場合を考える。このように階層の移動を伴う通路に対しては、仮にエスカレータなど体力的な負荷を伴わない方法で上り下りを行ったとしても、地上のみを通る通路に比べると心理的に敬遠される傾向にある。経路探索では、こうした傾向を反映するため、例えば、階層を移動する経路に対しては、上り下りの手段にかかわらず予め設定された階層移動コストを加えることもできる。こうすることにより、若干、遠回りとなっても、階層移動が少ない経路が探索されるようになり、実用面での違和感や負担感のない経路をユーザに提示することができる。
CPUは、出発地から目的地に経路を探索していく過程で、経路の先端が高密度整備領域、低密度整備領域のいずれに存在するかを判定する(ステップS304)。この判定は、経路探索に用いるメッシュがいずれの領域に対応しているかを判定すればよく、本実施例では、リンクデータに付された領域IDを参照することによって判断可能である。
CPUは、経路の先端が高密度整備領域に存在する場合には(ステップS304)、詳細サーチで経路探索を実行し(ステップS306)、低密度整備領域に存在する場合には(ステップS304)、簡易サーチで経路探索を実行する(ステップS308)。詳細サーチでは、ユーザの要望を反映した経路探索を行う。従って、上述の通り、要望事項を各リンクデータのコストに反映させた上で、経路探索を行うことになる。簡易サーチでは、ユーザの要望を無視して経路探索を行う。従って、予め各リンクに設定されたコストを用いて経路探索を行うことになる。簡易サーチでは、ユーザの要望の一部のみをコストに反映させるようにしてもよい。簡易サーチでは、このようにユーザの要望をコストに反映させる処理の簡素化を図ることができるため、経路探索の所要時間を短縮化することができる。
CPUは、上述の通り、候補経路を延伸するたびに、詳細サーチと簡易サーチとを使い分けながら、目的地に至るまで経路探索を繰り返し実行する(ステップS310)。例えば、出発地が低密度整備領域に存在し、目的地が高密度整備領域に存在する場合には、経路探索の当初は簡易サーチが行われ、候補経路の先端が高密度整備領域に入った時点で詳細サーチに切り替わることになる。この切り替えは、経路探索の過程で一度に限られるものではなく、候補経路を延伸するにつれて、その先端が低密度領域、高密度領域をいくつも通過する場合には、その都度、探索方法が切り換えられることになる。CPUは、こうして得られた経路を出力し(ステップS312)、経路探索処理を完了する。本実施例では、詳細サーチと簡易サーチを使い分ける例を示したが、領域に関わらず詳細サーチまたは簡易サーチのみを統一的に用いるようにしてもよい。
本実施例では、高密度整備領域、低密度整備領域に分けて整備された経路探索データを利用して経路探索を実行する。高密度整備領域では、階段や歩道橋などの立体的な構造も含めて歩行者に固有の通路のデータが形状、属性ともに詳細に整備されている。従って、歩行者の要望を反映させた利便性の高い経路探索を実現することができる。
一方、低密度整備領域では、道路リンクの転用によって経路探索データが整備されている。このため、情報量は高密度整備領域ほど充実してはいないものの、高密度整備領域に比較してノード・リンクのネットワークが簡素化されているという特徴があり、経路探索を短時間で行うことができる。本実施例では、低密度整備領域では、ユーザの要望を無視する簡易サーチを適用するため、更に、処理時間を短縮化することが可能である。以上で説明した特徴により、本実施例では、利便性の高い経路探索と、短時間での経路探索の双方の要求をバランス良く満たすことが可能となる。
E.経路案内処理:
図9は経路案内処理のフローチャートである。探索された経路を、ユーザの現在位置に応じて地図上に表示するための処理である。この処理は、サーバ200の経路案内部220が実行する処理であり、ハードウェア的にはサーバ200のCPUが実行する処理である。
この処理では、CPUはまず案内すべき案内経路のデータを経路探索部230から入力する(ステップS400)。案内経路のデータの授受は、経路探索部230から直接行う他、ユーザDB240をバッファとして活用してもよい。
次にCPUは端末100からユーザの現在位置を入力する(ステップS402)。そして、この現在位置が高密度整備領域、低密度整備領域のいずれに属するかを判断し(ステップS404)、高密度整備領域に属する場合には詳細サーチ結果案内モードで経路案内を行う(ステップS406)。低密度整備領域に属する場合には簡易サーチ結果案内モードで経路案内を行う(ステップS408)。CPUはこれらの案内モードを使い分けながら、ユーザが目的地に到達するまで(ステップS410)、経路案内を繰り返し実行する。
図中に詳細サーチ結果案内モードの表示画面DISP1、簡易サーチ結果案内モードの表示画面DISP2を例示した。いずれのモードにおいても、現在位置を含む地図が表示され、将来の経路が表示される点では共通である。ただし、両モードでは、現在位置を表示するシンボルの形状が異なる。また、画面上に、「詳細」、「簡易」の文字で、いずれの案内モードで表示が行われているかが示される。更に、詳細モードでは経路探索時に反映された要望事項が、経路探索の「条件」として表示される。簡易モードでは、ユーザからの要望が経路探索に反映されていない旨のお詫びを表示してもよい。詳細モードから簡易モードへの切り換え時を音声などのアラームでユーザに知らせるようにしてもよい。簡易モードでは、道路ネットワークを利用した経路探索データで案内が行われるため、案内位置が歩道からずれるなど違和感の原因となる案内が行われる可能性があるが、アラームを出力することで、ユーザの注意を喚起し、案内モード切り換えに伴う違和感を低減することができる。同様に、簡易モードから詳細モードへの切り換えをアラームで知らせても良い。ただし、違和感を招く案内は詳細モードよりも簡易モードの方が生じやすいことを考慮すると、詳細モードから簡易モードへの切り換え時のアラームの方が、有用性が高いと言える。
このように現在位置が属する領域の種類に応じて、案内モードを切り換えることによって、ユーザは経路探索結果に自己の要望事項がどの程度反映されているかを容易に判断することができる。従って、自己の要望が十分に反映されていないと考えられる経路が案内された場合、例えば、階段を避けたいという要望を指定しているにも関わらず、階段を通行する経路が案内された場合などにおいて、経路探索を再試行するなどの無駄を回避することができる。経路が簡易サーチ結果案内モードで表示されている場合には、経路探索を再試行したとしても同様の結果しか得られないことが容易に判断可能だからである。
表示態様の使い分けは、図9に示した例に限らず、地図の背景色の使い分けなど種々の方法を採ることができる。また、かかる使い分けは必須のものではなく、領域に関わらずいずれかの表示態様を統一的に使用するようにしてもよい。
以上で説明した第1実施例の経路案内システムによれば、以下に示す種々の効果を得ることができる。第1に、高密度整備領域、低密度整備領域に分けて経路探索データを整備することができるため、経路探索データの整備負荷を軽減することができる。立体的な構造物が多い場所を、高密度整備領域に指定し、その他の領域を低密度整備領域に指定することによって、ユーザの要望を反映させた利便性の高い経路探索を実現可能なデータを、比較的軽い負荷で整備することが可能となる。
第2に、上述の特徴を有する経路探索データを利用して経路探索を実行することによって、利便性の高い経路の提供という要求と、経路探索の所要時間の短縮化という要求とをバランス良く実現することが可能となる。第3に、経路探索データの領域の種別に応じて、経路案内の表示態様を切り換えることによって、ユーザの要望が経路にどの程度反映されているかを示唆することができ、利便性の高い経路案内を実現することができる。
F.第2実施例:
第1実施例では、データ生成装置300で地図DB250を整備し、サーバ200で経路探索および経路案内を実行する例を示した。地図DB250の整備、経路探索および経路案内は、少なくとも一部を端末100で実行するようにしてもよい。第2実施例では、端末でこれらの処理を実行する例を示す。第2実施例においても、データの整備領域は、第1実施例と同様、高密度整備領域および低密度整備領域に分けられている(図2参照)。
図10は第2実施例としての経路案内システムの構成を示す説明図である。経路案内システムは、端末100A、サーバ200A、およびデータ生成装置300Aから構成されている。端末100Aは、地図DBのデータ生成や経路探索処理などを行い得るだけの処理能力を有する装置が好ましく、例えば、通信機能を有するパーソナルコンピュータ、PDAなどを用いることができる。本実施例では、十分な処理能力を有するCPUおよびハードディスクを搭載した車両用のナビゲーション装置を端末100Aとして用いるものとした。この端末100Aは、必要に応じて車両から取り外して携帯可能であるものとする。
図中に各装置の機能ブロックを示した。これらの機能ブロックは、第1実施例と同様、所定のコンピュータプログラムをインストールすることによって、ソフトウェア的に構成される。機能ブロックの少なくとも一部は、ハードウェア的に構成してもよい。
サーバ200Aの通信部210Aは、ネットワークINT、NETを介して、端末100Aおよびデータ生成装置300Aとの通信を行う。サーバ200Aは、ネットワークINTを介して、歩行者ネットワークDB211Aに格納されたデータを端末100Aに供給する。
歩行者ネットワークDB211Aに格納されているデータは、オペレータからのコマンドによって設定された経路探索データである。高密度整備領域内のリンクデータ、ノードデータ(図2の地図A1参照)、および流用領域を除く低密度整備領域においてオペレータからのコマンドによって追加されたリンクデータ、ノードデータ(図2中の地図A2におけるリンクL24、L25参照)が含まれる。以下、説明の便宜上、歩行者ネットワークDB211Aに格納されているデータを「歩行者ネットワークデータ」と称するものとする。
歩行者ネットワークデータは、データ生成装置300Aによって整備される。コマンド入力部330Aは、キーボードやマウスなどの操作を介して、オペレータのコマンドを入力する。歩行者ネットワーク設定部340Aは、このコマンドに応じて歩行者ネットワークデータを設定する。設定途中のデータは、ワークデータ管理部380Aによって管理される。
表示制御部370Aは、オペレータが歩行者ネットワークデータを設定する際に利用する画面を表示する。この画面表示には、例えば、道路ネットワークDB310Aに含まれる描画データを利用することができる。また、領域指定テーブル320Aを参照して、各領域が高密度整備領域、低密度整備領域のいずれに該当するかも表示することが好ましい。高密度整備領域では、道路リンクは転用されないが、歩行者ネットワークデータを設定する際の参照データとして道路リンクを表示させてもよい。
歩行者ネットワークDB更新部390Aは、設定された歩行者ネットワークデータをサーバ200Aの歩行者ネットワークDB211Aに格納する。データ生成装置300Aの機能は、サーバ200Aに組み込むことも可能である。
端末100Aは、低密度整備領域のリンクデータ、ノードデータを整備するとともに、サーバ200Aから歩行者ネットワークデータの供給を受け、両者をマージして経路探索用の地図DB165Aを生成する。この機能を実現するための機能ブロックを図中に示した。
道路ネットワークDB160Aは、低密度整備領域のデータを整備する際に利用される車両用のノード、リンクデータである。領域指定テーブル161Aは、各領域が高密度整備領域、低密度整備領域のいずれに当たるかを示す設定テーブルである。
転用ネットワーク設定部162Aは、領域指定テーブル161Aで低密度整備領域と指定された領域について、道路ネットワークDB160Aを参照して転用処理、即ち歩行者用のネットワークデータを生成する処理を実行する。生成したデータは、ワークデータ管理部163Aに格納される。ここで生成されるデータの内容およびデータ構造は、第1実施例(図3)と同様である。転用ネットワーク設定部162Aは、領域の指定に関わらず全領域について上述の転用処理を行うものとしてもよい。この構成では、領域指定テーブル161Aを省略することも可能である。
通信部120Aは、サーバ200AとのネットワークINTを介した通信を実現する。通信部120Aは、サーバ200Aから歩行者ネットワークDB211Aのデータをダウンロードし、ワークデータ管理部163Aに格納する。上述の転用処理が低密度整備領域についてのみ実行されている場合、高密度整備領域に対応するワークデータは未存在となっているから、ダウンロードされたデータをそのまま格納すればよい。転用処理が全領域について実行されている場合には、ダウンロードされたデータを対応する領域に上書きすればよい。いずれの構成においても、低密度整備領域については道路ネットワークDBからの転用データが格納され、高密度整備領域については歩行者ネットワークデータが格納されることになる。
サーバ200Aからダウンロードされるデータには、低密度整備領域に追加されるデータも含まれる(図2中の地図A2におけるリンクL24、L25参照)。これらのデータについては、転用処理がいずれの領域を対象として行われているかに関わらず、それぞれ対応する領域に追加すべきデータとして格納すればよい。
マージ処理部164Aは、先に図5,6で示した手順で、ワークデータ管理部163Aのデータに対してマージ処理を実行する。処理結果は、地図DB165Aに格納される。経路探索部166Aは、GPS140Aから入力される現在位置、およびコマンド入力部130Aから入力される探索条件に基づき地図DB165Aを参照して経路探索を行う。経路探索部166Aの機能は、第1実施例(図1の経路探索部230)と同様である。ただし、第2実施例では、端末100Aを利用するのは単一のユーザである場合を想定しているため、第1実施例におけるユーザDB240は経路探索部166Aまたは地図DB165Aに組み込むものとした。
経路案内部167Aは、GPS140Aから入力される現在位置に応じて、経路案内を実行する。経路案内部167Aの機能は、第1実施例(図1の経路案内部220)と同様である。表示制御部150Aは、これらの経路探索、経路案内時における画面の表示を制御する。
図11は第2実施例における地図DB更新処理のフローチャートである。サーバ200Aから歩行者ネットワークDB211Aの更新データが供給された時に、これをダウンロードして、端末100Aの地図DB165Aを更新する処理である。図10のマージ処理部164Aが主として実行する処理であり、ハードウェア的には端末100AのCPUが実行する処理である。
この処理では、まずサーバ200Aから歩行者ネットワークデータの更新データをダウンロードする(ステップS90)。このダウンロードはプッシュ型、プル型のいずれで行っても良い。ダウンロードされたデータは、ワークデータ管理部163Aに格納される。
CPUは次に、更新データに隣接する道路ネットワークデータを読込み(ステップS92)、マージ処理を施す(ステップS100A)。例えば、図中にクロスハッチを付して示すメッシュM1(以下、各メッシュについては、メッシュ番号NxNyの順に表記し、メッシュ番号32のように表す場合もある)〜M4(メッシュ番号54)が更新データとしてダウンロードされたとする。まず、メッシュM1のマージ処理を行う際には、メッシュM1の周囲にハッチングを付して示したメッシュ番号21,31,41,22,42,23,33、43の各メッシュとの間でマージ処理を実行することになる。
マージ処理(ステップS100A)の内容は、第1実施例(図5〜7)と同じである。マージ処理が完了すると、CPUはマージ処理後のデータで地図DB165Aを更新する(ステップS200A)。同様に、メッシュM2〜M4の処理も実行する。メッシュM2〜M4が全て高密度整備領域である場合には、メッシュM2とM4の間、M3とM4の間ではマージ処理を省略することが可能である。
以上で説明した第2実施例の経路案内システムによっても、第1実施例と同じく領域で分けて整備された経路探索データを利用することができるため、第1実施例と同様の効果を得ることができる。また、第2実施例では、歩行者ネットワークデータをサーバ200Aから供給することによって、ユーザが保有している道路ネットワークDB160Aを歩行者用の経路探索にも有効活用することができる利点もある。
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、経路案内システムでは、第1、第2実施例で各装置の構成を複数のサーバ等の分散処理で提供するシステム構成を採ることもできる。本実施例では、方眼状のメッシュ単位で領域の種別を指定する場合を例示したが、本発明はメッシュの形状に関わらず適用することが可能である。