【実施例1】
【0022】
<<地図データ生成の概要>>
実施例の地図データ生成システムは、描画データ、道路ネットワークデータ等を用いて、道路上に標示される道路標示を描画するための道路標示データを生成するものである。本実施例では、地図データには、上述の描画データおよび道路ネットワークデータが含まれ、道路標示データは、描画データの一部を構成するものである。道路標示データは、ディスプレイ等に表示される電子地図に活用することもできるし、印刷物としての地図をプリントするためのデータとして活用することもできる。
【0023】
最初に、本実施例における道路標示データの生成方法について概要を説明する。
図1は、道路標示データ生成の概要を示す説明図である。
図1(a)には、本実施例によって生成された道路標示データを用いて描いた道路を示し、
図1(b)には、
図1(a)に対応する箇所の航空写真を示した。本実施例では、
図1(b)の航空写真等を利用して
図1(a)を描画するための道路標示データを生成している訳ではない。実施例の地図データ生成システムは、航空写真(
図1(b))とは無関係に、道路の描画データ、道路ネットワークデータ等を参照して、道路標示データ(
図1(a))を生成するのである。
本実施例における道路標示には、道路通行帯最外側線LL11、道路通行帯境界線LL12、停止線LL13、横断歩道PT11、導流帯またはゼブラゾーンPT12などが含まれる。道路通行帯最外側線LL11、道路通行帯境界線LL12を、「道路白線」と総称することもある。
道路標示データを生成するための最も簡単な処理例としては、例えば、2車線の道路に対して、一定の車線幅で2つの車線が形成されるように道路白線を配置すればよい。ただし、この処理だけでは、横断歩道PT11、停止線LL13、ゼブラゾーンPT12などは生成することができない。また、本実施例では、右折用に車線が増加する領域(
図1(a)中の領域A11)も再現する。地図データ生成システムは、描画データ等から、予め設定された規定に基づいて、これらの道路標示に対応する道路標示データを生成するのである。
図1(a)では、一見して
図1(b)の航空写真に対応する領域の地図であると認識できる程度に精度良く、道路標示が描画されていることが分かる。以下では、このような道路標示データを生成するためのシステム構成および処理について説明する。
【0024】
<<システム構成>>
図2は、地図データ生成システムの構成を示す説明図である。地図データ生成システムは、CPU、RAM、ROMを備えるコンピュータに、地図データ生成処理を実現するためのソフトウェアをインストールすることによって構成される。本実施例では、スタンドアロンで稼働するシステムとしての構成例を示すが、図示する各要素は、ネットワーク等で接続された複数のコンピュータを用いた分散処理によって実現するものとしてもよい。
【0025】
地図データ生成システムには、処理に活用するためのデータベースとして、地図データベース10および道路標示規定データベース20を備えている。
地図データベース10は、道路ネットワークデータベース11と描画データベース12を有している。道路ネットワークデータベース11は、経路探索用にノードおよびリンクで表した道路ネットワークデータを格納している。道路ネットワークデータには、それぞれのリンクおよびノードに対して、道路種別、道路名称、車線数などを示す属性データも設定されている。描画データベース12は、地図を描画するためのポリゴンデータを格納している。ポリゴンデータには、例えば、道路、建物、湖沼等を描画するためのデータが含まれる。また、実施例で説明する処理によって道路標示データが生成された場合には、道路標示データも、ポリゴンデータの一部として格納されることになる。
道路標示規定データベース20は、道路標示の形状や位置を規定した道路標示規定データを格納する。本実施例では、道路構造令の規定内容に基づいて道路標示規定データを設定した。そのデータ構造および内容については後述する。
地図データベース10および道路標示規定データベース20は、地図データ生成システム内のハードディスク等に格納しておいてもよいし、ネットワークで接続されたサーバから提供してもよい。また、DVDなどの記憶媒体で提供してもよい。
【0026】
道路標示データ記憶部40は、道路標示データを生成する過程のデータおよび生成された結果を格納する記憶部である。RAMなどのメモリ領域、ハードディスク、フラッシュメモリなど、書き換え可能な種々のメモリを道路標示データ記憶部40として活用することができる。
【0027】
地図データ生成システムの他の構成要素として、図中には、道路標示データを生成するための機能ブロックを示した。これらの機能ブロックは、コンピュータプログラムのインストールによってソフトウェア的に構成してもよいし、電子回路によってハードウェア的に構成してもよい。以下、これらの各機能ブロックの機能概要について説明する。ただし、それぞれの機能ブロックにおける具体的な処理方法については、後でフローチャートと共に説明する。
【0028】
道路ネットワークグループ化処理部30は、道路標示データを生成する前処理として、幹線道路のように一連の道路として道路白線が描かれるべきリンクおよびノードをグループ化する。道路ネットワークデータでは、リンク同士の交点には、全てノードが設定されているため、幹線道路を構成する一連のリンクも、それぞれのノードで分断されているが、このように分断されたリンクをグループ化しておくことにより、道路標示データの生成においては、幹線道路などを一連の道路として扱うことが可能となる。
【0029】
交差点領域設定部32は、ポリゴンデータおよび道路ネットワークデータを参照して、交差点領域を設定する。横断歩道や停止戦など、道路標示は、交差点領域の境界を基準として位置が定まるものとが多いため、ここで設定される交差点領域は、道路標示の位置を決める基準としての意義を有している。交差点領域の設定方法については、後述する。
【0030】
横断歩道処理部34は、横断歩道の形状を設定し、横断歩道を描画するためのデータを生成する。横断歩道は、必ずしも道路に直交するように描かれるとは限らず、交差点によっては、道路に斜めに交差するように描かれる場合がある。横断歩道処理部34は、交差点の形状を考慮して、このように斜めに交差する横断歩道を描画可能とするのである。
【0031】
道路標示生成部36は、道路白線、停止戦およびゼブラゾーンを描画するためのデータを生成する。右折用に車線数が増加する場合には、道路標示生成部35は、増加した車線が描かれる滞留区間や、滞留区間に滑らかに接続するためのすりつけ区間を描画するデータも生成する。
【0032】
データベース更新部38は、道路標示データ記憶部40から生成された道路標示データを読みだし、描画データベース12を更新する。本実施例では、道路標示データは描画データベース12の一部を構成するものとしたが、道路標示データを描画データベース12とは別のデータベースとして地図データベース10内に格納するようにしてもよい。
【0033】
図3は、道路標示規定データベース20の内容例を示す説明図である。
道路標示規定データベース20は、道路構造令の規定内容に基づいて道路標示の形状や位置を規定する。
図3(a)には、道路標示規定データベース20を構成する各パラメータの符号および内容、数値を例示した。
図3(b)には、道路上の標示と対応づけて各パラメータの意義を示した。ここで例示したパラメータの内容を以下、説明する。
車線幅WLNは、車両が走行する車線の幅であり、例えば、3.0mとすることができる。
車両通行帯最外側線幅、車両通行帯境界線幅WLLは、道路白線の幅(太さ)であり、例えば、0.15mとすることができる。
車両通行帯境界線長(破線)LLは、破線で描かれている道路白線の長さであり、例えば、5.0mとすることができる。
導流帯内白線幅(ゼブラ)ZWは、ゼブラゾーンを構成する白線の幅であり、例えば、0.45mとすることができる。
導流帯内白線間距離(ゼブラ)ZSは、ゼブラゾーンを構成する白線の間隔であり、例えば、1.0mとすることができる。
停止線幅WSLは、停止線の幅であり、例えば、0.45mとすることができる。
横断歩道、停止線間距離DSは、横断歩道と停止線との間隔であり、例えば、2.0mとすることができる。
停止線前車線変更禁止線DPCは、停止線に至るまでの間で、車線変更禁止のため道路白線が破線ではなく実線で描かれるべき区間の長さであり、例えば、30.0mとすることができる。
横断歩道線幅WCW、線間隔SCWは、横断歩道を構成する各白線の幅および間隔であり、例えば、共に0.45mとすることができる。
本実施例では、これらの数値は、道路構造令などの法規に基づいて設定した。道路標示規定データベース20には、この他にも、道路標示の位置および形状を定める種々のパラメータを設定可能である。また、必ずしも全てのパラメータが道路構造令に基づいて設定されている必要はなく、現実の状態を精度良く再現するために、道路構造令等に規定されていないパラメータを定義してもよい。
【0034】
<<全体処理の流れ>>
次に、道路標示データを生成する処理について説明する。まず処理の全体概要を示し、その後、それぞれの具体的処理内容を詳述する。
図4は、地図データ生成処理のフローチャートである。「地図データ生成処理」と呼んだのは、この処理によって生成された道路標示データを地図データベース10に格納することによって、道路標示データを含んだ新たな地図データベース10が生成されることになるからである。
【0035】
地図データ生成処理は、ハードウェア的には地図データ生成システムのCPUが実行し、ソフトウェア的には、
図1に示した各機能ブロックが実行する処理である。
CPUは、前処理として、道路ネットワークグループ化処理により、道路標示データの生成時には一連の道路として扱われるべきノード、リンクをグループ化する処理を行う(ステップS100)。を行う。これは、先に説明した道路ネットワークグループ化処理部30の機能に相当する処理である。
次に、CPUは、交差点領域設定処理によって、ポリゴンデータ、道路ネットワークデータを参照して、交差点領域を設定する処理を行う(ステップS200)。これは、先に説明した交差点領域設定部32の機能に相当する処理である。
次に、CPUは横断歩道角度決定処理によって、道路に何度の角度で横断歩道を交差させて描くかを決定する処理を行う(ステップS300)。これは、先に説明した横断歩道処理部34の機能に相当する処理である。
次に、CPUは道路標示生成処理によって、停止線、道路白線、ゼブラゾーンを描くだめのデータを生成する(ステップS400)。これは、先に説明した道路標示生成部36の機能に相当する処理である。本実施例では、各道路について中央線に相当する位置で上下線に分けて、それぞれ停止線、道路白線、ゼブラゾーンを描くためのデータを生成した後、上下線のデータを結合して、道路全体の停止線、道路白線、ゼブラゾーンを描くデータを生成するという手順をとる。
次に、CPUは横断保号の描画処理によって、横断歩道を描画するためのデータを生成する(ステップS500)。これは、先に説明した横断歩道処理部34の機能に相当する処理である。
ステップS400、S500で生成されたデータが道路標示データとなる。
最後に、CPUは生成された道路標示データによって、描画データベース20を更新する処理を行う(ステップS600)。
以上の処理は、適宜、順序を入れ替えたり、まとめて行ったりしてもよい。以下、それぞれの処理内容について詳述する。
【0036】
<<道路ネットワークグループ化>>
道路ネットワークグループ化は、
図4のステップS100および道路ネットワークグループ化処理部30の機能に相当する処理内容である。以下では、まず処理の意義および概要を示した後、フローチャートを示す。
【0037】
図5は、グループ化の概要を示す説明図である。
図5(a)は、幹線道路を構成するリンクL51、L52に、細街路のリンクL53がノードN50で交差している道路を示している。道路ネットワークデータでは、道路種別に関わらずリンクの交点には、必ずノードが設定されている。従って、幹線道路を構成するリンクL51、L52も、道路ネットワークデータ上は、複数のリンクに分断された状態で格納されることになり、ノードN50は交差点と認識されることになる。そして、ノードN50の周囲には、後述する処理方法によって交差点領域A50(ハッチングを付した部分)が設定される。道路白線は、交差点領域を避けて描かれるのが通常であるから、交差点領域A50が設定された結果、幹線道路については、道路白線LL51、LL52のように分断された道路白線が描かれることになる。
しかし、一般に幹線道路に細街路が交差している箇所については、幹線道路の道路白線は、
図5(a)のように分断されることなく、連続して描かれるのが通常である。
そこで、ネットワークグループ化処理では、交差点領域A50のように、交差点領域が生成されるべきでないリンクおよびノードをグループと定義するのである。
図5(a)の例では、D51方向に道路標示データを生成する処理においては、リンクL51、ノードN50、リンクL52をグループとして定義する。こうすれば、リンクL51、L52に対して道路標示データを生成する際には、これらのリンク、ノードは一連のものとして扱われるべきであると認識され、交差点領域A50が設定されるのを回避することができ、道路白線LL51、LL52を連続した状態で生成することができる。
逆に、D52方向に道路標示データを生成する処理においては、グループ化を行わない。こうすることにより、交差点領域A50が設定されるから、道路最外側線LL53、LL54は、交差点領域A50で分断された状態で生成することができる。
この交差点について、リンクL53の道路標示データを生成する場合を考える。リンクL53は、リンクL51、L52のいずれともグループと定義せずにおく。こうすれば、リンクL53の処理時には、ノードN50周りの交差点領域A50を設定することができ、交差点の直線に停止線や横断歩道を描くことができる。
【0038】
図5(b)には、グループ化を行うべき他の例を示した。図の例では、比較的狭い分離帯M51を挟んで平行に走るリンクL58、L59が、リンクL54〜L57とノードN51、N52で交差している。都市部など、分離帯M51で上下線が分離されている箇所では、かかる状態が生じ得る。
このような場所で、グループ化を行わずに処理をすると、ノードN51を交差点と認識して、交差点領域A51が設定されることになる。ノードN51を処理しているときには、ノードN52、リンクL59の位置は考慮されないからである。交差点領域A51が設定されると、これを基準として横断歩道が設定されるから、分離帯M51に横断する形で横断歩道CW51が設定されてしまう。
そこで、ネットワークグループ化処理では、D53方向に処理を行う場合には、リンクL55、ノードN51、リンクL54をグループとして定義する。こうすることによって、ノードN51を除外して、ノードN52の周囲にのみ交差点領域を設定することができるため、不自然な横断歩道CW51ではなく、横断歩道CW52を生成することが可能となる。
また、D54方向に処理を行う場合には、リンクL55、ノードN52、リンクL56をグループとして定義する。こうすることによって、ノードN52を除外して、ノードN51の周囲にのみ交差点領域を設定することができるため、横断歩道CW53を生成することが可能となる。
その他のリンクL57、L58、L59に対しては、いずれもグループを定義せずに処理を行えば、それぞれ適切な位置に横断歩道を生成することが可能である。
以上、
図5(a)、
図5(b)で示したように、グループ化を行うことにより、交差点領域を設定するか否かを切り替えることができ、それぞれの交差点の状況を反映させた道路標示を生成することが可能となる。次に、グループ化の具体的処理について説明する。
【0039】
図6は、道路ネットワークグループ化処理のフローチャートである。
CPUは、道路ネットワークデータを読み込み(ステップS102)、グループ化の処理対象となるノードを選択する(ステップS104)。そして、このノードに接続されているリンクを抽出する(ステップS106)。
次に、CPUは、抽出されたリンクについて、道なり条件の判定を行う(ステップS108)。道なり条件とは、ノードで分断された複数のリンクが、道路標示データの生成上は一連の道路として扱われるべきか否かを判断する条件であり、グループ化するための判断の基礎となる条件である。本実施例では、「道なり」か否かが、道路ネットワークデータに属性として、各リンクの上下方向に個別に設定されているものとした。
図中に示すリンクL1〜L3からなる三叉路を例示する。この中でリンクL1からリンクL2に向かう方向P12、およびリンクL2からリンクL1に向かう方向P21には、それぞれ「道なり」であると設定されており、その他の方向(リンクL1→L3など)は、「道なり」と設定されてはいないものとする。CPUは、この属性に基づいて、図中に示すように、各リンク間が道なりか否かの結果を抽出する。
道なりか否かは、属性で設定しておく他、道路種別、道路名称、車線幅、形状などで解析的に判断するようにしてもよい。例えば、道路名および道路種別が同一であるリンク同士は道なりと判断したり、リンク間のなす角度が180度から所定の範囲内の場合には道なりであると判断する方法などをとることができる。
【0040】
道なり条件の判断が終わると、CPUは、この判断結果に基づいてグループ化を行う(ステップS110)。本実施例では、図中に示すケース1、2のいずれかの条件を満たす場合に、グループを設定するものとした。図中に示すリンクLa、Lb、Lcからなる三叉路に対して、リンクLaを処理対象とする場合を例にとって説明する。
ケース1は、ステップS108において、リンクLa→Lbの方向Pab,およびリンクLb→Laの方向Pbaの双方が道なりであると判断される場合である。
ケース2は、ステップS108において、リンクLa→Lbの方向Pabのみが道なりと判断されており、リンクLcとリンクLa、Lbは道なりでないと判断されている場合である。
このケース1、2は、現実の道路において、交差点として扱われていない箇所を調査した結果、設定されたものである。この条件によってグループ化を行えば、
図5(a)、
図5(b)で示したケースにおいて、それぞれ適切に道路白線を生成することができる。もっとも、グループ化の条件は、種々の設定が可能であり、ステップS110で示した以外の条件を用いることも可能である。
上述の条件におけるリンクLaを、リンクLbまたはリンクLcに置換すれば、これらのリンクに対するグループ化の条件を設定することができる。ステップS110では、CPUは、処理対象ノードに接続している全リンクに対して、それぞれグループ化の判定を行う。
CPUは、以上の処理を、全ノードについて終えるまで繰り返し実行する(ステップS112)。
【0041】
<<交差点領域設定>>
交差点領域設定は、
図4のステップS200および交差点領域設定部32の機能に相当する処理内容である。
図7は、交差点領域設定処理のフローチャートである。CPUは、処理対象ノードを選択する(ステップS202)。この際、前述の道路ネットワークグループ化処理(
図6)によって、グループ化されたリンク上のノードは処理対象から除かれる。
CPUは、描画データベースから処理対象ノードの周囲のポリゴンデータを読み込み、道路領域を取得する(ステップS204)。図中の右側に、処理の様子を例示した。ノードN70が処理対象ノードとなっている場合、そこに接続されるリンクL71〜L74に対応する道路の領域(図中の白い部分)を特定するのである。必ずしも道路自体のポリゴンデータを取得する必要はなく、道路以外の背景部分のポリゴンデータ(図中のハッチングの部分)を取得しても構わない。
右側に示すように、処理対象ノードN70の周囲は、リンクL71〜L74によって4つの領域I〜IVに分けられる。CPUは、この各領域I〜IVについて、交差点つまり処理対象ノードN70からの最近傍点を取得する(ステップS206)。図中に示すように、領域Iについては点P1、領域IIについては点P2、領域IIIについては点P3、領域IVについては点P4が、それぞれ最近傍点となる。
最近傍点が求まると、CPUは、これらを結び交差点領域を設定する(ステップS208)。図中において、点P1、P2、P3、P4を結ぶ太線で囲った部分が、交差点領域となる。
CPUは、以上の処理を、全ノードについて終えるまで繰り返し実行する(ステップS210)。
こうして設定された交差点領域は、道路白線を描画する際の位置の基準等として活用される。
【0042】
<<横断歩道の生成>>
横断歩道の生成は、
図4のステップS300および横断歩道処理部34の機能に相当する処理内容である。横断歩道を描く場合に、横断歩道と道路との交差角度の候補値の設定方法を説明した後、処理内容について説明する。
【0043】
図8は、横断歩道の交差角度の候補値の決定方法を示す説明図である。リンクL81〜L84が交差している交差点において、リンクL81を処理対象とする場合を例にとり、
図8(a)〜
図8(d)の4つの候補値の設定方法を示した。
図8(a)は、リンクL81に直交する横断歩道WC81を設定する例である。図のように、道路が斜めに交差している交差点では、横断歩道WC81のように描くと、リンクL81の右側(リンクL84側)で交差点までの間隔が開いてしまい、不自然な状態となる。このような場合には、横断歩道は、図中で右上がりの状態に斜めに描くことが好ましい。
図8(b)〜(d)は、リンクL81に対して斜めに横断歩道WC82を設定する例である。
図8(b)の横断歩道WC82は、リンクL81の左側に交差するリンクL83と平行な辺を有する平行四辺形によって描かれる。
図8(c)の横断歩道WC83は、リンクL81の右側に交差するリンクL84と平行な辺を有する平行四辺形によって描かれる。
図8(d)の横断歩道WC84は、リンクL83、L84上にノードNから等距離の点P83、P84をとり、これらの点P83、P84を結ぶ線分と平行な辺を有する平行四辺形によって描かれる。リンクL83、L84の間の角の二等分線を法線とする辺を有する平行四辺形と言うこともできる。
本実施例では、
図8(b)〜
図8(d)に示した3つの候補角度の中から、交差点に応じて、いずれか一つを選択し、横断歩道の交差角度を決定する。決定方法は、次のフローチャートに従って説明する。
【0044】
図9、
図10は、横断歩道角度決定処理のフローチャートである。
CPUは、まず処理対象リンクを選択し、処理対象リンクに交差する交差リンクを取得する(ステップS302)。処理対象リンクに交差する全リンクを取得するものとしてもよいが、本実施例では、以下の条件1、条件2を満たすものに絞って取得するものとした。ここで、「A9*」は、処理対象リンクに交差するリンクL9*(*=1,2,…)と、処理対象リンクの間の角度である。
条件1:処理対象リンクの両側それぞれにおいて、|A9*−90°|が最小となること;
条件2:90°−TH≦A9*≦90°+TH;
条件1は、処理対象リンクに対して、最も90°に近い角度で交差するリンクを、処理対象リンクの両側で一つずつ選択するための条件となっている。また、条件2は、選択されたリンクと処理対象リンクとの角度が、直角から所定範囲内に入っているという条件である。これらの条件によって、処理対象リンクの両側において、直角に近い角度で交差するリンクを取得しようとしているのである。
【0045】
図中に、上述の条件1、2を例示した。処理対象リンクLobの端のノードNobで、左側にリンクL91、L93が交差し、右側にリンクL92が交差しているものとする。処理対象リンクLobと、リンクL91〜L93との角度は、それぞれA91〜A93で表される。図中のハッチングを付した部分は、条件2を満たす範囲を表している。つまり、境界線BL1は、処理対象リンクLobとの角度が「90°−TH」となる線であり、境界線BL2は、「90°+TH」となる線である。図の状態では、リンクL91〜L93は、いずれもハッチングを付した領域内に入っているから、条件2は満たすことになる。
処理対象リンクLobの右側には、リンクL92のみが存在する。従って、|A9*−90°|が最小という条件1では、他と比較するまでなく、リンクL92が選択される。
処理対象リンクLobの左側には、リンクL91、L93が存在する。これらのうち処理対象リンクLobに直角に近い角度で交差するのは、リンクL91である。従って、左側については、条件1によって、リンクL91が選択される。条件1に即した形で表現すれば、|A91−90°|<|A93−90°|ということになる。
【0046】
こうして交差リンクを取得すると、CPUは、左右の交差角度を算出する(ステップS304)。図中に左右交差角度の定義を示した。図の煩雑化を回避するため、左右それぞれに分けて示してある。左側の図が左側交差角度を示し、右側の図が右側交差角度を示している。左側交差角度は、左側に交差するリンクL91の法線NL91と処理対象リンクLobとの角度AN91で定義する。右側交差角度は、右側に交差するリンクL92の法線NL92と処理対象リンクLobとの角度AN92で定義する。左側交差角度、右側交差角度の評価は、絶対値で行うので、角度AN91,AN92が処理対象リンクの左右いずれに現れるかによって正負の符号を考慮する必要はない。
左側交差角度を用いて横断報道を描く場合には、
図8(b)の状態となり、右側交差角度を用いて横断歩道を描く場合には、
図8(c)の状態となる。
CPUは、次に平均交差角度を算出する(ステップS306)。平均交差角度とは、図中に示す通り、左右の交差リンクL91、L92の二等分線NL93と処理対象リンクLobとの角度AN93である。この角度を用いて横断歩道を描く場合には、
図8(d)の状態となる。
【0047】
CPUは、以上で求めた左右の交差角度、平均交差角度の最小値を横断歩道角度に設定する(ステップS308)。角度は絶対値で評価するものとした。設定された横断歩道角度での横断歩道の描画は、後述する横断歩道描画処理で行う。
以上の処理を、CPUは全リンクについて終了するまで、繰り返し実行する(ステップS310)。
【0048】
<<道路白線の生成>>
道路白線の生成は、
図4のステップS400および道路標示生成部36の機能に相当する処理内容である。
図11〜
図14は、道路標示生成処理のフローチャートである。
CPUは、処理対象となるリンクグループを取得する(ステップS402)。そして、リンクグループを直線化する(ステップS404)。図中に直線化の方法を示した。図の上側に示すように、リンクL111、L112、ノードN111〜N113からなるリンクグループを考える。このリンクグループは、道路形状に沿って折れ曲がった折れ線で規定されているとする。
直線化処理では、図の下側に示すように、各リンクL111、L112の長さを保ったまま、一次元の座標上にノードN111〜N113を写像するのである。写像した結果を直線化リンクL111s、L112s、直線化ノードN111s〜N113sと称することにする。
【0049】
CPUは、車両通行帯最外側線および中央線の位置を決定する(ステップS406)。図中にこれらの決定方法を示した。決定方法は、次の通りである。
道路ネットワークデータは、道路の属性として道路幅Wrd、車線数の情報を有している。また、道路標示規定データ(
図3参照)は、車線幅をパラメータとして有している。従って、これらのデータを用いて、車線幅×車線数を計算することにより、道路幅Wrdのうち、車線に利用される幅Dが決定される。この幅Dを道路幅Wrd内に均等に配置することにより、車両通行帯最外側線BL1、BL2の位置を決定することができる。また、幅Dを、上下線の各車線数で内分することによって中央線CLの位置を決定することができる。上下線の車線数は同一とは限らないから、中央線CLは、幅Dの中央に来るとは限らない。例えば、上り2車線、下り1車線の道路では、中央線は幅Dを2:1に内分した位置に設定されることになる。
【0050】
こうして中央線が設定されると、CPUは、道路を中央線で上下に分断し、それぞれについて道路標示データを生成する。具体的には、交差点領域、横断歩道領域、停止線を設定し、この結果に基づいて車両通行帯最外側線長、中央線長を修正する(ステップS408)。
図中に処理例を示した。D12方向に処理を行う場合を考える。CPUは、交差点領域設定処理(
図7)で設定された交差点領域CSを配置する。そして、横断歩道角度決定処理(
図9)で決定された横断歩道角度に基づいて、交差点領域の端点から基準線LCS0を引く。基準線LCS0と処理対象リンクL11sとの角度ACSが横断歩道角度に相当する。
次に、交差点領域から遠ざかる方向に基準線LCS0から所定の距離OSTだけずらした位置に所定幅LCWの平行四辺形で横断歩道領域CWを設定する。これらの距離OST、幅LCWは、道路標示規定データに設定しておけばよい。
CPUは、横断歩道領域CWの境界線で、車両通行帯最外側線BL2および中央線CLを切断する。また、中央線CLと横断歩道領域CWとの交点から、横断歩道・停止線間距離DSだけずらした位置に停止線SLを設定する。また、車両通行帯最外側線BL2および中央線CLに平行に、車線数に応じて、車両通行帯境界線を設定する。
下り線についても、同様の方法で道路標示を描くことができる。ここで説明した手順は、一例に過ぎず、他の方法・手順によって生成しても構わない。
【0051】
CPUは、車線増加部分に対して、滞留区間、すりつけ区間を生成するため、すりつけ長Lt、必要滞留長Lsを算出する(ステップS410)。これらの長さは、道路構造令などの法令に基づいて次の通り算出することができる。
必要滞留長Ls=1.5×N×S;
すりつけ長Lt=V×WLN/6;
N:1サイクル当たりの平均滞留台数;
S:平均車頭距離(前後の車両の先頭間の距離);
V:設計速度;
WLN:車線幅;
上述の各パラメータのうち、車線幅は、全ての道路に共通の値として道路標示規定データに格納しておけばよい。パラメータNおよびVは、道路に固有の値なので、道路ネットワークデータに属性として設定しておくことが好ましい。これらのデフォルト値を道路標示規定データに設定しておいてもよい。例えば、設計速度Vは、1車線の道路では30km/h、2〜3車線の道路では40km/h、4車線以上では50km/hというように、車線数に応じて設定することもできる。
パラメータSは、道路に固有の値と考え、道路ネットワークデータの属性に設定しておいてもよいし、全ての道路に共通の値として道路標示規定データに設定してもよい。
さらに、上述のパラメータが不十分で必要滞留長Ls、すりつけ長Ltを算出できない時のために、これらのデフォルト値を設定しておいてもよい。例えば、必要滞留長Lsは、停止線前車線変更禁止線の距離DPC(
図3参照)と同じ値を用いることができる。
【0052】
CPUは、滞留区間およびすりつけ区間が道路長に収まるように、算出されたすりつけ長Lt、必要滞留長Lsを調整する(ステップS412)。道路長は、車両通行帯最外側および中央線の最小値minを基準値Lrdとして用いる。最小値minを用いることにしたのは、
図12のステップS408中に描いたように、横断歩道領域が斜めに設定され、車両通行帯最外側と中央線の長さが異なる場合があるからである。
図中の上側に示すように、「必要滞留長LS0+すりつけ長Lt0」が基準値Lrdよりも大きい場合を考える。かかる場合には、図示するように、滞留区間およびすりつけ区間が道路からはみ出した形になってしまう。
本実施例では、このような場合には、すりつけ長を確保したまま、必要滞留長を短縮することで、両者の和が基準値Lrd以下となるよう調整する。図中の下側に調整結果を示した。この例では、すりつけ長Lt1は当初の長さLt0と同じであり、必要滞留長Ls1を当初の長さLs0よりも短くすることで、全体の長さを基準値Lrdに収めている。この態様では、必要滞留長Lsを、車一台分の長さなど、予め設定された限界まで短縮しても、全体の長さが基準値Lrdを超える場合には、すりつけ長Ltを短縮することになる。もっとも、必要滞留長、すりつけ長は種々の調整方法が可能であり、両者を一定の比率で短縮する方法などをとることもできる。
【0053】
CPUは、以上の処理で設定された各白線をポリゴン化する(ステップS414)。ここでいう白線とは、停止線、中央線、道路白線(車両通行帯最外側線、車両通行帯境界線)を意味する。横断歩道は、この時点では、まだ描画しない。
CPUは、上下線の道路標示データを中央線で結合した上で、上下線のすりつけ区間同士のすき間を導流体(ゼブラゾーン)に設定する(ステップS416)。図中に上下のすりつけ区間LSA、LSBの間隙に設定されたゼブラゾーンZZを例示した。ゼブラゾーンを構成する白線の幅および間隔は、道路標示規定データ(
図3参照)に規定されている。
以上の処理によって、上下線の道路標示データが生成される。
【0054】
ここまでの処理は、本来折れ線状のリンクを、直線化した上で進めてきたが(
図11のステップS404参照)、求められているのは折れ線状の道路上の道路標示を描くためのデータである。このような道路標示データを得るために、CPUは、折れ線状の形状に沿って、生成された道路標示データを分割し、リンクに沿ってマッピングする(ステップS418)。
図中に処理例を示した。まず、図の上側に示すように、直線化リンクL111s、L112s、直線化ノードN111s〜N113sに対して、得られた道路標示データを、ノードN112sを通る法線BRLで、左右のポリゴンPOL1、POL2に分割する。そして、分割された左右のポリゴンPOL1、POL2を、図の下側に示すように、折れ線状の本来のリンクL111、L112上に配置するのである。マッピングの結果、ポリゴンPOL1、POL2が重なる領域DA、および両者の間隙RAが生じる。これらの領域DA、RAについては、その他の領域(図中の白抜き部分)のポリゴンをリンクL111,L112の形状に応じて滑らかに補間するなどして生成すればよい。
図中の最下部に、マッピング例を示した。
図13のステップS416中に示した道路標示をノードN112の部分で分割してマッピングしたものである。マッピングによって、ゼブラゾーンZZもこのように形状が変化することになる。
CPUは、以上の処理を、全グループに対して終了するまで繰り返し実行する。これらの処理によって、横断歩道を除く道路標示の生成が完了する。
【0055】
次に、CPUは横断歩道を描くため、横断歩道描画処理を実行する。これは、
図4のステップS500および横断歩道処理部34の機能に相当する処理内容である。
図15は、横断歩道描画処理のフローチャートである。CPUは、
図12のステップS408で設定された横断歩道領域を読み込む(ステップS502)。
そして、この領域内に横断歩道ポリゴンデータを生成する(ステップS504)。横断歩道を構成する各白線PCW1〜PCW3の幅WCWおよび間隔SCWは、道路標示規定データに設定されたパラメータを用いる。横断歩道領域CWが平行四辺形となっている場合には、各白線PCW1〜PCW3の形状も、横断歩道領域CWの辺と平行な辺からなる平行四辺形となる。
CPUは、以上の処理を全横断歩道領域について終了するまで繰り返し実行する(ステップS506)。
【0056】
横断歩道は、
図12のステップS408で、横断歩道領域を設定した時点で、併せて描画することも可能である。しかし、この時点で横断歩道を描画すると、その後のマッピング(
図14のステップS418)において、横断歩道を構成する各ポリゴンも併せてマッピングする必要が生じ、処理負荷が大きくなる。本実施例では、この処理負荷を軽減するため、マッピングが完了した後で、横断歩道の描画を行うようにしたのである。
【0057】
以上の処理によって、道路標示データが生成される。本実施例の処理では、道路上の矢印などの配置は示さなかったが、道路標示規定データで、矢印等が描かれるべき位置および形状を規定しておけば、これを参照することによって道路標示データを生成することが可能である。
【0058】
<<道路標示データ例>>
図16は、道路標示データの生成例を示す説明図である。
図16(a)に本実施例による生成例を示し、
図16(b)にはこれに対応する領域の航空写真を示した。
横断歩道CW16など、一見して、
図16(a)と
図16(b)とが対応していることを認識できる程度に、現実の状態を精度良く再現できていることが分かる。また、ゼブラゾーンZZ16は、現実の状態とは形状が異なっているが、この位置にゼブラゾーンZZ16が描かれていることにより、
図16(a)と
図16(b)との対応関係を比較的容易に認識することができる。
このように、本実施例によれば、実際の状態を厳密に精度良く再現するとはいかないまでも、現実の各地点と地図との対応関係を直感的に認識可能とする目的には十分に資する精度で、道路標示を再現することが可能である。本実施例によれば、このような道路標示を描くための道路標示データを、軽い処理負荷で生成することができる利点がある。
【0059】
以上、本発明の実施例について説明したが、上述の実施例で説明した種々の処理は、必ずしも全てを備えている必要はなく、一部を省略したり他の処理と置換したりしても構わない。また、上述の例において、ソフトウェア的に実行されている処理は、ハードウェア的に実行してもよいし、その逆も可能である。