本発明の実施例について、経路案内システムにおける現在位置推定機能として実現した場合を例にとって以下の順序で説明する。
A.システム構成:
B.経路探索・案内処理:
C.現在位置推定処理:
D.基準建物設定処理:
E.存在領域画定処理:
F.基準建物の選択:
G.変形例:
A.システム構成:
図1は実施例としての経路案内システムの構成を示す説明図である。本実施例では、歩行者用の経路案内システムとしての構成例を示すが、車両用の経路案内システムとして構成することもできる。経路案内システムは、携帯電話を利用した端末100とサーバ200とをネットワークINTで接続して構成されている。ネットワークINTは無線通信を利用したネットワークであり、LANやイントラネットのように限定的なものであってもよいし、インターネットのように広域的なものであってもよい。端末100は、携帯電話の他、いわゆる車両用のナビゲーション装置やPDA、ネットワーク通信機能を有するパーソナルコンピュータなどを利用することができる。歩行者用の経路案内システムとして構成する場合、車両用のナビゲーション装置は、車両から取り外して携帯可能としておくことが望ましい。
端末100は、ユーザの操作に応じて、経路探索および経路案内に必要な指示をサーバ200に送信するための機能を奏する。図中には、端末100の機能ブロックを併せて示した。端末100は、CPU、RAM、ROMを備えたマイクロコンピュータを制御装置として内蔵しており、このCPUはROMに記憶されたソフトウェアを実行することで、図示する各機能ブロックを構成する。これらの機能ブロックは、このようにソフトウェア的に構成する他、ハードウェア的に構成することも可能である。
通信部120は、ネットワークINTを介してサーバ200と通信する機能を奏する。GPS140は、全地球測位システム(Global Positioning System)を利用して、端末100の現在位置の緯度、経度を検出する。コマンド入力部130は、スイッチ等に対するユーザ操作に基づいて、経路探索や経路案内における目的地の指定、探索条件の指定、現在位置推定のための情報、その他のコマンドを入力する。表示制御部150は、端末100のディスプレイに、これらのコマンド入力用のメニューを表示したり、サーバ200から受信した経路案内データに基づいて地図を表示させたりする。主制御部110は、上述した各機能ブロックを統括制御することで、端末100の全体機能を制御する。
サーバ200は、端末100からのコマンドに基づいて、種々のデータベースを参照しながら、経路探索を行ったり、経路案内を行ったりする。また、サーバ200は、これらの処理過程で、端末100のGPS140が電波を受信できない状態にある時など、ユーザの現在位置が不明となっている場合には、ユーザと所定の情報授受を行って現在位置を推定する機能、つまり本発明の現在位置推定装置としての機能も有している。図中には、これらの機能を実現するための機能ブロックおよびデータベースの例を示した。各機能ブロックは、サーバ200のCPUが実行するコンピュータプログラムによって、ソフトウェア的に構成されるが、ハードウェア的に構成することも可能である。
サーバ200は、地図DB250を参照しながら、経路探索、経路案内、現在位置推定の各処理を実行する。地図DB250には、通路をノード、リンクで表したネットワークデータ252、地図描画用のポリゴンや文字データからなる描画データ254を有している。描画データ254には、建物などの各地物についての属性も記録されている。属性としては、例えば、建物の種別、名称、形状、高さ、色、外観(例えば、煉瓦造り、ガラス張りなど)が記録される。建物の写真を属性として記録してもよい。
経路案内DB260は、経路探索、案内の過程で端末100から入力されたり、サーバ200によって生成された種々のデータを格納する。かかるデータとしては、例えば、経路探索時にユーザが端末100を操作して指定した探索条件や、ユーザの現在位置、経路探索の結果を示す経路案内データなどが含まれる。
通信部210は、端末100とのネットワークINT経由での通信を制御する。経路探索部220は、経路案内DB260に格納されている探索条件に従って、地図DB250のうち主としてネットワークデータ252を参照して、ユーザから指定された出発地、目的地間の経路を探索する。探索された結果は、上述の通り、経路案内DB260に経路案内データとして格納される。経路案内部240は、経路案内DB260内の経路案内データおよび現在位置を参照しながら、ユーザが進むべき経路を地図上に案内表示する表示データを生成し、端末100に送信する。
推定エンジン230は、経路探索および経路案内の過程で、端末100からユーザの現在位置が取得できない状況が生じた場合に、現在位置を推定するための処理を実行し、またユーザとの間で処理に必要な情報の授受を行う。基準建物設定部232は、現在位置を推定するための前処理として、ユーザとのやりとりによって、処理に用いられるべき基準建物を設定する機能を奏する。境界画定部234は、上述の基準建物を用いて、ユーザとのやりとりによって、存在領域、即ち「現在位置」が存在し得る領域の境界を画定する機能を奏する。この境界の画定において、選択部231は、基準建物が多数ある場合に、境界画定部234が用いるべき基準建物を所定の規則に従って決定する機能を奏する。情報提供部232は、ユーザが現地で基準建物を特定するために画像や属性などの情報を提示する。境界画定部234は、こうして選択された基準建物の位置関係に関してユーザが入力した情報を用いて上述の境界の画定を行うのである。基準建物設定部232、推定エンジン230境界画定部の処理内容については、後述する。
B.経路探索・案内処理:
図2は経路探索処理および経路案内処理のフローチャートである。サーバ200の経路探索部220および経路案内部240が実行する処理であり、ハードウェア的にはサーバ200のCPUが実行する処理である。
経路探索処理では、サーバ200はユーザからの指定に従った方法で、経路探索の出発地を設定する。現在位置を出発地として用いる指定がなされている時には(ステップS10)、現在位置推定処理を実行して(ステップS12)、現在位置を取得する。現在位置を出発地としない旨の指定がなされている時には、端末100から出発地の指定を入力する(ステップS11)。出発地の指定には、例えば、ユーザが地図上の一点をクリックする方法や、住所を入力する方法などを採ることができる。
サーバ200は、次に経路探索の目的地、探索条件を入力する(ステップS14)。目的地は、出発地の指定と同様の方法、または目的地の名称やレストラン、ショップなどの種別から検索する方法などを採ることができる。探索条件としては、最短距離の経路を探索する旨の指定、所要時間最短の経路を探索する旨の指定、上り坂や階段を回避する経路を探索する旨の指定などが可能である。
サーバ200は、上述の各条件に基づき、経路探索処理を実行する(ステップS16)。経路探索は、ダイクストラ法によって行うことができる。ダイクストラ法は、周知の方法であるため、詳細な説明は省略するが、道路を表すノード、リンクにそれぞれ付されたコストが最小となる経路を探索する方法である。上り坂や階段を回避する探索条件が付されている場合には、上り坂等に対応するリンクのコストを大きい値に設定することにより、探索条件を満たす経路を探索することができる。他の探索条件が指定されている場合にも、同様に、探索条件に応じて各リンクのコストを設定することにより、それぞれの探索条件を満たす経路を探索することが可能である。経路探索が完了すると、サーバ200は、経路案内データを経路案内DB260に出力して、経路探索処理を終了する(ステップS18)。
サーバ200は、引き続き、経路案内データを参照して、経路案内処理を実行する。経路探索処理と経路案内処理とは一連の処理としてシーケンシャルに実行することも可能ではあるが、本実施例では、両者を別個の処理として構成した。こうすることにより、経路探索と経路案内とをそれぞれ別のタイミングで実行することができ、経路案内システムの利便性を向上させることができる。例えば、電車の乗車中に、電車を降りた後の駅から目的地までの経路探索を実行しておき、駅に到着した後、経路案内を開始するということが可能となるのである。
経路案内処理では、サーバ200は、経路案内DB260に格納された経路案内データを読み込む(ステップS50)。そして、現在位置推定処理によって(ステップS52)、ユーザの現在位置を取得し、案内表示処理(ステップS54)によって、ユーザが進むべき経路を地図上に表示する。サーバ200は、以上の処理をユーザが目的地に到着するまで繰り返し実行し(ステップS56)、経路案内処理を完了する。
C.現在位置推定処理:
図3は現在位置推定処理例を示す説明図である。本実施例では、サーバ200が、処理に用いる複数の建物を決定し、ユーザから見た状態でのこれらの複数の建物相互の相対的な位置関係を問い合わせ、その結果に基づいて現在位置の存在領域を画定する方法を採る。以下の説明では、図3(a)の地図上に示す建物A,B,C,Dに対する相対的な位置関係を入力した場合の処理を例にとって説明する。存在領域の画定に用いられる建物A〜Dを、以下、基準建物と呼ぶ。
ユーザからは、これらの建物相互の左右の位置関係が入力される。図3(b)はユーザにとって「建物Bが建物Aの左側に見える」場合の存在領域を示している。図中に太線で示した境界線よりも矢印で示した側であれば、ユーザは建物A,Bを、上述の位置関係で見ることができる。2つの建物の相対的位置関係が与えられた場合に、図3(b)に示す形で存在領域を画定する方法については後述する。
図3(b)で存在領域の境界線が建物A,B間で折れ曲がっているのは、上述の条件に適合する存在領域として、建物A、Bの間の領域も含めるものとしたからである。建物A,B間の領域では、ユーザの位置および姿勢に応じて、建物A、Bの相対的な位置関係は変化する。建物Aが建物Bの左に見えることもあれば、その逆に見えることもある。また、建物Aがユーザの前面に見え、建物Bがユーザの背後に見える場合、およびその逆に見える場合もある。本実施例では、「建物Bが建物Aの左側に見える」という可能性があることを考慮し、建物A、B間の領域も条件に合致する存在領域に含めている。本実施例では、左右いずれかに見えるという二者択一の形で建物の位置関係を問い合わせるものとしたが、この他に「建物の間に自分がいる」という選択肢を加えても良い。また、建物AおよびBが重なって見える、またはいずれか一方の建物しか見えないという選択肢を加えても良い。これらの選択肢は、建物およびユーザがほぼ一直線上に並んでいるという3者の相対的な位置関係を表すものである。このような位置関係が成立する範囲は比較的限られるため、上述の選択肢を加えることにより、速やかにユーザの現在位置を絞り込むことが可能となる。
同様にして、ユーザから、「建物Cが建物Bの左側に見える」という位置関係が入力された場合には、図3(c)に示す存在領域を画定することができる。「建物Dが建物Cの左側に見える」という位置関係が入力された場合には、図3(d)に示す存在領域を画定することができる。「建物Aが建物Dの左側に見える」という位置関係が入力された場合には、図3(e)に示す存在領域を画定することができる。図3(b)〜図3(e)で画定された存在領域を重ねることにより、図3(f)に示す通り、上述した全ての相対的な位置関係を満たす存在領域を求めることができる。
図4は存在領域の境界を画定する処理例を示す説明図である。図3において建物A、Bの相対的な位置関係が指定された場合の処理例、即ち図3(a)の境界を画定するための処理例を示した。建物A、Bは、図4(a)に示す位置に存在するとする。図の煩雑さを避けるため、図4(b)〜図4(d)では、背景の地図を省略して、建物A、Bの位置および形状を示すものとする。
境界を画定する処理では、この建物A、Bについて、図4(b)に示すように両者を包絡する凸多角形を求める。次に、この凸多角形の各辺のうち、異なる建物にまたがるものを抽出する。つまり、辺の一端が建物Aを表すポリゴンのいずれかの頂点と重なり、他端が建物Bを表すポリゴンのいずれかの頂点と重なる辺を抽出するのである。図4(b)の例では、辺s1、s2がこの辺に該当する。
図4(c)に示すように、抽出された辺s1、s2を延長する。これによって、平面は領域α0〜α5に分割される。建物A、Bの見え方は、各領域で異なっている。領域α0はユーザの姿勢によって建物A、Bの相対的な位置関係が変動する領域である。領域α1は建物Aのみが視認でき、建物Bは視認できない領域である。領域α2は逆に建物Bのみが視認でき、建物Aは視認できない領域である。もっとも、領域α1、α2においては、建物A、Bの高さ関係によっては、建物A、Bを前後に並んで見えることもある。領域α3は、建物Aの背後に建物Bが見える領域であり、ユーザの姿勢によっては建物Bが建物Aの左側に見える領域でもある。
領域α4は建物Aが建物Bの左側に見える領域である。領域α5は建物Bが建物Aの左側に見える領域である。以上より、ユーザから、「建物Bが建物Aの左側に見える」という位置関係が指定された場合には、領域α0、α3、α5がこの条件に該当することになる。従って、この条件に対しては、図4(d)に示すように、領域α0、α3、α5を合わせた範囲が存在領域として画定され、その境界線が特定されることになる。先に図3(b)で示した境界線は、こうして求められたものである。図3(c)〜図3(e)に示したそれぞれの境界も、同様の方法によって求めることができる。
図4の方法で画定される存在領域は、理論上は無限に広がることになるが、実際には建物を視認可能な範囲は限られている。従って、建物の高さに応じて設定される視認可能範囲も併せて考慮し、存在領域は、この視認可能範囲内の有限な領域として扱うことが好ましい。
図5は現在位置推定処理のフローチャートである。推定エンジン230(図1参照)が図3、4で説明した処理を実現するためのフローチャートであり、ハードウェア的にはサーバ200のCPUが実行する処理である。
現在位置推定処理では、サーバ200は、まず端末100のGPS140が有効に機能しているか否かを判断する(ステップS102)。GPS140が有効に機能している場合には、端末100から現在位置を入力し(ステップS104)、現在位置推定処理を終了する。
GPS140が機能していないと判断される場合には、図3、4に示した方法で現在位置を推定するための処理を実行する。サーバ200は、まず基準建物設定処理を行う(S110)。基準建物設定処理は、図3の建物A〜Dのように、存在領域の画定に用いられる基準建物を設定するための処理である。基準建物設定処理の内容は後述する。
サーバ200は、設定された基準建物を用いて存在領域画定処理を実行する(ステップS150)。図3および図4で説明した処理であり、ユーザから、基準建物間の相対的な位置関係の入力を受け、これに対応する存在領域を画定するのである。存在領域画定処理の内容についても後述する。基準建物設定処理および存在領域画定処理は、それぞれ存在領域が画定されるまで継続する。例えば、基準建物設定処理において設定された基準建物の位置関係によっては、存在領域を十分に絞り込むことができない場合もある。このような場合には、サーバ200は、存在領域は画定されていないと判断し、基準建物設定処理および存在領域画定処理を再試行するのである。
存在領域が画定されたか否かの判断は、種々の方法で行うことが可能である。例えば、存在領域が閉図形となった場合に画定されたと判断するようにしてもよいし、存在領域の面積または外接円の半径が所定値以下となった時に画定されたと判断するようにしてもよい。
サーバ200は、存在領域が画定されると、現在位置を更に精度良く特定するための処理を行う。このための処理として、サーバ200は、存在領域内の歩道リンクを抽出し(ステップS182)、その歩道リンク周辺の建物群を抽出する(ステップS184)。そして、端末100に、この抽出された建物の建物情報を提示し、ユーザからの回答を入力する(ステップS186)。
図中にこの入力のためのインタフェース画面DISPを例示した。図の例では、抽出された建物の画像を提示し、その建物の視認可否をユーザに確認する方法を採っている。この例では、「目の前に」見えるか否かを聞く形としているため、ユーザが「YES]と回答した場合には、ほぼピンポイントで現在位置を特定することが可能となる。ユーザが「NO」と回答した場合には、現在位置が特定されないため、サーバ200は他の建物について同様に視認可否を確認する(ステップS188)。
ステップS186では、「目の前」に限らず、単に建物の視認可否を訪ねるようにしてもよい。建物を視認可能な範囲は、建物の位置を中心とし、建物の高さに応じた半径で描いた円形領域と設定することができる。従って、ユーザが視認可と回答した場合には、ユーザの現在位置は上述の視認可能領域内にあると判断される。複数の建物についてユーザに視認可否を確認することにより、視認可能領域が重なり合う箇所が限定され、ユーザの現在位置を特定することが可能となる。本実施例では、ユーザステップS184までの処理で、存在領域が十分に絞り込まれているため、ユーザ付近の建物についてステップS186の質問および回答入力を行うことができ、現在位置を十分な精度で特定することが可能となる。
上述の実施例において、ステップS182〜S188の処理は省略してもよい。この処理を省略する場合には、例えば、存在領域中の任意の点、存在領域の重心などを現在位置と特定することができる。ステップS180までの処理で、存在領域が十分に絞り込まれている時には、上述の方法で現在位置を特定しても、経路探索処理および経路案内処理に支障が生じない程度の精度で現在位置を特定することが可能である。
D.基準建物設定処理:
図6は基準建物設定処理(前半)のフローチャートである。現在位置推定処理(図5)のステップS110に相当する処理である。基準建物設定部(図1参照)の機能に相当する処理であり、存在領域画定処理に用いる基準建物の設定を行う点で存在領域画定処理の前処理と言うこともできる。
基準建物設定処理が開始されると、サーバ200はユーザが視認可能な範囲で任意に選択した建物について建物属性を入力する(ステップS111)。図中に建物属性を入力するために端末100に表示されるインタフェース画面例DISP1を示した。この例では、名称、種別、高さ、色を入力可能となっている。建物の名称が分かっている場合には、「名称」欄にそれを入力する。「種別」では、病院、デパート、マンション、ホテルなどから該当するものを選択する。「高さ」欄には、建物の階数を入力する。色には、建物の外観の色を入力する。煉瓦造り、ガラス張りなど、外観を入力可能としてもよい。属性は、ここに例示した項目に限らず、その他種々の項目を入力可能としてよい。
サーバ200は、入力された属性に該当する候補建物を地図DB250から抽出する(ステップS112)。この場合、入力された属性に完全に一致するもののみを特定するようにしてもよいし、一定範囲で入力された属性との不一致を許容して地物を特定するようにしてもよい。後者の態様では、入力された項目のうち、所定数までは不一致であっても許容するという扱いをすることができる。例えば、図中に示した4つの項目のうち、1つまでは不一致を許容するものとすれば、「病院以外」の5階建ての白い建物や、「4階建て」の白い病院なども候補として抽出されることになる。不一致を許容する別の態様としては、各項目に対し許容誤差を認める扱いをしてもよい。図中の例では、例えば、5階建てという高さに対して「±1階」という誤差を許容すれば、4階建てや6階建ての白い病院も候補として抽出されることになる。基準建物設定処理では、ユーザはやや遠方にある建物についての属性を入力する可能性もあるから、このように一定の誤差を許容することにより、ユーザの見間違えなどによる属性の入力ミスを補充することができ、ユーザの意図に沿って候補の建物を抽出する可能性を高めることができる。
ステップS112の処理では、抽出された候補が一つに特定されないことがある。このような場合には、サーバ200は既に設定された基準建物や他の候補建物との距離によって、候補を一つに絞り込む(ステップS113、S114)。
図中にこの絞り込みの方法を示した。左側の図は、建物a,b,cの3つが候補となっている時に、基準建物BBとの距離に基づいて、これらのいずれか一つに絞り込む例を示している。円形の領域Ca〜Ccは、建物a〜cのそれぞれを視認可能な領域である。円形領域Cbbは基準建物BBを視認可能な範囲である。領域Ca〜Cc、Cbbの半径は、建物a〜c、BBの高さに応じて設定することができ、高さが高いほど半径も大きくなる。既に設定済みの基準建物BBが存在する場合、ユーザは、基準建物BBを視認可能な位置、即ち領域Cbb内に存在していることになる。一方、建物a〜cが候補として抽出されている時、ユーザは、建物a〜cのいずれかを視認可能な範囲、即ち領域Ca〜Ccのいずれかに存在していることになる。図示した位置関係では、領域Cbbと少なくとも一部が重なっているのは領域Caのみである。従って、ユーザは領域Cbb、Caが重なっている範囲内に存在していると考えられ、ユーザが入力した属性に対応するのは建物aであると特定することができる。
図の右側には、他の候補との距離に基づく絞り込みの例を示した。ユーザが入力した第1の属性に対応する候補が建物d1、d2であり、第2の属性に対応する候補が建物e1、e2であるとする。図中には、各建物の視認可能領域を併せて示した。ユーザは、建物d1またはd2を視認可能な位置にいるとともに、建物e1またはe2を視認可能な位置にいると考えられる。図示した位置関係では、候補d2と候補e1の視認可能領域が重なっている。このことから、第1の属性に対応する候補は建物d2であり、第2の属性に対応する候補は建物e1であると特定することができる。
サーバ200は、上述の処理の結果、属性に対応した候補が一つに絞られた場合には、その候補を基準建物として登録する(ステップS115)。ステップS114の処理を実行しても候補が一つに絞り込めない場合には、抽出された複数の建物を候補として記憶しておくことになる。上述の候補d1、d2および候補e1、e2の処理例のように、他の候補建物の絞り込みを行う過程で、併せて一つの候補への絞り込みが可能となることもあるからである。サーバ200は、また、地図DBから抽出した時点で候補が一つに特定されている場合には(ステップS113)、ステップS114による絞り込みをスキップして、抽出された候補を基準建物として登録する(ステップS115)。
ユーザが他の属性を入力する旨を指示した場合には(ステップS116)、サーバ200は、ステップS111〜S115までの処理を再度実行する。他の属性を入力しない旨の指示があった場合には(ステップS116)、サーバ200は後半の処理に移行する。
図7は基準建物設定処理(後半)のフローチャートである。先に説明した処理によって基準建物数が3以上となっている時には、サーバ200は、更に多くの基準建物を設定する必要はないと判断し(ステップS120)、基準建物設定処理を終了する。3個に満たない場合には、更に基準建物数を増やすための処理を実行する。存在領域を精度良く絞り込むためには、3個以上の基準建物を使うことが好ましいからである。もっとも、存在領域の画定にそれほど高い精度を要求されていない場合には、2個の基準建物が設定された時点で基準建物設定処理を終了してもよい。
基準建物数が3個に満たない場合、サーバ200は、既に登録されている基準建物に基づき概略存在領域を設定する(ステップS121)。概略存在領域とは、基準建物の視認可能範囲から定まる現在位置の存在領域である。図中に概略存在領域の設定方法を例示した。ここでは、建物B1,B2が基準建物として設定されているものとする。各建物については、先に説明した通り、視認可能領域を求めることができる。図示する通り、建物B1、B2に対する視認可能領域は、半径r1、r2の円形領域とした。半径r1、r2は、建物B1、B2の高さに応じて定めることができる。概略存在領域は、各基準建物の視認可能領域が重なり合う部分として特定することができ、図の例では、ハッチングを付した領域となる。
サーバ200は、こうして特定された概略存在領域から、基準建物となるべき候補建物を抽出する(ステップS122)。候補建物は種々の方法で抽出可能である。例えば、概略存在領域の中心付近に位置する建物を抽出するようにしてもよいし、多くの属性が対応づけられている建物を抽出するようにしてもよい。ユーザの視認しやすさを考え、所定以上の高さの建物を抽出するようにしてもよい。
サーバ200は、抽出された候補建物について、建物情報を提示し、ユーザからの視認可否についての回答を入力する(ステップS123)。図中にこのためのインタフェース画面例を示した。この例では、端末100に候補建物の画像を示すとともに、視認可否を入力するようになっている。ユーザの誤解を回避するという点では、このように候補建物の画像を提示することが好ましいが、必ずしも画像は必須ではなく、建物の名称、種別、階数、色などの属性で情報を提示するようにしてもよい。
提示した建物情報に対し、ユーザが視認可と回答した場合には(ステップS124)、サーバ200はこの建物を基準建物として登録するとともに、基準建物数を1つ加算する(ステップS125)。この結果、基準建物数が3以上となれば(ステップS120)、基準建物設定処理を終了し、3に満たない場合には、ステップS121以降の処理を再度実行することになる。再度実行する際には、ステップS125で新たに登録された基準建物も考慮して、概略存在領域を設定する(ステップS121)。従って、徐々に概略存在領域は狭まっていくことになる。
一方、提示した建物情報に対し、ユーザが視認不可と回答した場合には(ステップS124)、サーバ200は試行回数が予め設定された上限値に至るまで(ステップS126)、概略存在領域を拡張して(ステップS127)、ステップS122以降の処理を再度実行する。既存の概略存在領域を一定の相似比で拡張するようにしてもよいし、概略存在領域の周囲に一定幅の帯状領域を付加していくことで拡張するようにしてもよい。概略存在領域を拡張するのは、ステップS122で抽出された候補建物が視認不可と回答された場合には、ステップS121で設定された概略存在領域が誤っている可能性があるからである。
試行回数が上限値に至った場合には、この処理を行うことなく基準建物設定処理を終了する。
本実施例では、前半の処理(図6)において、ユーザが属性を入力した建物を基準建物として登録する処理例を示しているが、基準建物の設定は、かかる方法には限られない。例えば、前半の処理(図6)でユーザが属性を入力した建物は、図7における概略存在領域の設定にのみ用いるものとし、存在領域画定処理(図5のステップS150)で使用する基準建物は、後半(図7)の処理によって設定されたもののみを用いるようにしてもよい。
E.存在領域画定処理:
図8は存在領域画定処理のフローチャートである。図5のステップS150に相当する処理であり、境界画定部234(図1参照)の機能に相当する処理である。この処理では、図3および図4で説明した方法によって、存在領域が画定される。
サーバ200は、まず、基準建物の位置、形状および高さデータを入力する(ステップS151)。本実施例では、3つ以上の基準建物が入力されることになる。存在領域の画定は、図4に示した通り、2つの基準建物に対する境界画定処理(図4)を繰り返し実行することで行う。
サーバ200は、入力された基準建物のうち、境界画定処理の対象となる基準建物2つを選択する(ステップS152)。この選択は、任意の方法で行うことができるが、本実施例では、以下に示す3つの基準に基づいて選択するものとした。
優先度1:画定した境界に交差する位置関係にあるもの;
優先度2:存在領域内に存在する2つの建物;
優先度3:高さの低い建物;
基準建物として、図中に示した建物A(10階)、建物B(12階)、建物C(14階)が存在する場合を考える。既に建物A、B間の処理によって境界Lが画定され、図示するようにCを含む側の領域が存在領域として画定されているものとする。この状態では、サーバ200は次に建物A、Cまたは建物B、Cのいずれかを選択して境界画定処理を実行することになる。この組み合わせでは、いずれも画定済みの境界Lに交差する境界を画定することができるため、上述の「優先度1」「優先度2」の条件ではいずれか一方の組み合わせを選択することはできない。従って、優先度3の条件に従い、高さの低い建物、即ち建物Aを優先的に使用することになる。この結果、建物A、Cを基準建物として境界画定処理を実行することになる。建物A、Cを基準建物として境界画定処理を実行した時点で、まだ存在領域が画定されていない場合には、建物B、Cを基準建物として境界画定処理を実行することになる。
サーバ200は、ステップS152の処理で選択された基準建物の属性をユーザに提示するとともに、両者の相対的な位置関係の入力を行う(ステップS153)。図中に位置関係を入力するために端末100に表示されるインタフェース画面例を示した。この例では、2つの基準建物の画像を表示し、左右の位置関係を入力するようになっている。図の例では、ユーザからは、上の建物の方が下の建物よりも左側に見えていることになる。このインタフェース画面では、上または下の建物について、左または右を選択すると、他方の建物については連動して入力状態が変わる。例えば、図の状態において、ユーザが上の建物について「右」を選択すると、下の建物の入力状態は自動的に「左」に切り替わる。こうすることで入力の誤りを低減することができる。
本実施例では、左右関係を入力するようにしたが、これに代えて建物相互の前後関係を入力するようにしてもよい。ただし、ユーザから見て建物相互の位置関係を特定する場合には、前後関係よりも左右関係の方が容易かつ正確に特定できるという利点がある。
サーバ200は、基準建物の左右関係を入力すると、この結果に基づき境界画定処理を実行する(ステップS154)。境界画定処理は、図4で示した手法によって、ユーザが指定した左右関係に合致する存在領域を特定する処理である。
サーバ200は以上の処理を所定の完了条件が満たされるまで繰り返し実行する(ステップS154)。本実施例では、「存在領域が閉領域となること」を完了条件とした。先に示した図3の例では、図3(b)〜図3(e)の4本の境界が画定された時に存在領域が閉領域となり、完了条件が満たされることになる。完了条件が満たされていない場合には、基準建物の組み合わせを変更して(ステップS152)、相対的位置関係の入力(ステップS153)、境界画定(ステップS154)の各処理を再度実行することになる。サーバ200は以上の処理で画定した存在領域を出力して(ステップS156)、存在領域画定処理を終了する。
完了条件(ステップS155)は、上述の条件に限らず任意に設定可能である。例えば、閉図形になることに加えて存在領域の面積または外接円の半径が所定値以下となる条件を用いてもよい。また、存在領域の面積や外接円の半径を完了条件に用いる場合には、境界画定処理(ステップS154)で画定された境界のみで閉図形となるという条件を緩和し、図7で説明した概略存在領域の境界と併せて閉図形を構成するという条件を用いるようにしてもよい。完了条件は、このように存在領域自体の形状に基づく条件の他、全ての基準建物が一度は境界画定処理に利用されるという条件を用いてもよい。最も厳密な処理を行う場合には、基準建物の全組み合わせについて境界画定処理が完了するという条件とすることもできる。
F.基準建物の選択:
先に図8のステップS152で説明した通り、本実施例では、以下に示す3つの優先度に従って、基準建物の選択を行った。
優先度1:画定した境界に交差する位置関係にあるもの;
優先度2:存在領域内に存在する2つの建物;
優先度3:高さの低い建物;
以下では、これらの条件の意義について具体例を用いて説明する。
図9は基準建物の選択例を示す説明図である。それぞれ、基準建物として図示する位置に建物A〜Dが存在する場合における境界画定処理の手順および存在領域を例示した。
図9(a)について説明する。最初に境界画定処理を行う際には、画定した境界が存在しないから、優先度1、優先度2の条件に適合する建物は存在しないことになる。従って、優先度3の条件に従い、高さの低い建物が選択される。図9(a)の例では、10階の建物A、および12階の建物B、Cの一方が選択される。建物Bおよび建物Cはいずれを選択しても構わない。図の例では、建物Bが選択されたとする。この結果、建物A、Bを通る境界線L[1]が画定される。境界線L[1]のハッチングを付した側が存在領域を表している。以下の例でも同様である。先に図4に示した通り、境界線は建物A、B間で複雑な形状となるが、ここでは簡略化し、ただの直線で示した。
次に、優先度1の条件に従って、境界L[1]に交差する境界を画定可能な建物が選択される。図9(a)の例では、この条件に該当する組み合わせとして、建物AC、建物AD、建物BC、建物BDの4通りの組み合わせが可能である。これらの組み合わせは、いずれも境界線L[1]で画定される存在領域内に存在する2つの建物、つまり、この存在領域内に境界線を画定する建物であるため、優先度2の条件に対しては優劣がない。しかし、優先度3の条件によれば、高さの低い建物Aを通る組み合わせが選択されるため、建物AC、ADの組み合わせが候補として残ることになる。更に優先度3の条件により、建物C、Dのうち高さが低い建物Cが選択される。この結果、建物ACを用いて境界L[2]が画定される。
次に、再び、優先度1の条件に従って、まず境界L[2]に交差する境界を画定可能な建物を選択する。この例では、建物BD,建物AD、建物CD、建物BCの4通りがこの条件を満足することになる。ただし、完全に交差する境界を画定可能なのは建物BDのみである。建物AD、CDの組み合わせは、それぞれ境界L[2]上の建物を利用しているからである。このように本実施例では、優先度1の条件を考慮する場合には、画定した境界に「完全に」交差する位置関係にある建物をより優先して利用する。この結果、図9(a)の例では、建物BDが選択され、境界L[3]が画定される。
上述の通り、図9(a)の場合、本実施例の優先度1〜3に従って、基準建物を選択することにより、3回の境界線画定処理によって、効率的に存在領域APaを画定することが可能となる。
図9(b)について説明する。最初に処理する際には、優先度1、2に該当する建物が存在しないため、優先度3に従って、建物ACが選択され、境界L[1]が画定される。次の処理では、この境界L[1]に完全に交差する位置関係にある建物BDが選択され、境界L[2]が画定される。そして、3度目の処理では、境界L[1]、L[2]に完全に交差する位置関係の建物は存在しないため、優先度2の条件が効き、建物ABが選択され、境界L[3]が画定される。この結果、図9(b)でも3回の処理で存在領域APbを画定することができる。
図9(c)について説明する。最初に処理する際には、優先度1、2に該当する建物が存在しないため、優先度3に従って、建物ACが選択され、境界L[1]が画定される。次の処理では、この境界L[1]に完全に交差する位置関係にある建物BDが選択され、境界L[2]が画定される。そして、3度目の処理では、境界L[1]、L[2]に完全に交差する位置関係の建物は存在しないため、優先度2の条件が効き、建物ADが選択され、境界L[3]が画定される。図9(b)の場合と選択される建物が相違するのは、2回目の処理が完了した時点で絞り込まれている存在領域が異なるからである。図9(c)の場合も3回の処理で存在領域APcを画定することができる。
4つの基準建物が存在する場合、全ての組み合わせで境界線画定処理を実行すると、6回の処理が要求されることになる。これに対し、本実施例の優先度を利用すれば、図9に示したように、3回の処理で存在領域を画定することができる。図9では、4つの基準建物が存在する例を示したが、5つ以上の基準建物が存在する場合でも同様に存在領域を画定するための処理回数を低減することができ、効率的に存在領域を画定することができる。
以上で説明した本実施例の経路案内システムによれば、現在位置推定機能を備えることにより、ユーザの現在位置が不明な時でも、十分な精度で現在位置を推定することができる。この結果、現在位置が不明という原因によって経路探索、経路案内が利用できなくなるという弊害を緩和することができ、経路探索、経路案内の利便性を向上させることができる。上述の本実施例ではGPS140を有する端末100を利用する例を示したが、本実施例は、GPS140を備えない端末100で利用することも可能である。
G.変形例:
実施例では、図8,9で示したように、存在領域を面として求める例を示した。存在領域は、必ずしも面として求める必要はない。例えば、歩行者用のネットワークデータに含まれるノード、リンクの集合体としての網状領域を存在領域としてもよい。変形例では、このような網状の存在領域を求める処理について説明する。
図10は変形例としての存在領域画定処理のフローチャートである。実施例の図8で示した処理に代わるものである。サーバ200は、実施例と同様、基準建物位置、形状、高さデータの入力(ステップS151)、基準建物の選択(ステップS152)、建物の相対位置関係入力(ステップS153)、境界画定処理(ステップS154)を実行する。各処理は、実施例(図8)と同様である。
次に、サーバ200は、基準建物を視認可能な範囲を画定し(ステップS154a)、ステップS154で設定された境界および視認可能な範囲で囲まれる領域内に存在するノード、リンクを抽出する(ステップS154b)。図の右側に、これらの処理例を示した。ネットワークデータは、図示する地図上の各通路に対応したノード、リンクを格納している。ステップS154までの処理において、基準建物Ba,Bbを用いて、境界Labが求められたとする。存在領域は、図中のハッチングを付した側、即ち境界Labの下側であるとする。
図中の円Ca,Cbは、それぞれ基準建物Ba、Bbを中心とする円であり、視認可能な範囲を表している。円の半径は、基準建物Ba、Bbの高さに応じて設定することができる。ステップS154bの処理では、境界Lab、円Ca,Cbで囲まれた領域内のノードおよびリンクLnkを抽出する。図中では、抽出されたノード、リンクを太線で示した。変形例では、図中のハッチングで付された領域ではなく、抽出されたノードおよびリンクの集合体が存在領域となるのである。変形例では、視認可能な範囲(図中の円Ca,Cbを考慮してノード、リンクを抽出しているが、境界Labのみを考慮してノード、リンクを抽出するようにしてもよい。
以上の処理をサーバ200は所定の完了条件が満たされるまで(ステップS155A)、繰り返し実行する。完了条件としては、例えば、抽出されたノード、リンクの総数が所定値以下という条件を用いることができる。図の例においても、繰り返し処理を実行することで、境界Labに加え、更に多くの境界が求められれば、境界および基準建物を視認可能な範囲で囲まれる領域は狭くなり、抽出されるノード、リンクの総数も小さくなる。そして、この総数が所定値以下となったところで完了条件が満たされたと判断するのである。完了後、サーバ200は求められた存在領域を出力し(ステップS156)、この処理を終了する。
上述の存在領域画定処理が完了した後は、実施例と同様、図5のステップS182以降の処理を行うことになる。ただし、変形例では、存在領域自体が歩道リンクで構成されているため、ステップS182の処理は省略することができる。実施例では、ステップS182の処理を実行することで非常に多くの歩道リンクが抽出される可能性があるのに対し、変形例では、存在領域画定処理の時点で十分に歩道リンクを絞り込むことが可能である。従って、変形例では、現在位置の特定(ステップS184〜S188)の処理を効率的に行うことができ、精度良く現在位置を求めることができる利点がある。
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。実施例では、経路案内処理、経路探索処理の一機能として現在位置推定機能を有する場合を例示したが、本実施例の現在位置推定機能は、この他の用途に用いることも可能である。例えば、周辺のレストラン、ショップ等の情報を検索するサービスにおける現在位置推定機能として実現してもよい。これらのサービスに関わらず、現在位置を推定する固有の装置として構成することもできる。