【実施例1】
【0016】
A.システム構成:
図1は、地図描画装置の構成を示す説明図である。本実施例の装置は、CPU,メモリとしてのRAM,ROMを備えたパーソナルコンピュータおよびその他のコンピュータに、図示する各機能を実現するためのコンピュータプログラムをインストールすることによって構成されている。地図の描画は、コンピュータのディスプレイへの表示、プリンタでの印刷などの方法を採ることができる。
地図描画装置には、地図データベース120、地図描画データベース130が備えられている。地図データベース120は、地物の形状等を表すポリラインデータやポリゴンデータ、地物の属性などを地図データとして格納しており、路線の位置及び形状を表す路線データを保存している。地図データベース120に格納されているデータは、描画時に地物同士が重なり合って隠れてしまうことを考慮せず、各地物の位置、形状を正確に記録したものである。これに対し、地図描画データベース130は、表示に用いるために地図データベース120の一部のデータを修正したポリラインデータやポリゴンデータを格納している。本実施例では、道路、鉄道などの路線同士が重なっている場合に、一方の路線を他方の路線に対して路線の幅方向にずらす転位処理を施して、路線が隠れてしまう状態を抑制している。このように修正されたデータが地図描画データとして地図描画データベース130には格納されている。本実施例では、地図描画データベース130には、転位処理が施された路線部分だけを格納するものとしたが、転位処理を施さない地物のデータ全般を格納してもよい。
【0017】
地図描画部140は、地図描画データベース130および地図データベース120を参照して、地図を描画する。地図の描画方法としては、コンピュータディスプレイへの表示、紙などの印刷媒体への印刷などが挙げられる。
【0018】
地図描画データ生成部100は、地図データベース120に格納された地図データに転位処理を施して地図描画データを生成し、地図描画データベース130に格納する処理を行う。地図描画データ生成部100が実行する処理が、地図描画データ生成方法に相当し、地図描画データ生成部100が地図描画データ生成装置を構成することになる。
地図描画データ生成部100には、路線の転位処理を施すため、リサンプリング処理部102、転位処理部104、後処理部106が備えられている。
リサンプリング処理部102は、地図データベース120に格納されている路線を構成する点列の密度が所定値以上となるよう、その間隔を整える。転位処理部104は、路線を表す地図データを、幅方向にずらす転位処理を実行する。後処理部106は、転位処理部104によって転位されなかった部分について、所定の条件下で後処理としての転位処理を施す。これらの各処理の処理内容は、後述する。
【0019】
コマンド入力部110は、地図描画データ生成部100、地図描画部140に対して、オペレータの操作を介して、それぞれ処理に必要な指示を入力する。
本実施例では、地図描画データ生成部100が実行する地図描画データ生成のための処理は、コンピュータが自動的に実行するものとして説明するが、この処理をオペレータの指示に応じて手動で実行するものとしてもよい。かかる場合には、コマンド入力部110は、地図描画データ生成のための処理に必要な指示も入力することになる。
【0020】
B.地図描画データ生成処理(2本間の重なりの場合):
次に2本の道路同士が重なっている場合の地図描画データ生成処理の内容を示す。まず、全体の処理の流れを説明した後、個別の処理について具体例に基づいて説明する。
図2は、地図描画データ生成処理のフローチャートである。地図描画データ生成部100の機能に相当する処理である。
CPUは、処理対象道路を選択する(ステップS10)。処理対象道路とは、高架道路や並走する道路のように、地図上で重なって描画される道路である。本実施例では、更に、
図3に示す処理対象道路選択条件を満たすものを選択するようにした。
【0021】
図3は、処理対象道路選択条件を示す説明図である。左側に示す条件a〜条件dを全て満たす道路が処理対象道路となる。
条件aは、「重要度の低い道路」という条件である。重要度は、任意に設定可能である。例えば、重要度が高い順に高速道路、国道、県道、一般道などとすることができる。鉄道を対象に加える場合には、これらより更に重要度が高いものとして位置づけても良い。
条件bは、「重要度の高い道路全体が描かれている区間」という条件である。重要度が高い道路が描画順として上位にあるとともに、重要度が高い側が他の地物で隠されていたりせず、全体が描かれているという意味である。重要度が高い道路を、以下、「基準道路」ということもある。
条件cは、「WL−WH<WV1」である。WLは重要度が低い道路の線幅、WHは重要度が高い道路の線幅である。WV1は最小見せ幅を意味する。見せ幅とは、隠れる側の道路について、描画時に視認できるように確保すべき線幅であり、転位の段階に応じてその量を変化させるものである。線幅とは、当該道路の描画時の幅であり、実際の道路の幅員や車線数とは必ずしも一致しない。最小見せ幅とは、隠れる側の道路について、描画時に視認できるように最小限確保すべき線幅である。最小見せ幅は、任意に設定可能である。
右上側に条件cの判断例を示した。ハッチングを付した側が優先度の低い道路であり、線幅は20ポイントである。白抜きで示した側が優先度の高い道路であり、線幅は15ポイントである。従って、WL−WH=5となる。仮に、「最小見せ幅WV1=5」と設定していれば条件cは不成立となるし、「WV1=6」と設定していれば条件cは成立となる。このように、条件cは、重要度の低い道路の線幅(WL)の方が、重要度が高い道路の線幅(WH)よりも、最小見せ幅WV1以上、太い場合には処理対象からはずすことを意味している。かかる場合には、重要度の低い道路が十分に視認可能であり、転位処理を施すまでないからである。
条件dは、「WL>WV1」である。つまり、優先度の低い道路の線幅(WL)が最小見せ幅(WV1)よりも大きいことである。右下側に判断例を示した。最小見せ幅WV1=5ポイントとすると、優先度の低い道路(ハッチングを付した側)の線幅が3ポイントであれば条件dは不成立となり、線幅が6ポイントであれば条件dは成立となる。重要度の高い道路(白抜き)の線幅は条件dには無関係である。優先度の低い道路の線幅が最小見せ幅よりも小さい場合には、その道路全体を描いたとしても最小見せ幅を確保できないからである。
実施例では、条件a〜dの全てを満たすものを選択するようにしたが、一部を満たすものを選択するようにしてもよい。また、処理対象道路選択条件は、上述の一部の条件を省略してもよいし、他の条件を追加してもよい。
【0022】
処理対象道路が選択されると、CPUは、リサンプリング処理を施す(
図2のステップS11)。リサンプリング処理とは、地図データベース120に格納されている路線を構成する点列の密度が所定値以上となるよう、その間隔を整える処理である。
図中に処理例を示した。路線は、黒丸で示す複数の構成点からなる点列で表されているとする。構成点P1、P2の区間D1、および構成点P3、P4の区間D2は、構成点の密度が低い。リサンプリング処理では、かかる箇所に、新たに構成点PA1〜PA3を追加し、構成点の密度を所定値以上とする。
ここで、構成点の密度は、例えば、「構成点間の距離が所定値以下となる」という条件で設定することができる。リサンプリング処理は、上述の密度に関する要件を満たさない部分を特定し、その区間を、要件を満たすまで2等分、3等分…と分割することによって新たな構成点の位置を決定する方法をとることができる。図中の区間D2は2等分によって構成点PA3が設定され、区間D1は3等分することで構成点PA1、PA2が設定された例である。
本実施例では、リサンプリング処理を施した後の構成点単位で、占有領域を3段階に変更して転位処理を施す。
【0023】
転位処理を実行するために、CPUは占有領域を設定する(ステップS12)。占有領域とは、基準道路の中心線から両側に所定幅を設けて作られる範囲で、構成点ごとに転位対象とするか否かを判断するための領域である。本実施例では、占有領域を順に大きくしながら3段階に変化させてこの処理を実行する。1回目の転位処理を「微転位」、2回目を「半転位」、3回目を「全転位」と称する。
【0024】
図4は、各転位処理における所定幅すなわち占有領域幅を示す説明図である。
・微転位について
図4(a)は微転位における占有領域幅を示している。占有領域の半幅WC1は、次式で定まる。
WC1=(WH−WL)/2+WV1;
WH:重要度の高い道路(基準道路)の線幅;
WL:重要度の低い道路の線幅;
WV1:最小見せ幅(本実施例では3ポイントとした);
図中に破線で示した幅WC1が占有領域の半幅となる。重要度の低い道路R1の中心線を矢印Aに示すように、占有領域の境界まで転位させると、基準道路よりもWV1の幅だけ道路R1aがはみ出すことになる。なお、図中では図の煩雑化を回避するため、道路の幅方向に対して斜めに転位させた状態を示したが(矢印A)、実際の転位処理では、道路R1を、その幅方向に平行移動させている。
・半転位について
図4(b)は半転位における占有領域幅を示している。占有領域の半幅WC2は、次式で定まる。
WC2=(WH−WL)/2+WV2;
WV2:半転位での見せ幅(本実施例では、WL/2とした);
図中に破線で示した幅WC2が占有領域の半幅となる。重要度の低い道路R1の中心線を矢印Bに示すように、占有領域の境界まで転位させると、基準道路よりもWV2の幅だけ道路R1bがはみ出すことになる。
・全転位について
図4(c)は全転位における占有領域幅を示している。占有領域の半幅WC3は、次式で定まる。
WC3=(WH+WL)/2;
図中に破線で示した幅WC3が占有領域の半幅となる。重要度の低い道路R1の中心線を矢印Cに示すように、占有領域の境界まで転位させると、道路R1cに示すように、重要度の低い道路全体がはみ出すことになる。
【0025】
こうして占有領域を設定すると、CPUは、未転位の各構成点の点数付けを行う(
図2のステップS13)。点数は、占有領域内の構成点を絶対値2、占有領域外の構成点を絶対値1とし、構成点の点列の配列方向に向かって中心線より左側を負、右側を正と定める。点数付けは、未転位の構成点を対象とするため、1回目の微転位の処理時には全ての構成点が対象となり、2回目以降は従前の処理で転位されなかった構成点が対象となる。
CPUは、こうして付された点数を用いて、転位対象構成点を決定する(ステップS14)。転位対象構成点とするためには、以下の条件C1または条件C2を満たすことを要する。
(条件C1) |前後3点の点数の合計値|>3 かつ 占有領域内にあること かつ 基準路線の中心線で分割された占有領域の2つの領域の内いずれか一方の領域の中で所定距離L1以上連続していること;
(条件C2) 条件C1を満たさない構成点である非転位対象構成点が占有領域内で所定距離L2以上連続していること;
なお、条件C1は例えば、構成点が|前後3点の点数の合計値|>3 かつ 占有領域内で所定距離L1以上連続するという条件でも良い。
以下、具体例に基づき、転位対象構成点の決定処理の内容を示す。
【0026】
図5は、条件C1による転位処理例を示す説明図である。基準道路の中心線CLを中心として占有領域が設定されている。基準道路が曲線状になっている部分では、中心線および占有領域も、それぞれ曲線状に設定されることになる。そして、この道路の進行方向左側に位置する占有領域外の領域AR1は−1点、占有領域内の領域AR2は−2点、進行方向右側に位置する占有領域内の領域AR3は2点、占有領域外の領域AR4は1点と点数を割り当てる。
図中の黒丸P[1]〜P[13]は、重要度の低い側の道路の構成点である。各構成点が属する領域AR1〜AR4に応じて、図中の点数欄に示すように点数が定まる。条件C1では、前後3点の点数の合計値を評価点数として求める。構成点P[1]については、前の構成点が存在しないため、構成点P[1]、P[1]、P[2]の合計点である−4点が評価点数となる。構成点P[2]については、構成点P[1]〜P[3]の合計点である−1点が評価点数となる。他の構成点も同様にして、図中に示す評価点数が求められる。
そして、評価点数の絶対値が3より大きくなる構成点を選択する。図中の例では、構成点P[1]、P[4]、P[5]、P[8]、P[9]、P[10]、P[11]が選択される。
条件C1は、前後3個の構成点を結ぶ線が、基準道路の中心線と交差しないという条件である。上述のように点数で評価する方法に代えて、中心線と交差するか否かを直接、解析するようにしてもよい。このように、前後3個の構成点を結ぶ線が基準道路の中心線と交差する箇所を特定し、転位対象から外すことによって、転位結果がなだらかになり、見栄えが向上するという効果がある。
【0027】
条件C1では、上述の評価点数に基づく判定だけでなく、「占有領域内にあること かつ 基準路線の中心線で分割された占有領域の2つの領域の内いずれか一方の領域の中で所定距離L1(第1の所定長に相当)以上連続していること」も条件とされている。構成点P[1]、P[5]、P[10]は、この条件を満たさない。構成点P[8]、P[9]の距離が、所定距離L1以上であれば、この条件を満たすため転位対象構成点となる。図中には、この意味で、構成点P[8]、P[9]に白丸を付した。
所定距離L1は、蛇行している箇所が安易に転位対象となることを避けるために設定されるものであり、任意の値を設定可能である。例えば、転位する側の道路の線幅を基準の2〜3倍程度とすることができる。
【0028】
図6は、条件C2による転位処理例を示す説明図である。条件C2は、「条件C1を満たさない構成点である非転位対象構成点が占有領域内で所定距離L2(第2の所定長に相当)以上連続していること」という条件である。これは、図中の領域BBに示すように、長い区間にわたって、非転位対象構成点が連続していると、重要度の低い道路RDBが基準道路RDCに隠れる部分が長くなり、形状やつながり具合が把握できなくなることを回避するための条件である。
従って、所定距離L2(第2の所定長に相当)は、例えば、道路の線幅の最大値よりも十分に大きい値、例えば、5倍程度とすることができる。こうすることによって、例えば、他の道路RDAが基準道路RDCにほぼ直交しているだけに過ぎない部分AAが無用に転位されることを回避できる。
【0029】
CPUは、こうして転位対象構成点が定まると、これらの転位対象構成点を占有領域の境界まで転位させる(
図2のステップS15)。転位は、基準道路の中心線に直交する方向に各構成点を平行移動させる方法で行う。中心線よりも左側に位置する構成点は左側の境界へ、右側に位置する右側の境界へそれぞれ移動させる。
CPUは、以上の処理を、微転位、半転位、全転位の3回繰り返し(ステップS16)、転位処理を終了する。
【0030】
図7は、半転位、全転位処理例を示す説明図である。
図7(a)に示すように、基準道路と重要度の低い道路が重ねて描かれる箇所に対する処理例を示した。
図7(b)は、半転位の処理例である。この時点では、微転位の処理によって一部の構成点は転位済みである。半転位の場合も
図5、6に示したのと同様の手順で処理が行われる。まずCPUは、道路中心線CL1に対して、半転位用の占有領域を設定する。そして、重要度の低い道路の中心線CL2を規定する各構成点に点数を付ける。
図7(b)は、占有領域内の点を黒丸、領域外の点を×で示した。
CPUは、これらの各構成点について評価点数(
図5参照)を求め、占有領域内で所定距離L1以上連続している構成点を求めると、転位対象構成点(図中で白丸を付した構成点、図中絵領域PP1に対応)を定めることができる。所定距離L1は、微転位の処理時とは異なる値としてもよい。こうして設定された各転位対象構成点は、半転位の占有領域の境界線まで転位される。
図7(c)は、全転位の処理例である。半転位までの処理によって転位済みの構成点(
図7(b)の領域PP1に対応)は大きい黒丸で示した。この処理では、他の構成点が処理対象となる。CPUは、道路中心線CL1に対して、全転位用の占有領域を設定する。そして、重要度の低い道路の中心線CL3を規定する各構成点に点数を付ける。
図7(c)は、占有領域内の点を黒丸、領域外の点を×で示した。
CPUは、これらの各構成点について評価点数(
図5参照)を求め、所定距離L1以上連続している構成点を求めると、転位対象構成点(図中で白丸を付した構成点、図中PP2に対応)を定めることができる。所定距離L1は、微転位の処理時とは異なる値としてもよい。こうして設定された各転位対象構成点は、全転位の占有領域の境界線まで転位される。
図7(d)は、転位処理の具体例を示している。図示する構成点PB[1]〜PB[3]が転位対象となる構成点であるとする。転位時には、CPUは、基準道路の中心線CL1に対し、各構成点を通過する垂線M[1]〜M[3]を求める。そして、それぞれの垂線と占有領域の境界線との交点に、転位後の構成点PA[1]〜PA[3]を設定する。転位は、基準道路の中心線に対し、構成点と同じ側に位置する境界側に行う。図の例では、いずれの構成点も、中心線CL1よりも下側に位置するため、下側の境界に転位している。中心線CL1よりも上側に位置する構成点があれば、上側の境界に転位される。
【0031】
C.処理例:
以上の処理手順による具体的処理例を
図8〜
図11で示す。
図8(a)は、処理前の道路の状態を示している。図示するように、重要度の低い道路は、基準道路に隠れて描画され、形状やつながり具合が把握できなくなっている部分がある。
図8(b)は、微転位の転位処理経過を示している。図の煩雑化を回避するため、それぞれの道路の外形は省略した。CPUは、基準道路の中心線CL1に、微転位の占有領域が設定する。(
図4(a)参照)。CPUは、この占有領域に基づき、重要度の低い道路の中心線CL2の各構成点について、点数を評価する。占有領域内の点を黒丸で示し、領域外の点を×で示した。また、この中で転位対象となる点に、白丸を付して示した。
図8(c)は、これらの点に対して、CPUの指令により、転位処理を施した状態を示している。これによって、転位対象構成点は、それぞれ微転位の占有領域の境界に転位される。転位後の点は、大きい黒丸で示した。
【0032】
図9(a)は、半転位の転位処理経過を示している。基準道路の中心線CL1には、CPUによって、半転位の占有領域が設定される(
図4(b)参照)。この占有領域に基づき、重要度の低い道路の中心線CL3の各構成点について、CPUは、点数を評価する。占有領域内の点を黒丸で示し、領域外の点を×で示した。また、微転位が施されていない構成点の中で、転位対象となる点に、白丸を付して示した。
図9(b)は、これらの点に対して、CPUの指令により、半転位処理を施した状態を示している。これによって、転位対象構成点は、それぞれ半転位の占有領域の境界に転位される。
【0033】
図10(a)は、全転位の転位処理経過を示している。基準道路の中心線CL1には、CPUによって全転位の占有領域が設定される(
図4(c)参照)。この占有領域に基づき、重要度の低い道路の中心線CL4の各構成点について、CPUは、点数を評価する。占有領域内の点を黒丸で示し、領域外の点を×で示した。また、微転位、半転位が施されていない構成点の中で、転位対象となる点に、白丸を付して示した。
図10(b)は、これらの点に対して、CPUの指令により、全転位処理を施した状態を示している。これによって、転位対象構成点は、それぞれ全転位の占有領域の境界に転位される。
【0034】
図11は、処理前後の比較例を示す説明図である。
図11(a)は処理前の状態、
図11(b)は微転位が終了した状態、
図11(c)は、半転位、全転位処理が終了した状態である。
このように本実施例の転位処理によれば、重要度の低い道路が表れるようになり、形状およびつながり具合が把握できるようになっている。また、微転位、半転位、全転位という3段階の占有領域を併用することにより、現実の状態からの乖離を抑制することができる。
【0035】
D.後処理:
図12は、後処理例を示す説明図である。
図4〜11で説明した転位処理によって転位されなかった部分を対象とする処理である。
図12(a)は、地図の図枠での処理例である。左側に示すように、図枠に至る点で重要度の低い道路が基準道路に隠れている箇所がある場合には、右側に示すようにCPUは無条件で微転位の転位処理を施す。微転位としたのは、過度の転位によって現実の状態から乖離してしまうことを抑制するためである。このように図枠に至る点で転位させることにより、重要度の低い道路が存在することを容易に認識することができ、利用者が異なる図枠間で地図の照合しやすくなる。
図12(b)は、道路全長が短い場合の処理である。左側には処理前を示した。重要度が低い道路が基準道路に隠れているが、上述した転位処理では、所定長以上連続している場合にのみ転位対象とするため(
図2のステップS14参照)、道路の全長が短い場合には転位処理が施されない。短い道路については、大部分が隠れてしまうと、形状やつながり具合はおろか、その存在すら把握できなくなり、図の例では、途中で行き止まりになっているのか、右側の道路までつながっているのか全く分からない。そこで、後処理では、道路の所定割合(本実施例では70%とした)以上が隠れている場合は、CPUは無条件で微転位を施す。右側は処理後の状態を示している。こうすることによって、短い道路も、存在が容易に把握できるようになり、形状、つながり具合を認識できるようになる。
【0036】
E.効果:
以上で説明した転位処理によれば、基準道路に隠れている道路を、視認可能な状態に描画することができる。この際、微転位、半転位、全転位という占有領域を複数段階に変化させ、転位量を求めることによって、現実の状態からの乖離を抑制することができる。なお、転位量とは処理対象道路を転位処理によって基準道路の幅方向にずらした量を表す。
【実施例2】
【0037】
実施例2として、3本以上の道路間で転位処理を施す例について説明する。かかる転位処理を実現するための地図描画装置の構成としては、実施例1(
図1)と同様である。以下、3本の道路間での転位処理を例にとって、実施例2における転位処理方法を説明する。
【0038】
F.転位処理方法:
図13は、3本の道路間での転位処理方法を示す説明図である。転位処理は、実施例1と同様、基準道路に対して、他の道路を転位させる方法で行う。基準道路とは、重要度が最も高い道路である。基準道路以外の道路の配置は、
図13(a)〜
図13(c)に示すように3通りが考えられる。
図13(a)は、基準道路の両側に他の道路が存在する例である。図の例では、基準道路の上側の道路が、下側の道路よりも重要度が高い場合を例示したが、その逆であってもよい。図中における重要度高、重要度低という記載は、基準道路以外の2本の道路の重要度の高低を表している。かかる配置では、両側の道路を、矢印a1、a2に示すように、それぞれ外側に転位する。外側とは、基準道路から遠ざかる方向を意味する。この配置では、基準道路の中心線を境に上側、下側の領域に分けて考えれば、それぞれ2本(基準道路と他の一本の道路)との間の転位処理であるため、実施例1で説明した転位処理を適用すればよい。
図13(b)は、基準道路の一方側に、内側から重要度高、重要度低の順で2本の道路が存在する例である。かかる配置においては、内側にある重要度高の道路を矢印b1のように外側に転位した後、外側にある重要度低の道路を矢印b2のように外側に転位する。ただし、重要度高の道路については、重要度低の道路よりも広い見せ幅を確保するよう転位させる。一方、重要度低の道路については、重要度高の道路の内側に入らず、かつ重要度高の道路に隠れないように転位させる。「重要度高の道路の内側に入らず」とは、内側から重要度高、重要度低の位置関係が逆転することがないように、転位させるという意味である。それぞれの道路の転位量を求める詳細な転位処理については、後述する。
図13(c)は、基準道路の一方側に、内側から重要度低、重要度高の順で2本の道路が存在する例である。かかる配置においても、まず内側にある重要度低の道路を矢印c1のように外側に転位した後、外側にある重要度高の道路を矢印c2のように外側に転位する。ただし、重要度低の道路については、最小限の見せ幅を確保するように転位させる。重要度高の道路については、重要度低の道路の内側に入らず、重要度低の道路を隠さず、また十分な見せ幅を確保するよう転位させる。
図13(a)〜
図13(c)の処理は、各道路をこれらの配置に従って処理領域に区分し、各処理領域ごとに施される。
【0039】
図14は、処理領域の設定方法を示す説明図である。一例として、高速道路、国道、県道、一般道が、近接して走っている状態を示した。道路の重要度は、高速道路>国道>県道>一般道の順序であるものとする。
領域Aは、高速道路と国道とが近接しているため、2本間での転位処理が行われる。一般道は、国道と十分間隔が開いているため、転位処理の必要はない。転位処理の要否は、各道路間の間隔が所定値以下となっているか否かで判断することができる。転位処理を施す道路の本数が多い場合、転位処理を施した結果、転位前は十分に間隔が開いている他の道路に近接することも生じるため、かかる事態を考慮して、転位処理の要否の判断基準は、十分に余裕を持った値に設定しておくことが好ましい。
領域Aは、重要度が高い高速道路が基準道路となり、これを基準として国道に転位処理が施される。本実施例では、図中に示すように、基準道路をその進行方向aに対して右側領域、左側領域に分け、それぞれの領域ごとに転位処理を行う。右側領域および左側領域のそれぞれでは、それぞれ白抜きの矢印で示すように、基準道路である高速道路から遠ざかる方向(外側方向ともいう)に国道が転位される。
領域Bは、国道と一般道が比較的近接している領域である。従って、この領域では、高速道路、国道、一般道の3本間で転位処理が施される。この領域では、重要度の高い高速道路が基準道路となり、その進行方向bの左側領域に、国道、一般道の順に配置している。かかる配置は、
図13(b)に示した状態、即ち、基準道路に近い道路(内側の道路ともいう)である国道が、遠い道路(外側の道路ともいう)である一般道よりも重要度が高い配置であるから、
図13(b)で説明した方法で転位が行われる。
領域Cは、高速道路と国道の間隔があいているため、高速道路は転位処理の対象とはならない。従って、この領域では、国道と一般道との間で2本間の転位処理が施される。重要度が高い国道が基準道路となる。一般道は、国道の進行方向cの左側領域に位置するため、左側領域で転位処理が行われ、右側領域では転位処理は行われない。
領域Dは、国道、一般道、県道の3本間で転位処理が施される。これらの3本の中では、最も重要度が高い国道が基準道路となり、その進行方向dの左側領域に、一般道、県道の順に配置している。かかる配置は、
図13(c)に示した状態、即ち、内側の道路である一般道が、外側の道路である県道よりも重要度が低い配置であるから、
図13(c)で説明した方法で転位が行われる。右側領域では、転位処理は行われない。
【0040】
G.地図描画データ生成処理:
図13、14で説明した3本以上の道路間での転位を実現するための処理内容を説明する。
図15は、実施例2における地図描画データ生成処理のフローチャートである。処理を開始すると、CPUは、道路間の間隔に基づき、処理領域を設定する(ステップS100)。これは、
図14で説明した処理に相当する。道路間の間隔が所定値以下となる道路同士が同一の処理領域に含まれることとなり、設定された一つの処理領域内に含まれる道路の本数および名称は処理中を通じて変化しない。
図14で示したように、国道という一本の道路上であっても、転位処理の対象となる道路が異なる区間ごとに分けて処理領域は設定される。
【0041】
次にCPUは、処理領域のいずれかを選択し、各道路につき、処理領域内の区間を切り出す(ステップS102)。そして、処理領域内で最も重要度の高い道路を、基準道路として選択する(ステップS104)。
転位処理は、基準道路の右側領域、左側領域に分けて行うため、まず右側領域を対象として、CPUは、転位処理モードを決定する(ステップS106)。
図13(a)に示したように、2本の道路間での転位を行う場合には、転位処理(2本)を実行する(ステップS106、S9)。転位処理(2本)としては、実施例1で説明した地図描画データ生成処理(
図2)を適用する。
図13(b)、
図13(c)に示したように、3本の道路間で転位を行う場合には、転位処理(マルチ)を行う(ステップS106、S20)。転位処理(マルチ)の内容は、後述する。いずれの道路との重複もない場合には、これらの転位処理はスキップされる。
CPUは、以上の転位処理(ステップS106、S9、S20)を、左側領域についても同様に行い(S110)、一つの処理領域に対する転位処理を完了する。
また、この処理を、全ての処理領域について終了するまで繰り返し(ステップS112)、地図描画データ生成処理を完了する。
【0042】
G1.転位処理(マルチ):
図16は、転位処理(マルチ)のフローチャートである。3本以上の道路間での転位処理であり、
図15のステップS20に相当する処理である。この処理は、各処理領域ごとに行われるものである。
処理を開始すると、CPUは、基準道路、転位処理が施された処理済道路に基づいて重複判定領域を設定する(ステップS21)。重複判定領域とは、他の道路について転位処理を行うか否か、即ち他の道路が基準道路および処理済道路に重なっているかどうかを判定するための領域である。
図中に重複判定領域の設定例を示した。処理済道路がない場合には、重複判定領域1は、基準道路の線幅に基づいて定められる。処理済道路がある場合、重複判定領域2は、基準道路および処理済道路の双方を覆う最大の線幅に基づいて設定される。
このように処理済道路も考慮する目的は、次の通りである。実施例2のように、3本以上の道路を対象として順次、転位処理を施すと、転位前の状態では、基準道路から十分離れた位置にある道路が、他の道路に転位処理を施した結果、処理済道路と重複を生じる場合がある。そこで、実施例2では、上述のように、処理済道路の位置も考慮して、重複判定領域を設定するのである。こうすることによって、処理済道路によって他の道路が隠れてしまうことを回避できる。
【0043】
CPUは、上述の重複判定領域を用いて、転位処理を施すべき処理対象道路を検出する(ステップS22)。処理対象道路とするための条件は、次の通りである。
条件1は、未処理の道路という条件である。転位処理済みの道路に更に転位処理を施す必要はないからである。
条件2は、上述の条件1を満たすもののうち、基準道路に最も近いもの、即ち内側にあることである。このように基準道路に近い道路から順に転位処理を施すことにより、後に行われた転位処理によって、処理道路が隠れてしまうという事態や転位処理によって位置関係が逆転してしまうといった事態を回避することができる。
【0044】
上記検出の結果、処理対象道路がない場合には(ステップS23)、CPUは、転位処理(マルチ)を終了する。
処理対象道路がある場合には(ステップS23)、転位モードを決定し(ステップS24)、実施例1で示したのと同様のリサンプリング処理を施す(
図2のステップS11参照)。転位モードとは、
図13(b)、
図13(c)で説明したように、道路の重要度に応じた配置状態に基づいて定まる転位処理の方法を意味する。具体的な転位モードの内容については後述する。
CPUは、こうして設定された各転位モードで転位を行い(ステップS26)、位置関係修復処理を行う(ステップS27)。位置関係修復処理とは、処理対象道路について、他の道路を乗り越える転位が行われた場合に、乗り越えられた側の道路を転位させることによって、現実の状態から乖離してしまった位置関係を元に戻すための処理である。具体的な処理内容については後述する。
CPUは、以上の処理を処理領域内の全道路について繰り返し(ステップS28)、転位処理(マルチ)を終了する。
以下、転位モードの設定および各転位モードにおける処理内容、位置関係修復処理について順に説明する。
【0045】
G2.転位モード:
図17は、転位モードの設定方法を示す説明図である。転位処理(マルチ)(
図16)のステップS24で設定されるモードである。本実施例では、転位モード1〜4の4通りを設定した。
転位モード1、2は外側の未処理道路が存在しない場合のモードである。つまり、基準道路に近い内側の道路から順に転位処理が施された後、最後に転位処理が施されるべき場合のモードに相当する。外側に他の道路が存在しない状態での転位処理であるから、他の道路との関係は重視する必要がないことになる。転位モード1、2では、処理対象道路と内側に存在する道路との重要度の関係によって転位処理を切り替える。
転位モード1は、処理対象道路の重要度が、内側の道路よりも高い場合である。
図13(c)に示した重要度高の外側の道路を処理する場合に対応する。この転位モードでは、処理対象道路は、十分な見せ幅を確保するよう転位処理することになる。なお、各道路の最小見せ幅は、任意に設定可能であるが、次の条件をみたしているものとする。
重要度 内側の道路<処理対象道路のとき:
0 < WV1 < WO かつ(WI−WO)/2 ≦ WV1;
WV1:処理対象道路の最小見せ幅;
WO:処理対象道路の線幅;
WI:内側の道路の線幅;
転位モード2は、処理対象道路の重要度が、内側の道路よりも低い場合である。
図13(b)に示した重要度低の外側の道路を処理する場合に対応する。この転位モードでは、処理対象道路は、必要な見せ幅を確保するよう転位処理することになる。なお、各道路の最小見せ幅は、任意に設定可能であるが、次の条件をみたしているものとする。
重要度 内側の道路>処理対象道路のとき:
0 < WV1 < WO かつ(WO−WI)/2 ≦ WV1;
転位モード3、4は外側の未処理道路が存在する場合のモードである。処理対象道路の内側に処理済道路が存在するか否かは問わない。このモードでは、外側に他の道路が存在する状態での転位処理であるから、処理対象道路と外側の道路との重要度の関係を考慮して転位処理を切り替える。なお、各道路の最小見せ幅は、任意に設定可能であるが、次の条件をみたしているものとする。
重要度 内側の道路<処理対象道路のとき:
0 < WV1 < WO かつ(WI−WO)/2 ≦ WV1;
重要度 内側の道路>処理対象道路のとき:
0 < WV1 < WO かつ(WO−WI)/2 ≦ WV1;
転位モード3は、処理対象道路の重要度が、外側の道路よりも高い場合である。
図13(b)に示した重要度高の内側の道路を処理する場合に対応する。この転位モードでは、処理対象道路は、十分な見せ幅、つまり外側の道路よりも広い見せ幅を確保するよう転位処理することになる。
転位モード4は、処理対象道路の重要度が、外側の道路よりも低い場合である。
図13(c)に示した重要度低の内側の道路を処理する場合に対応する。この転位モードでは、処理対象道路は、必要な見せ幅を確保するよう転位処理することになる。
以下、各転位モードにおける転位処理の内容を説明する。
【0046】
G3.転位モード1:
図18は、転位モード1のフローチャートである。転位処理(マルチ)(
図16)のステップS26で転位モードに応じて行われる処理の一つである。
CPUは、まず転位処理が必要か否かを判定する(ステップS30)。ここでは、次の2つの条件のいずれかを満たす場合に転位処理が必要であるとする。
第1の条件は、内側の道路の最小見せ幅WV1が確保されないことである。この条件は、次の条件式で表せる。
DIST−WO/2<WV1;
DIST:処理対象道路と内側の道路との間隔;
WO:処理対象道路の線幅;
WV1:内側の道路の最小見せ幅;
第1の条件を満たす場合には、内側の道路の最小見せ幅を確保するために転位処理が必要となる。
第2の条件は、内側の道路が処理対象道路の外側にはみ出すことである。この条件は、次の条件式で表せる。
DIST+WO/2<WI/2;
WI:内側の道路の線幅;
第2の条件を満たす場合には、内側の道路がはみ出さないようにするために転位処理が必要となる。
上述の条件に基づき、転位処理が不要と判断された場合には、CPUは、そのまま転位モード1の処理を終了する。
【0047】
次に、CPUは、占有領域を設定する(ステップS31)。本実施例では、上述の条件1、2のいずれを満たすかに応じて、占有領域の幅を次の通り切り替える。なお、占有領域の設定は、これで完了ではない。内側の道路の最小見せ幅を確保するために、占有領域の拡張を後に示す処理で行う。
条件1を満たす場合の占有領域の半幅は、「(WI+WO)/2」となる。
これは、内側道路に隣接する位置まで処理対象道路を転位させるための占有領域に相当する(
図4参照)。
条件2を満たす場合の占有領域の半幅は、「(WI−WO)/2」となる。
これは、内側の道路のはみ出しを解消するための占有領域幅に相当する。
【0048】
こうして占有領域を設定すると、CPUは、次にこの占有領域の拡張処理を行う(ステップS32)。拡張幅は、転位処理済みの道路に対する総微転位幅である。総微転位幅とは転位処理に伴い合算された微転位幅のことである。例えば、1本の道路について転位処理が完了している場合には、その転位処理で用いられた微転位幅分だけ、ステップS31で設定された占有領域を拡張する。2本の道路について転位処理が完了している場合には、それら2本の転位処理で用いられた微転位幅の和に相当する分だけ、ステップS31で設定された占有領域を拡張する。このように、従前の転位処理に基づいて占有領域を拡張することにより、転位済みの道路それぞれについて、微転位に相当する見せ幅、即ち、最小見せ幅を確保して転位処理を行うことができる。
【0049】
CPUは、拡張された占有領域を用いて、処理対象道路の構成点を転位することにより転位処理を行う(ステップS33)。この処理の具体的な方法は実施例1と同様である。
また、転位処理の後、実施例1で示した後処理(例外的転位)(
図12参照)も行う(ステップS34)。
【0050】
G4.転位モード2:
図19は、転位モード2のフローチャートである。転位処理(マルチ)(
図16)のステップS26で転位モードに応じて行われる処理の一つである。
CPUは、まず転位処理が必要か否かを判定する(ステップS40)。ここでは、次の2つの条件の双方を満たす場合に転位処理が必要であるとする。
第1の条件は、処理対象道路が最小見せ幅分だけ見えていないことである。この条件は、次の条件式で表せる。
DIST+WO/2−WI/2<WV1;
DIST:処理対象道路と内側の道路との間隔;
WO:処理対象道路の線幅;
WI:内側の道路の線幅;
WV1:処理対象道路の最小見せ幅;
第2の条件は、処理対象道路の線幅が最小見せ幅よりも太いことである。最小見せ幅よりも狭い場合には、転位処理を施しても、最小見せ幅を確保することができないからである。
上述の条件に基づき、転位処理が不要と判断された場合には、CPUは、そのまま転位モード2の処理を終了する。
【0051】
次に、CPUは、占有領域を設定する(ステップS41)。転位モード2では、実施例1と同様、3回の処理によって占有領域を段階的に変化させて転位を行う。従って、1回目の処理では微転位、2回目の処理では半転位、3回目の処理では全転位の占有領域幅にて設定する。それぞれの占有領域幅は、実施例1(
図4参照)で説明した通りである。
【0052】
こうして占有領域を設定すると、CPUは、転位モード1の場合と同様、この占有領域の拡張処理を行う(ステップS42)。拡張幅は、転位処理済みの道路に対する総微転位幅である。このように、従前の転位処理に基づいて占有領域を拡張することにより、転位済みの道路それぞれについて、微転位幅に相当する見せ幅、即ち、最小見せ幅を確保して転位処理を行うことができる。
そして、CPUは、拡張された占有領域を用いて、処理対象道路の構成点を転位することにより転位処理を行う(ステップS43)。この処理の具体的な方法は実施例1と同様である。以上の処理を3回繰り返した後(ステップS44)、CPUは、実施例1で示した後処理(例外的転位)(
図12参照)も行う(ステップS45)。
【0053】
G5.転位モード3、4:
図20は、転位モード3、4のフローチャートである。転位処理(マルチ)(
図16)のステップS26で転位モードに応じて行われる処理の一つである。
CPUは、まず転位処理が必要か否かを判定する(ステップS50)。ここでは、転位モード2と同様、次の2つの条件の双方を満たす場合に転位処理が必要であるとする。
第1の条件は、処理対象道路が最小見せ幅分だけ見えていないことである。この条件は、次の条件式で表せる。
DIST+WO/2−WI/2<WV1;
DIST:処理対象道路と内側の道路との間隔;
WO:処理対象道路の線幅;
WV1:最小見せ幅;
第2の条件は、処理対象道路の線幅が最小見せ幅よりも太いことである。最小見せ幅よりも狭い場合には、転位処理を施しても、最小見せ幅を確保することができないからである。
上述の条件に基づき、転位処理が不要と判断された場合には、CPUは、そのまま転位モード3、4の処理を終了する。
【0054】
次に、CPUは、占有領域を設定する(ステップS51)。
転位モード3の場合には、処理対象道路について十分な見せ幅を確保するため、実施例1と同様、3回の処理によって転位幅を段階的に変化させて転位を行う。従って、1回目の処理では微転位、2回目の処理では半転位、3回目の処理では全転位の占有領域を設定する。それぞれの占有領域の設定方法は、実施例1(
図4参照)で説明した通りである。
転位モード4の場合には、処理対象道路について最小限の見せ幅を確保するため、微転位の占有領域を設定する。
【0055】
こうして占有領域を設定すると、CPUは、転位モード1の場合と同様、この占有領域の拡張処理を行う(ステップS52)。拡張幅は、転位処理済みの道路に対する総微転位幅である。このように、従前の転位処理に基づいて占有領域を拡張することにより、転位済みの道路それぞれについて、微転位幅に相当する見せ幅、即ち、最小見せ幅を確保して転位処理を行うことができる。
そして、CPUは、拡張された占有領域を用いて、処理対象道路の構成点を転位することにより転位処理を行う(ステップS53)。この処理の具体的な方法は実施例1と同様である。
転位モード3の場合には以上の処理を3回繰り返し(ステップS54、S55)、転位モード4の場合には1回で処理を終える(ステップS54)。これらの転位処理が終了すると、CPUは、実施例1で示した後処理(例外的転位)(
図11、12参照)も行う(ステップS56)。
【0056】
以上で説明した転位モード1〜4における占有領域拡張(
図18のステップS32、
図19のステップS42、
図20のステップS53 )では、一律に総微転位幅分の拡張を行うものとしたが、占有領域の拡張幅は、種々の設定が可能である。例えば、総微転位幅ではなく、総半転位幅、総全転位幅のように設定してもよいし、転位モードに応じて、拡張幅を変えても良い。また、処理対象道路よりも内側の処理済み道路の方が重要度が低い場合には、拡張幅を内側の処理済道路の転位モードに応じた転位幅の合算にし、逆の場合には、総微転位にするというように、処理対象道路と内側の処理済み道路との重要度に応じて、拡張幅を変えても良い。ここで種々例示したように、拡張幅を多様な設定とすることにより、過剰な転位によって道路全体の幅が異様に広がることを抑制しつつ、内側の処理済み道路の見せ幅を確保することが可能となる。
【0057】
G6.位置関係修復処理:
図21は、位置関係修復処理のフローチャートである。転位処理(マルチ)(
図16)のステップS27に相当する処理である。位置関係修復処理は、外側に位置する道路を越える転位がなされたときに、越えられた側の道路を転位させることによって、位置関係を修復するための処理である。
CPUは、処理対象道路の構成点のうち、従前の処理において、外側の道路を越えて転位されたものを抽出する(ステップS60)。図中に処理の例を示した。図中に○で示した処理対象道路の各構成点について矢印で示すように転位処理が施された結果、●で示した点P1〜P3が外側の道路を越えて転位されたものとする。ステップS60では、この点P1〜P3が抽出されることになる。
【0058】
次に、CPUは、外側の道路の構成点のうち、ステップS60で抽出された構成点の内側にあるものを転位させる(ステップS61)。内側とは、基準道路側という意味である。図中に処理例を示した。×で示した外側の道路の構成点のうち、ステップS60で抽出された点P1〜P3の内側にある3点が抽出され、点q1〜q3のように転位される。ここでの転位は、これらの点q1〜q3が、外側の点P1〜P3よりも、外側に位置するようになされる。点P1〜P3に重ねるよう転位させてもよいし、さらに外側に移動させてもよい。転位対象となる点q1〜q3は、必ずしもステップS60で抽出された点P1〜P3と同数とは限らず、処理対象道路よりも内側に存在する全構成点が対象となる。
【0059】
処理対象道路が、外側の道路を越えて転位された場合、その部分(ステップS60で示した点P1〜P3)は、処理対象道路と外側の道路のいずれが内側に存在するかという意味での位置関係が現実と乖離することになる。本実施例の転位は、現実との乖離を回避しつつ、地図上での見せ幅を確保するために行うことを目的とするものであるから、こうした位置関係の逆転は解消しておく必要がある。
上述の転位処理を施せば、このように内外の位置関係が逆転した道路について、外側の道路をさらに転位させることによって、位置関係を修復することができ、現実との乖離を解消することができる。
【0060】
G7.処理例:
図22は、転位モード4の処理例を示す説明図である。ここでは、図の煩雑化を回避するため、それぞれの道路の中心線のみを描いた状態で転位処理の内容を例示し、最後に、転位結果を示す形をとった。道路の線の太さは、その道路の重要度を表している。
図22(a)は、転位前の状態を示している。この例では、基準道路に対し、内側から重要度の低い道路L1、重要度の高い道路L2が位置する例を示している。この状態で、まず内側にある道路L1が転位処理の対象となる。道路L1の外側には重要度の高い道路L2が存在するから、この転位は、転位モード4(
図17)に相当する。従って、道路L1に対しては、微転位の転位処理が行われる。図中には、微転位、半転位、全転位の占有領域の境界線を破線で示した。道路L1のうち、微転位の占有領域内にある転位区間に相当する部分について転位が行われることになる。
図22(b)は、道路L1の転位の様子を示している。転位区間内の道路が、矢印で示すように、微転位の占有領域の境界まで転位される。
道路L1の転位が完了すると、次は、外側に位置する道路L2の転位処理である。
道路L2は、その外側に道路が存在せず、内側には重要度の低い道路L1が存在する状態であるから、この転位は、転位モード1(
図17)に相当する。従って、道路L2に対しては、全転位の転位処理が行われる。
図22(c)には、全転位の占有領域を破線で示した。矢印でシフトと示してあるのは、道路L1の転位処理における微転位幅分だけ全転位の占有領域を拡張したことを表している。
図22(d)は、道路L2の転位の様子を示している。道路L2全体について、全転位の占有領域の境界まで転位が行われる。
図22(e)は、上述の転位処理の結果を示している。基準道路、道路L1、L2の中心線は破線で示し、それぞれの道路の線幅分をハッチングで示した。図示する通り、転位処理の結果、道路L1については、最も狭い部分でも最小見せ幅が確保されており、道路L2については、十分な見せ幅が確保されて、描かれている。
【0061】
図23は、転位モード3の処理例を示す説明図である。
図23(a)は、転位前の状態を示している。この例では、基準道路に対し、内側から重要度の高い道路L1、重要度の低い道路L2が位置する例を示している。この状態で、まず内側にある道路L1が転位処理の対象となる。道路L1の外側には重要度の低い道路L2が存在するから、この転位は、転位モード3(
図17)に相当する。従って、道路L1に対しては、3段階の転位処理が行われる。図中には、微転位、半転位、全転位の占有領域の境界線を破線で示した。道路L1のうち、各占有領域内にある区間に応じて転位が行われる。つまり、図中の微転位区間では微転位が行われ、半転位区間では半転位、全転位区間では全転位が行われる。
図23(b)は、道路L1の転位の様子を示している。上述した区間ごとに、微転位、半転位、全転位の各占有領域の境界に道路L1が転位される。この処理では、道路L1が道路L2を越えて転位される区間がある。図中の反転区間1および反転区間2である。これらの区間については、道路L1、L2の内外の位置関係が反転しているため、位置関係修復処理が必要である。
図23(c)中の矢印で示した修復1、修復2は、位置関係修復処理によって道路L2が転位された状態を示している。それぞれ、道路L2が道路L1の位置まで転位されることによって、内外の位置関係の反転が解消される。
道路L1の転位が完了すると、次は、外側に位置する道路L2の転位処理である。
道路L2は、その外側に道路が存在せず、内側には重要度の高い道路L1が存在する状態であるから、この転位は、転位モード2(
図17)に相当する。従って、道路L2に対しては、段階的な転位処理が行われる。
図23(c)には、各占有領域の境界線を破線で示した。矢印でシフトと示してあるのは、道路L1の転位処理における微転位幅分だけ各段階の占有領域を拡張したことを表している。
図23(d)は、道路L2の転位の様子を示している。道路L2について、微転位区間、半転位区間、全転位区間のそれぞれについて、各占有領域の境界まで転位が行われる。
図23(e)は、上述の転位処理の結果を示している。基準道路、道路L1、L2の中心線は破線で示し、それぞれの道路の線幅分をハッチングで示した。図示する通り、転位処理の結果、道路L1については、十分な見せ幅が確保されており、道路L2については、必要な見せ幅が確保されて、描かれている。
【0062】
G8.変形例:
実施例2では、道路間の間隔によって予め処理領域に分け(
図14参照)、処理領域ごとに転位処理を施す例を示した(
図15参照)。3本以上の道路間の転位処理については、予め処理領域に分けるのではなく、転位処理の中で、随時、道路間の間隔によって処理対象を選択しながら進める方法をとることもできる。以下、かかる処理内容について変形例として示す。
【0063】
図24、
図25は、変形例の地図描画データ生成処理のフローチャートである。CPUは、まず道路の重要度に基づいて基準道路を選択し(ステップS200)、基準点列を設定する(ステップS202)。基準点列とは、基準道路の構成点のことである。実施例2では、処理領域ごとに基準道路を選択する例を示したが、変形例では、道路の重要度順に基準道路として選択するのである。
図14に示した状態に即して説明すれば、まず最初の処理では、この地図全体について、最も重要度の高い高速道路を基準道路として選択し、転位処理を施すことになる。その後、次に重要度の高い国道を基準道路として選択して、転位処理を施すのである。このように重要度を順次さげながら基準道路を選択していく。
ただし、このように処理をしていくと、必ずしも選択された道路が、全区間にわたって基準道路として適切ではない場合が生じ得る。例えば、
図14の例で、国道を基準道路として選択した場合、領域A、領域Bでは、先に高速道路を基準道路として既に国道について転位処理が施されているはずである。このような状態で、国道を基準道路として再度、転位処理を施すと、無用かつ不適切な転位処理が施されるおそれがある。
そこで、ステップS202の基準点列の設定時には、基準道路の構成点のうち、転位処理が施されていないもののみを抽出して、基準点列とするのである。この処理は、
図14における処理領域に区分するのと同様の作用を奏することになる。
【0064】
こうして基準点列を設定すると、CPUは、リサンプリング処理を行い(ステップS204)、重複判定領域を設定して(ステップS206)、重複道路を検出する(ステップS208)。重複判定領域の設定は、実施例2で説明した通りである(
図16のステップS21参照)。つまり、従前の転位処理結果が施された道路の線幅も考慮して、重複判定領域を設定するのである。そして、この重複判定領域に重なる道路が重複道路として検出される。重複道路がない場合には(ステップS210)、転位処理を施す必要がないことを意味するから、CPUは、処理を終了する。
【0065】
重複道路がある場合には(ステップS210)、
図25で示す転位処理を行うことになる。
CPUは、まず処理対象道路を選択する(ステップS212)。処理対象道路とは、重複道路のうち、基準道路に最も近い(内側の)未処理の道路である。この道路に対する転位処理が、1回目の場合(ステップS214)、CPUは、転位モード3、4の転位処理(
図20参照)を施す(ステップS216)。転位モード3、4の処理内容は、実施例2と同様である。転位処理が終了すると、CPUは、重複判定区間ごとに、転位履歴を保持させる(ステップS228)。保持されるべき転位履歴としては、処理対象となった道路のID、重要度、線幅などが上げられる。転位量や占有領域幅などを含めても良い。
【0066】
一方、2回目以降の処理の場合(ステップS214)、CPUは、同一履歴区間を設定する(ステップS218)。即ち、保持されている転位履歴を参照し、複数の重複区間のうち、同一の履歴を保持している区間を一つのまとまりとするのである。
そして、位置関係修復処理を行う(ステップS220)。処理内容は、実施例2で説明した通りである(
図21参照)。
その後、処理対象道路と、その内側の道路との重要度に応じて、転位モードを判定し(ステップS222)、判定結果に応じて転位モード1(ステップS224)または転位モード2(ステップS226)の転位処理を行う。それぞれの転位処理の内容は実施例2で説明した通りである(
図18、19参照)。これらの転位処理を終えた後も、CPUは、重複判定区間ごとに転位履歴を保持させる(ステップS228)。
以上の処理を繰り返し実行することによって、実施例2で説明したのと同様の転位処理を実現することができる。
変形例:
【0067】
H.効果および変形例:
以上で説明した実施例2の転位処理によれば、3本以上の道路の間で、転位処理を実現することができる。この際、基準道路に近い内側の道路から転位処理を施すことによって、外側の道路の転位処理の結果が内側の道路に影響を与えることを回避することができる。また、内側、外側の道路の重要度に応じて転位処理の方法を切り替えることにより、それぞれの道路について適切な見せ幅を確保することができる。
【0068】
本発明は、必ずしも上述した実施例の全ての処理を施す必要はなく、一部のみを実現するようにしてもよい。また、上述した内容に追加の処理を設けてもよい。
実施例では、3段階の占有領域としたが、占有領域を、2つの道路の重なり状態に応じて算出するようにしてもよい。
実施例では、道路同士の転位処理を説明したが、鉄道と道路との転位も同様に処理可能である。
本発明は上述の実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、実施例においてハードウェア的に構成されている部分は、ソフトウェア的に構成することもでき、その逆も可能である。