【実施例1】
【0018】
A.システム構成:
図2は、3次元地図表示システムの構成を示す説明図である。本実施例の3次元地図表示システムは、経路探索を行い、3次元地図を表示しながら経路案内をするシステムである。3次元地図表示システムは、経路探索、経路案内機能を伴わず、単にユーザからの指示等に従って3次元地図を表示するシステムとして構成してもよい。
実施例の3次元地図表示システムは、サーバ200と端末300とをネットワークNE2で接続して構成されている。端末300としては、スマートフォンを用いるものとしたが、携帯電話、携帯側情報端末、パーソナルコンピュータ、カーナビゲーション装置など、地図を表示可能な種々の装置を利用可能である。また、3次元地図表示システムは、サーバ200と端末300とを一体化したシステムとして構成してもよい。
【0019】
サーバ200および端末300には、図示する種々の機能ブロックが用意されている。これらの機能ブロックは、本実施例では、それぞれの機能を実現するコンピュータプログラムを、サーバ200および端末300にインストールすることによってソフトウェア的に構成したが、その一部または全部をハードウェア的に構成してもよい。
本実施例では、サーバ200と端末300とからなる構成を採用したが、3次元地図表示システムは、スタンドアロンの装置として構成してもよいし、さらに多くのサーバ等からなる分散システムとして構成してもよい。
【0020】
(1)サーバ200について
地図データベース210には、3次元地図データベース211およびネットワークデータ213が格納されている。3次元地図データベース211には、地物の3次元形状を表すポリゴンデータ、ラインデータおよび文字データが格納されている。ネットワークデータ213は、道路をリンクおよびノードで表した経路探索用のデータである。
3次元地図データベース211の内容について説明する。本実施例では、地物を線状オブジェクトと、その他の一般地物とに分けて取り扱う。線状オブジェクトとは、道路のように線状の地物の総称であり、ラインデータ、即ち折れ線データで形状を表すことができるオブジェクトを言う。線状オブジェクトには、例えば、道路、トンネル、線路、経路案内表示、河川などが含まれる。線状オブジェクト以外の一般地物には、建物等が含まれる。3次元地図データベース211においては、建物等の一般地物に対しては、3次元形状を表すポリゴンデータが用意されている。線状オブジェクトに対しては、ラインデータが用意されている。ただし、後述する通り、線状オブジェクトについてポリゴンデータを併せて用意するものとしてもよい。
データベース管理部202は、地図データベース210のデータの入出力を管理する。本実施例では、3地毛に地図データベース211に格納されたオブジェクトを、透過オブジェクト、非透過オブジェクトに分類して描画を行う。3次元地図データベース211からデータを読み出すとともに、この分類を行うのもデータベース管理部202の機能である。
データベース管理部202には、トンネルモデル生成部204が用意されている。トンネルモデル生成部204は、トンネルを表すラインデータに基づいて、路面と壁とを設け、3次元的なポリゴンモデルを生成する機能を奏する。
経路探索部203は、ネットワークデータ213を利用して、端末300のユーザから指定された出発地から目的地までの経路を探索する。経路探索は、ダイクストラ法など周知の方法によって行うことができる。
送受信部201は、ネットワークNE2を介して、端末300との間で、種々のデータやコマンドの送受信を行う。
【0021】
(2)端末300について
主制御部304は、端末300に備えられた各機能ブロックの動作を統合制御する。
送受信部301は、ネットワークNE2を介してサーバ200との間で、データやコマンドの送受信を行う。
コマンド入力部302は、ユーザからの経路案内等に関する指示などを入力する。指示としては、例えば、経路案内の出発地、目的地の指定、地図表示時の表示スケールの指定などが挙げられる。
位置・通行情報取得部303は、GPS(Global Positioning System)等のセンサから端末300の現在位置等を取得する。
地図情報記憶部305は、地図を表示する際に、サーバ200から取得した3次元地図データベース211を一時的に記憶する。本実施例では、端末300は、予め全ての地図データを記憶しておくのではなく、地図の表示範囲に応じて必要となる地図データを適宜、サーバ200から取得する。地図情報記憶部305は、こうして取得された地図データを記憶している。また、併せて、経路探索の結果も記憶する。
表示制御部306は、地図情報記憶部305に記憶されている地図データを用いて、端末300のディスプレイ300dへの地図表示を行う。表示制御部306には、投影処理部307と、重畳処理部308が備えられている。投影処理部307は、地図情報記憶部305に格納されたポリゴンデータおよびラインデータを、透過オブジェクトと非透過オブジェクトに分類して、それぞれ仮想3次元空間に配置し、投影することによって透過オブジェクト投影図、非透過オブジェクト投影図を生成する機能を奏する。重畳処理部308は、生成された透過オブジェクト投影図を、非透過オブジェクト投影図に、透過率を調整して重畳し、重畳図(
図1の下段参照)を生成する。
【0022】
B.地図データベース:
図3は、3次元地図データベースの構造を示す説明図である。図中には、3次元地図データベース211に記憶されているラインデータおよびポリゴンデータの構造を示した。
【0023】
ラインデータは、道路、トンネルなどの線状の地物を表すデータであり、図示するように、ID、属性、構成点などのデータが格納されている。IDは、各ラインデータの識別情報である。属性は、各ラインデータが「道路」か「トンネル」かの種別を示す情報である。属性情報には、この他に、国道、県道などの道路の種別、道路の幅、車線数、一方通行その他の規制などを含めても良い。構成点は、道路の形状を定義する点の3次元座標である。
図の例では、ID=LID1が付されたラインデータ(図中の実線で示した道路に対応する部分)は、属性によれば「道路」であり、その形状は、構成点PL1、PL2で定義されることを表している。また、LD=LID2が付されたラインデータ(図中の破線で示した道路に対応する部分)は、属性によれば「トンネル」であり、その形状は、構成点PL2〜PL5で定義されることを表している。
【0024】
ポリゴンデータは、建物などの地物を表すデータであり、ラインデータと同様のデータ構造を有している。ただし、構成点としては、3次元形状を表すポリゴンの頂点の3次元座標を与えるデータとなっている。
図の例では、ID=PID1が付されたポリゴンデータ(図中の実線で示した道路に対応する部分)は、属性によれば「地上建物」であり、その形状は、図中に示した面の構成点PP1〜PP4等で定義されることを表している。地上建物には、まだ他の面が存在するから、構成点には、各面の頂点を表す座標がさらに格納されることになる。また、LD=PID2が付されたポリゴンデータ(図中の破線で示した道路に対応する部分)は、属性によれば「地下建物」であり、その形状は、構成点PP3〜PP6等で定義されることを表している。地下建物も、まだ他の面が存在するから、構成点には、各面の頂点を表す座標がさらに格納されることになる。
本実施例では、トンネルと道路は別の地物として取り扱い、地上建物と地下建物も別の地物として取り扱う。これに代えて、図示する地上建物および地下建物の全体を一つの地物として扱い、各構成点またはポリゴンに対して、地上部分、地下部分などの属性を与える方法をとってもよい。
【0025】
C.経路案内処理:
(1)経路案内処理:
図4は、経路案内処理のフローチャートである。経路案内処理は、ユーザによって指定された出発地から目的地に向かうまでの経路を探索し、その案内を行う処理である。これは、主としてサーバ200の経路探索部203、端末300の表示制御部306などが協働して行う処理であり、ハードウェア的にはサーバ200および端末300のCPUによって行われる処理である。
処理を開始すると、端末300は、ユーザから出発地、目的地の指定を入力する(ステップS10)。現在位置を出発地として用いても良い。
サーバ200は、端末300から出発地、目的地の情報を受け、ネットワークデータ213を参照して、経路探索を行う(ステップS11)。経路探索は、ダイクストラ法などの周知の方法をとることができる。
そして、経路探索結果に基づき、経路案内データを作成する(ステップS12)。経路案内データは、経路探索の結果を、ネットワークデータ213のリンク列で表したデータである。経路案内データは、経路探索の結果として、端末300に送信される。
【0026】
端末300は、次にユーザの現在位置に応じて、3次元地図を表示しながら経路を案内する処理を行う。
まず、端末300は、ユーザの現在位置を検出する(ステップS13)。現在位置は、GPSなどのセンサを利用して検出することができる。
そして、端末300は、地図表示処理によって3次元地図を表示する(ステップS14)。処理の内容は、後で詳述する。
以上の処理を、端末300は、目的地に到着するまで繰り返し実行する(ステップS15)。
【0027】
(2)地図表示処理:
図5は、地図表示処理のフローチャートである。経路案内処理(
図4)のステップS14に相当する処理であり、端末300の表示制御部306が主として実行する処理である。
処理を開始すると、端末300は、視点、視線方向、表示スケールを入力する(ステップS20)。視点は、現在位置に基づいて定めるものとしてもよい。視線方向は、現在位置および進行すべき経路に基づいて定めるものとしてもよい。
そして、3次元地図として表示すべき範囲の地図データおよび経路案内データを読み込む(ステップS21)。3次元地図を表示するために、本実施例では、端末300は、まず地図情報記憶部305に格納されているデータを読み込む、そして地図を表示するために地図データが不足している場合には、不足分をサーバ200から取得する。
【0028】
次に、サーバ200は、トンネルモデル生成処理を行う(ステップS22)。この処理は、トンネルのラインデータに基づき、路面およびトンネルの壁を生成することによって、トンネルの3次元モデルを生成する処理である。処理の詳細は後述する。この処理も、地図データ等の読み込み(ステップS21)と同様、既に生成済みのトンネルモデルは地図情報記憶部305に格納されているため、不足する分のトンネルについてのみ実行される。
【0029】
端末300は、地図内に表示される地物から、透過オブジェクトを抽出する(ステップS23)。本実施例では、トンネルを透過オブジェクトとした。
そして、端末300は、透過オブジェクトを仮想3次元空間に配置し、透視投影することで、透過オブジェクト投影図を生成する(ステップS24)。また、透過オブジェクト以外の地物、即ち非透過オブジェクトを、別途、仮想3次元空間に配置し、透視投影することで、非透過オブジェクト投影図を生成する(ステップS25)。透過オブジェクト投影図、非透過オブジェクト投影図を生成する際の投影条件、つまり視点位置、視線方向などは同じとしてある。
端末300は、最後に、得られた非透過オブジェクト投影図に、透過オブジェクト投影図を重畳する(ステップS26)。こうすることで、
図1の下段に示した重畳図を得ることができる。重畳の際には、透過オブジェクト投影図の透過率を調整する。本実施例では、地表面などの非透過オブジェクト投影図の各地物が透けることによって透過オブジェクト投影図を視認できているとユーザが錯覚する程度の透過率に設定してある。透過率は、透過オブジェクト投影図の全体で一定としてもよいし、領域に応じて変化させてもよい。
【0030】
(3)トンネルモデル生成処理:
図6は、トンネルモデル生成処理のフローチャートである。この処理は、地図表示処理(
図5)のステップS22に相当する処理であり、サーバ200が実行する処理である。端末300の処理能力が十分にある場合には、端末300で実行してもよい。
【0031】
サーバ200は、処理を開始すると、道路データを読み込み、トンネル区間を抽出する(ステップS30)。図中に処理の例を示した。この例では、構成点P1〜P6で定義されるラインデータの形式で道路データが与えられている。このうち、破線で示した構成点P2〜P4の区間には「トンネル」という属性が付されているとすると、サーバ200は、この構成点P2〜P4の区間をトンネル区間として抽出するのである。道路と、トンネルとが別の地物として3次元地図データベースに格納されている場合には、上述した複雑な処理を施すまでなく、「トンネル」との属性が付された地物を抽出すれば足りる。
【0032】
そして、サーバ200は、トンネル区間を拡幅し路面ポリゴンを生成する(ステップS31)。図中に処理の様子を例示した。「ライン」と示した中央の線分が、ラインデータによって与えられる線の形状である。サーバ200は、このラインに直交する左右方向にラインを平行移動することによって拡幅する。これをトンネル区間の全構成点に対して実行することにより、路面ポリゴンを生成することができる。拡幅の幅は、一定値としてもよいし、トンネルに接続された道路の幅に合わせるようにしてもよい。また、トンネル区間に対して、道路幅や車線数などの属性情報を予め用意しておき、これらの情報に基づいて拡幅の幅を決定するようにしてもよい。
【0033】
サーバ200は、路面ポリゴンの両側に、壁ポリゴンを生成する(ステップS32)。図中に処理の例を示した。この例では、断面が1/4円弧状の壁が路面ポリゴンの両側に設置されている。壁の半径Rは、任意に設定可能であるが、道路に関する法令などで規定されている高さに合わせても良い。本実施例では、両側の壁ポリゴンの間に、隙間WSを設けた。隙間WSが存在することによって、トンネルを3次元表示したときでも路面を視認することが可能となるからである。隙間WSの値も任意に決定可能であるが、本実施例では、WS=道路幅Wr−2×Rという計算式で算出される値とした。即ち、道路の両端から、半径Rでそれぞれ1/4円弧(中心角90度)の壁ポリゴンを生成したときに、必然的に得られる隙間がWSとなる。逆に、視認性を考慮して、道路幅Wrを決定した上で、半径Rを調整したり、壁ポリゴンの中心角を90度よりも小さい値としてもよい。
ここでは、円弧状の壁ポリゴンを例示したが、壁ポリゴンの形状は任意であり、平板状としてもよい。
【0034】
D.表示例:
図7は、3次元地図の表示例(1)を示す説明図である。トンネルを透過オブジェクトとして表示した例を示した。中央付近に縦方向に描かれている曲線がトンネルである。その周囲には、非透過オブジェクトとして、道路、建物等が描かれている。本来であれば、トンネルは地表面の下に位置するため、3次元地図内には表示されないが、本実施例の3次元地図では、表示されることが分かる。従って、経路案内において、トンネルを通行する経路が選択されている場合でも、現在地マークはトンネル上に表示され、ユーザに対して違和感のない表示を実現できる。
【0035】
図7の例では、透過オブジェクト投影図を重畳する際に、領域に応じて透過率を変化させている。透過オブジェクト投影図の下方の領域、即ち視点位置に近い部分は透過率を低くし、上方の領域、即ち視点から遠い部分は透過率を高くしている。こうすることによって、下方の領域TAでは、トンネルを明瞭に表示し、遠方の領域TBでは、うっすらと表示させるというように、フェードアウト表示とすることができる。この結果、トンネルの奥行きを表現することができるとともに、ユーザに過度の情報を与え、混乱を生じさせることを回避できる。視点からの距離に応じて、一つの地物であるトンネルの透過率を変化させることは通常であれば、投影前に地物の区間ごとに透過率を設定するなどの処理が必要となり、処理負荷が高くなるが、本実施例では、投影後の2次元画像としての透過オブジェクト投影図に対して透過率を設定するため、軽い処理負荷でフェードアウト表示を実現することができる。
【0036】
図8は、3次元地図の表示例(2)を示す説明図である。トンネルとともに建物の一部も透過オブジェクトとして扱った例を示した。透過率は、視点に近い部分で低く、遠方で高くなるように設定してある。建物を透過オブジェクトとして扱うことにより、トンネルや道路を認識しやすくなる利点がある。
図の例では全ての建物を透過オブジェクトとしているが、他の建物等によって遮蔽される建物のみを透過オブジェクトとしてもよい。こうすれば、地表面が透けてトンネルが視認できているかのように見えるのと同様、前方にある建物が透けて背後にある建物が視認できるかのような表示を実現することができる。
【0037】
以上で説明した第1実施例の3次元地図表示システムによれば、トンネルなど遮蔽されている地物を、あたかも遮蔽している側の地物が透けて見えるかのように表示することができ、違和感なく地図としての有用性の高い表示を実現することができる。
【実施例2】
【0038】
次に第2実施例の3次元地図表示システムについて説明する。第2実施例では、透過オブジェクトとして扱われるトンネルのデータ構造が第1実施例とは相違する。
【0039】
(1)トンネルデータの修正:
図9は、第2実施例におけるトンネルデータの形状例を示す説明図である。山の中をほぼ水平に貫通するトンネルを横から見た状態を示した。図の上段には、地形を模式的に表し、下段には、地表面からの深さDを表すグラフを示した。深さDは、上段に示すように、地表面からトンネルまでの距離を表し、トンネルが地中にある場合を正とする。
上段の図において上に凸の曲線状に描かれた地表面が山である。トンネルは下方に実線で示す通り、ほぼ水平に走っている。地表面が山のように起伏しているため、地表面からの深さDは、下段の図に示すように中央付近で極大となる。
【0040】
かかる状態でトンネルを移動する際に経路案内表示する場合を考える。経路案内表示する際の視点位置(以下、カメラ位置とも言う)および視線方向は、現在位置の後上方から現在位置に向けて設定することが好ましい。
例えば、現在位置P1に対しては、その後方の高さhの点をカメラ位置C1として透視投影を行う。こうすれば現在位置およびその進行方向の経路を含む3次元地図を表示することができる。
しかし、現在位置P2、P3になると、この方法では、カメラ位置C2、C3に設定されることとなる。これらのカメラ位置は、地中にあるため、3次元地図は、トンネル以外の地物は全く描かれない状態となってしまう。これを回避するために、例えば、カメラ位置C2、C3を地表面の高い位置に設定すれば、今度は、トンネルまでの距離が離れすぎ、トンネルが非常に小さくしか描かれないという別の課題が生じることになる。
【0041】
本実施例では、こうした弊害を回避するため、トンネルの地表面からの深さDが最大値Dmax以下となるように修正する。この修正を施したトンネル修正データは、図の上段に破線で示すように、山の形状に沿って上側に曲線状に曲がった形となる。修正するのは、トンネルの高さデータのみであり、2次元的な位置データは修正しない。トンネル修正データを用いて経路案内をする場合を考える。
現在位置P4にあるとき、視点位置は、トンネル修正データに沿って後方で高さhのカメラ位置C4に設定される。これは地表面より上にあるため、違和感のない3次元地図を表示可能となる。
また、現在位置P3にあるとき、視点位置は、トンネル修正データに沿って後方で高さhのカメラ位置C5に設定される。従って、この場合も、地表面より上に設定されるため、違和感のない3次元地図を表示可能となる。
【0042】
トンネル修正データは、現実のトンネル形状を表すものではない。しかし、このようにトンネルの地中深さを修正した地図表示の便宜上のデータを用意することにより、複雑なアルゴリズムを用いるまでなく、経路案内時に違和感のない地図の表示を実現することが可能となるのである。
地中深さの最大値Dmaxは、上述の通り、カメラ位置が地中に潜ることを回避するための規制値であるから、カメラ位置を決定する高さhの値よりも大きい範囲で任意に設定可能である。
【0043】
(2)トンネルデータ修正処理:
図10は、トンネルデータ修正処理のフローチャートである。この処理は、サーバ200(
図1参照)が実行するものとしてもよいし、サーバ200に接続された他の地図データ生成装置で実行するものとしてもよい。いずれの場合においても、
図10に示す機能を実現するためのコンピュータプログラムをインストールすることによってソフトウェア的に構成することができる。ここでは、サーバ200が実行するものとして説明する。
【0044】
トンネルデータ修正処理を開始すると、サーバ200は、まずトンネルデータを読み込み(ステップS40)、地表面からの深さD≦最大値Dmaxとなるように、トンネルデータの各構成点の高さデータを修正する(ステップS41)。
図中に修正方法の例を示した。実線が修正前のトンネルデータを表しており、構成点RP[1]〜RP[7]で構成されている。地表面からの深さDは、中央付近の構成点RP[3]〜RP[5]では、最大値Dmaxを超えている。
高さデータの第1の修正方法では、構成点RP[3]〜RP[5]のそれぞれを地表面深さが最大値Dmaxとなるように修正する。この方法での修正データが、それぞれ構成点RPA[3]〜RPA[5]である。第1の修正方法では、修正後のトンネル経常が、中央付近でやや歪んだ状態となるが、修正すべき構成点が少なくて済む点が特徴である。
第2の修正方法では、まず、最も地表面深さが大きくなる構成点RP[4]の高さを最大値Dmaxに修正する。この構成点がRPB[4]である。そして、トンネル区間の両端の構成点RP[1]、RP[7]と、修正阿田尾の構成点RPB[4]を通る滑らかな曲線、例えばスプライン曲線、を求め、この曲線上に乗るように、各構成点の高さを修正する。この結果、構成点RP[2]、RP[3]、RP[5]、RP[6]は、それぞれRPB[2]、RPB[3]、RPB[5]、RPB[6]に修正される。第2の修正方法では、修正すべき構成点は多いが、全体として滑らかなトンネル形状を実現することができる利点がある。
第1および第2の修正方法は、いずれを選択してもよい。
【0045】
以上の処理によってトンネルデータを修正すると、サーバ200は、この修正後のデータを格納して(ステップS42)、トンネルデータ修正処理を終了する。経路案内では、修正後のデータを用いてトンネルの表示が行われることになる。
【0046】
(3)地図表示処理:
図11は、第2実施例における地図表示処理のフローチャートである。実施例1における地図表示処理(
図5)において、トンネルモデル生成処理(
図5のステップS22)の前に、表示対象となるトンネルを選択する処理を追加した(
図11のステップS21A)。トンネルは、本来、視認できないはずの地物であるため、全てのトンネルを表示対象とすると、地図が非常に煩雑となり、ユーザを混乱させるおそれがあるため、第2実施例では、重要性の高いトンネルのみを表示対象とするのである。
【0047】
重要性の高いトンネルは、次の2つの条件に基づいて判断する。
条件1:経路上のトンネル;
条件2:現在リンクの先端に接続されたトンネル
第2実施例では、条件1または条件2の少なくとも一方を満たすものが表示対象とされ、そうでないものは表示対象から除外される。
【0048】
図中に、上記条件の判断例を示した。経路探索の結果、図中に実線で示す経路が得られているとする。それぞれの矢印は、経路の進行方向を表すとともに、経路を構成するリンクを表している。リンクの接続部分の●はノードを表している。
最上段に描かれているトンネル1は、経路上にあるトンネルである。従って、トンネル1は上述の条件1により表示対象となる。
中段のトンネル2は、現在位置が存在するリンクの先方のノードに接続されたトンネルである。従って、トンネル2は上述の条件2により表示対象となる。トンネル2が経路上のトンネルでないにも関わらず表示対象となる理由は、次の通りである。トンネル2は、経路上のノードと接続されているため、ユーザが経路を走行していくと必ず通過する分岐点を構成することになる。仮にトンネル2を表示対象から除外してしまうと、経路案内に用いられる地図上は、あたかも上述の分岐点が存在しない表示となってしまい、ユーザを混乱させるおそれがある。本実施例では、こうした混乱を回避するため、トンネル2のように現在位置の先で分岐を構成するものについては、表示対象としているのである。
下段のトンネル3は、条件1、2のいずれにも該当しないため、表示対象から除外される。トンネル3も経路と接続し、分岐を構成してはいるが、現在位置は既にその分岐を通過しているため、非表示としてもユーザを混乱させる心配はないからである。先に表示対象とされていたトンネル2についても、分岐を通過した時点でトンネル3と同様に非表示に切り替わることになる。
【0049】
トンネルを選択した後の処理は、第1実施例(
図5)と同様である。選択されたトンネルに対してトンネルモデルを生成し(
図5のステップS22)、透過オブジェクトの抽出(ステップS23)、透過オブジェクト投影図の生成(ステップS24)、非透過オブジェクト投影図の生成(ステップS25)、そして両者の重畳(ステップS26)を行って、3次元地図を表示する。
【0050】
第2実施例によれば、第1実施例の効果に加え、現在位置との相対関係でカメラ位置を設定しても、カメラが地中に潜るといった支障を回避することができる。また、表示対象となるトンネルを選択することによってユーザに提供される情報を適度に抑えることができる。
【0051】
以上、本発明の実施例について説明した。
以上の実施例1、2で説明した種々の特徴点は、必ずしも全てを備えている必要はなく、適宜、一部を省略したり組み合わせたりして適用してもよい。例えば、第2実施例で示したトンネルデータの修正や、トンネルの選択処理は、第1実施例にも適用可能である。また、第2実施例においては、地下建物を対象として、トンネルと同様に深さの修正や表示対象の選択を行ってもよい。
また、本発明は、上述した実施例の他、種々の変形例をとることができる。
(1)透過オブジェクトとできる地物は、必ずしもトンネルや地下建物には限らない。地上に存在する地物を透過オブジェクトとしてもよい。
(2)実施例においてソフトウェアで処理している部分はハードウェアに置き換えることもでき、その逆も可能である。