(58)【調査した分野】(Int.Cl.,DB名)
前記経路決定手段は、2つ以上の経路が重複する重複範囲から全ての組み合わせで2つの経路を取り出して、前記所定方向に分岐する経路のポイントを大きくする処理を行い、
前記オフセット手段は、前記ポイントが大きい経路のノードほど大きくオフセットさせる請求項1に記載の情報処理装置。
前記作成手段は、前記オフセット値、及び、前記オフセット値を有するノードにおける経路のなす角に応じてノードごとに前記オフセット量を算出することを特徴とする請求項3に記載の情報処理装置。
前記経路決定手段は、分岐点で分岐する2つの経路から、分岐点と分岐する前のノードを結ぶ第一ベクトル、分岐点と一方の経路のノードを結ぶ第二ベクトル、及び、分岐点と他方の経路のノードを結ぶ第三ベクトルを作成し、
前記第二ベクトルと前記第一ベクトル、前記第三ベクトルと前記第一ベクトル、及び、前記第三ベクトルと前記第二ベクトルの外積を算出することで前記所定方向に分岐する経路を決定する請求項1〜5のいずれか1項に記載の情報処理装置。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【0013】
<経路表示システムの概略>
図1は、本実施形態の経路表示システムによる経路表示方法の概略を説明する図の一例である。
図1(a)はノード1〜3で重複した3つの経路を示す。経路表示システムは、分岐点(ノード3)で相対的に右方向に分岐する経路ほど大きくなる順序ポイントを各経路に付与する。このため、経路表示システムは全ての組み合わせで経路A〜Cから2つの経路を取り出し、相対的に右方向に分岐する経路の順序ポイントを1つずつ大きくする。
・経路AとBの比較では、経路Aの順序ポイントが1つ大きくなる。
・経路AとCの比較では、経路Aの順序ポイントがさらに1つ大きくなる。
・経路BとCの比較では、経路Bの順序ポイントが1つ大きくなる。
【0014】
したがって、
図1(b)に示すように経路Aの順序ポイントは"2"、経路Bの順序ポイントは"1"、経路Cの順序ポイントは"0"となる。
【0015】
次に、
図1(c)に示すように、経路表示システムは、経路A〜Cから2つずつを全ての組み合わせで取り出し、2つの経路の重複範囲を決定し、順序ポイントの高いものほど大きくオフセットする。
・経路Aはノード1〜3で経路B,Cと重複しているので、順序ポイント"2"に応じて経路Aのノード1〜3が2つ分オフセットされる。
・経路Bはノード1〜3で経路Cと重複しているので、順序ポイント"1"に応じて経路Bのノード1〜3が1つ分オフセットされる。
・経路Aはノード1〜3で経路B,Cと重複しているが、順序ポイント"0"なのでオフセットされない。
【0016】
このように本実施形態の経路表示システムは、分岐点に着目し分岐よりも前の重複範囲のオフセット量を総当たりで決定しておくので、各経路の他の経路との重複範囲を一度にまとめてオフセットすることができる。すなわち、重複しているかどうかをノードごとに判定し重複していればオフセットする方法のように過去にオフセットしたノードを再度オフセットすることが必要になることがない。
【0017】
<システム構成例>
図2(a)は、本実施例にかかる経路表示システム100のシステム構成図の一例である。経路表示システム100は、ネットワーク34を介して通信可能に接続されたサーバ31及び端末35を有している。ネットワーク34は、例えば、LAN、広域範囲の複数のLANが接続されたWAN、及び、インターネットなどである。ネットワーク34は有線のみ又は無線のみで構築されていてもよいし、有線と無線とで構築されていてもよい。また、ネットワーク34にはアクセスポイントなどの基地局32が接続されており、端末35は無線で基地局32にアクセスすることでネットワーク34に接続する。端末35は携帯電話網や無線LANなどの主に無線で構築される通信網を介して基地局32と通信する。
【0018】
サーバ31は、端末35に対し、ナビゲーションに関するサービス・機能を提供する。例えば、端末35から現在位置の位置情報と目的地を取得して経路を検索し、後述する経路情報と電子地図やメニューなどの各種アイコンを含むナビ画面を端末35に送信する。
【0019】
ネットワーク34には符号35にて示す端末1〜Nが接続され得る。端末1〜Nを区別せずに説明する場合は端末35と称する。例えば、端末1を自分であるユーザが使用し、端末2〜Nを相手が使用する。
【0020】
図2(b)に示す用に、端末35は、汎用的な情報処理端末351である場合とナビゲーション専用端末352の場合がある。ナビゲーション専用端末352はPND(Portable Navigation Device)とも呼ばれる。なお、本実施例の端末35は、情報処理端末351又はナビゲーション専用端末352以外でもよい。
【0021】
情報処理端末351としての端末35は、例えば、スマートフォン、タブレット端末、携帯電話、PDA(Personal Digital Assistant)、ノートPC、及び、ウェアラブルPC(例えば、腕時計型、サングラス型など)などである。情報処理端末351はこれらに限定されるものではなく、ナビ画面の表示や経路案内に適切な装置であればよい。これらの装置は、普段は情報処理端末として利用されるが、ナビゲーションのためのアプリケーションソフトウェアを実行すると、ナビゲーション専用端末352と同様、経路検索及び経路案内等を行う。
【0022】
また、端末35は、汎用的な情報処理端末351とナビゲーション専用端末352のどちらの場合でも、車載された状態と携帯可能な状態の切り替えが可能であってもよい。
【0023】
端末35の動作態様には大きく2つある。1つは、端末35が例えば専用のアプリケーションソフトウェアやWebブラウザを起動してサーバ31と通信し、経路案内に関する情報を受信して表示するクライアント型の動作態様である。もう1つは、原則的に地図の描画などの処理を端末内で完結し、地図データの取得など必要な場合にのみサーバ31と通信するアプリケーション型の動作端末である。本実施例では、クライアント型を例に説明するが、アプリケーション型に対しても本実施例の経路表示を好適に適用できる。
【0024】
なお、ユーザは2台の端末35を用いて、経路表示システム100を利用してもよい。例えば、ノートPCなどの端末35でドライブポータルサイトにアクセスして、出発地から目的地までの経路を事前に検索しておく。ドライブポータルサイトは、運転者(ドライバ)のための情報サービスサイトである。検索された経路はドライブポータルサイトに登録しておき、任意のタイミングでスマートフォンなどの端末35から登録されている経路情報をダウンロードする。このような使い方により、ユーザは予め経路を事前に検索しておくことができ、出発前の端末35の操作を少なくできる。
【0025】
<ハードウェア構成>
図3は、サーバ31及び端末35のハードウェア構成図の一例である。サーバ31及び端末35は情報処理装置の機能を有している。
図3(a)に示すように、サーバ31は、ハードウェア構成として、CPU(Central Processing Unit)211、ROM(Read Only Memory)215、RAM(Random Access Memory)216、補助記憶装置217、入力装置212、表示装置213、及び、通信装置214を有する。
【0026】
また、
図3(b)に示すように、端末35は、ハードウェア構成として、CPU211、ROM215、RAM216、補助記憶装置217、入力装置212、表示装置213、通信装置214、音声入出力装置218、及び、GPS受信装置219を有する。
【0027】
CPU211は、各種プログラムの実行や演算処理を行う。ROM215には、起動時に必要なプログラムなどが記憶されている。RAM216は、CPU211での処理を一時的に記憶したり、データを記憶したりする作業エリアである。補助記憶装置217は、各種データ及びプログラム2101、2102を格納する不揮発性のメモリである。入力装置212は、例えばキーボードやマウスである。表示装置213は、ディスプレイやプロジェクタ、HUD(Head Up Display)であり、例えば、ナビ画面等が表示される。通信装置214は、基地局32を介してネットワーク34に接続しサーバ31等との通信を行う。音声入出力装置218は、音声の入出力を行う装置であり、例えば、ナビゲーションの音声ガイダンスが出力される。GPS受信装置219は、GPS衛星の電波を受信して現在位置を算出するGNSS(Global Navigation Satellite System)の一例である。
【0028】
なお、端末35の入力装置212は、キーボードやマウスに代え又はこれらに加えて、画面に対する接触位置(タッチ座標)を検知可能なタッチパネルにより実現されうる。また、入力装置212は、音声入出力装置218が入力させた音声を認識する音声認識装置としての機能を有していてもよい。
【0029】
サーバ31又は端末35の補助記憶装置217に記憶されているプログラム2101,2102は、USBメモリなどの記憶媒体に記憶された状態で配布される。あるいは、プログラムを配布する配信サーバから端末35がダウンロードすることで配布される。端末35のプログラム2102は、経路案内に専用のアプリケーションソフトウェアでもよいし、ブラウザソフトウェアでもよい。また、実行形式で配布されてもインストール用の形式で配布されてもよい。
【0030】
なお、サーバ31にはクラウドコンピューティングが適用されていることが好ましい。クラウドコンピューティングの物理的な構成に厳密な定義はないが、情報処理装置を構成するCPU、RAM、ストレージなどのリソースが負荷に応じて動的に接続・切断されることで情報処理装置の構成や設置場所が柔軟に変更されてよい。また、クラウドコンピューティングでは、サーバ31が仮想化されることが一般的である。一台の情報処理装置が仮想化によって複数のサーバ31としての機能を提供することや、複数の情報処理装置が仮想化によって一台のサーバ31としての機能を提供することができる。
【0031】
したがって、図示したサーバ31のハードウェア構成は、1つの筐体に収納されていたり一まとまりの装置として備えられていたりする必要はなく、サーバ31が備えていることが好ましいハード的な要素を示す。なお、サーバ31がクラウドコンピューティングとしてではなく単独の情報処理装置により提供されることも可能である。
【0032】
<経路表示システムの機能構成例>
図4は、本実施例の経路表示システム100が備える各機能を図示した機能ブロック図の一例である。
【0033】
<<サーバの機能構成>>
サーバ31は、サーバ送受信部41、経路検索部42、ナビ画面作成部43、及び、記憶・読出処理部49を有している。これらの各機能は
図3(a)に示したCPU211がプログラム2101を実行してサーバ31のハードウェアと協働することで実現される機能又は手段である。これらの機能の一部又は全てがICなどのハードウェア回路により実現されてもよい。
【0034】
また、サーバ31は、
図3(a)に示した補助記憶装置217、ROM215又はRAM216により構築される記憶部490を有している。記憶部490には、地
図DB491、道路ネットワークDB492、及び、歩行者ネットワークDB493が構築されている。これらの各DBは、サーバ31が直接有していなくてもよく、サーバ31がアクセス可能なネットワーク34上の任意の場所にあればよい。
【0035】
まず、各データベースについて説明する。
【0036】
地
図DB491は、電子地図を描画するための地図データを記憶している。電子地図に表示される情報には、都道府県などの区画、緑地や河川、道路や鉄道、記号や注記など多くの表示対象があるため、性質の似たものに分類し各分類ごとに描画できるようになっている。それぞれに分類された表示対象又は表示対象が描画された状態をレイヤーといい、電子地図はいくつかのレイヤーを重ねることで描画される。各レイヤーの地図データは、ベクトルデータ又はラスターデータのうち表示対象に適したフォーマットで記述されている。また、地図データは経度・緯度などが既知のメッシュ状に区切られており、1つ以上のメッシュを結合してナビ画面が作成される。ベクトルデータの場合は、緯度・経度でポイント、ポリライン、ポリゴンの位置が定められている。また、ラスターデータの場合は緯度・経度に対応づけて縮尺に応じたデータが用意されている。
【0038】
表1は道路ネットワークDBの構成を模式的に示す。道路ネットワークDB492は、車両が通行可能な道路の構造を表すデータであって、表1(a)のノードテーブルと表1(b)のリンクテーブルとを有している。ノードテーブルには、ノードを識別するためのノードIDとノードの座標(緯度・経度)が登録されている。ノードとは道路網表現上の結節点である。ノードは例えば交差点、分岐点、合流点、屈曲点などである。
【0039】
また、リンクテーブルにはリンクを識別するためのリンクID、リンクの始点ノード、リンクの終点ノード、道路種別などが登録されている。この他、幅員、リンク長などが登録されてよい。リンクとはノードとノードを結ぶ道路をいい、リンクはノード同士を結ぶ線分となる。道路種別は、例えば一般道、高速道路、専用道路、私道などである。ノードIDが分かればノードに繋がっているリンクがリンクテーブルから判明するので、ノードテーブルとリンクテーブルを相互に参照することで道路を検索できる。
【0040】
歩行者ネットワークDB493は、ノードテーブルとリンクテーブルとを有する点で道路ネットワークDB492と同様である。ただし、歩行者ネットワークDB493には、歩行者が通行可能な道(歩道、横断歩道、歩道橋、地下道、通り抜け可能な通路など)のリンクと、リンクの始点と終点のノード等が登録されている。
【0041】
(サーバ31の機能について)
続いて、サーバ31が有する機能について説明する。サーバ送受信部41は、
図3(a)のCPU211及び通信装置214等により実現され、端末35からナビゲーションに関する種々の要求を受け付ける。この要求は、例えば、目的地までの検索要求、ナビ画面の更新要求(拡大・縮小、表示範囲の変更など)がある。これらの要求は、ナビ画面作成部43及び経路検索部42に振り分けられる。また、サーバ送受信部41は経路情報やナビ画面を端末35に送信する。
【0042】
経路検索部42は、
図3(a)のCPU211等により実現され、検索要求に対し道路ネットワークDB492又は歩行者ネットワークDB493の少なくとも一方を用いて経路を検索し経路情報を作成する。経路検索には、リンク長や幅員、渋滞状況をコストに換算して、出発地から目的地までのコストの合計が最も少なくなる経路を選ぶダイクストラ法が知られている。なお、ダイクストラ法以外の検索方法が用いられてもよい。
【0044】
表2は経路情報を模式的に示す。経路情報は経路IDにより識別され、2点間(例えば出発地と目的地)の経路のリンクを示すリンクIDが順番に登録されている構造となっている。また、各リンクには案内ポイントと呼ばれる進路の指示情報(進路変更するノード、通過するノード、進路変更を案内する位置)が含まれる場合がある。なお、リンクIDでなくノードIDが登録されていてもよい。いずれの場合も各経路のノードの通過順が登録されていることになる。
【0045】
端末35からサーバ31への検索要求に複数の経路を検索する旨及びそのための検索オプションが含まれる場合がある。車が走行する経路の場合、検索オプションは、例えば有料道路の使用の有無、右折回数の少ない経路を優先するか否か、又は、幅員が広い経路を優先するか否かなどである。経路検索部42は、これら検索オプションに応じてリンクのコストを変更することでし、ユーザが望む複数の経路を検索する。経路検索部42は、検索して得られた2点間の経路情報をナビ画面作成部43及びサーバ送受信部41に送出する。本実施形態では、複数の経路情報がナビ画面作成部43及びサーバ送受信部41に送出される。
【0046】
ナビ画面作成部43は、
図3(a)のCPU211等により実現され、2点を包含する領域を含み、経路及び2点(例えば出発地及び目的地)が強調表示されたナビ画面を作成する。なお、ナビ画面は経路を含めGIFやJpegなどの画像データとして作成される場合と、画像データとしての電子地図とプログラムコードとして記述された経路情報とに分けて作成される場合がある。
【0047】
後者の場合、経路の描画は端末35が行う。サーバ31のナビ画面作成部43は経路を描画するためのプログラムコードを生成して端末35に送信し、端末35がプログラムコードを実行することでナビ画面に経路を描画できる。このようなプログラムコードとしてはJavascript(登録商標)が知られている。
【0048】
サーバ31又は端末35のいずれで経路が描画されても、本実施形態のナビ画面作成部43は複数の経路の視認性が低下しないように複数の経路を描画する。詳細は後述される。
【0049】
ナビ画面はさらに、ユーザの現在位置を表示してもよい。また、ユーザが移動を開始すると、ナビ画面作成部43は案内に適した縮尺のナビ画面を作成する。また、端末35から更新要求を取得すると、ナビ画面作成部43は要求された縮尺や表示範囲に応じてナビ画面を作成する。サーバ送受信部41はこのようにして作成された経路情報とナビ画面を端末35に送信する。
【0050】
<<端末の機能構成>>
続いて端末35の機能又は手段について説明する。端末35は、端末送受信部51、操作受付部52、位置検出部53、経路案内部54、及び、ナビ画面表示部55を有している。これらは、
図3(b)に示したCPU211がプログラム2102を実行して端末35のハードウェアと協働することで実現される機能又は手段である。これらの機能の一部又は全てがICなどのハードウェア回路により実現されてもよい。
【0051】
端末送受信部51は、
図3(b)のCPU211及び通信装置214等により実現され、サーバ31に検索要求及び更新要求を送信したり、サーバ31からナビ画面や経路情報を受信したりする。
【0052】
操作受付部52は、
図3(b)のCPU211及び入力装置212等により実現され、ユーザから、経路検索のための2点や検索方法の入力、拡大・縮尺の指示、及び、表示範囲変更などの指示を受け付ける。
【0053】
位置検出部53は、
図3(b)のCPU211及びGPS受信装置219等により実現され、定期的に及びユーザの操作に応じて現在位置を検出する。検出した現在位置は端末送受信部51からサーバ31に送信される。
【0054】
経路案内部54は、
図3(b)のCPU211等により実現され、サーバ31から取得した経路情報と現在位置とに基づいて、経路案内を行う。すなわち、ユーザの現在位置が経路情報に含まれる進路変更すべき位置に到達すると、曲がり角などを指示する音声データを音声入出力装置218に出力させる。なお、音声データはサーバ31から送信されてもよいし、端末35が案内用のテキストデータに基づいて音声合成をおこなって作成してもよい。
【0055】
ナビ画面表示部55は、
図3(b)のCPU211等により実現され、サーバ31から受信したナビ画面を表示装置213に表示する。また、位置検出部53が検出した現在位置を経路上に補正して(ルートマッチングして)、ユーザの現在位置としてナビ画面に合成する。経路情報が検索されていない状態では、道路や道などユーザが存在するはずのリンク上に現在位置を補正するマップマッチングを行う。なお、ルートマッチング又はマップマッチングはサーバ31が行ってもよい。
【0056】
<ナビ画面作成部の機能>
図5は、ナビ画面作成部43の機能構成を説明する図の一例である。ナビ画面作成部43は、オフセット制御部61、オフセット判定部62、順序判定部63、重複度チェック部64、及び、経路シフト部65を有している。
【0057】
オフセット制御部61は、複数の経路が生成された場合に行われる各経路のオフセット処理の全体を制御する。オフセット判定部62は順序判定部63、重複度チェック部64、及び、経路シフト部65を呼び出す。
【0058】
順序判定部63は、2つの経路の分岐点に着目して右に分岐する経路の順序ポイントを大きくする。重複度チェック部64は、2つの経路のうち順序ポイントが大きい方の経路の重複範囲のノードのオフセット階数を大きくする。
【0059】
経路シフト部65は、ノードにおける経路のなす角φ及び重複度チェック部64が決定したオフセット階数に応じてオフセット量を決定する。これらの機能の詳細は後述される。
【0060】
<<順序判定>>
まず、順序判定部63による順序判定について説明しておく。順序判定とは分岐点において2つの経路のどちらが相対的に右に分岐するかを判定することをいう。本実施形態では以下のように外積を用いて右に分岐する経路を判定する。
【0061】
図6は順序判定を模式的に説明するための図である。
図6(a)に示すように、経路Aと経路Bが検索され、経路Aはノード1〜4を通過し、経路Bはノード1,2,3,5を通過する。したがって、ノード1〜3で経路AとBが重複している。ノード3で経路AとBが分岐しているため、ノード3を起点とするベクトルを考える。説明の便宜上、ノード2,ノード3、ノード4、ノード5の座標は以下であるとする。
ノード2:(X2,Y2)
ノード3:(X3,Y3)
ノード4:(X4,Y4)
ノード5:(X5,Y5)
また、
図6(b)に示すように、ノード3→ノード2のベクトルをaベクトル、ノード3→ノード4のベクトルをbベクトル、ノード3→ノード5のベクトルをcベクトルとする。aベクトル、bベクトル、cベクトルは、ノードの座標を用いて以下のように表すことができる。
ベクトルa:(X2−X3,Y2−Y3)
ベクトルb:(X4−X3,Y4−Y3)
ベクトルc:(X5−X3,Y5−Y3)
ベクトルbがベクトルcよりも右側に分岐する場合とは、ベクトルcがベクトルaの右側かつベクトルbの左側にあればよい。まず、
図6(c)の場合を考える。
図6(c)では斜線部の領域601にベクトルcがあればよい。
図6(c)ではベクトルbとベクトルaのなす角θ
1が180度未満である(ベクトルbとベクトルaの外積がゼロより大きい)。
図6(c)でベクトルcが領域601にあるためには、ベクトルcとベクトルaのなす角θ
2も180度未満である必要がある。また、ベクトルcは領域601にあるので、ベクトルcとベクトルbのなす角θ
3は180度超である。
【0062】
したがって、以下が成立する場合にベクトルbが領域601にあること(ベクトルbがベクトルcよりも右に分岐すること)が判定できる。
【0064】
すなわち、ベクトルaとベクトルbの外積が0より大きい場合、ベクトルcとベクトルaの外積が0より大きく、かつ、ベクトルcとベクトルbの外積が0より小さい場合に、ベクトルbがベクトルcよりも右に分岐する。
【0065】
次に、
図6(d)の場合を考える。
図6(d)ではベクトルaとベクトルbのなす角θ
1が180度以上である(ベクトルbとベクトルaの外積がゼロより小さい)。
図6(d)でベクトルcが領域601にあるためには、1つの状況としてベクトルcとベクトルaのなす角θ
2が180度未満の場合が挙げられる(ベクトルc1で示す)。この場合、ベクトルc1とベクトルaのなす角θ
3は180度未満である。また、別の状況として、ベクトルcとベクトルaのなす角θ
3が180度以上の場合が挙げられる(ベクトルc2で示す)。この場合、ベクトルc2とベクトルbのなす角θ
3は180度超である。
【0066】
したがって、以下が成立する場合にベクトルbが領域601にあること(ベクトルbがベクトルcよりも右に分岐すること)が判定できる。
【0068】
すなわち、ベクトルaとベクトルbの外積が0より小さい場合、ベクトルcとベクトルaの外積が0より大きい、又は、ベクトルcとベクトルbの外積が0より小さい場合に、ベクトルbがベクトルcよりも右に分岐する。
【0069】
なお、外積は以下のようにして算出される。簡単のため、ベクトルXの成分を(x1,y1)、ベクトルYの成分を(x2、y2)とする。
X×Y=x1y2−y1x2
したがって、順序判定部63は2つの経路の分岐点で外積を計算し、正負を判定することで右に分岐する経路を判定できる。
【0070】
右に分岐する経路を判定するために、ベクトルaとベクトルbのなす角、ベクトルaとベクトルcのなす角をそれぞれ算出して比較する方法が検討される。なす角を求める方法として内積を求めcosの逆関数を求める方法がある。しかし、cosの逆関数は計算負荷が高くなる。また、なす角を求める方法として、2つのベクトルからそれぞれ直線の方程式を求めtanθ=(m+n)/(1+mn)からなす角を求める方法がある(m、nは直線の傾き)。しかしこの場合もtanの逆関数を求める必要がある。
【0071】
これに対し、外積を使用する本実施形態の方法では単純な積和演算で右に分岐する経路を判定できる。なお、本実施形態においても内積や直線の方程式から2つの経路のうち右に分岐する経路を求めてよい。
【0072】
<動作手順>
以下、
図7〜10を用いて経路のオフセット処理の手順を説明する。
図11は、オフセット処理を説明するための3つの経路A〜Cを示し、適宜参照して説明される。
【0073】
まず、オフセット処理とは、各経路のノードごとにオフセット階数(オフセット量)を決定する処理である。表3にオフセット階数(オフセット量)の一例を示す。なお、表3は経路表示情報の一例である。
【0075】
経路Aを構成するノードは9、2、3、4、10、経路Bを構成するノードは1〜8、経路Cを構成するノードは11、3、4、5、6、12である。オフセット処理により各経路のノードごとにオフセット階数が決定される。オフセット階数は、それぞれのノードにおいて経路をオフセットする段階を示す整数である。例えば、経路Aのノード3,4は2段階オフセットされ、経路Cは全くオフセットされない(オフセット階数がゼロ)。以下では、このオフセット階数の求め方を説明する。また、オフセット量はオフセット階数に基づいたオフセットの量である。オフセット量については
図13にて説明される。
【0076】
図7は、ナビ画面作成部43の全体的な動作を示すフローチャート図の一例である。
S1:オフセット制御部61は、
図11(a)の3つの経路A〜Cのうち1つの任意に選択し、経路の先頭からノードを1つ選択する。
【0077】
S2:オフセット制御部61は、ステップS1で選んだノードのオフセット階数が決定済みかどうかを判定する。ステップS2の判定がYesの場合、処理はステップS5に進む。
【0078】
S3:ステップS2の判定がNoの場合、オフセット制御部61は、ステップS1で選んだノードと隣接したノードを他の経路も連続して通過しているか否かを判定する。この判定により、2つの経路が重複しているかどうかを判定される。例えば、経路Aのノード9は重複がなく、ノード2は重複していると判定される。
【0079】
S4:ステップS3の判定がYesの場合、オフセット判定部62がオフセット判定処理を行う。詳細は
図8にて説明される。
【0080】
S5:オフセット制御部61は次のノードがあるか否かを判定する。ステップS5の判定がYesの場合、処理はステップS2に戻る。
【0081】
S6:次のノードがない場合、オフセット制御部61は次の経路があるか否かを判定する。次の経路がある場合、処理はステップS1に戻る。
【0082】
S7:次の経路がない場合、経路シフト部65が経路配列にオフセット量を合成する。すなわち、表2の経路情報で経路が通過するノードが求められているが、このノードの座標のまま経路の描画を行うと経路が重複してしまうので、経路ごとにノードとオフセット量を紐づけることで経路配列にオフセット量を合成する。
【0083】
S8:ステップS3の判定がNoの場合、着目しているノードは他の経路と重複していないので、オフセット制御部61は着目しているノードのオフセット階数をゼロに設定する。
【0084】
<<オフセット判定処理>>
図8は、オフセット判定処理の手順を示すフローチャート図の一例である。
【0085】
S11:オフセット判定部62は
図7のステップS3で重複していると判定された2つの経路の重複範囲を求める。
図11(a)では経路Aが経路Bとノード2,3で重複していると判定されるため、経路Aと経路Bの重複範囲を決定する。
図11(a)から明らかなようにノード2〜4で経路A,Bが重複している。
【0086】
S12:次に、オフセット判定部62はステップS11で決定した重複範囲に他の経路も重複しているかどうかを確認する。
図11(a)では経路Cがノード3,4で重複している。
【0087】
S13:次に、順序判定部63は順序判定処理を行う。詳細は
図9にて説明される。
【0088】
S14:次に、重複度チェック部64は重複度チェックを行う。詳細は
図10にて説明される。
【0089】
S15:経路シフト部65は各ノードのオフセット階数と分岐点における経路のなす角φに応じてオフセット量を求め、表3に示したようにオフセット量を登録する。また、ノードにおける経路のなす角の2等分線の方向を各ノードの移動方向に決定する。詳細は
図13にて説明される。
【0090】
<<順序判定処理>>
図9は、順序判定処理の手順を示すフローチャート図の一例である。
【0091】
S21:順序判定部63は、
図8のステップS12で確認した重複している経路から2つの経路を選択する。すなわち、経路A〜Cのうち2つの経路を選択する。全ての組み合わせで2つの経路が選択されるため、選択の順番は任意である。
【0092】
S22:順序判定部63は、分岐点において上述した外積を演算することで2つの経路のうち、右に分岐する経路を判定する。経路Aと経路Bを例にすると、経路Aと経路Bはノード4で分岐しており、経路Aの方が経路Bよりも右に分岐している。
【0093】
S23:順序判定部63は、右に分岐する方の経路の順序ポイントを1つ大きくする。順序ポイントは相対的に右に分岐すると判定されるごとに1つ大きくなり、最終的に順序ポイントが大きいものほど下方向に大きくオフセットされる。
【0094】
S24:順序判定部63は、全ての組み合わせで2つの経路を選択した否かを判定する。ステップS24の判定がNoの場合、処理はステップS21に戻る。
【0095】
以上により、1回目の処理では経路Aの順序ポイントが"1"となる。
【0096】
次に、ステップS21に戻り、例えば、経路Aと経路Cが選択されたとする。経路Aと経路Cはノード4で分岐しており、経路Aの方が経路Cよりも右に分岐している。したがって、2回目の処理では経路Aの順序ポイントが"2"となる。
【0097】
次に、ステップS21に戻ると、経路Bと経路Cが選択される。経路Bと経路Cはノード6で分岐しており、経路Bの方が経路Cよりも右に分岐している。したがって、3回目の処理では経路Bの順序ポイントが"1"となる。また、経路Cの順序ポイントは"0"である。以上をまとめると順序ポイントは以下のようになる。
経路Aの順序ポイント…"2"
経路Bの順序ポイント…"1"
経路Cの順序ポイント…"0"
<<各ノードの重複度チェック>>
図10は、重複度チェックの手順を示すフローチャート図の一例である。
【0098】
S31:重複度チェック部64は、
図8のステップS12で確認した重複している経路から2つの経路を選択する。ここでも全ての組み合わせで2つの経路が選択されるため、選択の順番は任意である。
【0099】
S32:重複度チェック部64は2つの経路の個別の重複範囲(以下、個別重複範囲という)を求める。例えば、経路Aと経路Bの個別重複範囲はノード2〜4である。
【0100】
S33:次に、重複度チェック部64は重複範囲直前の1ノードのみが互いに重複しているか否かを判定する。この判定は、例えば
図11の経路Cのノード11から処理を開始した場合に必要になる。経路Cのノード11から処理を開始すると、ノード3,4で経路A又はBと重複している。経路Cと経路Aが選択された状態で、重複範囲がノード2〜4、個別重複範囲が3,4だとすると、ノード3,4はオフセット階数が決定されるが、重複範囲直前のノード2は経路Aと重複していてもオフセットされないおそれがある。そこで、ステップS35−1に示すように、重複範囲かつ個別重複範囲のノード3,4だけでなくノード2を追加重複範囲とする。
【0101】
S35−1:ステップS33の判定がYesの場合、重複度チェック部64は重複範囲直前の1ノードのみを追加重複範囲とする。追加重複範囲とは個別重複範囲に追加されるノードである。
【0102】
S34:次に、重複度チェック部64は重複範囲直後の1ノードのみが互いに重複しているか否かを判定する。この判定については
図12にて説明される。
図11(a)の経路A〜CではステップS34でYesとなる関係は生じない。
【0103】
S35−2:ステップS34の判定がYesの場合、重複度チェック部64は重複範囲直後の1ノードを追加重複範囲とする。
【0104】
S36:重複度チェック部64は順序ポイントがより大きい経路のノードのオフセット階数を「重複範囲にある個別重複範囲」+「追加重複範囲」にわたって1つ大きくする。経路A、Bを例にすると、経路Aの方が順序ポイントが大きい。経路A,Bの個別重複範囲はノード2〜4、経路A,Bの重複範囲はノード2〜4(
図8のステップS11)である。また、追加重複範囲はない。したがって、経路Aのノード2〜4のオフセット階数が"1"になる。また、経路Bのノード2〜4のオフセット階数はゼロである。
【0105】
次に処理がステップS31に戻り、例えば、経路Aと経路Cが選択されたものとする。経路Aの方が順序ポイントが大きい。また、経路Aと経路Cの個別重複範囲はノード3,4であるが、経路A,Bの重複範囲はノード2〜4である。また、追加重複範囲はない。したがって、経路Aのノード3、4のオフセット階数がプラス1される。したがって、経路Aのオフセット階数は以下のようになる。また、経路Cのノード3,4のオフセット階数はゼロである。
経路A: ノード2…1、ノード3…2、ノード4…2
次に、ステップS31に戻ると、経路Bと経路Cが選択される。経路Bの方が順序ポイントが大きい。また、経路Bと経路Cの個別重複範囲はノード3〜6であるが、経路A,Bの重複範囲はノード2〜4である。また、追加重複範囲はない。したがって、経路Bのノード3、4のオフセット階数が"1"になる。また、経路Cのノード3、4のオフセット階数はゼロである。
【0106】
したがって、経路Aの1回目のループが終了すると、
図11(b)の状態のオフセット階数が得られる。
【0107】
<<オフセット処理の2回目以降のループ>>
図10が終了すると処理は
図8のステップS15に戻る。この後、処理は
図7のステップS5に戻る。
【0108】
経路Aについて
図7のステップS5から処理を再開すると、経路Aではノード9,ノード2〜4までオフセット階数が設定されている。このため、オフセット制御部61は経路Aのノード10について他の経路と重複がないと判定し(S3)、経路Aの処理は終了する。
【0109】
次に、オフセット制御部61は経路Bのオフセット処理を開始する。まず、経路Bのノード1について他の経路と重複がないと判定し(S3)、経路Bのノード1にゼロのオフセット階数を設定する。経路Bのノード2〜4にはオフセット階数が設定されている。このため、オフセット制御部61は経路Bのノード5から処理を開始する。経路Bのノード5はノード5,6で経路Cと重複している。したがって、
図7〜
図10の処理により、経路Bのノード5,6のオフセット階数を"1"に設定する。経路Cのノード5,6のオフセット階数は"0"になる。また、経路Bのノード7,8については、他の経路と重複がないと判定し(S3)、経路Bのノード7,8にゼロのオフセット階数を設定する。
【0110】
次に、オフセット制御部61は経路Cのオフセット処理を開始する。まず、経路Cのノード11について他の経路と重複がないと判定し(S3)、経路Cのノード11にゼロのオフセット階数を設定する。経路Cのノード3〜6にはゼロのオフセット階数が設定されている。このため、オフセット制御部61は経路Cのノード12について
図7の処理を行い、他の経路と重複がないと判定し(S3)、経路Cのノード12にゼロのオフセット階数を設定する。
【0111】
以上のようにしてナビ画面作成部43は全ての経路の全てのノードについてオフセット階数を設定することができる。すなわち、表3に示したように各経路のノードごとにオフセット階数が決定される。
【0112】
図11(c)は各ノードのオフセット階数を模式的に示す図の一例である。経路A〜Cがそれぞれノードごとに決定されたオフセット階数に相当するだけ下方向に(進行方向に対し右方向に)オフセットされている。このようにオフセットすることで、3つの経路A〜Cが重複しなくなるため、端末35は視認性のよいナビ画面を表示できる。
【0113】
<
図10のステップ34、S35−2について>
図12は
図10のステップ34、S35−2の処理を説明する図の一例である。
図12(a)では経路Aと経路Bがノード2,3で重複し、経路Aと経路Cがノード2,3で重複し、経路Bと経路Cがノード2,3、4で重複している。したがって、経路Aに着目するとノード2,3が重複範囲となる。
【0114】
経路Aに着目して
図7〜
図10の処理を行えば、ノード2,3が重複範囲となり、ノード2,3のオフセット階数が決定される。この状態が
図12(b)である。
【0115】
次に処理がノード4から再開されるが、ノード4以降では2つのノードが連続して重複していない(
図7のステップS3)。したがって、ノード4で経路Bと経路Cが重複したままとなってしまう。
【0116】
そこで、
図10の各ノードの重複度チェックで、経路BとCが選択されている際に、
図10のステップS34に示すように重複範囲(ノード2,3)直後の1ノード(ノード4)のみが互いに重複している場合、ノード4を追加重複範囲とする。そして、重複範囲内(ノード2,3)にある経路BとCの個別重複範囲(ノード2〜4)に加え、追加重複範囲(ノード4)のオフセット階数を+1する。これにより、ノード4をオフセットさせることができる。したがって、
図12(c)のオフセット結果が得られる。
【0117】
<オフセット量について>
経路の描画線を重複させないため、ナビ画面作成部43は経路の描画線の太さ(以下、線分太さdwという)だけノードをオフセットすればよい。
【0118】
しかしながらオフセットされるノードで経路がなす角φを有する場合、経路の線分太さだけオフセットするとオフセット量が足りなくなる。
【0119】
図13を用いてオフセット量について説明する。
図13(a)では経路がノードXでなす角φを有している。この場合、ノードXを線分太さdwだけオフセットしても経路の描画線に垂直な方向の移動量は線分太さdwに満たない。これは、経路がノードXでなす角φを有しているためであり、このことは経路のなす角φに応じて適切な値だけオフセットする必要があることを意味している。
【0120】
具体的には、
図13(b)に示すように、経路に垂直な方向の移動量が線分太さdwになるように1経路分のオフセット量ΔSを決定する。
【0121】
1経路分のオフセット量ΔS=線分太さdw/sin(φ/2)
このようにしてノードの1経路分のオフセット量ΔSを決定することで、経路のなす角φに依存せず、経路の描画線を線分太さdwだけオフセットすることができる。なお、なす角φは分岐点を中心に分岐点の手前のノードと後のノードのなす角として測定される。したがって、分岐しない経路(直線の経路)ではなす角φは180度となる。例えば100個のノードで互いに経路が重複していても、なす角φはノードことに異なりうる(同じ場合もある)。経路シフト部65はノードごとになす角φの2等分線方向(
図13のSの方向)を移動方向に決定する。
【0122】
オフセット階数がノードによって異なるので、最終的なオフセット量Sは1経路分のオフセット量ΔSにオフセット階数が乗じられた値となる。例えば、表3の経路Aのノード3のオフセット量Sは1経路分のオフセット量ΔS×2である。
【0123】
なお、なす角φは順序判定の際の外積において説明したように、2つのベクトルの内積又は2つの直線の方程式から求められる。例えば、内積の場合、分岐点の手前のリンクをベクトルa、分岐点の後のリンクをベクトルbとして、ab=abcosφから算出される。あるいは、tanφ=(m+n)/(1+mn)から算出される。
【0124】
<ユーザインタフェースの例>
以上のようにして算出されたオフセット量でサーバ31がナビ画面に経路を描画して端末35に送信するか、サーバ31が送信したナビ画面及び経路情報を端末35が受信して、端末35がナビ画面に経路を描画する。
【0125】
図14は、端末35の表示装置213に表示されるナビ画面を示す図である。
図14(a)は比較のために示された重複が解消されていないナビ画面である。
図14(a)では現在地から目的地まで3つの経路が表示されているが、オフセットされていないためユーザは経路が3つあることを確認しにくい。
【0126】
これに対し、
図14(b)は本実施形態のナビ画面作成部43が作成したナビ画面を示す。現在地から3つの経路を確認できる。また、右に分岐する経路ほど重複範囲のオフセット量が大きいので、分岐点で経路が交差する(右側の経路が左の経路を跨ぐ又は隠れる)ことも生じない。
【0127】
<その他の好適な適用例>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【0128】
本実施例では説明の便宜上、右方向に分岐する経路を決定し該経路ほど下方向にオフセットしたが、左方向に分岐する経路を決定し該経路ほど上方向にオフセットしてもよい。または、地図の表示がヘディングアップ(進行方向が常に上向きになる)である場合などでは、左右方向にオフセットしてもよい。
【0129】
また、本実施形態ではサーバ31が経路情報を作成し、端末35が経路情報を表示したが、サーバ31が経路情報を表示してもよい。すなわち、スタンドアローンの情報処理装置が経路情報を作成してかつ表示することもできる。
【0130】
また、端末35がナビ画面作成部43と経路検索部42の機能を有することもできる。この場合、端末35は、地
図DB491、道路ネットワークDB492、及び、歩行者ネットワークDB493にアクセスできるものとする。
【0131】
また、
図4などの構成例は、サーバ31による処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。サーバ31の処理は、処理内容に応じてさらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。
【0132】
また、
図4では一台のサーバ31を図示したが、サーバ31が複数台、存在してもよい。また、一台のサーバ31が有する機能が複数のサーバに分散して配置されてもよい。
【0133】
なお、オフセット階数はオフセット値の一例であり、ベクトルaは第一ベクトルの一例であり、ベクトルbは第二ベクトルの一例であり、ベクトルcは第三ベクトルの一例である。
図6の経路Aは一方の経路の一例であり、経路Bは他方の経路の一例である。経路シフト部65は作成手段の一例であり、経路検索部42は取得手段の一例であり、端末送受信部51は受信手段の一例であり、順序判定部63は経路決定手段の一例であり、重複度チェック部64はオフセット手段の一例である。ナビ画面表示部55は表示処理手段の一例である。右方向は所定方向の一例であり、ナビ画面作成部43が行うナビ画面の作成方法(製造)は表示情報製造方法の一例である。端末35は情報端末の一例である。