〔1〕地図情報作成装置の全体構成
図1は本発明の実施例1に係る地図情報作成装置10のハードウェア構成を表すブロック図である。本実施例の地図情報作成装置は、ハードウェアとしては、中央演算装置(CPU)1、メモリ2、外部記憶装置3、入力デバイス4、ディスプレイ5、通信インタフェース6、可換記憶媒体7、及び内部バス8を備えている。これらは、通常のコンピュータと同様のシステム構成である。
外部記憶装置3に記憶された地図情報作成プログラム又は可換記憶媒体7から読み込まれる地図情報作成プログラム、若しくは通信インタフェースを介して外部データベースから読み込まれる地図情報作成プログラムをメモリ2に読み出しCPU1によって実行することにより、このコンピュータシステムは本実施例の地図情報作成装置として機能する。外部記憶装置3又は可換記憶媒体7には、二次元地図情報である交差点関連テーブル、交差点間道路関連テーブル、標高点テーブル、走行軌跡テーブル、及びメッシュ標高点テーブルが予め記憶されている。尚、これらのテーブルについての詳細は、後ほど説明する。入力デバイス4は、キーボードやマウス等により構成されており、地図情報作成プログラムの実行の際の指示や対話処理を行う際の入力装置として使用される。また、ディスプレイ5は、プログラムの実行状況や対話処理の際の入力選択の表示等を行う出力装置として使用される。
図2は実施例1に係る地図情報作成装置の機能的な構成を表すブロック図である。
機能構成においては、地図情報作成装置10は、標高点情報記憶手段11、二次元地図記憶手段12、走行軌跡データ記憶手段13、DEMデータ記憶手段14、抽出処理手段15、走行軌跡関連付手段16、中間テーブル記憶手段17、走行軌跡記憶手段18、三次元化処理手段19、及び三次元地図記憶手段20の構成を備えている。
標高点情報記憶手段11は、1万分の1地形図、1/5000や1/2500国土基本図、1/2500都市計画図、公共測量地図などによって与えられている各種の標高点を格納したテーブルである標高点テーブルを記憶する。二次元地図記憶手段12は、三次元地図情報の作成の基礎となる二次元地図情報である交差点関連テーブル及び交差点間道路関連テーブルを記憶する。
走行軌跡データ記憶手段13は、走行軌跡データが格納された走行軌跡テーブルを記憶する。ここで、「走行軌跡データ」とは、POS LV(商標名)(Position and Orientation System for Land Vehicles)のような連続位置記録装置によって採取した道なりの三次元座標点列からなるデータをいう。
DEMデータ記憶手段14は、5mメッシュ,50mメッシュ,250mメッシュ等のDEMデータが格納されたメッシュ標高点テーブルを記憶する。これらの各記憶手段に記憶された各テーブルのデータ構造の詳細については後述する。
抽出処理手段15は、二次元地図記憶手段12に記憶された交差点関連テーブル及び交差点間道路関連テーブル、並びに標高点テーブルから三次元情報を生成し、中間テーブル記憶手段17に保存する。中間テーブル記憶手段17には、この生成された三次元情報が追加された地図情報が、3D空間テーブル及び3D属性テーブルとして記憶される。
走行軌跡関連付手段16は、走行軌跡テーブルの各座標点と、交差点間道路関連テーブルに格納された各道路情報との対応付けを行う。走行軌跡記憶手段18には、道路情報と関連づけられた走行軌跡の各座標点が走行軌跡関連テーブルとして記憶される。
三次元化処理手段19は、中間テーブル記憶手段17に記憶された3D空間テーブル及び3D属性テーブル、DEMデータ記憶手段14に記憶されたメッシュ標高点テーブル、並びに走行軌跡記憶手段18に記憶された走行軌跡関連テーブルの各情報に基づいて、3D空間テーブル及び3D属性テーブルの修正を行い、修正された3D空間テーブル及び3D属性テーブルを三次元地図記憶手段20に出力する。
〔2〕各種地図情報のデータ構造
〔2−1〕地図に関する各情報と現実の地図の構造との関係
上述の各種地図情報を格納する各テーブルのデータ構造の詳細について説明する前に、地図に関する各情報と実際の地図の構造との関連について説明する。
図3は二次元地図情報の構成要素を図形的に表した図である。本発明では二次元地図情報のうち、道路ネットワーク(以下「道路NW」という。)のみを扱うものとする。道路NWは、交差点(N1,N2,…)及び交差点間道路(L1,L2,…)から構成される。以下では、交差点のことを「ノード」といい、ノード間を結ぶ交差点間道路のことを「リンク」という。尚、各リンクの両端点のうちの一方を始点,他方を終点とする。また、‘橋’及び‘トンネル’の始点及び終点は、交差点でなくてもノードが設定されるものとする(例えば、図3のノードN3.N4)。ここで、ノードN3,N4のように2本のリンクが接続されたノードは一般的には交差点とは呼ばないが、電子地図を取り扱う上では、これも便宜上、交差点の一種とみなし、このような交差点を「二差路」と呼ぶ。
図3においては、ノード(交差点)は○で記し、リンク(交差点間道路)は2つのノード間を結ぶ太線で記し、構成点は△で記す。
ここで、「構成点」とは、1つのリンクの始点,終点,及び始点と終点の間に設けられる点であって、そのリンクが通る位置座標を指定する点をいう。各リンクの二次元形状は、各構成点を通る二次元ポリラインとして表現される。また、1つのリンクはそれぞれ1つのオブジェクトとして取り扱われる。1つの図葉内において、それぞれのリンクは、オブジェクトIDにより識別される。
(1)構造種別
さらに、各リンクには道路属性として構造種別が与えられる。「構造種別」とは、指定された区間における道路構造をいう。
構造種別としては、例えば、‘橋’,‘高架’,‘トンネル’,‘切取’,‘盛土’,‘雪覆い’などがある。構造種別は、1つのリンクの内部に区間ごとに複数設定することが可能である。例えば、図4(a)のように、リンクabにおいて、区間p1p2に高架,区間p3p4に切取,区間p5p6に盛土があった場合、図4(b)のように、リンクabのそれぞれの対応する区間の構造種別が、それぞれ、高架,切取,盛土に設定される。
また、構造種別はリンクの両側もしくは、サイドごとに設定される。例えば、リンクの両側に切取があった場合には、リンクの‘両側’が‘切取’と設定され、リンクの右側のみ切取があった場合には、そのリンクの‘右側’が‘切取’に設定される。尚、リンクの始点から終点に向かって右側を「リンクの右側」、向かって左側を「リンクの左側」という。
(2)相対高さ
本実施例1において用いられる「相対高さ」は、上記特許文献1において用いられる「リンクの相対高さ」とは概念的に異なるので、以下、相対高さについて説明する。
図5(a)は、特許文献1に記載されたリンクの相対高さを図示したものである。図5(a)は3本のリンクが互い違いに交差している状態を表しており、リンクL1はリンクL2のアンダーパス,リンクL2はリンクL3のアンダーパスのように相対高さが与えられている。この場合、すべてのリンク間の相対高さに対して矛盾なくリンクの高さ(特許文献1にいう「絶対高さ」)を定めると、図5(a)に示したように3層に亘ってリンクL1,L2,L3が水平区間として配置される。
このように、各リンクが高さを持った水平区間として与えられた場合、水平区間の範囲内の他のリンクに影響を及ぼすことになる。図5(a)の例では、リンクL2が範囲を持った水平区間として表されることによって、リンクL1とリンクL2との相対高さ関係が、リンクL3の高さに影響を与えている。
そこで、本実施例1においては、リンクの相対高さを、リンク全体の相対高さとして与えるのではなく、図5(b)のように、リンク内の特定の点(リンクの交差する点やリンクの端点など)の相対高さとして与える。そして、相対高さが与えられた点をリンクに沿ってなめらかにつながるように高さを調整することにより、広範囲に亘って無理や矛盾の少ない三次元道路ネットワークの作成が可能となる。尚、相対高さが与えられた点(以下「相対高付与点」という。)と上述の構成点とは必ずしも一致する必要はない。
次に、上述の各種地図情報を格納する各テーブルのデータ構造の詳細について説明する。
〔2−2〕三次元地図情報の作成の元となる各種情報テーブルのデータ構造
(1)交差点間道路関連テーブル
交差点間道路関連テーブルは、図葉内の各リンクに関する情報が格納されるテーブルである。図6は、交差点間道路関連テーブルのデータ構造を表す図である。
交差点間道路関連テーブルは、“図葉範囲”,“図葉内リンク数(n1)”,及びn1個の“道路関連情報”によって構成されている。ここで、「図葉範囲」とは、当該交差点間道路関連テーブルに対応する図葉の範囲をいい、図葉の左下及び右上の座標(緯度,経度)からなる。「図葉内リンク数」は、当該図葉内のリンクの数である。「道路関連情報」は、当該図葉内の各リンクに関する各種情報が格納されるレコードである。この“道路関連情報”は、図葉内のそれぞれのリンクに一対一に対応して設けられる。
“道路関連情報”は、“オブジェクトID”,“カテゴリ”,“存在領域情報”,“高さレベル”,“構成点数(mi)”,mi個の“構成点位置情報”,“構造種別数(ri)”,ri個の“構造種別情報”から構成されている。
「オブジェクトID」とは、当該道路関連情報に対応するリンク(以下「道路関連情報対応リンク」という。)のオブジェクトID(以下「OID」という。)である。
「カテゴリ」とは、道路関連情報対応リンクの道路種別や道路の形状などの情報であり、“道路種別コード”及び“リンク種別コード”からなる。「道路種別コード」は、道路種別を表し、例えば、‘未定義’,‘高速’,‘都市高速’,‘一般国道’,‘主要地方道’,‘指定市道’,‘一般都道府県道’,…のように定められる。「リンク種別コード」は、道路の形状や種別による分類を表し、例えば、‘上下線分離道路’,‘本線’,‘本線渡り線’,‘ランプ(取り付け道路)’,‘側線’,…のように定められる。
「存在領域情報」は、道路関連情報対応リンクが存在する地図内の矩形領域(存在領域)に関する情報であり、当該存在領域の左下及び右上の座標(緯度,経度)からなる。
「高さレベル」とは、道路関連情報対応リンクと道路関連情報対応リンクに交差する他のリンクとの相対的な高さ関係を表す情報である。これは、二次元地図を描画する際に交差するリンクの上下関係を判定するために使用される情報であり、例えば、−127〜128までの数値とされる。交差する2つのリンクがあった場合、“高さレベル”が大きい方のリンクが上側とされる。
「構成点数」は、道路関連情報対応リンク内の構成点の数を表す。「構成点位置情報」は、各構成点の二次元の位置座標(緯度,経度)を表す。ここで、“構成点位置情報”は、道路関連情報対応リンクの始点から終点に向かって配列されている。すなわち、“構成点数”の次にくる“構成点位置情報”は、道路関連情報対応リンクの始点の位置情報であり、最後の“構成点位置情報”は、道路関連情報対応リンクの終点の位置情報である。
「構造種別数」は、当該道路関連情報対応リンク内に設定されている構造種別の数を表す。ここで、「構造種別」とは、道路構造の種類をいい、例えば、‘種別なし’,‘橋’,‘高架’,‘トンネル’,‘切取’,‘盛土’,‘雪覆い’などである。
「構造種別情報」とは、道路関連情報対応リンクの所定区間における構造種別の情報である。構造種別情報は、“構造種別コード”,“対象サイド”,“区間開始位置”,及び“区間終了位置”の組から構成される。
「対象サイド」とは、当該構造種別情報によって構造種別が指定される道路関連情報対応リンクのサイド(始点から終点に向かって見たときのサイド)を表し、‘両側’,‘左側’,‘右側’のいずれかの値を採る。
「区間開始位置」及び「区間終了位置」は、当該構造種別情報によって構造種別が指定される道路関連情報対応リンクの区間の開始位置及び終了位置を表す。開始位置及び終了位置は、道路関連情報対応リンクの長さを1(100%)として、道路関連情報対応リンクの始点から開始位置又は終了位置までの長さ(%)で表される。尚、“区間開始位置”及び“区間終了位置”は、必ずしも構成点の位置と一致する必要はない。
「構造種別コード」とは、対象区間,対象サイドにおける道路関連情報対応リンクの構造種別を表すコードである。“構造種別コード”は、例えば、‘種別なし’,‘橋’,‘高架’,‘トンネル’,‘切取’,‘盛土’,‘雪覆い’,…のような値を採る。
(2)交差点関連テーブル
交差点関連テーブルは、図葉内の各ノードに関する情報が格納されるテーブルである。図7は、交差点関連テーブルのデータ構造を表す図である。
交差点関連テーブルは、“図葉範囲”,“図葉内交差点数(n2)”,及びn2個の“交差点関連情報”によって構成されている。ここで、「図葉範囲」とは、当該交差点関連テーブルに対応する図葉の範囲をいい、図葉の左下及び右上の座標(緯度,経度)からなる。「図葉内交差点数」は、当該図葉内のノード(交差点)の数である。「交差点関連情報」は、当該図葉内の各ノードに関する各種情報が格納されるレコードである。この“交差点関連情報”は、図葉内のそれぞれのノードに一対一に対応して設けられる。
“交差点関連情報”は、“ノード位置情報”,“接続道路数(sj)”,及びsj個の“接続道路情報”から構成されている。
「ノード位置情報」は、当該接続位相レコードに対応するノード(以下「交差点関連情報対応ノード」という。)の二次元位置座標(緯度,経度)を表す情報である。
「接続道路数」は、交差点関連情報対応ノードを始点又は終点とするリンク(以下「接続リンク」という。)の数を表す。
「接続道路情報」は、上記接続リンクのそれぞれに対応して設けられており、“オブジェクトID”,“始点/終点フラグ”,及び“メッシュ内フラグ”の組からなる。「オブジェクトID」は、当該接続リンクのオブジェクトIDである。「始点/終点フラグ」は、交差点関連情報対応ノードに対し当該接続リンクが始点側又は終点側のいずれで接続しているかを表すフラグであり、0が‘始点側’,1が‘終点側’を表す。「メッシュ内フラグ」は、接続リンクが図葉内に属するか否かを示すフラグであり、0は‘属さない’,1は‘属す’を表す。
(3)標高点テーブル
標高点テーブルは、各種標高点の置かれている位置とその標高値を格納するテーブルである。ここで、「標高点」とは、都市計画図や国土地理院が提供する情報等によって標高値が与えられる、標高が既知の地点をいう。標高点の種類としては、例えば、‘三角点’,‘水準点’,‘多角点及び標石のある図根点’等がある。
図8は、標高点テーブルのデータ構造を表す図である。標高点テーブルは、“標高点数(n3)”,及びn3個の“標高点レコード”から構成されている。ここで、「標高点数」は、図葉内に含まれる標高点の数を表す。「標高点レコード」は、各標高点に対して一対一に設けられており、その標高点に関する情報を格納するレコードである。
各“標高点レコード”は、“標高点座標”,“標高値”,及び“地物区別”の組からなる。「標高点座標」は、当該標高点レコードに対応する標高点(以下「対象標高点」という。)の二次元位置座標(緯度,経度)を表す情報である。「標高値」は、対象標高点の標高値(海抜)である。「地物区別」は、対象標高点が置かれている地物を表し、‘地表’又は‘高架’の値を採る。すなわち、標高点は必ずしも地表に置かれているとは限られず、高架上に置かれている場合もある。従って、“地物区別”によって、標高点が地表に置かれているか高架上に置かれているかを区別する。
(4)走行軌跡テーブル
走行軌跡テーブルは、全地球測位システム(GPS)や慣性計測ユニット‘IMU’(一般にジャイロ)などを統合したシステムを用いて自動車で道路を走行しながら実測された三次元位置データのデータ列からなる走行軌跡データを格納するテーブルである。
図9は、走行軌跡テーブルのデータ構造を表す図である。走行軌跡テーブルは、“軌跡レコード数(n4)”,及びn4個の“軌跡レコード”から構成される。「軌跡レコード数」は走行軌跡テーブル内の軌跡レコードの数を表す。「軌跡レコード」は、走行軌跡データを格納するレコードであり、“テーブルID”,“レコードID”,“計測点数(ui)”,及びui個の“計測点位置情報”から構成されている。
「テーブルID」は、走行軌跡テーブルのIDであり、「レコードID」は、走行軌跡テーブル内の各レコードのIDである。「計測点数」は、その走行軌跡データに含まれる三次元座標点(以下「計測点」という。)の数を表す。「計測点位置情報」は、各計測点の三次元座標を表し、“GPS時刻”,“標高”,“緯度”,“経度”から構成される。「GPS時刻」は、その計測点の位置の計測が行われた時刻である。
(5)メッシュ標高点テーブル
メッシュ標高点テーブルはDEMデータにより与えられる図葉内のメッシュ点の標高を格納するテーブルである。ここで、「メッシュ点」とは、地上を一定の経緯方眼として区画した際の区画の各頂点をいう。
図10は、メッシュ標高点テーブルのデータ構造を表す図である。DEMデータは、1つの図葉をMm行×Nm列のメッシュ点からなる経緯方眼として表したときの各メッシュ点上の標高値からなる。経緯方眼の行数と列数は定められており、例えば、国土地理院が提供する50メートルメッシュの場合、1/25,000地形図の図葉(経度差7’30”,緯度差5”)に対し200×200の経緯方眼とされる。従って、メッシュ標高点テーブルは、図10のように、Mm×Nmの標高値の行列(Zij)として与えられている。
〔2−3〕三次元地図情報の各種情報テーブルのデータ構造
(1)3D空間テーブル
図11は、3D空間テーブルのデータ構造を表す図である。3D空間テーブルは“3D空間レコード数(n5)”及びn5個の“3D空間レコード”によって構成されている。「3D空間レコード」とは、リンクの種別及びその三次元ポリライン形状に関する情報が格納されたレコードである。この“3D空間レコード”は、図葉内のリンクと一対一に対応して設けられている。
3D空間レコードは、“オブジェクトID”,“カテゴリ”,“構成点数(mi)”,及びmi個の“構成点情報”により構成されている。
「オブジェクトID」は、当該3D空間レコードに対応するリンク(以下「3D空間レコード対応リンク」という。)のOIDである。
「カテゴリ」は、3D空間レコード対応リンクの道路種別や道路の形状などの情報であり、“道路種別コード”及び“リンク種別コード”からなる。これは、交差点間道路関連テーブルの各“道路関連情報”の“カテゴリ”と一対一に対応し、対応するもの同士が同一の値とされる。
「構成点数」は、3D空間レコード対応リンク内の構成点の数を表す。「構成点位置情報」は、各構成点の三次元の位置情報を表す。ここで、“構成点位置情報”は、3D空間レコード対応リンクの始点から終点に向かって配列されている。すなわち、“構成点数”の次にくる“構成点位置情報”は、3D空間レコード対応リンクの始点の位置情報であり、最後の“構成点位置情報”は、3D空間レコード対応リンクの終点の位置情報である。
“構成点位置情報”は、“経度”,“緯度”,“高度”,及び“標高”から構成される。ここでいう“標高”は構成点の緯度,経度における地表面の標高をいい、“高度”は、地表面の標高に地表面から道路までの高さ(比高)を加えた値をいう。
(2)3D属性テーブル
図12は、3D属性テーブルのデータ構造を表す図である。3D属性テーブルは、“レコード数(n1+n2+n3)”,n1個の“道路属性レコード”,n2個の“接続位相レコード”,及びn3個の“標高点レコード”から構成されている。
「レコード数」は、3D属性テーブル内の道路属性レコードの数,接続位相レコードの数,及び標高点レコードの数の総数を表す。
「道路属性レコード」は、図葉内の各リンクに関する情報が格納されたレコードである。この道路属性レコードは、図葉内の各リンクに一対一に対応して設けられている。従って、道路属性レコードは、3D空間テーブル内の“3D空間レコード”及び交差点間道路テーブル内の“道路関連情報”とも一対一に対応している。
「接続位相レコード」は、図葉内の各ノードに関する情報が格納されたレコードである。この接続位相レコードは、図葉内の各ノードに一対一に対応して設けられている。従って、接続位相レコードは、交差点関連テーブル内の“交差点関連情報”とも一対一に対応している。尚、三次元地図情報においては、ノードも一つのオブジェクトとして取り扱われる。
「標高点レコード」は、標高点テーブル内の各標高点から得られるリンク上の標高点に関する情報が格納されたレコードである。
(2−1)道路属性レコード
各“道路属性レコード”は、“レコード種別”,“オブジェクトID”,“始点オブジェクトID”,“終点オブジェクトID”,“相対高さ情報数(qi)”,“構造種別数(ri)”,qi個の“相対高さ情報”,ri個の“構造種別情報”から構成される。
「レコード種別」は、そのレコードの種類を表すものであり、‘道路属性レコード’の値を採る。
「オブジェクトID」は、当該道路属性レコードに対応するリンク(以下「道路属性レコード対応リンク」という。)のOIDである。「始点オブジェクトID」及び「終点オブジェクトID」は、道路属性レコード対応リンクの始点及び終点のノードのOIDである。
「相対高さ情報数」及び「構造種別数」は、当該道路属性レコード対応リンク内の“相対高さ情報”の数及び“構造種別情報”の数を表す。
「相対高さ情報」とは、当該道路属性レコード対応リンクの地表又は他のリンクに対する相対高さに関する情報である。尚、「相対高さ」については、上記〔2〕(2)において説明したとおりであり、リンク上の点に対して与えられる。
“相対高さ情報”は、“付与点位置”,“相対高さ”,“立体交差フラグ”,“構造種別コード”,及び“メッシュ内フラグ”から構成される。「付与点位置」は、道路属性レコード対応リンク上における相対高さが付与された点(以下「相対高付与点」という。)の位置であり、道路属性レコード対応リンクの長さを1(100%)として、道路属性レコード対応リンクの始点から相対高付与点までの長さ(%)で表される。「相対高さ」は、当該相対高付与点における相対高さである。「立体交差フラグ」は、当該相対高付与点が立体交差点か否かを表すフラグであり、立体交差点の場合は1,立体交差点でない場合は0が設定される。「構造種別コード」は、当該相対高付与点における構造種別コード(〔2−2〕(1)参照)である。「メッシュ内フラグ」は、当該相対高付与点が図葉内か否かを示すフラグであり、図葉内の場合は‘1’、図葉内にない場合は‘0’が設定される。これは、複数の図葉に跨るリンクがあることを考慮したものである。
尚、「構造種別情報」は、上記〔2−2〕(1)で説明した交差点間道路関連テーブル内の“道路関連情報”における“構造種別情報”と同じものであり、説明は省略する。
(2−2)接続位相レコード
各“接続位相レコード”は、“レコード種別”,“ノード位置情報”,“オブジェクトID”,“接続道路数(sj)”,及びsj個の“接続道路情報から構成される。
「レコード種別」は、そのレコードの種類を表すものであり、‘接続位相レコード’の値を採る。「ノード位置情報」は、当該接続位相レコードに対応するノード(以下「接続位相レコード対応ノード」という。)の位置座標(経度,緯度)である。「オブジェクトID」は、当該接続位相レコード対応ノードのOIDである。「接続道路数」とは、当該接続位相レコード対応ノードを始点又は終点とするリンクの数である。「接続道路情報」とは、当該接続位相レコード対応ノードを始点又は終点とするリンク(以下「接続リンク」という。)に関する情報である。
この“接続道路情報”は、“リンクOID”,“始点/終点フラグ”,及び“メッシュ内フラグ”から構成されている。「リンクOID」は、当該接続リンクのOIDである。「始点/終点フラグ」は、当該接続位相レコード対応ノードに対し当該接続リンクが始点側又は終点側のいずれで接続しているかを表すフラグであり、0が‘始点側’,1が‘終点側’を表す。「メッシュ内フラグ」は、接続リンクが図葉内に属するか否かを示すフラグであり、0は‘属さない’,1は‘属す’を表す。尚、図葉内に‘属する’,‘属さない’の意味については、上記(2−1)において説明した通りである。
(2−3)標高点レコード
標高点レコードは、リンク上に標高点が設定された場合に作成されるものである。各“標高点レコード”は、“レコード種別”,“リンクOID”,“標高点数(vk)”,及びvk個の“標高点情報”から構成される。
“レコード種別”は、そのレコードの種類を表すものであり、‘標高点レコード’の値を採る。「リンクOID」は、当該標高点レコードに対応するリンク(以下「標高点レコード対応リンク」という。)のOIDである。標高点数は、標高点レコード対応リンク上に設定された標高点の数である。「標高点情報」は、標高点レコード対応リンク上の各標高点に関する情報である。“標高点情報”は、“標高点位置”,“標高値”,及び“地物区分”から構成される。「標高点位置」とは、標高点レコード対応リンク上における当該標高点の位置であり、当該標高点レコード対応リンクの長さを1(100%)として、当該標高点レコード対応リンクの始点から当該標高点までの長さ(%)で表される。「標高値」は、当該標高点の標高値である。「地物区分」は、標高点が地表に設置されているか高架上に設置されているかの区分を表す情報である。
〔3〕地図情報作成処理の概要
以下では、本実施例1に係る地図情報作成装置による地図情報作成処理について説明する。
地図情報作成装置の全体的な処理の流れとしては、まず、抽出処理手段15が、図葉ごとに、二次元地図記憶手段12に記憶された二次元地図情報に対し、リンク上に相対高さを付けたデータを作成し、これを中間テーブル記憶手段17に出力する。各リンク上の相対高さは、高架やトンネルのような構造種別と交差するリンク同士の上下関係から生成される。この抽出処理手段15による処理を「道路ネットワーク抽出処理」と呼ぶ。道路ネットワーク抽出処理は、三次元化を行おうとするすべての図葉に対して行う。
また、各図葉に対して道路ネットワーク抽出処理を実行する場合、同時に、走行軌跡関連付手段16が、当該図葉内のリンクに対応する走行軌跡データが走行軌跡データ記憶手段13内に存在するか否かを検索し、存在する場合には当該リンクに走行軌跡データを関連づける。この処理を「走行軌跡関連付処理」と呼ぶ。
最後に、三次元地図記憶手段20は、DEMデータ記憶手段14に記憶されたDEMデータ、から地表面の標高値を求め、相対高さが付された各リンクを地表面に載せるとともに現実に近付けるべく標高点データや走行軌跡データを用いて補正することにより三次元地図情報を生成し、三次元地図記憶手段20に出力する。この三次元地図記憶手段20による処理を「三次元化処理」と呼ぶ。
〔4〕道路ネットワーク抽出処理
最初に、道路ネットワーク抽出処理について説明する。道路ネットワーク抽出処理は、ユーザーにより選択される図葉ごとに実行される。図葉の選択は対話方式によって行われる。選択された図葉について道路ネットワーク抽出処理が実行されると、3D属性テーブル及び3D空間テーブルが生成される。これらのテーブルは、中間テーブル記憶手段17に格納される。
〔4−1〕イベント処理
図13は、抽出処理手段15によるイベント処理を表すフローチャートである。本実施例1の抽出処理手段15は、対話処理により、複数の図葉からなる二次元地図の一覧からユーザーが図葉を選択し、選択された図葉に対して3D空間テーブル及び3D属性テーブルを作成するという作業を繰り返す。
まず、ステップS1において、抽出処理手段15は、二次元地図記憶手段12に記憶されている二次元地図の図葉の一覧をディスプレイ5に表示することにより、図葉選択メニューを表示する。この場合、図葉の名称をリスト形式に表示してもよいし、図葉の一覧を広域地図上の経緯メッシュとしてグラフィックスで表示してもよい。
次に、ステップS2において、抽出処理手段15は、入力デバイス4からユーザーによる入力イベントが発生するのを待つ。この状態において、ユーザーは、キーボードやマウス等の入力デバイス4から、入力イベントとして各図葉の選択指示又は終了指示を入力することができる。
ユーザーによる入力デバイス4からの入力イベントが検出されると、抽出処理手段15は、ステップS3において、その入力イベントが終了指示か否かを判定する。終了指示であれば、抽出処理手段15は、終了処理を行って動作を終了する。
一方、入力イベントが終了指示でない場合、抽出処理手段15は、ステップS4において、入力イベントが処理対象図の選択指示かそれ以外かを判定する。後者の場合は、再びステップS1に戻る。
前者の場合、抽出処理手段15は、ステップS5において、選択された図葉に対して、以下に説明する道路ネットワーク抽出処理を実行し、再びステップS1に戻る。
〔4−2〕道路ネットワーク抽出処理
(1)処理全体の流れ
抽出処理手段15による道路ネットワーク抽出処理の全体の流れを図14に示す。
まず、ステップS11において、相対高さ生成処理を行う。相対高さ生成処理においては、図葉内の各リンクの端点及びリンク内の点(相対高付与点)に相対高さが与えられる。
ステップS12において、道路間相対高さ整合処理を行う。道路間相対高さ整合処理では、同一のノードで接続する複数のリンク間で相対高さに矛盾が生じている場合、その矛盾を解消すべく、相対高さの補正を行う。
ステップS13において、道路内相対高さ整合処理を行う。道路内相対高さ整合処理では、図葉内の各リンクにおいて、リンク内部の相対高付与点に不自然な相対高さが付与されている場合、それを補正する。
ステップS14において、非交差テーブル作成処理を行う。ここでは、図葉内のリンクのうち、互いに立体交差しているリンクを探索し、その立体交差している点(以下「非交差点」という。)のテーブル(非交差テーブル)を生成する。
ステップS15において、非交差地点相対高さ設定処理を行う。非交差地点相対高さ設定処理においては、非交差点における複数のリンクの相対高さを設定する処理を行う。
ステップS16において、道路内相対高さ補正処理を行う。道路内相対高さ補正処理では、図葉内の各リンクにおいて、非交差点の相対高さの設定を行った結果、不自然な相対高さとなって相対高付与点の相対高さを補正する。
ステップS17において、道路間相対高さ補正処理を行う。道路間相対高さ補正処理では、同一のノードで接続する複数のリンク間で相対高さに不自然さが生じている場合、その不自然さを解消すべく、相対高さの補正を行う。
ステップS18において、標高点取り込み処理を行う。標高点取り込み処理では、標高点テーブル内の各標高点の標高値を、リンク上の標高点の標高値として取り込む処理を行う。
最後に、ステップS19において、3D属性テーブル出力処理を行い、ステップS20において、3D空間テーブル出力処理を行い、道路ネットワーク抽出処理が終了する。
以下、それぞれのステップにおける処理内容について詳細に説明する。
(2)相対高さ生成処理
相対高さ生成処理においては、図葉内の各リンクに対し、リンク上の特定の点に相対高さを与える。図15は、相対高さ生成処理(S11)を表すフローチャートである。
まず、ステップS31において、交差点間道路テーブル内のすべてのリンクに対して処理が終了したかを判定する。未処理のリンクがあれば、そのリンクに対して次のステップS32,S33の処理を実行し、すべてのリンクの処理が終了すると、相対高さ生成処理を終了する。
ステップS32において、処理対象のリンク内の構造種別及びその区間に従って、相対高付与点を決定し、相対高付与点に対して相対高さを付与する。具体的な相対高さの付与の方法については後述する。
ステップS33において、付与された相対高さに関する情報を、図16に示したように、交差点間道路関連テーブル内の“道路関連情報”の末尾に追加する。
図16において、交差点間道路関連テーブル内の“道路関連情報”には、“構造種別情報”の後ろに、“相対高付与点数(qi)”及びqi個の“相対高さ情報”が追加されている。「相対高付与点数」は、道路関連情報対応リンク内における相対高付与点の数である。「相対高さ情報」は、各相対高付与点における相対高さに関する情報である。
“相対高さ情報”は、“相対高付与点位置”,“相対高さ”,“立体交差フラグ”,“構造種別コード”,及び“メッシュ内フラグ”から構成される。
「相対高付与点位置」は、道路関連情報対応リンク内における当該相対高付与点の位置であり、道路関連情報対応リンクの長さを1(100%)として、道路関連情報対応リンクの始点から開始位置又は終了位置までの長さ(%)で表される。「相対高さ」は、当該相対高付与点の相対高さである。
「立体交差フラグ」は、当該相対高付与点が非交差点(他のリンクと立体交差する点)か否かを示すフラグであり、非交差点の場合は‘1’,それ以外の場合は‘0’に設定される。「構造種別コード」は、当該相対高付与点における構造種別コード(〔2−2〕(1)参照)である。「メッシュ内フラグ」は、当該相対高付与点が図葉内か否かを示すフラグであり、図葉内の場合は‘1’,図葉内にない場合は‘0’が設定される。これは、複数の図葉に跨るリンクがあることを考慮したものである。
以上のステップS33の処理が終わると、再びステップS31に戻り、図葉内のすべてのリンクについての勝利が終わるまで繰り返される。
次に、ステップS32における相対高付与点の位置及び相対高さの決定方法について、具体的に説明する。
(A)相対高さ付与規則1
最初に、図17(a)に示すように、リンクの始点及び終点の位置を相対高付与点とし、それぞれ相対高さ0を与える。
この場合、交差点間道路関連テーブル内の当該リンクに対応する“道路関連情報”の“構造種別情報”の後に、“相対高さ情報数”として2を保存し、“相対高さ情報”としてリンクの始点及び終点の相対高さに関する情報を保存する。ここで、“相対高さ情報”の“相対高付与点位置”には、リンクの始点では0(0%),リンクの終点では1(100%)が保存される。 “相対高さ”には0が保存される。“立体交差フラグ”には0が保存される。“構造種別コード”には、リンクの始点及び終点における構造種別コードが保存される。この構造種別コードは、当該“道路関連情報”内の“構造種別情報”を参照することによって得ることができる。また、“メッシュ内コード”には、リンクの始点又は終点が図葉内にあるときには‘1’が、図葉外にあるときには‘0’が保存される。
(B)相対高さ付与規則2
次に、図17(b)のように、リンクが‘高架’又は‘盛土’の構造種別区間を持つ場合には、当該構造種別区間の始点及び終点位置を相対高付与点としてそれぞれ相対高さ0を与える。また、当該構造種別区間内の所定の2点(ここでは、当該構造種別区間の始点から30%及び70%の点とする。)を相対高付与点とし、相対高さ1を与える。これは、図17(c)に示したように、三次元化する際に高架部分や盛土部分において道路の高さがなめらかに推移するようにするため、相対高付与点を追加したものである。
この場合、交差点間道路関連テーブル内の当該リンクに対応する“道路関連情報”の “相対高さ情報数”に追加する相対高付与点の数を加算し、“相対高さ情報”として上記構造種別区間の始点及び終点,30%点,70%点の相対高さに関する情報を保存する。ここで、“相対高さ情報”の“相対高付与点位置”には、構造種別区間の始点及び終点,30%点,70%点のリンク始点からの距離をリンク長で割った値が保存される。“相対高さ”には、構造種別区間の始点及び終点では0が、30%点,70%点では1が保存される。“立体交差フラグ”には0が保存される。“構造種別コード”には、各相対高付与点における構造種別コードが保存される。また、“メッシュ内コード”には、各相対高付与点が図葉内にあるときには‘1’が、図葉外にあるときには‘0’が保存される。
尚、当該構造種別区間内の相対高さ1を追加する2点の位置は、当該構造種別区間の始点から30%及び70%の位置に限られるものではなく、適宜に変えて設定してもよい。
また、‘高架’又は‘盛土’の構造種別区間が、複数のリンクに跨って設定されている場合、相対高さはリンク単位に分断する。この場合、図17(d)に示すように、構造種別区間の始点側リンクでは、構造種別区間の始点位置に相対高さ0、構造種別区間の始点位置から次のリンクに接続する端点までの30%及び100%の位置に相対高さ1の相対高付与点を設定する。また、中間のリンクでは、リンクの始点及び終点の位置に相対高さ1の相対高付与点を設定する。構造種別区間の終点側リンクでは、前のリンクに接続する端点から構造種別区間の終点までの0%及び70%の位置に相対高さ1,構造種別区間の終点位置に相対高さ0の相対高付与点を設定する。
(C)相対高さ付与規則3
リンクが、‘切取’の構造種別区間を持つときは、図18(a)に示したように、構造種別区間の始点及び終点位置に相対高さ0の相対高付与点を設定する。
この場合、交差点間道路関連テーブル内の当該リンクに対応する“道路関連情報”の “相対高さ情報数”に追加する相対高付与点の数を加算し、“相対高さ情報”として上記切取区間の始点及び終点の相対高さに関する情報を保存する。ここで、“相対高さ情報”の“相対高付与点位置”には、切取区間の始点及び終点のリンク始点からの距離をリンク長で割った値が保存される。“相対高さ”には、0が保存される。“立体交差フラグ”には0が保存される。“構造種別コード”には、‘切取’が保存される。また、“メッシュ内コード”には、各相対高付与点が図葉内にあるときには‘1’が、図葉外にあるときには‘0’が保存される。
また、‘切取’の構造種別区間が複数のリンクに跨る場合、図18(b)に示したように、構造種別区間の始点側のリンクでは、構造種別区間の始点位置に相対高さ0,次のリンクに接続する端点に相対高さ0の相対高付与点を設定し、中間のリンクでは、リンクの始点及び終点位置に相対高さ0の相対高付与点を設定する。構造種別区間の終点側リンクでは、前のリンクに接続する端点に相対高さ0、構造種別区間の終点位置に相対高さ0の相対高付与点を設定する。
(3)道路間相対高さ整合処理
道路間相対高さ整合処理では、同一のノードで接続する複数のリンク間で相対高さに矛盾が生じている場合、その矛盾を解消すべく、相対高さの補正を行う。
図19は、道路間相対高さ整合処理を表すフローチャートである。
まず、ステップS41において、交差点関連テーブル内のすべてのノードに対して道路間相対高さ整合処理が終了したかを判定する。未処理のノードがあれば、そのノード(以下、この処理説明において「処理対象ノード」という。)に関して次のステップS42,S43の処理を実行する。すべてのノードの処理が終了すると、道路間相対高さ整合処理を終了する。
ステップS42において、交差点関連テーブルの接続道路情報を参照することにより、処理対象ノードに接続するすべてのリンク(以下、この処理説明において「接続リンク」という。)のOIDを取得する。そして、取得した各OIDに基づいて、各接続リンクの処理対象ノードにおける“構造種別コード”,“リンク種別コード”を、交差点間道路関連テーブルから読み出す。
ステップS43において、読み出した各“構造種別コード”及び“リンク種別コード”に応じて、各接続リンクの処理対象ノードにおける相対高さが整合する。この整合により処理対象ノードにおける相対高さが変更された接続リンクについては、交差点間道路関連テーブル内の相対高さの値(図16参照)を変更後の値に更新し、ステップS41に戻る。
ここで、ステップS43における処理対象ノードにおける相対高さの整合処理は次のように行われる。
(A)整合処理規則1
構造種別区間として橋区間,高架区間,又は盛土区間が複数のリンクに跨って設定されている場合、通常は、これらの連続する構造種別区間の道路は途中の交差点で落ち込むことなく平坦に建設されていると考えられる。そこで、かかる場合には連続する構造種別区間の中間にあるノードにおける相対高さを高い位置に整合させることとする。
まず、処理対象ノードにおける各接続リンクの“構造種別コード”をカウントする。そして、2以上の接続リンクの処理対象ノードにおける“構造種別コード”が‘橋’,‘高架’,‘盛土’のいずれかの場合、すべての接続リンクの処理対象ノードにおける相対高さを‘1’とする。
例えば、図20(a)のように、処理対象ノードaに、3つの接続リンクab,ac,adが接続していたとする。接続リンクab,acには構造種別区間として高架区間又は盛土区間が設定されており、接続リンクab,acの処理対象ノードaにおける“構造種別コード”は‘高架’又は‘盛土’である。また、接続リンクadの処理対象ノードaにおける“構造種別コード”は‘橋’,‘高架’,‘盛土’のいずれでもない。前述の相対高さ生成処理によれば、各接続リンクには、図20(b)に示したように相対高さが設定されている。
この場合、2つの接続リンクab,acの処理対象ノードaにおける“構造種別コード”が‘高架’又は‘盛土’であるため、すべての接続リンクab,ac,adの処理対象ノードaにおける相対高さは‘1’に整合される(図20(c)参照)。その結果、図20(d)に示したように、連続する高架・盛土区間の相対高さが処理対象ノードaにおいて‘0’に落ち込むことなく、連続的に‘1’となるように修正される。
逆に、例えば、図20(e)のように、処理対象ノードaにおいて接続リンクabのみ“構造種別コード”が‘高架’又は‘盛土’であり、他の接続リンクac,adの処理対象ノードaにおける“構造種別コード”は‘橋’,‘高架’,‘盛土’のいずれでもないとすると、この場合は、処理対象ノードaにおける相対高さの修正は行われない。かかる場合、接続リンクabの高架・盛土区間は処理対象ノードaにおいて終了しているからである。
(B)整合処理規則2
構造種別区間として橋区間,高架区間,又は盛土区間が複数のリンクに跨って設定されている場合であっても、その一つがランプであり、他の一つが地上道路である場合も考えられる。例えば、高速道路のインターチェンジなどではこのような場合が起こりえると考えられる。
例えば、図21(a)に示したように、合流点aにおいて2本の高架道路ab,acが1本の一般道路adに接続している場合、上述の(整合処理規則1)に従うと、合流点aは相対高さ‘1’に上げられる。しかしながら、高架道路ab,acが本線ではなく、ランプなどの取り付け道路の場合、むしろ、図21(b)のように、合流点aは地上に置かれる場合の方が一般的である。
そこで、処理対象ノードにおける各接続リンクの“構造種別コード”をカウントした結果、2以上の接続リンクの処理対象ノードにおける“構造種別コード”が‘橋’,‘高架’,‘盛土’のいずれかであったとしても、接続リンク中に、“リンク種別コード”が‘ランプ’の接続リンクが少なくとも1つ存在し、且つ“構造種別コード”が‘種別なし’の接続リンクが少なくとも1つ存在する場合、各接続リンクの当該処理対象ノードにおける相対高さは‘0’に整合する。
例えば、図20(g)のように、処理対象ノードaに、3つの接続リンクab,ac,adが接続しており、接続リンクab,acの処理対象ノードaにおける“構造種別コード”は‘高架’又は‘盛土’あり、接続リンクadの処理対象ノードaにおける“構造種別コード”は‘構造種別なし’であったとする。また、接続リンクabの処理対象ノードaにおける“リンク種別コード”は‘ランプ’であったとする。このような場合には、各接続リンクの処理対象ノードaにおける相対高さは‘0’に整合される。
(C)整合処理規則3
川や谷に架かる橋の場合、図22(a)に示すように、橋の両端は地上であるのが一般的である。また、図22(b)に示すように、橋区間の一端が高架・盛土区間と接続している場合、その接続端は空中にあり他端は地上にあるのが通常である。
そこで、処理対象ノードにおける各接続リンクの“構造種別コード”をカウントした結果、1又は2以上の‘橋’がありその他が ‘高架’,‘盛土’のいずれでもない場合、各接続リンクの当該処理対象ノードにおける相対高さは‘0’に整合する(図20(i)参照)。また、1又は2以上の‘橋’がありその他の接続リンクの少なくとも1つが‘高架’又は‘盛土’の場合、各接続リンクの当該処理対象ノードにおける相対高さは‘1’に整合する(図20(j)参照)。
(4)道路内相対高さ整合処理
道路内相対高さ整合処理では、図葉内の各リンクにおいて、リンク内部の相対高付与点に不自然な相対高さが付与されている場合、それを補正する処理が行われる。
図23は、道路内相対高さ整合処理を表すフローチャートである。
まず、ステップS51において、交差点間道路関連テーブル内のすべてのリンクに対して道路内相対高さ整合処理が終了したかを判定する。未処理のリンクがあれば、そのリンク(以下、この処理説明において「処理対象リンク」という。)に関して次のステップS52の処理を実行する。すべてのリンクの処理が終了すると、道路内相対高さ整合処理を終了する。
ステップS52において、交差点間道路関連テーブル(図16参照)内の処理対象リンクに対応する“道路関連情報”内の“相対高さ情報”を参照し、3つの相対高付与点が同じ相対高さを有する箇所を探索する。処理対象リンク内の連続する3つの相対高付与点が同じ相対高さを有する場合、中間の相対高付与点の“構造種別コード”を参照し、それが切取区間により発生したもの(図18参照)か否かを検査する。中間の相対高付与点が切取区間により発生したものでなければ、その中間の相対高付与点を削除する。これを、処理対象リンク内のすべての連続する3つの相対高付与点に対して実行する。以上の処理が終わると、ステップS51に戻る。
例えば、上述の道路間相対高さ整合処理を行った結果、図24(a)に示したように、連続する3つの相対高付与点の相対高さが1であるような場合が生じる。かかる場合、3つの相対高付与点のうち中間の相対高付与点は不必要なものである。従って、道路内相対高さ整合処理において、図24(b)のように、不要な中間の相対高付与点が削除される。
一方、上述の相対高さ生成処理において、切り取り区間の開始点及び終了点に相対高さ0の相対高付与点が挿入される(図24(c)参照)。この相対高付与点は、切り取り区間が地表を掘削して設置されている場合等において、道路の高さ方向の変化の開始点・終了点として必要となるために挿入されたものである。従って、図24(c)のように、連続する3つの相対高付与点が同じ相対高さを有する場合であっても、中間の相対高付与点が切取区間の開始位置又は終了位置により発生したものであれば、当該中間の相対高付与点は削除しない(図24(d)参照)。
(5)非交差テーブル作成処理
非交差テーブル作成処理では、図葉内のリンクのうち、互いに立体交差しているリンクを探索し、その立体交差している点(以下「非交差点」という。)のテーブル(非交差テーブル)を生成する。
図25は、非交差テーブル作成処理を表すフローチャートである。
まず、ステップS61において、交差点間道路関連テーブル内のすべてのリンクに対して非交差テーブル作成処理が終了したかを判定する。未処理のリンクがあれば、そのリンク(以下、この処理説明において「処理対象リンク」という。)に関して次のステップS62の処理を実行する。すべてのリンクの処理が終了すると、ステップS65に移る。
ステップS62において、処理対象リンクの構造種別がトンネルか否かを判定する。‘トンネル’の場合はステップS61に戻り、それ以外の場合はステップS63に進む。これは、構造種別が‘トンネル’の場合、標高値の付与の仕方として特別な方法が採られるために、通常の非交差点とは区別して取り扱うためである。
ステップS63において、非交差点間道路関連テーブルの各“道路関連情報”を検索することにより、処理対象リンクとノード以外で交差(立体交差)するリンク(立体交差リンク)を検出する。立体交差リンクの検索は、まず、“道路関連情報”内の“存在領域”を参照し、処理対象リンクの存在領域と重なる存在領域を有するリンクを抽出する。そして、抽出されたリンクについて、各“構成点情報”を参照することによって、処理対象リンクと交差する立体交差リンクを検出する。
ステップS64において、立体交差リンクが検出された場合、処理対象リンクと立体交差リンクとの立体交差に関する情報を非交差テーブルに保存する。
図26は、非交差テーブルの構成を表した図である。非交差テーブルは、“非交差点レコード数(n7)”,及びn7個の“非交差点レコード”から構成される。「非交差点レコード数」は、非交差テーブル内の非交差点レコードの数である。「非交差点レコード」は、1つの非交差点に関する情報を格納するレコードである。
“非交差点レコード”は、“非交差点位置座標”,“高さレベル”,“リンクOID”,“相手リンクOID”,“非交差相対位置”,及び“相手高さレベル”からなる。「非交差点位置座標」は、非交差点の位置座標(経度,緯度)である。「高さレベル」は、立体交差する一方のリンク(処理対象リンク)の“高さレベル”であり、「リンクOID」はそのリンクのOIDである。尚、“高さレベル”には、交差点間道路関連テーブル(図16参照)内の処理対象リンクに対応する“道路関連情報”の“高さレベル”の値が保存される。
また、「相手リンクOID」は、前記処理対象リンクに立体交差する他方のリンク(立体交差リンク)のOIDであり、「非交差相対位置」は当該処理対象リンクに対する立体交差リンクの相対位置である。“非交差相対位置”は、立体交差リンクが処理対象リンクの上側の場合‘上側’,下側の場合は‘下側’の値に設定される。「相手高さレベル」は、立体交差リンクの“高さレベル”である。尚、“高さレベル”には、交差点間道路関連テーブル(図16参照)内の立体交差リンクに対応する“道路関連情報”の“高さレベル”の値が保存される。
図25に戻って、上記ステップS61〜S64までの操作が図葉内のすべてのリンクについて終了すると、次に、ステップS65において、非交差テーブル内の非交差点レコードを、“非交差位置点座標”を最優先キー,“高さレベル”を第2優先キーとして昇順でソートし、非交差テーブル作成処理を終了する。
(6)非交差地点相対高さ設定処理
非交差地点相対高さ設定処理では、非交差点における複数のリンクの相対高さを設定する処理を行う。非交差地点相対高さ設定は、次のように行われる。
(a)非交差テーブルより、地点ごとに最も高さレベルが低い非交差点(以下「最下位非交差点」という。)の構造種別で相対高さの基準値を決定する。
ここで、各非交差点の上下関係は、“高さレベル”によって判断することができる。従って、この高さレベルを比較することによって各地点の最下位非交差点を見つけることができる。非交差テーブル内の各非交差点レコードは、上述のソート処理により、非交差点位置座標が同じものが並ぶように格納されており、また、非交差点位置座標が同じ非交差点レコードの並び(以下、この“非交差点位置座標”の値が同じ処理対象レコードの集合を処理対象レコードの「クラスタ」という。)の中では、高さレベルが低いものから順に並べられた状態で格納された状態にある。従って、地点ごとの最下位非交差点は、クラスタの先頭にある非交差点レコード(以下「クラスタ先頭レコード」という。)に対応する。
例えば、図28(a)のように、最下位非交差点におけるリンク(道路)の構造種別が‘高架’,‘盛土’,高架に接続する‘橋’のいずれでもない場合、最下位非交差点の相対高さは0に設定され、これが基準値となる。また、最下位非交差点におけるリンク(道路)の構造種別が‘高架’,‘盛土’,高架に接続する‘橋’のいずれかの場合、最下位非交差点の相対高さは1に設定され、これが基準値となる。
(b)非交差テーブルより、地点ごとに地表の要素の有無により相対高さの基準値を修正する。
例えば、図28(c)のように、最下位非交差点のリンクの構造種別が‘切取’の場合において、その地点の最下位非交差点以外の非交差点のリンクの一つが地表にある場合、実際の道路構造は図29(a)のように、最下位非交差点のあるリンクが地下に潜って立体交差した状態にあると考えられる。従って、最下位非交差点の相対高さは−1に修正され、これが基準値となる。
一方、図28(d)のように、最下位非交差点のリンクの構造種別が‘切取’の場合において、その地点の最下位非交差点以外の非交差点のリンクの中に地表にあるものがない場合、すなわち、その地点における高さレベルが2番目に低い非交差点のリンクの構造種別が‘盛土’,‘高架’,又は‘橋’の場合、実際の道路構造は図29(b)のように、高さレベルが2番目に低い非交差点のリンクが、最下位のリンクの上を空中で跨いで立体交差した状態にあると考えられる。従って、この場合には最下位非交差点の相対高さは0とされる。
(c)非交差テーブルより、地点ごとに最も高さレベルが低い非交差点の相対高さを基準値とし、それ以外の非交差点については、高さレベルの低いものから順に基準値に1ずつ加算しながら相対高さを設定する。
例えば、図28(a)〜(d)に示したように、最下位の非交差点の相対高さが基準値として決まると、同地点において高さレベルが2番目に低い非交差点の相対高さは基準値に1を加えたもの,同地点において高さレベルが3番目に低い非交差点の相対高さは基準値に2を加えたもの,…のように順次決定される。
図27は、以上のような非交差地点相対高さ設定処理をまとめてフローチャートに表したものである。
まず、ステップS71において、非交差テーブル内のすべての非交差点レコードに対して処理が終了したかを判定する。未処理の非交差点レコードがあれば、その非交差点レコード(以下、この処理説明において「処理対象レコード」という。)に関して次のステップS72〜S75の処理を実行する。すべての非交差点レコードの処理が終了すると、非交差地点相対高さ設定処理を終了する。
ステップS72において、処理対象レコードが最初に読み出されたレコード(テーブル先頭レコード)又は前回読み出されたレコードと“非交差点位置座標”の値が異なるレコード(クラスタ先頭レコード)か否かを判定する。テーブル先頭レコード又はクラスタ先頭レコードの場合には、ステップS73に移行し、それ以外の場合にはステップS74に移行する。
ステップS73において、処理対象レコードがテーブル先頭レコード又はクラスタ先頭レコードの場合、当該処理対象レコードに対応する非交差点の相対高さを、上記(a),(b)の規則に従って決定する。また、その決定された相対高さを、最も下位の相対高さとして設定する。そして、ステップS75に移行する。
ステップS74において、処理対象レコードがテーブル先頭レコード及びクラスタ先頭レコード以外の場合、先に処理した非交差点レコードの相対高さに1を加算した値を、当該処理対象レコードに対応する非交差点の相対高さに決定する。そして、ステップS75に移行する。
ステップS75において、当該処理対象レコードの“リンクOID”で指定されるリンク(以下、この処理説明において「処理対象リンク」という。)を交差点間道路関連テーブル(図16参照)から検索する。そして、交差点間道路関連テーブル内の処理対象リンクに対応する“道路関連情報”の“相対高付与点数”に1を加算するとともに、処理対象レコードに対応する非交差点を相対高付与点として、“相対高さ情報”のリストに追加する。この場合、“相対高付与点位置”は当該処理対象レコードの“非交差点位置座標”が設定される。“相対高さ”は前記ステップS73又はS74で決定された相対高さが設定される。“立体交差フラグ”には‘1’が設定される。“構造種別コード”には、当該非交差点における処理対象リンクの“構造種別コード”が設定される。また、“メッシュ内フラグ”には、当該非交差点が図葉内にある場合には‘1’が、図葉外の場合には‘0’が設定される。
尚、上述のように、非交差地点相対高さ設定処理においては、各地点における非交差点の高さレベルを、各非交差点が属するリンクの“道路関連情報”から取得し、同地点における非交差点の上下関係が判定される。しかしながら、二次元地図情報においてリンクの高さレベルが設定されていないなどの理由により、非交差点における高さレベルが取得できない場合もある。かかる場合、次のようにして非交差地点の高さレベルを発生させる。
まず、或る地点においてリンクαとリンクβとが立体交差しているとし、リンクαについては高さレベルが取得できたが、リンクβについては高さレベルが取得できなかったと仮定する。この場合、各リンクの非交差点における構造種別を、図30の上下関係判定表に照らすことによってリンクα,βの上下関係を取得する。
図30の上下関係判定表において、α=βの場合には、リンクβの高さレベルをリンクαの高さレベルに設定する。α<βの場合には、リンクβの高さレベルをリンクαの高さレベルに適当な正値(例えば10)を加えた値に設定する。α>βの場合には、リンクβの高さレベルをリンクαの高さレベルから適当な正値(例えば10)を引いた値に設定する。また、WARNの場合、合理的に高さレベルを定めることができないので、リンクβの高さレベルを0に設定するとともに、ワーニングメッセージを出力し、ユーザーによる高さレベルの入力を促す。
一方、両方のリンクの高さレベルが取得できなかった場合には、一方をリンクα,他方をリンクβとして、両方の高さレベルを0に設定し、上記と同様に処理を行う。
以上の操作によって、各非交差点の高さレベルを決定し、相対高さを設定することができる。
(7)道路内相対高さ補正処理
道路内相対高さ補正処理では、図葉内の各リンクにおいて、非交差点の相対高さの設定を行った結果、不自然な相対高さとなって相対高付与点の相対高さを補正する。
例えば、上記非交差地点相対高さ設定処理の結果、図32(a),(c)に示したような状態に相対高さが設定される場合が生じる。
図32(a)は場合、リンクAに対してリンクB,C,Dが立体交差している場合を表している。リンクC以外はすべて地表より高い位置にある(すなわち、構造種別が‘高架’,‘盛土’,‘橋’のいずれか)。リンクAとリンクBとが立体交差する地点におけるリンクA,B上の相対高付与点を、それぞれa1,b1とする。リンクAとリンクCとが立体交差する地点におけるリンクA,C上の相対高付与点を、それぞれa2,c2とする。リンクAとリンクDとが立体交差する地点におけるリンクA,D上の相対高付与点を、それぞれa3,d3とする。リンクA上では、相対高付与点a1,a2,a3は、この順序で隣り合って並んでいるものとする。
この場合、上記非交差地点相対高さ設定処理の結果、相対高付与点b1には相対高さ‘1’,相対高付与点a1には相対高さ‘2’が設定される。相対高付与点c2には相対高さ‘0’,相対高付与点a2には相対高さ‘1’が設定される。相対高付与点d3には相対高さ‘1’,相対高付与点a3には相対高さ‘2’が設定される。
リンクAに着目すると、高架区間の中央位置(相対高付与点a2)において凹みがある道路形状に設定されている。しかしながら、一般の道路では、特段の事情がない限りは、このように上下に波打つ高架に設計されることはなく、図32(b)のように高架区間の高さは全体に亘ってほぼ一定の高さとなるように設計されている。ただし、相対高付与点a2の上にさらに別のリンクが通っている場合には、高架区間の中央に凹部ができる場合もあり得ると考えられる。
そこで、図32(a)のように、同一リンクにおいて連続する3つの相対高付与点a1,a2,a3が地表に対して上方向にあり、これらのうち中央の相対高付与点a2の相対高さが、両端の相対高付与点a1,a3の相対高さよりも低く、且つ、中央の相対高付与点a2が、当該相対高付与点a2と同地点に設定されたすべての相対高付与点{c2}の相対高さよりも高い場合、中央の相対高付与点a2の相対高さを、前後の相対高付与点a1,a3の相対高さに合わせてリンクAが平滑化するように修正する。この場合、前後の相対高付与点a1,a3の相対高さのいずれかに合わせればよいが、本実施例1では、できるだけ高架の高さは低い方がより現実に近いであろうと予想されるため、中央の相対高付与点a2の相対高さを、前後の相対高付与点a1,a3の相対高さの低い方の値に修正することとする。
一方、図32(c)も、リンクAに対してリンクB,C,Dが立体交差している場合を表している。この場合、リンクCは地表より高い位置にある(すなわち、構造種別が‘高架’,‘盛土’,‘橋’のいずれか)。また、リンクC,Bは地表にある。また、リンクAの構造種別は‘切取’であるとし、高さレベルはリンクB,C,Dよりも小さいものとする。リンクAとリンクBとが立体交差する地点におけるリンクA,B上の相対高付与点を、それぞれa1,b1とする。リンクAとリンクCとが立体交差する地点におけるリンクA,C上の相対高付与点を、それぞれa2,c2とする。リンクAとリンクDとが立体交差する地点におけるリンクA,D上の相対高付与点を、それぞれa3,d3とする。リンクA上では、相対高付与点a1,a2,a3は、この順序で隣り合って並んでいるものとする。
この場合、上記非交差地点相対高さ設定処理の結果、相対高付与点b1には相対高さ‘0’,相対高付与点a1には相対高さ‘−1’が設定される。相対高付与点c2には相対高さ‘1’,相対高付与点a2には相対高さ‘0’が設定される。相対高付与点d3には相対高さ‘0’,相対高付与点a3には相対高さ‘−1’が設定される。
リンクAに着目すると、切取区間の中央位置(相対高付与点a2)において凸出がある道路形状に設定されている。しかしながら、一般の道路では、特段の事情がない限りは、このように上下に波打つ高架に設計されることはなく、図32(d)のように切取区間の高さは全体に亘ってほぼ一定の高さとなるように設計されている。ただし、相対高付与点a2の下にさらに別のリンクが通っている場合には、切取区間の中央に凸部ができる場合もあり得ると考えられる。
そこで、図32(c)のように、同一リンクにおいて連続する3つの相対高付与点a1,a2,a3が地表に対して下方向にあり、これらのうち中央の相対高付与点a2の相対高さが、両端の相対高付与点a1,a3の相対高さよりも高く、且つ、中央の相対高付与点a2が、当該相対高付与点a2と同地点に設定されたすべての相対高付与点{c2}の相対高さよりも低い場合、中央の相対高付与点a2の相対高さを、前後の相対高付与点a1,a3の相対高さに合わせてリンクAが平滑化するように修正する。この場合、前後の相対高付与点a1,a3の相対高さのいずれかに合わせればよいが、本実施例1では、できるだけ地下部分の深さは浅い方がより現実に近いであろうと予想されるため、中央の相対高付与点a2の相対高さを、前後の相対高付与点a1,a3の相対高さの高い方の値に修正することとする。
以上のような道路内相対高さ補正処理をまとめると次のようになる。図31は、道路内相対高さ補正処理を表すフローチャートである。
まず、ステップS81において、交差点間道路関係テーブル内のすべてのリンクに対して処理が終了したかを判定する。未処理のリンクがあれば、そのリンク(以下、この処理説明において「処理対象リンク」という。)に関して次のステップS82〜S86の処理を実行する。すべてのリンクの処理が終了すると、道路内相対高さ補正処理を終了する。
ステップS82において、リンク内の連続する3つの相対高付与点の組を抽出し、抽出した相対高付与点の相対高さが地表に対して上方向(中央の相対高さが0以上且つ両側の相対高さが1以上)か否かを判定する。上方向の場合、ステップS84に移行し、それ以外の場合にはステップS83に移行する。
ステップS83において、連続する3つの相対高付与点のうち中央の相対高付与点の相対高さが、両端の相対高付与点の相対高さよりも低く、且つ、中央の相対高付与点が、当該中央の相対高付与点と同地点に設定されたすべての相対高付与点(同地点の他のリンク上の相対高付与点)の相対高さよりも高い場合、中央の相対高付与点の相対高さを、前後の相対高付与点の相対高さのうちの低い方の値に修正する。そして、ステップS86に移行する。
一方、ステップS84においては、抽出した相対高付与点の相対高さが地表に対して下方向(中央の相対高さが0以下且つ両側の相対高さが−1以下)か否かを判定する。下方向の場合、ステップS85に移行し、それ以外の場合にはステップS86に移行する。
ステップS85において、抽出した3つの相対高付与点のうちの中央の相対高付与点の相対高さが、その前後の相対高付与点の高さよりも高く、且つ、中央の相対高付与点が、当該中央の相対高付与点と同地点に設定されたすべての相対高付与点(同地点の他のリンク上の相対高付与点)の相対高さよりも低い場合、中央の相対高付与点の相対高さを、前後の相対高付与点の相対高さのうちの高い方の値に修正する。そして、ステップS86に移行する。
ステップS86においては、処理対象リンク内の連続する3つの相対高付与点のすべての組み合わせについて上記ステップS82〜S85の処理が終了したか否かを判定する。終了していなければステップS82に戻って他の組み合わせの処理を行う。終了したならば、ステップS81に戻る。
(8)道路間相対高さ補正処理
上記道路内相対高さ補正処理では、同一リンク内で不自然な相対高さの設定がされている場合にそれを解消する補正処理を行ったが、道路間相対高さ補正処理では、ノードとそれに接続する2つのリンク間で相対高さの設定に不自然な箇所が生じている場合、その不自然さを解消すべく、相対高さの補正を行う。
道路間相対高さ補正処理の基本的な考え方は、上記道路内相対高さ補正処理の場合と同様である。
すなわち、図34(a)のように、二差路(接続道路数が2)のノードn0に接続する2本のリンクA,Bにおいて、ノードn0に隣接する相対高付与点(以下「隣接相対高付与点」という。)をa1,b1とする。ノードn0の相対高さが0以上であって、ノードn0の相対高さに対して、隣接相対高付与点a1,b1の相対高さが高い場合、ノードn0を介して接続するマルチリンク(A,B)は、ノードn0の部分において不自然に落ち込んだ形状となる。そこで、上記道路内相対高さ補正処理と同様、ノードn0の相対高さがその両側の隣接相対高付与点a1,b1の相対高さよりも低く、且つ、ノードn0が、当該ノードn0と同地点に設定されたすべての相対高付与点{c0}の相対高さよりも高い場合、ノードn0の相対高さを、両側の隣接相対高付与点a1,b1の相対高さに合わせてマルチリンク(A,B)が平滑化するように修正する。この場合、両側の隣接相対高付与点a1,b1の相対高さのいずれかに合わせればよいが、本実施例1では、できるだけ高架の高さは低い方がより現実に近いであろうと予想されるため、ノードn0の相対高さを、両側の相対高付与点a1,b1の相対高さのうち低い方の値に修正することとする(図34(b))。
また、図34(c)のように、二差路のノードn0に接続する2本のリンクA,Bにおいて、ノードn0に隣接相対高付与点をa1,b1とする。ノードn0の相対高さが0以下であって、ノードn0の相対高さに対して、隣接相対高付与点a1,b1の相対高さが低い場合、ノードn0を介して接続するマルチリンク(A,B)は、ノードn0の部分において不自然に凸出した形状となる。そこで、上記道路内相対高さ補正処理と同様、ノードn0の相対高さがその両側の隣接相対高付与点a1,b1の相対高さよりも高く、且つ、ノードn0が、当該ノードn0と同地点に設定されたすべての相対高付与点{c0}の相対高さよりも低い場合、ノードn0の相対高さを、両側の隣接相対高付与点a1,b1の相対高さに合わせてマルチリンク(A,B)が平滑化するように修正する。この場合、両側の隣接相対高付与点a1,b1の相対高さのいずれかに合わせればよいが、本実施例1では、できるだけ切取の深さは浅い方がより現実に近いであろうと予想されるため、ノードn0の相対高さを、両側の相対高付与点a1,b1の相対高さのうち高い方の値に修正することとする(図24(d))。
尚、道路間相対高さ補正処理では、さらに、図34(e)のような場合にも相対高さの補正を行う。図34(e)では、地表にある二差路のノードn0に対して、リンクA,Bが接続されており、リンクA,Bの構造種別が‘切取’であるとする。そして、一方のリンクB上のノードn0に隣接する隣接相対高付与点b1の相対高さ、ノードn0よりも低い値に設定されている。一方、リンクA側の相対高さは0に設定されている。かかる場合、リンクAは切取区間であるにも関わらずその構造種別が相対高さに反映されていない。そこで、ノードn0が地表にあり、接続する2つのリンクの構造種別が‘切取’であって、当該ノードn0に隣接する2つの相対高付与点a1,b1のうちの一方の相対高さのみが地表よりも低い場合には、当該ノードn0の相対高さは、地表よりも低い隣接する相対高付与点b1の相対高さに修正する。これにより、図34(f)に示したように、リンクAの構造種別を相対高さに反映させることができる。
以上の道路間相対高さ補正処理をまとめると次のようになる。図33は、道路間相対高さ補正処理を表すフローチャートである。
まず、ステップS91において、交差点関連テーブル内のすべてのノードに対して処理が終了したかを判定する。未処理のノードがあれば、そのノード(以下、この処理説明において「処理対象ノード」という。)に関して次のステップS92〜S96の処理を実行する。すべてのノードの処理が終了すると、道路間相対高さ補正処理を終了する。
ステップS92において、交差点関連テーブルの処理対象ノードに対する“交差点関連情報”の“接続道路数”を参照し、当該処理対象ノードが二差路か否かを判定する。二差路でない場合には、ステップS91に戻る。二差路の場合には、ステップS93に移行する。
ステップS93において、処理対象ノードの相対高さ及び処理対象ノードの両側の隣接する相対高付与点の相対高さが、地表に対して上方向(処理対象ノードの相対高さが0以上且つ両側の隣接する相対高付与点の相対高さが1以上)であるか否かを判定する。上方向の場合はステップS94に移行し、それ以外の場合はステップS95に移行する。
ステップS94において、処理対象ノードの相対高さが、その両側の相対高付与点の相対高さよりも低く、且つ、処理対象ノードが、当該処理対象ノードと同地点に設定されたすべての相対高付与点(同地点の他のリンク上の相対高付与点)の相対高さよりも高い場合、当該処理対象ノードの相対高さを、その両側の相対高付与点の相対高さのうちの低い方の値に修正する。そして、ステップS91に戻る。
一方、ステップS95においては、当該処理対象ノード及び処理対象ノードの両側の隣接する相対高付与点の相対高さが地表に対して下方向(処理対象ノードの相対高さが0以下且つ両側の隣接する相対高付与点の相対高さが−1以下)か否かを判定する。下方向の場合、ステップS96に移行し、それ以外の場合にはステップS91に戻る。
ステップS96において、当該処理対象ノード及び処理対象ノードの両側の隣接する相対高付与点のうちの当該処理対象ノードの相対高さが、その両側の相対高付与点の相対高さよりも高く、且つ、処理対象ノードが、当該処理対象ノードと同地点に設定されたすべての相対高付与点(同地点の他のリンク上の相対高付与点)の相対高さよりも低い場合、処理対象ノードの相対高さを、その両側の相対高付与点の相対高さのうちの高い方の値に修正する。但し、当該処理対象ノードが地表にあり、接続する2つのリンクの構造種別が‘切取’であって、当該処理対象ノードに隣接する2つの相対高付与点のうちの一方の相対高さのみが地表よりも低い場合には、当該処理対象ノードの相対高さは、地表よりも低い隣接する相対高付与点の相対高さに修正される。以上の修正処理の後、ステップS91に戻る。
(9)標高点取り込み処理
標高点取り込み処理では、標高点テーブル内の各標高点の標高値を、リンク上の標高点の標高値として取り込む処理を行う。標高点は、メッシュ標高点テーブルで与えられる標高値や相対高さから推定される標高に比べて一般に精度がよいので、後の三次元化処理において優先的に標高値データとして利用される。
標高点は点でありリンクは線である。従って、リンク上にちょうど標高点が載っている場合は希である。従って、標高点の情報を道路NWの三次元化に取り入れるためには、標高点の情報を、その標高点の近傍のリンク上の点に取り入れる必要がある。これを標高点の取り込みという。以下、標高点取り込み処理の具体的内容を説明する。
図35は、標高点取り込み処理を表すフローチャートである。
まず、ステップS101において、標高点テーブル内のすべての標高点レコードに対して処理が終了したかを判定する。未処理の標高点レコードがあれば、その標高点レコード(以下、この処理説明において「処理対象レコード」という。)に関して次のステップS102〜S104の処理を実行する。すべての標高点レコードの処理が終了すると、標高点取り込み処理を終了する。
ステップS102において、処理対象レコードの“標高点座標”を参照し、処理対象レコードに対応する標高点(以下、この処理説明において「処理対象標高点」という。)の座標(x0,y0)を取得する。そして、交差点間道路関連テーブル内の各“道路関連情報”の“存在領域”を検査することによって、処理対象標高点の近傍のリンクを抽出する。
ここで、抽出方法としては、例えば、各“道路関連情報”の“存在領域”からリンクの存在領域の左下座標(x1,y1)及び右上座標(x2,y2)を取得する。この領域を、所定の上下線分離道路探索距離L2だけ広げ、探索領域の左下座標(x1−L2,y1−L2)及び右上座標(x2+L2,y2+L2)を求める。そして、処理対象標高点の座標(x0,y0)がこの領域に入っている場合(x1−L2≦x0≦x2+L2 ∧ y1−L2≦y0≦y2+L2)には、近傍のリンクとして抽出する。尚、上下線分離道路探索距離L2については、後で説明する。
抽出したリンクについては、その“道路関連情報”内の“オブジェクトID”を取得し、これを探索チェック用テーブルに登録する。
ステップS103において、探索チェック用テーブルに登録されたリンクの中から、後述の条件に合うリンクを探索し、発見されたリンク上における標高点(以下「道路設定標高点」という。)を設定する位置を計算する。
最後に、ステップS104において、発見したリンクに対応する交差点間道路関連テーブル内の“道路関連情報”に、当該処理対象標高点の情報を追加して保存し、ステップS101に戻る。その結果、交差点間道路関連テーブルは図36のような構成となる。図36の交差点間道路関連テーブルは、図16の交差点関連テーブルの“道路関連情報”に“標高点数(wi)”及びwi個の“標高点情報”が追加された構成からなる。「標高点数」は、そのリンクに追加された道路設定標高点の数である。“標高点情報”は、“標高点位置”,“標高値”,及び“地物区分”から構成される。「標高点位置」は、リンク上における当該道路設定標高点の位置であり、当該リンクの長さを1(100%)として、当該リンクの始点から当該道路設定標高点までの長さ(%)で表される。“標高値”,及び“地物区分”は、標高点ファイルに記憶された“標高値”,及び“地物区分”をコピーしたものである。
最後に、ステップS103におけるリンクの探索方法について説明する。標高点は、設置される場所によって、地表標高点及び高架標高点に分類される。「地表標高点」は地表に設置された標高点をいい、「高架標高点」は橋上や高架上に設置された標高点をいう。
標高点をリンクに対応づける場合、直近道路探索距離と上下線分離道路探索距離との2つのパラメータを用いる。「直近道路探索距離」とは、上下線分離のない道路に標高点を対応づける場合の標高点と道路との離間距離の最大許容値である。「上下線分離道路探索距離」とは、上下線分離道路に標高点を対応づける場合の、標高点と道路との離間距離の最大許容値である。これらの探索距離は、標高点座標の誤差等を考慮してユーザーにより適宜決められる。以下、直近道路探索距離をL1、上下線分離道路探索距離をL2と記す。
また各リンクは“道路種別コード”,“リンク種別コード”を参照して、上下分類道路,非分離道路,地表道路,及び高架道路に分類される。
〔リンク探索条件〕
(a)処理対象標高点が地表標高点であって、処理対象標高点から直近道路探索距離L1以内に道路がなく、且つ上下線分離道路探索距離L2以内に上下線分離道路が1つ存在する場合、当該上下線分離道路上の処理対象標高点からの最端点に道路設定標高点を設定する(図37(a)参照)。
(b)処理対象標高点が地表標高点であって、直近道路探索距離L1以内に道路がなく、且つ上下線分離道路探索距離L2以内に上下線分離道路が2つ以上ある場合、まず、最も近い上下線分離道路Aに道路設定標高点を設定する(図37(b−1)参照)。そして、さらに上下線分離道路Aと同じ道路種別で次に近い上下線分離道路Bにも道路設定標高点を設定する(図37(b−2)参照)。例えば、上下線分離道路Aとして‘国道’が見つかった場合、それと同じ種別(‘国道’)の相手の上下線分離道路Bを探し、相手の道路にも道路設定標高点を設定する。
(c)処理対象標高点が地表標高点であって、直近道路探索距離L1以内に非分離道路が1つ見つかった場合、その道路に道路設定標高点を設定する(図37(c)参照)。
(d−1)処理対象標高点が地上標高点であって、直近道路探索距離L1以内に道路が2つ以上見つかった場合、高さレベルが最も高い道路に対し、道路設定標高点を設定する(図37(d−1)参照)。
(d−2)処理対象標高点が高架標高点であって、(d−1)で設定した道路が上下線分離道路のとき、直近道路探索距離L1以上,上下線分離道路探索距離L2以内に上下線分離道路が1つ以上ある場合、道路種別が同じで最も近い道路に道路設定標高点を設定する(図38(d−2)参照)。
(e−1)処理対象標高点が地表標高点であって、直近道路探索距離L1以内に上下線分離道路Aが1つある場合、その道路に道路設定標高点を設定する(図38(e−1)参照)。
(e−2)処理対象標高点が地表標高点であって、(e−1)の場合で、且つ直近道路探索距離L1以上,上下線分離道路探索距離L2以内に上下線分離道路Bが1つある場合、その道路にも道路設定標高点を設定する(図38(e−2)参照)。
(e−3)処理対象標高点が地表標高点であって、(e−1)の場合で、且つ直近道路探索距離L1以上,上下線分離道路探索距離L2以内に上下線分離道路が2つ以上ある場合、上下線分離道路Aと道路種別が同じで最も近い道路にも道路設定標高点を設定する(図38(e−3)参照)。
以上のリンク検索条件による道路標高点の設定事例を図39に示した。
(10)3D空間テーブル及び3D属性テーブルへの書き出し処理
以上のように、ステップS11〜S18(図14参照)の処理の結果として、図7の交差点関連テーブルと、図36の交差点間道路関連テーブルが作成される。図14のステップS19及びS20では、これを図11に示した3D空間テーブル及び図12に示した3D属性テーブルに書き出して、中間テーブル記憶手段17に保存する。
3D空間テーブル内の“3D空間レコード”は、交差点間道路関連テーブル内の“道路関連情報”と一対一に対応している。“3D空間レコード”の“オブジェクトID”には、“道路関連情報”の“オブジェクトID”が、“3D空間レコード”の“カテゴリ”には、“道路関連情報”の“カテゴリ”が、“3D空間レコード”の“構成点数”には、“道路関連情報”の“構成点数”が、“3D空間レコード”の“構成点情報”には、“道路関連情報”の“構成点位置情報”が、それぞれ格納される。
尚、3D空間テーブルの各“構成点情報”は、“緯度”,“経度”のほかに、“高度”及び“標高”が追加されている。「標高」は、構成点情報が表す構成点の位置における地表の標高である。「高度」は、構成点情報が表す構成点の標高に地表から道路までの高さを加えた値である。道路ネットワーク抽出処理が終了した時点では、“高度”及び“標高”はまだ定まっていないため、ここには0が設定される。
3D属性テーブル内の“道路属性レコード”は、交差点間道路関連テーブル内の“道路関連情報”と一対一に対応している。“道路属性レコード”の“オブジェクトID”には、“道路関連情報”の“オブジェクトID”が、“道路属性レコード”の“始点オブジェクトID”には、当該リンクの始点のノードのオブジェクトIDが、“道路属性レコード”の“終点オブジェクトID”には、当該リンクの終点のノードのオブジェクトIDが、“道路属性レコード”の“相対高さ情報数”には、“道路関連情報”の“相対高付与点数”が、“道路属性レコード”の“構造種別数”には、“道路関連情報”の“構造種別数”が、“道路属性レコード”の“相対高さ情報”には、“道路関連情報”の“相対高さ情報”が、“道路属性レコード”の“構造種別情報”には、“道路関連情報”の“構造種別情報”が、それぞれ格納される。
3D属性テーブル内の“接続位相レコード”は、交差点関連テーブル内の“交差点関連情報”と一対一に対応している。“接続位相レコード”の“ノード位置情報”には“交差点関連情報”の“ノード位置情報”が、“接続位相レコード”の“オブジェクトID”には当該ノードのOIDが、“接続位相レコード”の“接続道路数”には“交差点関連情報”の“接続道路数”が、“接続位相レコード”の“接続道路情報”には“交差点関連情報”の“接続道路情報”が、それぞれ格納される。
〔5〕走行軌跡関連付け処理
走行軌跡関連付け処理は、図2の走行軌跡関連付手段16により実行される処理である。この走行軌跡関連付け処理においては、図9の走行軌跡ファイルに格納された走行軌跡データを、図6の交差点間道路関連テーブルに格納された各リンクの情報に関連づける処理である。
図40は走行軌跡関連付け処理を表すフローチャートである。
ステップS111において、走行軌跡関連付手段16は、二次元地図記憶手段12から二次元地図データ(交差点間道路関連テーブル(図6参照)及び交差点関連テーブル(図7参照))を読み込む。
ステップS112において、走行軌跡関連付手段16は、読み込んだ二次元地図データに基づいて、ディスプレイ5に二次元地図を表示する。
次に、ステップS113において、走行軌跡関連付手段16は、走行軌跡データ記憶手段13から走行軌跡テーブル(図9参照)を読み込む。
ステップS114において、走行軌跡データをディスプレイ5に表示された二次元地図に重ねて表示する。
ステップS115において、入力デバイス4から入力されるユーザーによる指示に従って、走行軌跡データに関連付けられる道路NWの範囲(以下「道路測位データ」という。)を特定する。これは、マウス等の入力デバイス4を用いて、ディスプレイ5上に表示された二次元地図上で範囲を指定することによって行われる。
ステップS116において、走行軌跡関連付手段16は、道路測位データに従って、走行軌跡データと道路NWとの関連付けを自動的に行う。これは、道路NWのノード及びリンク内の各構成点と、それらに最も近い走行軌跡データの各座標とを対応させることによって関連付けが行われる。
ステップS117において、走行軌跡関連付手段16は、関連付けが行われた走行軌跡をディスプレイ5上に表示された道路NWに重ねて表示することにより、ユーザーによる関連付けの確認が行い得るようにする。
そして、ステップS118において、ユーザーに対して、確認できたか否かの入力を促す表示を行う。ユーザーから確認NGの入力がされた場合、ステップS119に移行し、確認OKの指示が入力された場合、ステップS121へ移行する。
ステップS119において、入力デバイス4から入力されるユーザーによる指示に従って、走行軌跡データと関連付けられる道路NWの範囲(道路測位データ)の指定の訂正を行う。
ステップS120において、走行軌跡関連付手段16は、道路測位データに従って、走行軌跡データと道路NWとの関連付けを自動的に行い、ステップS117に戻る。
一方、ステップS118で確認OKが入力された場合、ステップS121において、道路NWと走行軌跡データとの関連付けに関する情報が、走行軌跡記憶手段18に走行軌跡関連テーブルとして保存され、走行軌跡関連付け処理が終了する。
図41は、上記走行軌跡関連付け処理の結果作成された走行軌跡関連テーブルの構成を表す。走行軌跡関連テーブルは、“走行軌跡関連レコード数(n8)”と、n8個の“走行軌跡関連レコード”から構成される。
各“走行軌跡関連レコード”は、“関連リンク数(pi)”,pi個の“関連リンクOID”,“関連軌跡テーブルID”,“関連軌跡レコードID”,“範囲開始点GPS時刻”,及び“範囲終了点GPS時刻”から構成されている。
“関連リンク数”及び“関連リンクOID”は、関連付けを行うリンクに関する情報である。「関連リンク数」は、走行軌跡データとの関連付けが行われるリンク数である。一般に、走行軌跡データは、連続する複数のリンクに亘るため、これら連続する複数のリンク(マルチリンク)を指定する必要がある。“関連リンク数”はそのマルチリンクに含まれるリンク数である。「関連リンクOID」は、マルチリンク内の各リンクのOIDである。
一方、“関連軌跡テーブルID”,“関連軌跡レコードID”,“範囲開始点GPS時刻”,及び“範囲終了点GPS時刻”は、関連付けが行われる走行軌跡データを指定する情報である。「関連軌跡テーブルID」及び「関連軌跡レコードID」は、走行軌跡テーブル内の走行軌跡データの格納場所を指定するIDである。この関連軌跡テーブルID及び関連軌跡レコードIDにより、一つの軌跡レコードが特定される。「範囲開始点GPS時刻」及び「範囲終了点GPS時刻」は、軌跡レコード内の計測点位置情報のうち、上記マルチリンクとの関連付けがされるデータの範囲を指定するものである。“GPS時刻”が“範囲開始点GPS時刻”である“計測点位置情報”から、“GPS時刻”が“範囲終了点GPS時刻”である“計測点位置情報”までのデータが、上記マルチリンクと関連づけられる。
〔6〕道路ネットワーク三次元化処理
次に、道路ネットワーク三次元化処理の内容について説明する。道路ネットワーク三次元化処理は、図2の三次元化処理手段19により実行される。道路ネットワーク三次元化処理では、道路ネットワーク抽出処理により作成された3D空間テーブル及び3D属性テーブルに対し情報の追加・修正を行うことによって三次元地図情報を完成させる。完成した三次元地図情報は、三次元地図記憶手段20に格納される。
〔6−1〕イベント処理
図42は、三次元化処理手段19によるイベント処理を表すフローチャートである。本実施例1の三次元化処理手段19は、対話処理により、複数の図葉からなる中間テーブル記憶手段17に記憶された地図データの一覧からユーザーが図葉を選択し、選択された図葉に対して3D空間テーブル及び3D属性テーブルの修正・追加を行い、三次元地図データを完成させるという作業を繰り返す。
まず、ステップS131において、三次元化処理手段19は、中間テーブル記憶手段17に記憶されている図葉の一覧をディスプレイ5に表示することにより、図葉選択メニューを表示する。この場合、図葉の名称をリスト形式に表示してもよいし、図葉の一覧を広域地図上の経緯メッシュとしてグラフィックスで表示してもよい。
次に、ステップS132において、三次元化処理手段19は、入力デバイス4からユーザーによる入力イベントが発生するのを待つ。この状態において、ユーザーは、キーボードやマウス等の入力デバイス4から、入力イベントとして各図葉の選択指示又は終了指示を入力することができる。
ユーザーによる入力デバイス4からの入力イベントが検出されると、三次元化処理手段19は、ステップS133において、その入力イベントが終了指示か否かを判定する。終了指示であれば、三次元化処理手段19は、終了処理を行って動作を終了する。
一方、入力イベントが終了指示でない場合、三次元化処理手段19は、ステップS134において、入力イベントが処理対象とする図葉(以下「処理対象図」という。)の選択指示かそれ以外かを判定する。後者の場合は、再びステップS131に戻る。
前者の場合、三次元化処理手段19は、ステップS135において、選択された処理対象図に対して、以下に説明する道路ネットワーク三次元化処理を実行し、ステップS131に戻る。
〔6−2〕道路ネットワーク三次元化処理
(1)処理全体の流れ
三次元化処理手段19による道路ネットワーク三次元化処理の全体的な流れを図43に示す。
まず、ステップS141において、相対高さ整合処理を行う。相対高さ整合処理においては、図葉の境界線上でのリンクの相対高さの合成・整合を行う。これにより、図葉間における相対高さの不整合の調整が図られる。
ステップS142において、三次元化処理を行う。三次元化処理においては、3D空間テーブルの各“構成点情報”に標高及び高度を追加する処理が行われる。この際、標高を求めるための元情報として、DEMデータ記憶手段14に格納されたDEMデータ(メッシュ標高点テーブル),各3D属性テーブル内の各“相対高さ情報”が用いられる。まず、DEMデータから、各構成点の地点の標高が求められ、次に、“相対高さ情報”から各構成点の地表からの高度が決定される。
ステップS143において、構造種別設定処理を行う。ここでは、各リンクの構造種別に特化した処理が行われる。本実施例では、リンクの構造種別が‘トンネル’の場合に対して、特別な処理が行われる。
ステップS144において、道路線調整処理を行う。ここでは、以上の処理の結果、道路線に不自然な凹凸が生じたり、不自然な急勾配が生じる等した場合に、道路線を滑らかにする。また、その結果、立体交差するリンク間隔が異常に接近したり上下関係が逆転した場合にその補正を行う。また、道路標高点が設定されている場合、その標高点の標高情報を考慮して、リンクの高度や標高の補正を行う。
次に、ステップS145において、後処理を行う。ここでは、道路線調整処理の調整により補正できなかった急勾配等の補正を行う。
最後に、ステップS146において、走行軌跡データの取り込み処理を行う。ここでは、走行軌跡データにより、各リンクの高度補正が行われる。そして、中間テーブル記憶手段17内の処理対象図の三次元化された3D空間テーブル及び3D属性テーブルを三次元地図記憶手段20に保存して、道路ネットワーク三次元化処理を終了する。
(2)相対高さ整合処理
相対高さ整合処理においては、図葉の境界線上でのリンクの相対高さの合成・整合を行う。相対高さ整合処理では、図枠上相対高さ整合処理と、相対高さ整合処理の2つの処理が行われる。
図枠上相対高さ整合処理では、リンクの端点が図葉の境界線上に位置する場合、隣接する図葉間でのリンクの相対高さの整合を図る。図46に、図枠上相対高さ合成処理の様子を示す。上述の道路ネットワーク抽出処理では、同じ図葉内における相対高さの整合は行っているが、異なる図葉間では行われていないため、図46(a)に示したように、同地点のリンク端点に異なる相対高さが設定されている場合が起こる。そこで、図枠上相対高さ合成処理を行うことにより、図46(b)のように、同地点のリンク端点の相対高さの整合が図られる。
注目する図葉を通るリンクが、当該注目図葉に隣接する又はさらに隣の図葉まで延びて存在している場合(例えば、図47(a)参照)、それぞれの図葉内に当該リンクに対する“相対高さ情報”が存在する。しかしながら、上記道路ネットワーク抽出処理では、各図葉では独立に相対高さの設定がなされているため、同じリンクに対する“相対高さ情報”であるにもかかわらず、図葉間で異なる相対高さが設定されている場合がある。そこで、相対高さ整合処理では、当該リンクが通る図葉間で当該リンクの“相対高さ情報”の融合が図られる。
以下、相対高さ整合処理の詳細を説明する。図44は、相対高さ整合処理を表すフローチャートである。
ます、ステップS151において、三次元化処理手段19は、上記イベント処理において選択された処理対象図のデータ(3D属性ファイル及び3D空間ファイル)を中間テーブル記憶手段17から読み出す。このとき、三次元化処理手段19は、内部変数として、読み出した処理対象図のすべてのリンクに対して一対一に対応する処理済みフラグを生成し、すべて0(未処理)に初期化する。ここで、「処理済みフラグ」とは、対応するリンクについて相対高さ整合処理が終了しているかを表すフラグである。
次に、ステップS152において、処理対象図に隣接する8つの隣接図のデータを、同じく中間テーブル記憶手段17から読み出す。ここで、隣接する8つの隣接図とは、図44の〔備考1〕に示したとおり、処理対象図に対して上,下,左,右,右上,右下,左上,左下にそれぞれ隣接する図葉である。ここで、地図上の北を「上」とした。
次に、ステップS153において、当該図葉内の1つのリンクを選択する。そして、ステップS154において、処理済みフラグを参照することにより、選択したリンクはすでに相対高さ整合処理がなされているか否かを判定する。処理済みフラグが1(処理済)の場合は、次のリンクの処理に移るべく、ステップS160に移行する。一方、処理済みフラグが0(未処理)の場合は、処理済みフラグを1(処理済)にするとともに、ステップS155に移行する。
ステップS155では、3D空間テーブル内の選択されたリンク(以下、この処理説明内において「選択リンク」という。)に対する“3D空間レコード”の各“構成点情報”を参照し、当該選択リンクの道路線形態を判定する。ここで、「道路線形態」とは、当該選択リンクの図葉内への収まり具合を表し、‘形態1’〜‘形態4’の何れかとされる。
「形態1」は、図45(a)に示したように、リンクがすべて処理対象図の図葉の境界線よりも内側に存在している形態をいう。形態1のリンク形状を「自図葉内道路線」と呼ぶ。「形態2」は、図45(b)に示したように、リンクが複数の図葉に跨っている形態をいう。形態2のリンク形状を「図跨り道路線」と呼ぶ。「形態3」は、図45(c)に示したように、リンクが複数の図葉に跨っており、且つリンクの端点の少なくとも一つが処理対象図の図葉の境界線上に位置する形態をいう。形態3のリンク形状を「端点図枠上図跨り道路線」と呼ぶ。「形態4」は、図45(d)に示したように、リンクがすべて処理対象図の図葉内に存在し、且つリンクの端点の少なくとも一つが処理対象図の図葉の境界線上に位置する形態をいう。形態4のリンク形状を「端点図枠上道路線」と呼ぶ。
ステップS156,S157において、リンクの道路線形態を判定する。形態3,4の場合は以下の図枠上相対高さ合成処理(ステップS158),相対高さ整合処理(S159)を実行し、ステップS160に移行する。形態2の場合は、以下の相対高さ整合処理(ステップS159)のみを実行し、ステップS160に移行する。形態1の場合は、特に処理は行わず、ステップS160に移行する。
図46に示すように、ステップS158の図枠上相対高さ合成処理では、まず、選択リンクの端点(以下、この処理説明内において「対象端点」という。)a0が位置する図葉の境界線において処理対象図F0と隣接する8つの隣接図Fnを選択する。そして、処理対象図F0及び8つの隣接図Fnの3D空間ファイルを検索し、対象端点a0と同じ位置座標に端点を有するすべてのリンクを抽出する。次に、抽出された各リンクの端点のうち対象端点a0と同地点の端点{b1,…,bn}、及び対象端点a0の相対高さ{hr(b1),…,hr(bn),hr(a0)}を処理対象図及び隣接図の3D属性ファイルから取得する。そして、取得した相対高さのうち、絶対値が最大であるものを選択する。選択された相対高さをhrとする。最後に、抽出されたリンクの端点{b1,…,bn}及び選択リンクの対象端点a0の相対高さをすべてhrに更新する。これにより、図葉の境界線上におけるリンク端点の相対高さの整合が図られる。
ここで、相対高さの補正は、各端点の相対高さのうち絶対値が最大であるものを用いて行っているが、これは次のような理由による。上記道路ネットワーク抽出処理では、相対高さ生成処理(S11)において、最初に一律に各端点に相対高さ0が与えられている。従って、相対高さ0は、その端点に対して相対高さの補正がされていない場合が多い。それに対して、相対高さの絶対値が大きくなるほど、その端点に対して相対高さの補正が多く行われたと考えられる。従って、相対高さの絶対値が大きいほど、その相対高さの値にはそれなりの意味があると考えられることから、各端点に相対高さは絶対値が最大のものを用いて行うこととしたものである。
ステップS159の相対高さ整合処理では、まず、選択リンクが通るすべての図葉について、同じ選択リンクを表す“道路属性レコード”を3D属性テーブルから抽出する。
例えば、図47(b),(c)に示したように、選択リンクabが、図葉Aと図葉Bに跨って存在していたとする。図葉Aの3D属性テーブル内の“道路属性レコード”では、図47(b)のように“相対高さ情報”が設定されており、図葉Bの3D属性テーブル内の“道路属性レコード”では、図47(c)のように“相対高さ情報”が設定されている。このように、異なる図葉の3D属性テーブルでは、同一のリンクに対する“道路属性レコード”であっても“相対高さ情報”が異なる場合がある。
次に、各図葉について、“相対高さ情報”の集合のうち自図に属する相対高付与点の“相対高さ情報”のみを残し、他図に属する相対高付与点の“相対高さ情報”は捨てる。そして、各図葉で残された“相対高さ情報”の集合をつなぎ合わせて合成し、これを選択リンクの“相対高さ情報”の集合として、各図葉の“道路属性テーブル”に保存する。
例えば、図47(b)では、図葉Aの“道路属性レコード”においては、相対高付与点a,p1,p2が設定されている。これらの相対高付与点はすべて図葉Aに属すので残される。一方、図47(c)では、図葉Bの“道路属性レコード”においては、相対高付与点q1,q2,bが設定されている。これらの相対高付与点のうち、q1は図葉Bに属さないので捨てられ、q2,bは図葉Bに属すので残される。最後に、残された相対高付与点を合成することにより、リンクabの相対高付与点は図47(d)のように{a,p1,p2,q2,b}となり、図葉A,Bのリンクabにたいする“道路属性レコード”内の“相対高さ情報”は、これらの相対高付与点に対する“相対高さ情報”の集合によって更新される。
次に、ステップS160において、処理対象図内のすべてのリンクに対して、ステップS153〜S159の処理が終了したか否か判定する。未処理のリンクがあれば、ステップS153に戻り、すべて終了していれば、ステップS161に移行する。
最後に、ステップS161において、図葉の境界線上でのリンクの相対高さの合成・整合によって修正された処理対象図及び8つの隣接図の3D属性テーブルを、中間テーブル記憶手段17に保存して、相対高さ整合処理を終了する。
(3)三次元化処理
三次元化処理では、各図葉に含まれるすべてのリンク内のすべての構成点に対して、標高値と高度を計算する。以下、三次元化処理について詳細に説明する。図48は、三次元化処理を表すフローチャートである。
まず、ステップS171において、三次元化処理手段19は、上記イベント処理において選択された処理対象図のデータ(3D属性ファイル及び3D空間ファイル)を中間テーブル記憶手段17から読み出す。
次に、ステップS172において、処理対象図、及び処理対象図に隣接する8つの隣接図のDEMデータ(メッシュ標高点テーブル)を、DEMデータ記憶手段17から読み出す。
次に、ステップS173において、処理対象図内の一つのリンクを処理対象リンクとして選択する。
ステップS174において、処理対象リンクについて、標高値加算処理(後述)がすでに行われているか否かを判定する。すでに行われていれば、ステップS177に移行し、まだ行われていなければ、次のステップS175,S176を実行する。
ステップS175において、処理対象リンクに対する“道路属性レコード”の“相対高さ情報”と、“3D空間レコード”の“構成点情報”とを参照し、処理対象リンクに設定されたすべての相対高付与点(始点,終点,構成点は除く。)の二次元位置座標を求める。そして、これらの相対高付与点を、既存の構成点と二次元位置で許容範囲内にない場合に構成点として、“3D空間レコード”の“構成点情報”のリストに追加する。
ここで、3D属性テーブル内の“相対高さ情報”の“付与点位置”では、相対高付与点の位置は、リンクの始点からの距離(%)で与えられている(図49(a)参照)。従って、相対高付与点の二次元位置座標を求めるには、3D空間テーブルから、当該リンクの各構成点の位置座標(緯度,経度)を取得し、これらの位置座標と“付与点位置”から、相対高付与点の二次元位置座標を計算する。
例えば、処理対象リンクabが図49(a)のような構造であったとする。この処理対象リンクの構成点は、{a,c1,c2,c3,c4,b}である。この状態では、相対高付与点p1,p2は処理対象リンクの一属性として与えられているだけであり、構成点としては認識されていない。そこで、ステップS175において、各相対高付与点p1,p2に座標値を与えて、“3D空間レコード”の“構成点情報”のリストに相対高付与点p1,p2を追加する。その結果、図49(b)のように、相対高付与点も構成点として認識されるようになる。
次に、ステップS176において、各構成点に対して、当該構成点の位置における標高値を与える標高値加算処理を行う。この標高値加算処理は、DEMメッシュデータを用いて行われる。具体的には、或る構成点cが、図50に示したように、DEMデータの経緯方眼αβγδに属していたとすると、構成点cの標高値は、この経緯方眼αβγδをベジェ曲面で補間した際の構成点cの位置座標における曲面上の点の高さに設定される。計算により得られた各構成点の標高値は、3D空間テーブル内の“構成点情報”の“標高”に格納される。
ステップS177において、処理対象図内のすべてのリンクに対してステップS175,S176の処理が行われたか否かを判定する。まだ行われていないリンクがある場合には、ステップS173に戻り、すべて行われた場合には、次のステップS178に移行する。
ステップS178において、処理対象図内の一つのリンクを処理対象リンクとして選択する。
ステップS179において、処理対象リンクについて、高さ加算処理(後述)がすでに行われているか否かを判定する。すでに行われていれば、ステップS181にとび、まだ行われていなければ、次のステップS180を実行する。
ステップS180の高さ加算処理においては、処理対象リンク内の各構成点に対して、“高度”を与える処理が行われる。この場合、まず、相対高付与点(始点,終点も含む。)に対して、相対高さに応じて予め決められている比高を与える。「比高」とは、地表面から道路までの高さのことをいう。「相対高さ」と「比高」との対応関係は、相対高さ対照テーブルとして与えられる。この対応関係は、ユーザーにより任意に設定が可能とされている。また、相対高さ対照テーブルは、構造種別に応じて複数個用意されている。そして、相対高付与点における構造種別に応じて、相対高さ対照テーブルを切り替えて使用する。
例えば、構造種別が‘盛土’の場合、相対高さ対照テーブルとしては{(相対高さ0,比高0m),(相対高さ1,比高4m),(相対高さ2,比高8m),…}が使用され、その他の場合は{…,(相対高さ−2,比高−12.5m),(相対高さ−1,比高−7.5m),(相対高さ0,比高0m),(相対高さ1,比高7.5m),(相対高さ2,比高12.5m),…}が使用されるといった具合である。
各相対高付与点における“高度”は、先に与えられた“標高”にここで得られた“比高”を加算した値となる。
次に、“高度”が与えられた相対高付与点間を補間し、まだ“高度”が与えられていない各構成点の高度は、当該構成点の位置に対応する補間線上の高度に設定される。これにより、すべての構成点に対する“高度”が設定される。設定された各構成点の“高度”は、3D空間テーブル内の“構成点情報”の“高度”に保存される。
ここで、上述の“高度”が与えられた相対高付与点間を補間する方法としては、直線補間、多項式補間、スプライン補間等、種々の方法を使用することが可能であるが、本実施例1においては、S字スムージングによる補間を行う。
図52は、S字スムージング補間のアルゴリズムを表すフローチャートである。S字スムージング補間においては、隣接する2つの相対高付与点間の区間(図51(c)参照)を1区間として補間を行う。まず、補間点の二次元座標を設定する(S191)。次に、この区間の開始点と終了点の間に高度差はあるか否かを判定する(S192)。高度差がない場合には、補間点の高度は開始点の高度に設定する(S195)。一方、高度差がある場合は、まず、開始点から補間点までの二次元距離(XY平面上の距離)を計算し(S193)、その二次元距離に応じて補間点の高度を計算する(S194)。補間点の高度の計算は、シグモイド曲線のようなS字型の曲線関数が使用される(図53参照)。以上の演算を、区間の開始点から終了点まで補間点を移動させながら行う(S196)。
図48に戻って、ステップS181において、処理対象図内のすべてのリンクに対してステップS180の処理が行われたか否かを判定する。まだ行われていないリンクがある場合には、ステップS178に戻り、すべて行われた場合には、次のステップS182に移行する。
ステップS182において、すべてのリンクの全構成点に対する標高値及び高度のデータを、処理対象図の3D空間テーブルに保存し、これを中間テーブル記憶手段17に格納して、三次元化処理を終了する。
(4)構造種別設定処理
構造種別設定処理においては、図葉内のリンクのうち、構造種別が‘トンネル’のリンクに対して、高度の補正を行う。図54は、構造種別設定処理を表すフローチャートである。
まず、ステップS201において、三次元化処理手段19は、上記イベント処理において選択された処理対象図のデータ(3D属性ファイル及び3D空間ファイル)を中間テーブル記憶手段17から読み出す。
次に、ステップS202において、三次元化処理手段19は、処理対象図に含まれるすべてのリンクの中から、構造種別として‘トンネル’が設定されているリンクを抽出する。
次に、ステップS203において、三次元化処理手段19は、処理対象図に隣接する8つの隣接図のデータ(3D属性ファイル及び3D空間ファイル)を中間テーブル記憶手段17から読み出す。
ステップS204において、構造種別がトンネルであるリンクを選択する。この選択されたリンクを以下この処理説明においては「選択リンク」と呼ぶ。
ステップS205において、選択したリンクについて、以下のステップS206〜S209のトンネル処理がすでになされているか否かを判定する。トンネル処理がすでになされている場合、ステップS210に飛び、トンネル処理がまだされていない場合は、以下のステップS206〜S209のトンネル処理を行う。
ステップS206において、三次元化処理手段19は、処理対象図及び各隣接図の3D属性テーブルを検索することにより、選択リンクから連続するトンネル区間のすべてのリンクを抽出する。これは、複数リンクに跨って構造種別‘トンネル’が設定されている場合もあるので(図55(a)参照)、かかる場合、連続するすべてのトンネル区間のリンクを取得するようにしたものである。以下、このように連続するトンネル区間に属するリンクの集合を「トンネルグループ」という。
ステップS207において、トンネルグループのソートにより、先頭リンクを決定する。具体的には、まず、トンネルグループのリンクのうち、一方の端点が他のトンネルグループのリンクと接続していないリンクを抽出する。例えば、図55(b)の例では、リンクab,fg,jkが抽出される。最後に、これら抽出されたリンクのトンネル区間の長さを計算し、最も長いリンクを「先頭リンク」とする。例えば、図55(b)の例では、リンクabが最も長いので、これが先頭リンクに決定される。
ステップS208において、トンネルグループのスムージングを行う。具体的には、まず、トンネル区間内で分岐ノードがある場合、分岐するリンクの何れが本流かを判定する。この場合、分岐ノードの前後のリンクの方向ベクトルの成す角を比較し、角度が小さい方のリンクを本流と判断する。
例えば、図55(c)において、先頭リンクabの終点側のノードbが分岐ノードとなっている。この場合、リンクabの方向ベクトルとリンクbhの方向ベクトルの成す角をθ1,リンクabの方向ベクトルとリンクbcの方向ベクトルの成す角をθ2とする。この場合、θ1<θ2なので、リンクbhのほうが本流、リンクbcのほうが支流と判断される。
同様に、他の分岐交差点についても本流,支流の判断を行うことにより、トンネルグループ内の各リンクを本流と支流に分類する。例えば、図55の例において本流と支流のグループ分けを行うと、図55(d)のようになる。
以上のグループ分けが終わると、次に、本流のリンクグループについて、トンネル区間の始点とトンネル区間の終点の間を1区間として、上述のS字スムージング補間(図52,図53参照)を実行する。そして、この補間曲線に沿って、本流のリンクグループの中間の各ノード及び構成点の高度を決定する。例えば、図55(d)の場合、ノードaとノードgの間の区間を1区間としてS字スムージング補間を行い、ノードb,h,fの高度を決定する。
一方、支流に属するリンクについては、本流の各ノードの決定後、本流の場合と同様、支流のトンネルグループの両端のノード間を1区間としてS字スムージング補間を実行し、この補間曲線に沿って、支流のリンクグループの中間の各ノード及び構成点の高度を決定する。
以上のようにして決定された各構成点(ノードを含む)の高度は、各リンクに対する3D空間ファイル内の“3D空間レコード”に保存される。
尚、本実施例1においては、補間曲線としてS字スムージング曲線を使用するが、これに限らず、他の補間曲線,直線,折線等を使用することも可能である。
ステップS209において、隣接図整合処理を行う。すなわち、トンネルグループが複数の図葉に跨っている場合、隣接図において、同じOIDのリンクに対する各構成点の高度を、前記ステップS208で求めた高度に更新する。更新された各構成点(ノードを含む)の高度は、当該隣接図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。
次に、ステップS210において、処理対象図のすべての‘トンネル’属性のリンクに対してトンネル処理が終了したか否かを判定する。まだ未処理の‘トンネル’属性のリンクがあれば、ステップS204に戻り、すべて終了したのであれば、ステップS211に移行する。
最後に、ステップS211において、各図葉の3D空間テーブルのうち、データが更新されたテーブルを中間テーブル記憶手段17に格納し、構造種別設定処理を終了する。
(5)道路線調整処理
道路線調整処理は、“道路種別コード”により道路線を7種類に分類して、各道路種別に対して、道路の凹凸や急勾配の平滑化、相対高さと高度の矛盾の補正、道路標高点を考慮した高度の補正を行う。
図56は、道路線調整処理を表すフローチャートである。
まず、ステップS221において、三次元化処理手段19は、上記イベント処理において選択された処理対象図のデータ(3D属性ファイル及び3D空間ファイル)を中間テーブル記憶手段17から読み出す。
次に、ステップS222において、三次元化処理手段19は、処理対象図に隣接する8つの隣接図のデータ(3D属性ファイル及び3D空間ファイル)を中間テーブル記憶手段17から読み出す。
次に、ステップS223において、三次元化処理手段19は、3D空間テーブル内の各リンクの“道路種別コード”によりリンクを、‘高速’,‘都市高速’,‘一般国道’,‘主要地方道’,‘指定市道’,‘一般都道府県道’,‘その他’の7種類に分類する。
次に、ステップS224,S225において、各道路種別に対して、後述の勾配調整処理を行う。これは、道路種別に応じて、急勾配の区間に対して勾配を緩やかにする補正を行う処理である。
次に、ステップS226において、後述の近接逆転調整処理を行う。これは、立体交差するリンク同士が異常に接近している場合に、その距離が適当となるように調整する処理である。
次に、ステップS227,S228において、各道路種別に対して、後述の標高点調整処理を行う。これは、各リンクに設定された道路標高点に従って、各リンクの高度の補正を行う処理である。
次に、ステップS229において、後述の交差点調整処理を行う。これは、上記各処理の結果、各相対高付与点に付与された「相対高さ」と「高度」との間に矛盾が生じた場合に、その矛盾が解消するように、各構成点の「高度」の補正を行う処理である。
最後に、データが更新された図葉の3D空間レコードを、中間テーブル記憶手段17に保存して、道路線調整処理を終了する。
次に、上記の勾配調整処理、近接逆転調整処理、標高点調整処理、及び交差点調整処理について、順次、詳細に説明する。
(5−1)勾配調整処理
図57は、勾配調整処理を表すフローチャートである。
まず、ステップS241において、複数リンク一括処理を行う。「複数リンク一括処理」とは、二差路のノードで接続する同一道路種別,同一リンク種別のリンクを1つの道路線として取り扱う処理をいう。ここでは、まず、三次元化処理手段19は、処理対象図内の各リンクのうち勾配調整処理が済んでいないリンクについて、“道路種別コード”及び“リンク種別コード”が同一で二差路接続するリンクを検索し、マルチリンク集合とする。また、二差路のリンクが続く限り、処理対象図又は隣接図を超えて検索し、検索の結果得られたリンクをマルチリンク集合に追加する。尚、隣接図を超えた場合は、必要な図葉のデータを読み込む。以上のようにして得られる各マルチリンク集合を結合して1本のダミーリンクとする。
図58は、ステップS241の複数リンク一括処理のアルゴリズムを表すフローチャートである。まず、処理対象図内からリンクを選択し、この選択されたリンクを要素とするマルチリンク集合を生成する(S261)。次に、このリンクに対して勾配調整処理がすでになされているかいなかを判定する(S262)。勾配調整処理がなされている場合は、次のリンク選択に移るべく、ステップS266に移行する。一方、勾配調整処理がなされていない場合は、始点側リンク結合処理(S263)及び終点側リンク結合処理(S264)を行うことによりマルチリンク集合を抽出し、抽出されたマルチリンク集合を結合して1本のダミーリンクとする(S265)。
以上の処理の後、処理対象図内のすべてのリンクについてステップS261〜S265の処理を行ったか否かを判定し、未処理のリンクがあればステップS261に戻り、すべて終了であれば、複数リンク一括処理を終了する。
ここで、ステップS263(S264)の始点(終点)側リンク結合処理のアルゴリズムは、図59のフローチャートのようになる。まず、選択されたリンク(以下、この処理説明内において「選択リンク」という。)の始点(終点)ノードが二差路であるか否かを判定する(S271)。二差路でなければ、始点(終点)側リンク結合処理を終了する。
次に、選択リンクの始点(終点)ノードに接続するリンク(以下、この処理説明内において「接続リンク」という。)の“道路種別コード”及び“リンク種別コード”が選択リンクと同じか否かを判定する(S272)。異なる場合は始点(終点)側リンク結合処理を終了する。
次に、接続リンクをマルチリンク集合に追加する(S273)。そして、当該接続リンクを選択リンクとして(S274)、始点(終点)側リンク結合処理を再帰的に実行し(S275)、終了する。
例えば、図60(a)のように、リンクab,bc,cd,ceがあり、ノードbは二差路、ノードcは三差路、ノードa,d,eは端点であったとする。また、各リンクab,bc,cd,ceの(道路種別,リンク種別)は、(‘道路種別1’,‘リンク種別a’),(‘道路種別1’,‘リンク種別a’),(‘道路種別1’,‘リンク種別b’),(‘道路種別2’,‘リンク種別a’)であったとする。この場合、上記複数リンク一括処理により、リンクab,bcがマルチリンク集合A,リンクcdがマルチリンク集合B,リンクceがマルチリンク集合Cに類別され、各マルチリンク集合のリンクは結合して1本のダミーリンクとされる。この場合、マルチリンク集合Aのリンクab,bcが結合されて、ダミーリンクacとされる。
図57に戻って、次に、ステップS242において、処理対象図のリンクのうち、所定の分類のリンク(ダミーリンク)を一つ選択する。以下、この処理説明において、この選択されたリンク(ダミーリンク)を「選択リンク」という。
ステップS243において、選択リンクの構造種別を検査し、選択リンクにトンネル区間があるか否かを判定する。トンネル区間が見つかった場合は、ステップS252に移行し、トンネル区間が見つからなかった場合は、ステップS244に移行する。
ステップS244において、選択リンクが調整対象であるか否かの判定を行う。この場合、選択リンクの“道路種別コード”が‘高速’又は‘都市高速’であれば、無条件に調整対象とされる。また、“道路種別コード”が‘高速’及び‘都市高速’以外の場合には、当該選択リンクの構成点の“相対高さ”に0以外の点があれば調整対象とされる。これ以外の場合は、調整対象ではないとされる。選択リンクが調整対象でない場合、ステップS252に移行し、調整対象の場合には、次のステップS245に移行する。
ステップS245において、選択リンクが両端において“構造種別コード”が‘トンネル’であるリンク(トンネル区間のリンク)と接続しているか否かを判定する。選択リンクの両端がトンネル区間のリンクと接続している場合、ステップS256に移行し、それ以外の場合は、ステップS246に移行する。
ステップS256においては、選択リンクの始点と終点間を1区間として、上述のS字スムージング補間(図52参照)により始点と終点間をS字曲線で補間する。この補間曲線に沿って選択リンク上の各構成点の高度を補正する。そして、ステップS257に移行する。
一方、ステップS246においては、選択リンク内の相対高付与点をキーとして、処理対象区間を作成する。この場合、3D属性テーブルを参照することにより、選択リンク内の各相対高付与点の“相対高さ”を取得し、“相対高さ”の絶対値が最大である相対高付与点を抽出する。そして、この相対高付与点を境界点として、選択リンクを2つの処理対象区間に分割する。絶対値が最大である相対高付与点が複数ある場合は、絶対値が最大である相対高付与点の連続する区間も一つの処理対象区間とする。
例えば、図61(a)において、選択リンクabは6つの構成点(始点,終点,相対高付与点以外の構成点)a,b,q1,q2,q3,q4と、4つの相対高付与点a,b,p1,p2を有する(尚、始点a及び終点bは、構成点であり相対高付与点でもある)。これらは、(a,q1,p1,q2,q3,p2,q4,b)の順序で並んでいる。始点a,相対高付与点p1,相対高付与点p2,終点bには、それぞれ、相対高さ0,1,2,0が付与されている。この場合、相対高さの絶対値が最大の相対高付与点はp2である。従って、リンクabは、2つの処理対象区間(a,q1,p1,q2,q3,p2)及び(p2,q4,b)に分割される。
また、例えば、図61(d)において、選択リンクabは9つの構成点(始点,終点,相対高付与点以外の構成点)a,b,q1〜q7と、7つの相対高付与点a,b,p1〜p5を有する(尚、始点a及び終点bは、構成点であり相対高付与点でもある)。これらは、(a,q1,q2,p1,q3,p2,q4,p3,q5,p4,q6,p5,q7,b)の順序で並んでいる。始点a,終点bには、相対高さ0が付与されている。また、相対高付与点p1〜p5には相対高さ1が付与されている。この場合、相対高さの絶対値が最大の相対高付与点はp1〜p5である。従って、リンクabは、3つの処理対象区間(a,q1,q2,p1),(p1,q3,p2,q4,p3,q5,p4,q6,p5),(p5,q7,b)に分割される。
次に、ステップS247において、選択リンクの相対高さの最大値及び最小値を求める。
次に、ステップS248において、ステップS247で求めた相対高さの最大値が正の値の場合、最大値をキーに処理対象区間のグループ化を行う。グループ化された当該処理対象区間で、高度の高い方の端点(相対高付与点)を固定し、その反対側の端点の高度を、固定した方の端点との高度差が所定の勾配値の範囲(例えば、法律(「道路構造令」等)に基づく勾配値の範囲)内となるように修正する。そして、当該処理対象区間を1区間として、上述のS字スムージング補間(図52参照)により当該処理対象区間の始点と終点間をS字曲線で補間する。この補間曲線に沿って当該処理対象区間上の各構成点の高度を補正する。
例えば、図61(a)において、処理対象区間ap2では相対高さの絶対値が最大の相対高付与点はp2である。そこで、相対高付与点p2を固定する。次に、始点aと相対高付与点p2との高度差Haと処理対象区間ap2の長さLを計算する。そして、処理対象区間ap2の勾配Ha/Lの値が所定の範囲を超えていた場合、始点aの高度を修正することによって始点aと相対高付与点p2との高度差をHbとし、勾配Ha/Lの値が所定の範囲内となるようにする(図61(b)参照)。そして、処理対象区間ap2を1区間として、S字スムージング補間により処理対象区間ap2の始点aと終点p2間をS字曲線で補間し、この補間曲線に沿って処理対象区間ap2上の各構成点q1,p1,q2,q3の高度を補正する(図61(c)参照)。また、処理対象区間p2bについても同様な修正を行う。この処理により、各リンクの勾配は、現実の道路の勾配により近いものに修正がされる。
次に、ステップS249において、ステップS247で求めた相対高さの最小値が負の値の場合、最小値をキーに処理対象区間のグループ化を行う。グループ化された当該処理対象区間で、高度の低い方の端点(相対高付与点)を固定し、その反対側の端点の高度を、固定した方の端点との高度差が所定の勾配値の範囲(例えば、法律(「道路構造令」等)に基づく勾配値の範囲)内となるように修正する。そして、当該処理対象区間を1区間として、上述のS字スムージング補間(図52参照)により当該処理対象区間の始点と終点間をS字曲線で補間する。この補間曲線に沿って当該処理対象区間上の各構成点の高度を補正する。
次に、ステップS250において、処理対象区間両端の相対高さが正と負であるものについて、上述のS字スムージング補間(図52参照)により始点と終点間をS字曲線で補間する。この補間曲線に沿って当該処理対象区間上の各構成点の高度を補正する。
次に、ステップS252において、ランプ接続処理を行う。ランプ接続処理においては、まず、選択リンクの“リンク種別コード”が‘ランプ’及び‘側線’のリンクかどうかを判定する。選択リンクが‘ランプ’及び‘側線’の場合、次に、選択リンクの“道路種別コード”を取得するとともに、選択リンクの端点のノードに接続するリンク(以下、この処理説明内において「接続リンク」という。)を抽出しその“道路種別コード”を取得する。そして、接続リンクの道路種別が選択リンクの道路種別よりも下位である場合(例えば、選択リンクが‘高速’で接続リンクが‘一般国道’の場合等)、当該接続リンクが接続するノードの高度は保持して、選択リンクに対して上述のS字スムージング処理による各構成点の高度の補正を行う。ここで、道路種別の順位は、上位から‘高速’,‘都市高速’,‘一般国道’,‘主要地方道’,‘指定市道’,‘一般都道府県道’,‘その他の道路’の順とされる。
次に、ステップS253において、接続道路線調整処理を行う。上述のステップS246〜S250の勾配調整を行った結果、リンクの始終点で高度が変化した場合、同じノードに接続するリンク間で高度の値に不整合が生じ、不連続となる場合がある(図62(a)参照)。接続道路線調整処理では、そのような不整合の補正を行う。
具体的には、まず選択リンクの始終点で高度が変更されたか否かを判定する。高度が変更された場合、高度が変更された端点(以下、この処理説明内において「接続交差点」という。)に接続するリンク(以下、この処理説明内において「接続リンク」という。)を抽出する(図62(a))。抽出された各接続リンクの接続交差点における高度を、選択リンクの接続交差点における高度に変更する(図62(b))。そして、各接続リンクに対して、始終点を固定して、上述のS246〜S250と同様の処理による各構成点の高度の補正を行う(図62(c))。これにより、接続交差点における高度の不整合が補正され、各ノードにおける連続性が保証される。
次に、ステップS254において、隣接図整合処理を行う。すなわち、高度の調整がされたリンク(選択リンクや接続リンク)が複数の図葉に跨っている場合、隣接図において、同じOIDのリンクに対する各構成点の高度を、上記各処理で求めた高度に更新する。更新された各構成点(ノードを含む)の高度は、当該隣接図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。尚、この際、勾配補正を行う前の3D空間テーブルを、中間テーブル記憶手段17内に別途残しておく。
次に、ステップS255において、ステップS241でマルチリンク集合の合成により生成したダミーリンクを分離して、元のリンクに復元する。そして、更新された各構成点(ノードを含む)の高度は、当該処理対象図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。尚、この際、勾配補正を行う前の3D空間テーブルを、中間テーブル記憶手段17内に別途残しておく。
最後に、処理対象図のすべてのリンクについて、ステップS242〜S255の処理が終了したか否かを判定する。終了していないリンクがあれば、ステップS242に戻り、すべてのリンクについて終了したならば、道路線調整処理を終了する。
(5−2)近接逆転調整処理
近接逆転調整処理においては、道路線調整処理により各リンクの高度調整がされた結果、立体交差点における交差するリンク同士の高度が異常に接近又は反転した場合、それを補正する処理を行う。
図63は、近接逆転調整処理を表すフローチャートである。
まず、ステップS281において、立体交差点情報のテーブル(以下「立体交差点テーブル」という。)の作成を行う。ここで、「立体交差点情報」とは、立体交差する2つのリンクのOID,及びそれぞれのリンクにおける立体交差する位置(構成点順位)からなる情報である。具体的には、処理対象図の3D属性テーブル内の各“道路属性レコード”の各“相対高さ情報”の“立体交差フラグ”を参照することにより、当該“相対高さ情報”に対応する構成点が立体交差点か否かを判定することによって、立体交差点である構成点を検索する。立体交差点の構成点が発見された場合、その構成点が属するリンクの“オブジェクトID”,及び当該構成点の“相対高さ”を立体交差点情報として抽出し、立体交差点テーブルに登録する。また、当該構成点の“付与点位置”から当該構成点に対応する“構成点情報”(経度,緯度,高度,標高)を3D空間テーブル内から取得し、立体交差点テーブルに登録する。これを、すべての“道路属性レコード”のすべての“相対高さ情報”について実行することにより、処理対象図内のすべての立体交差点が立体交差点テーブルに登録される。最後に、立体交差点テーブルを、リンクの“オブジェクトID”を最1優先キー,構成点の“相対高さ”を第2優先キーとして昇順にソートする。
ステップS282において、各立体交差位置の相対高さ及び高度を立体交差点テーブルから読み出し、各交差点の相対高さ及び高度を比較することによって、当該立体交差位置において立体交差の近接又は逆転が生じているか否かを判定する。ここで、「近接」とは、2つの立体交差点の高度の上下関係が相対高さの上下関係と一致し、且つそれらの立体交差点の高度の差が所定の閾値以下のことをいう(図64(a))。この閾値は、ユーザーにより適宜設定される。「逆転」とは、2つの立体交差点の高度の上下関係が相対高さの上下関係と一致しないことをいう(図64(b))。立体交差の近接又は逆転が生じている場合、ステップS284に移行し、生じていない場合はステップS285に移行する。
ステップS283においては、近接又は逆転が生じている立体交差点に対して、近接逆転高度補正処理を行う。そして、ステップS282に戻る。
ここで、近接逆転高度補正処理では、近接又は逆転が生じている各立体交差点の高度(勾配調整前高度)h0を標高値と相対高さより計算される比高の合計値より設定する。また、当該立体交差点の上記道路線調整処理を行った後の高度(勾配調整後高度)h1を立体交差点テーブルから読み出す。上記道路線調整処理を行った後と前の高度の差(変更量)h1−h0を計算する。そして、各立体交差点の高度を、勾配調整前高度h0に変更量(h1−h0)の1/2を加えた値h0+(h1−h0)/2に補正する(図64(c))。そして、補正後の各立体交差点の高度を、立体交差点テーブルに保存する。
各立体交差点位置における立体交差点の近接・逆転がすべて補正されると、3D空間テーブル内の立体交差点に対応する“構成点情報”の“高度”を、立体交差点テーブルの各立体交差点の高度で更新する。
次に、ステップS284において、隣接図整合処理が行われる。すなわち、高度補正された立体交差点が属するリンクが複数の図葉に跨っている場合、隣接図において、同じOIDのリンクに対する各立体交差点の高度を、処理対象図における当該立体交差点の高度に更新する。更新された各立体交差点の高度は、当該隣接図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。
次に、ステップS285において、近接逆転高度補正処理において高度の補正が行われた立体交差点が属するリンクに対して、当該立体交差点及びそのリンクの始点,終点を固定して、上述のS246〜S250と同様の処理による各構成点の高度の補正を行う。
最後に、ステップS286において、隣接図整合処理を行い、近接整合処理を終了する。すなわち、ステップS285で勾配調整されたリンクが複数の図葉に跨っている場合、隣接図において、同じOIDのリンクに対する各構成点の高度を、処理対象図における当該構成点の高度に更新する。更新された各立体交差点の高度は、当該隣接図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。
(5−3)標高点調整処理
標高点調整処理は、道路標高点の標高値を、各リンクの高さに反映させる処理である。
図65は、標高点調整処理を表すフローチャートである。
まず、ステップS291において、複数リンク一括処理(図58参照)を行い、“道路種別コード”及び“リンク種別コード”が同一で二差路接続するリンクを結合して1本のダミーリンクとする。
次に、ステップS292において、処理対象図の3D属性テーブル内の“標高点レコード”を1つ読み出し、その“標高点レコード”に対応するリンク(ダミーリンク)(以下、この処理説明内において「選択リンク」という。)の“3D空間レコード”を読み出す(図66(a))。
次に、ステップS293において、標高点データの合成を行う。ここでは、まず、選択リンクの“標高点レコード”の各“標高点情報”の“リンク上相対位置”と、“3D空間レコード”の“構成点情報”に基づき、各“標高点情報”に対応する道路標高点の位置座標を計算する。そして、この道路標高点の位置座標及び高度を道路標高点の“構成点情報”として、選択リンクの“3D空間レコード”の“構成点情報”に追加したレコードを作成し、これを「幾何演算用道路線データ」とする(図66(b))。
次に、ステップS294において、幾何演算用道路線データに対して標高点調整を行う。この場合、始点と最初の標高点,標高点のそれに最も近い次の標高点,及び最後の標高点と終点をそれぞれ「調整対象区間」とする(図66(c))。そして、これらの調整対象区間に対して上述のS字スムージング処理による各構成点の高度の補正を行う(図66(d))。
次に、ステップS295において、標高点調整後の幾何演算用道路線データから、各道路標高点に対応する構成点を削除したレコードにより“3D空間レコード”を更新することでデータの復元を行う(図66(e))。ここで、標高点に対しては新たな構成点は発生させないこととしたのは、三次元地図情報のデータ量の増大をできるだけ抑えるためである。
次に、ステップS296において、交差点情報を保存する。このときステップS291でマルチリンク集合の合成により生成したダミーリンクを分離して、元のリンクに復元する。そして、更新された各構成点(ノードを含む)の高度は、当該処理対象図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。
次に、ステップS297において、隣接図整合処理を行う。すなわち、ステップS294で標高点調整されたリンクが複数の図葉に跨っている場合、隣接図において、同じOIDのリンクに対する各構成点の高度を、処理対象図における当該構成点の高度に更新する。更新された各構成点の高度は、当該隣接図の3D空間ファイル内の各リンクに対する“3D空間レコード”に保存される。
最後に、ステップS298において、すべての“標高点レコード”に対応するリンク(ダミーリンク)に対して標高点調整を行ったか否かを判定する。標高点調整が行われていないリンクがある場合、ステップS292に戻る。すべてのリンクで標高点調整がされた場合は、標高点調整処理を終了する。
(5−4)交差点調整処理
上記標高点調整処理において、道路標高点の情報を取り込むことにより高度を補正することで、各ノードに接続する各リンクの端点の高さに不整合が生じる。そこで、交差点調整処理においては、各ノードにおける各リンクの端点の高度の補正を行う。
図67は、交差点調整処理を表すフローチャートである。
まず、ステップS301において、前記標高点調整処理によって保存された交差点情報よりノードを一つ選択する。以下、この処理説明において、選択されたノードを「選択ノード」と呼ぶ。選択ノードに接続された各リンクを「接続リンク」と呼ぶ。各接続リンクの2つの端点のうち選択ノードに接続する側の端点を「接続端点」という。また、接続端点の高度を「交差点高度」という。
次に、ステップS302において、3D属性テーブルの“接続位相レコード”の“接続道路情報”を参照することにより、接続リンクを抽出する。
次に、ステップS303において、それぞれの接続リンクに対して、当該接続リンクから連続して二差路のノードで接続する同一道路種別,同一リンク種別のリンク集合を抽出する。
次に、ステップS304において、3D属性テーブルから、各接続リンクの“標高点レコード”の“標高点情報”、及び3D空間テーブルの各接続リンクの“3D空間レコード”の“構成点情報”を参照し、各接続リンクの選択ノードに道のりで最も近い道路標高点の位置座標を計算する。また、各接続リンクにおいて、選択ノードに最も近い道路標高点(以下「近傍道路標高点」という。)の高度を抽出する。そして、各近傍道路標高点を高度の昇順にソートする。
例えば、図68(a)のように、選択ノードaに対し、3つの接続リンクL1,L2,L3が存在している場合において、上述の標高点調整処理によって、各接続リンクL1,L2,L3の選択ノードaの側の端点に再び不整合が生じる。各接続リンクL1,L2,L3上の選択ノードaに最も近い近傍道路標高点p1,p2,p3の高度h1,h2,h3は、h2>h1>h3であったとする。この場合、接続リンクL2,L1,L3の順にソートされる。
さらに、近傍道路標高点が存在するリンク集合(接続リンクから連続して二差路のノードで接続する同一道路種別,同一リンク種別のリンク集合)の数をカウントする。
例えば、図68(a)の例では、近傍道路標高点が存在するリンク集合の数は3である。
次に、ステップS305において、近傍道路標高点が存在するリンク集合の数(以下「グループ数」という。)が1以下か否かを判定する。1以下の場合はステップS309(単独道路標高点に対する交差点調整処理)に移行し、1より大きい場合はステップS306〜S308(複数道路標高点に対する交差点調整処理)に移行する。
ステップS309においては、近傍道路標高点が存在する接続リンクの接続端点の交差点高度に、他の接続リンクの接続端点の交差点高度を合わせる。次いで、交差点高度が変更されたそれぞれの接続リンクが属するリンク集合に対して、勾配調整(〔6−2〕(5−1),図57参照)を行う。そして、ステップS310に移行する。
一方、ステップS306においては、まず、上記ステップS304において抽出された各リンク集合のうち、近傍道路標高点の高度が最大のもの(以下「最高リンク集合」という。)及び最小のもの(以下「最低リンク集合」という。)を抽出する。そして、抽出された2つのリンク集合からダミーリンクを生成する。
次に、ステップS307において、各ダミーリンクについて、接続ノードを挟んだ道路標高点間でS字スムージングによる補間(〔6〕(3),図52参照)を行う。そして、各ダミーリンク上の構成点(接続ノードを含む。)の高度を、補間曲線に合わせて修正する。
次に、ステップS308において、最高リンク集合及び最低リンク集合以外のリンク集合について、接続端点の交差点高度を、ステップS307で修正された接続ノードの高度に合わせる。そして、これらのリンク集合に対して勾配調整(〔6−2〕(5−1),図57参照)を行い、ステップS310に移行する。
例えば、図68(b)では、接続リンクL1の近傍道路標高点p1の標高値が15m,接続リンクL2の近傍道路標高点p2の標高値が20m,接続リンクL3の近傍道路標高点p3の標高値が10mである。従って、接続リンクL2が属するリンク集合が最高リンク集合、接続リンクL3が属するリンク集合が最低リンク集合である。従って、近傍道路標高点p2と近傍道路標高点p3の間で、接続リンクL2,L3に沿ったリンク(道路)をダミーリンクとする。そして、このダミーリンクを1区間としてS字スムージングによる補間を行い、ダミーリンク上の構成点の高度を補間曲線に合わせて修正する。その結果、図68(c)のように、接続リンクL2,L3の間において、接続端点a2,a3における高度が整合される。最後に、最高リンク集合及び最低リンク集合以外のリンク集合、すなわち、接続リンクL1が属するリンク集合について、接続リンクL1の接続端点a1の高度値を、接続端点a2,a3の高度に合わせる。その結果、図68(d)に示すように、選択ノードのすべての接続リンク間において、接続端点a1,a2,a3における高度が整合される。
ステップS310において、隣接図整合処理を行う。すなわち、上記ステップS306〜S308及びステップS309の処理において、構成点の高度が変更されたリンクが処理対象図以外の図葉内に存在する場合、その図葉に対する3D空間テーブル内の当該リンクの各構成点の高度の修正を行う。
最後に、ステップS311において、前記標高点調整処理によって高度が変更されたすべてのノードについて、ステップS306〜S308又はS309の処理が終了したか否かを判定する。まだ処理済みでないリンクがある場合には、ステップS301に戻る。すべてのリンクに対して処理が終了したならば、補正された各構成点の高度が格納された3D空間テーブルを、中間テーブル記憶手段17に格納して、交差点調整処理を終了する。
(6)後処理
以上の処理により、処理対象図内のリンクは、ほぼ滑らかに修正される。しかしながら、これらの処理を行った後でもなお急勾配なリンクが存在する場合がある。そこで、後処理では、このような勾配修正しきれなかったリンクを探し、その勾配を補正する処理が行われる。
図69は、後処理の全体的な処理の流れを表すフローチャートである。
まず、ステップS321において、中間テーブル記憶手段17から、処理対象図の3D空間テーブル及び3D属性テーブルの読み込みを行う。
次に、ステップS322において、処理対象図に隣接する8つの隣接図について、中間テーブル記憶手段17から、3D空間テーブル及び3D属性テーブルの読み込みを行う。
次に、ステップS323において、処理対象図内の各リンクのうち、3D属性テーブル内の“道路属性レコード”の“構造種別”に‘トンネル’が設定されていないリンクを抽出する。
次に、ステップS324において、抽出リンクについてピーク除去法による勾配調整処理を行う。この処理については、後で詳細に説明する。
最後に、ステップS325において、高度データが更新された図葉に対して、中間テーブル記憶手段17内の3D空間テーブルを更新した後に、後処理を終了する。
次に、ステップS324におけるピーク除去法による勾配調整処理について説明する。図70は、ピーク除去法による勾配調整処理のフローチャートである。
まず、ステップS331において、抽出リンクについて複数リンク一括処理を行う(〔6〕(5−1),図58参照)。これにより、抽出リンクに対して“道路種別コード”及び“リンク種別コード”が同一で二差路接続するリンクの集合(マルチリンク集合)が1つのダミーリンクとされる。
次に、ステップS332において、前記ダミーリンクの各構成点間の勾配及び各構成点における勾配の変化量を計算する。また、これらの勾配変化量の平均値と標準偏差を求める。そして、勾配変化量が標準偏差値を超えるものが存在する場合には、その箇所をピークとして検出する。
次に、ステップS333において、勾配変化量のピークが検出されたか否かを判定する。ピークが発見されなかった場合には、勾配調整処理を終了する。一方、ピークが発見された場合には、次のステップS334に移行する。
ステップS334において、前記ダミーリンクの構成点数が3であるか否かを判定する。ダミーリンクの構成点数が3の場合、当該ダミーリンクを1区間としてS字スムージング補間(図52参照)により始点と終点間をS字曲線で補間し、この補間曲線に沿って選択リンク上の各構成点の高度を補正する(S339)。そして、ステップS340に移行する。一方、ダミーリンクの構成点数が3以上の場合は、次のステップS335に移行する。
ステップS335において、前記ダミーリンクの各構成点間の勾配及び各構成点における勾配の変化量を計算する。
次に、ステップS336において、これらの勾配変化量の平均値と標準偏差σ(θ)を求める。
次に、ステップS337において、勾配変化量の標準偏差σ(θ)が所定の閾値(例えば、0.8%)より小さいか否かを判定する。ここで、勾配の単位は、100mあたりの高度の上昇距離x(m)を比率x/100(%)で表す。従って、相隣接する構成点q1,q2の勾配をθ1(%),θ2(%)とした場合、構成点q2における勾配変化量はΔθ2=θ2−θ1(%)で表される。
勾配変化量の標準偏差σ(θ)が前記所定の閾値より小さい場合には、ステップS340に移行する。一方、勾配変化量の標準偏差σ(θ)が前記所定の閾値以上の場合には、次のステップS338において高度補正処理を行った後、ステップS335に戻る。
ここで、ステップS338における高度補正について、図71を参照しながら説明する。まず、ダミーリンクの各構成点における勾配変化量を検査して、勾配変化量の絶対値が、勾配変化量の標準偏差σ(θ)よりも大きくなる区間(以下「勾配急変化区間」という。)を検出する。
例えば、図71(a)では、ダミーリンク(a,q1,q2,q3,b)の各構成点における勾配はθ0,θ1,θ2,θ3,θ4である。内部の構成点q1,q2,q3における勾配変化量は、Δθ1=θ1−θ0,Δθ2=θ3−θ2,Δθ3=θ4−θ3で表される。勾配変化量の絶対値|Δθ1|,|Δθ2|,|Δθ3|が所定の閾値を超えていた場合、勾配急変化区間は区間[q1,q2,q3]とされる。
次に、勾配急変化区間の端点を直線で結ぶ仮想リンクを考え、その仮想リンクの勾配θijを求める。
例えば、例えば、図71(b)の場合、勾配急変化区間[q1,q2,q3]の端点q1,q3の間を直線で結ぶ仮想リンク(q1,q3)を考える。この場合、仮想リンク(q1,q3)の勾配はθ13である。
次に、勾配急変化区間の始点を調整構成点とする。そして、勾配調整点とその次の構成点について、高さ方向に両者が接近する向きに同じ量だけ移動させ、勾配調整点の勾配の絶対値が仮想リンクの勾配θijに等しくなるように勾配調整点とその次の構成点の高度を変更する。この処理を、調整構成点を勾配急変化区間の始点から終点の一つ前の構成点まで移動させながら順次繰り返し実行する。その結果、設定された各構成点の高度を、ダミーリンクの各構成点の高度と決定する。
例えば、図71(b)の場合、仮想リンク(q1,q3)の勾配はθ13である。そこで、まず、勾配急変化区間[q1,q2,q3]の始点q1を調整構成点とする。そして、勾配調整点q1とその次の構成点q2について、高さ方向に両者が接近する向きに同じ量だけ移動させ、勾配調整点q1の勾配の絶対値|θ1|が仮想リンクの勾配θ13に等しくなるように勾配調整点q1とその次の構成点q2の高度を変更する(図71(c))。同様に、今度は次の構成点q2を調整構成点とし、勾配調整点q2とその次の構成点q3について、高さ方向に両者が接近する向きに同じ量だけ移動させ、勾配調整点q2の勾配の絶対値|θ2|が仮想リンクの勾配θ13に等しくなるように勾配調整点q2とその次の構成点q3の高度を変更する(図71(d))。以上の結果、ダミーリンクabの各構成点の高度は図71(e)のように決定され、ダミーリンクの急勾配のピークが除かれる。
図70に戻って、ステップS340において、接続点高度補正を行う。この接続点高度補正処理においては、ダミーリンクの両端点の高度が変化した場合、ダミーリンクの両端点の高度をもとの高度に戻すとともに、当該ダミーリンク内で高度差を吸収するように、接続点の高度補正を行う。
次に、ステップS341において、ダミーリンクを元のマルチリンク集合に分解し、マルチリンク集合の各リンクの構成点の高度を、3D空間テーブル内の各“3D空間レコード”の各“構成点情報”に保存する。
最後に、ステップS342において、マルチリンク集合内のリンクが隣接図に存在する場合には、それらのリンクの構成点の高度を、隣接図の3D空間テーブル内の各“3D空間レコード”の各“構成点情報”に保存し、ピーク除去法による勾配調整処理を終了する。
(7)走行軌跡データの取り込み処理
最後に、ステップS146において、走行軌跡データの取り込み処理を行う。ここでは、走行軌跡関連テーブル内の各走行軌跡データの高度情報により、処理対象図内の各リンクの各構成点の高度の補正を行う。
図72は、走行軌跡データの取り込み処理を表すフローチャートである。
まず、ステップS351において、中間テーブル記憶手段17から、処理対象図の3D属性テーブル及び3D空間テーブルを読み出し、走行軌跡記憶手段18から、処理対象図内のリンクに関連づけられた走行軌跡関連テーブルを読み出す。
次に、ステップS352において、ディスプレイ5に、走行軌跡の関連付けを行うリンクを選択する選択画面を表示することによって、ユーザーによるリンクの選択を促す。これにより、ユーザーが入力デバイス4により走行軌跡の関連付けを行うリンクを選択する。以下、この処理説明において、この選択されたリンクのことを「選択リンク」という。
次に、ステップS353において、選択されたリンクと関連づけられた走行軌跡データを走行軌跡関連テーブルから検索する。検索によって得られた走行軌跡データ(以下、この処理説明において「抽出走行軌跡データ」という。)は、選択リンクのほかにも、選択リンクに連なる複数のリンクと関連づけられている。以下、この処理説明において、抽出走行軌跡データに関連づけられているすべてのリンクの集合を「関連リンク集合」と呼ぶ。また、関連リンク集合に属する各リンクの端点に位置するノードの集合を「関連ノード集合」という。
次に、関連リンク集合内の各リンクの各構成点について、その構成点の位置座標に最も近い位置座標を有する計測点を走行軌跡データから抽出する。そして、走行軌跡データから抽出した計測点の標高を当該構成点の高度とする。これにより、関連リンク集合内の各リンクの各構成点の高度は、すべて走行軌跡データの計測点の高さ情報に合わせ込まれる。
次に、ステップS354において、関連ノード集合に属するノード(関連ノード)を一つ選択する。
次に、ステップS355において、関連リンク集合内の各リンクが接続する各ノードについて、それぞれのノードに接続するリンクに対して複数リンク一括処理(〔6〕(5−1),図58参照)を行い、当該リンクを含むマルチリンク集合を抽出する。
次に、ステップS356において、抽出した各マルチリンク集合のリンクに対して、ピーク除去法による勾配調整処理(〔6〕(6),図70参照)を行う。
次に、ステップS357において、関連リンク集合内の各リンクの各構成点の高度の変更によって、関連リンク集合内の各リンクの端点において、それに接続するリンクとの高度の不整合が生じた場合、その高度調整を行う。この高度調整処理の詳細に関しては後述する。
次に、ステップS358において、高度調整が行われた構成点について、3D空間テーブル内の構成点情報を更新する。
最後に、関連ノード集合に属するすべてのノードに対して、上記ステップS354〜S358の処理が終了したか否かを判定する。未処理のノードがあれば、ステップS354に戻り、すべてのノードの処理が終了したならば、走行軌跡データの取り込み処理を終了する。
上記ステップS357における高度調整処理は、次のように行われる。図73(a)は、ステップS353の処理が行われた直後の状態を示している。図73(a)は、リンクL1は走行軌跡データとの関連付けがされており、走行軌跡データにより構成点の高度調整がされた区間を表している。一方、リンクL2,L3,L4は、走行軌跡データによる高度調整がされなかった区間を示す。このとき、リンクL1とそれに接続するリンクL2との間において両者の接続点におけるノード(以下、この処理説明においては「第1接続ノード」という。)aにおいて、リンクL1の端点とリンクL2の端点との間で高度の不整合が生じている。
この場合、まず、図73(b)のように、リンクL1に接続するリンク(以下「第1接続リンク」という。)の各構成点の高度を修正することにより、第1接続ノードaにおける不整合を解消する。ここで、修正量は、第1接続ノードaではリンクL1の端点a1の高度h1と第1接続リンクL2の端点a2の高度h1との高度差h12=h1−h2とされる。端点a1を固定した状態で、第1接続リンクL2の側の端点a2の高度に高度差h12だけ加えることにより、第1接続リンクL2の側の端点a2の高度を端点a1の高度に合わせる。また、第1接続リンクL2の端点a2以外の構成点については、高度差h12と端点a2からの距離lの関数h(l,h12)に基づいて定められる。ここで、関数h(l,h12)は、l=0でh12となり距離lが増加するにつれて0に減衰する関数である。これにより、第1接続リンクL2の各構成a2,q1,q2,q3,bは図73(b)のように高度が修正され、図73(c)のようになる。
この修正を行うと、図73(c)のように、今度は、第1接続リンクの第1接続ノードとは反対側のノード(以下、この処理説明においては「第2接続ノード」という。)bにおいて、第1接続リンクL2の端点b1とリンクL3,L4(以下、この処理説明においては「第2接続リンク」という。)の端点b2との間で高度の不整合が生じる。この場合も、第2接続リンクについても第1接続リンクの場合と同様に、高度の補正を行う。以下、同様に、高度の修正量(l,h12)が0となるまで同様の補正を行う。
また、図74(a)のように、走行軌跡データにより構成点の高度調整がされたリンクL1の端点に、高度調整がされていないループ状のリンクL2が接続されている場合において、接続ノードaにおけるリンクL1の端点a1の高度h1とリンクL2の端点a2の高度h2とが相違する場合、端点a2の高度h2にh1−h2を加えることによって、端点a2の高度を端点a1の高度に合わせる。また、リンクL2の端点a2以外の構成点についても、それら端点の高度にh1−h2を一律に加えることによって高度補正を行う。
さらに、図74(b)のような場合も想定される。図74(b)では、リンクL1,L3は、走行軌跡データによる構成点の高度調整がされたリンクである。また、リンクL1,L3の間を接続するリンクL2は、走行軌跡データによる構成点の高度調整がされていないリンクである。この場合、リンクL2の端点a2の高度をリンクL1の端点a1の高度に合わせるとともに、リンクL2の各構成点に対して図73(b)で説明した手法と同様に高度の補正を行う。このとき、補正後のリンクL2の端点b2の高度とリンクL3の端点b3の高度とが一致しない場合がある。このような場合、今度は逆に、リンクL2の端点b2の高度をリンクL3の端点b3の高度に合わせるとともに、リンクL2の各構成点に対して図73(b)で説明した手法と同様に高度の補正を行う。このとき、リンクL2の各構成点の補正量は、端点b2と端点b3の高度差h32と端点b2からの距離lの関数h(l,h32)に基づいて定められる。ここで、関数h(l,h32)は、l=0でh32となり距離lが増加するにつれて0に減衰する関数である。これにより、リンクL2の各構成は図74(c)のように高度が補正される。