(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について図面を参照して説明する。
図1は、本実施の形態に係る地理ネットワークデータ管理装置の構成を示す図である。
地理ネットワークデータ管理装置は、地理ネットワークのノードやリンクに対して自動的に属性を付与する装置であり、観測データ取得部1と、地理ネットワークデータ記憶部2と、観測データ記憶部3と、属性データ生成部4と、属性データ記憶部5と、地理ネットワーク構成変更部6とを備える。
【0013】
図2は、地理ネットワークデータ記憶部2の構成を示す図である。
地理ネットワークデータ記憶部2は、ノードとリンクからなる地理ネットワークであり、ノードテーブル21と、リンクテーブル22とを備える。
【0014】
ノードテーブル21は、例えば、対象地域に含まれる各地点(ノード)につきレコードを備える。レコードは、対象のノードを示すノードID、ノードの緯度と経度、ノードの高さ、ノードの名称を含む。なお、場合によっては、ノードの高さやノードの名称を省略してもよい。
ノードIDは、例えば、251055431のような数字列で表現される。後述のリンクID、属性IDも同様である。
【0015】
例えば、緯度は35.6760470、経度は139.7457789のように表現される。例えば、北緯には正、南緯には負の符号が付く。例えば、東経には正、西経には負の符号が付く。以下、緯度と経度について同様である。
【0016】
例えば、ノードの高さ「0」は地上階を示し、「2」は2階を示し、少数で中間階を示す。
例えば、ノードの名称は、「国会議事堂前」のように表現される。
【0017】
リンクテーブル22は、例えば、ノード間を結ぶ各リンク(道路など)につきレコードを備える。レコードは、対象のリンクを示すリンクID、リンクに接続される一方のノード(リンク始点という)のノードIDである始点ID、リンクに接続される他方のノード(リンク終点という)のノードIDである終点IDを含む。
リンク始点とリンク終点は、例えば、緯度が高い方をリンク始点、低い方をリンク終点のように定義することができる。
【0018】
図3は、属性データ記憶部5の構成を示す図である。
属性データ記憶部5は、地理ネットワークのノードやリンクに付与される属性を示すものであり、フィーチャーテーブル51と、対応テーブル52を備える。
【0019】
フィーチャーテーブル51は、ノード又はリンク又はリンクの一部について設定される属性ごとのレコードを備える。レコードは、対象の属性を示す属性ID、属性の種別、属性の値(属性値)を含む。以下、属性の種別と属性値の組を「属性」という。フィーチャーテーブル51は、同一の「属性」についてはレコードを1つのみ備える。
【0020】
対応テーブル52は、属性が設定されたノード又はリンクごとのレコードを備える。レコードは、当該ノードのノードID又はリンクのリンクIDである対応先ID、対象の属性に対応するフィーチャーテーブル51のレコードに含まれる属性IDと同じ属性IDを含み、対象の属性がリンクの一部に設定される場合は、当該一部の一方端を示す属性始点、当該一部の他方端を示す属性終点を含む。
【0021】
図4は、属性始点、属性終点の表現の一例を示す図である。
属性始点、属性終点は、例えば、リンク始点やリンク終点からの距離で表現される。
【0022】
例えば、属性始点「10」、属性終点「15」は、リンク始点からの10m地点から始まる属性が15m地点まで続くことを意味する。
例えば、属性始点「15」、属性終点「10」は、リンク始点からの15m地点から始まる属性が10m地点まで続くことを意味する。つまり、属性始点「10」、属性終点「15」の場合とは属性の方向が反対となる。
【0023】
例えば、属性始点「0」、属性終点「10」は、リンク始点から始まる属性が10m地点まで続くことを意味する。
又は、属性始点、属性終点は、例えば、リンク始点やリンク終点からの距離をリンクの長さで割った割合で表現される。
【0024】
例えば、属性始点「10%」、属性終点「50%」は、リンク始点からの10%地点から始まる属性が50m地点まで続くことを意味する。
属性始点や属性終点がリンク始点である場合、属性始点や属性終点を特別に0で表現し、リンク終点である場合は特別に−1で表現してもよい。
【0025】
例えば、属性始点「0」、属性終点「−1」は、リンク始点から始まる属性がリンク終点まで続くことを意味する。
例えば、属性始点「−1」、属性終点「0」は、リンク終点から始まる属性がリンク始点まで続くことを意味する。つまり、属性始点「0」、属性終点「−1」の場合とは属性の方向が反対となる。
【0026】
属性始点、属性終点は、どちらがリンク始点に近くてもよい。属性の種類が(坂道の)縦断勾配である場合、標高の低い方を属性始点、高い方を属性終点のように又は逆に定義することができる。
属性始点と属性終点が一致する場合、レコードの属性始点と属性終点を同じにすればよい。同じものを2つ使用する必要はないので、属性終点は、例えばnilで表現してもよい。
例えば、属性始点「10」、属性終点「nil」は、リンク始点から10m地点の属性を意味する。
【0027】
図5は、観測データの形式の例を示す図である。
<観測データの形式1>
ノードに関する属性を示す観測データは、例えば、ノードID、属性の種別、属性値を含む(
図5(a))。
<観測データの形式2>
ノードに関する属性を示す観測データは、例えば、ノードの緯度と経度、属性の種別、属性値を含む(
図5(b))。
【0028】
<観測データの形式3>
1つのリンクの全体に関する属性を示す観測データは、例えば、リンクID、属性の種別、属性値を含む(
図5(c))。
<観測データの形式4>
1つのリンクの一部の属性を示す観測データは、例えば、当該リンクのリンクID、当該一部の一方端を示す属性始点、当該一部の他方端を示す属性終点、属性の種別、属性値を含む(
図5(d))。
【0029】
<観測データの形式5>
連結される2つ以上のリンクに跨るリンクの一部の属性を示す観測データは、例えば、当該一部の一方端を示す属性始点、属性始点を含むリンク(始点リンク)のリンクID、当該一部の他方端を示す属性終点、属性終点を含むリンク(終点リンク)のリンクID、属性の種別、属性値を含み、始点リンクと終点リンクの間にリンク(中間リンク)が存在する場合は、その中間リンクのリンクIDを含む(
図5(e))。
【0030】
<観測データの形式6>
1つのリンクの一部又は直線的に連結される2つ以上のリンクに跨るリンクの一部の属性を示す観測データは、当該一部の一方端(属性始点)の緯度と経度、当該一部の他方端(属性終点)の緯度と経度、属性の種類、属性値を含む(
図5(f))。
【0031】
図6は、観測データ取得部1のフローチャートである。
観測データ取得部1は、外部から観測データを読み出し(S1)、観測データに緯度と経度が含まれるか否かを判定する(S3)。緯度と経度を含む場合は、緯度と経度の位置が、対象となる範囲(例えば、対象となる市の区域)内か否かを判定する(S5)。
【0032】
観測データ取得部1は、緯度と経度を含まない場合、つまり、ノードIDやリンクIDを含む場合は、そのIDが地理ネットワークデータ記憶部2のノードテーブル21又はリンクテーブル22に含まれるか否かを判定する(S7)。
【0033】
観測データ取得部1は、含まれる場合(S7:YES)、又は、対象となる範囲内の場合(S5:YES)は、観測データを観測データ記憶部3に記憶させる(S11)。
観測データを観測データ記憶部3に記憶させたなら、又は、範囲外の場合、次の観測データの有無を判定し(S13)、有る場合は、ステップS1に戻り、無い場合は、処理を終了させる。
【0034】
観測データ取得部1は、観測データの矛盾を判定し、判定結果に応じた処理を行ってもよい。例えば、矛盾があると判定された一方の観測データは観測データ記憶部3に記憶させず、削除する。
観測データ取得部1は、観測データが同一のノード又はリンク上で矛盾しているか否かを判定する。なお、観測データは全て正しいものが得られていることを仮定し,観測データの信頼性は問わない。
【0035】
例えば、同一のノード又はリンクに対し、属性の種別が同じなのに、異なる属性値が付与される場合は矛盾となる。また、同一のノード又はリンクに対し、矛盾する属性の種別が与えられる場合も矛盾となる。
前者の場合、属性値によって矛盾が許容される場合と許容されない場合があり、ルールによって判定可能である。
【0036】
図7は、同一の属性の種別の属性値間の矛盾判定で使用されるルールの一例を示す図である。
例えば、
図7に示すようなルールを作成する。
【0037】
あるノード又はリンクに対して観測データD1が与えられており、次に、同じノード又はリンクに対して観測データD2が与えられたとする。ここでD1とD2が共に「坂道」を示す観測データであったとする。このとき、D1およびD2の縦断勾配の値が異なっており、その変化によって指定された基準値に対する上下の状態が変化しなかったとする。例えばD1の縦断勾配が3%であり、D2の縦断勾配が5%の場合、基準値の8%を超えないため、基準値に対する変化は生じない。この場合は矛盾が許容されると判定される。
【0038】
同様に、あるノード又はリンクに対するデータD3、D4が共に「坂道」を示すデータであるが、D3とD4で上昇方向が逆になっていたとする。この場合、上昇の方向の違いは許容されない属性値であるため、相互に矛盾すると判定される。
後者の場合も矛盾が許容される場合と許容されない場合があり、ルールによって判定可能である。
【0039】
図8は、異なる属性の種別の属性値間の矛盾判定で使用されるルールの一例を示す図である。
ここでは、互いに矛盾する属性の種別同士をグループ化する。つまり、異なるグループに属する属性の種別同士は矛盾しない。
【0040】
例えば、グループG1に属する属性の種別「屋根」とグループG2に属する属性の種別「坂道」が同一のノード又はリンクに付与されても矛盾とはならないが、共にグループG2に属する属性の種別「坂道」、「階段」、「エスカレーター」のいずれか2つが同一のノード又はリンクに付与されることは矛盾と判定される。
【0041】
図9は、属性データ生成部4のフローチャートである。
属性データ生成部4は、観測データ記憶部3から観測データを読み出し(S21)、観測データに緯度と経度が含まれるか否かを判定する(S23)。緯度と経度を含む場合は、緯度と経度と地理ネットワークデータ記憶部2を基に、該当のノード又はリンクを選択する(S25)。
【0042】
属性データ生成部4は、ノード又はリンクを選択した(S25)なら、又は、観測データに緯度と経度が含まれない場合(S23:NO)、観測データに基づいて、属性データ記憶部5を更新する(S27)。
続いて属性データ生成部4は、次の観測データの有無を判定し(S29)、有る場合は、ステップS21に戻り、無い場合は、処理を終了させる。
【0043】
<S25の詳細処理>
観測データがノードIDやリンクIDを含まず、緯度と経度を含む場合、即座にノードやリンクを選択できない。ここでは、緯度と経度と地理ネットワークデータ記憶部2を基に、該当のノード又はリンクを選択する処理について説明する。
【0044】
<ノードを選択する場合>
観測データに示された地点をm、その緯度をm
0、経度をm
1とする(m=(m
0,m
1))。
このとき、ノードテーブル21のレコードから、地点mに最も距離の近いノードのレコード(ノード)を選択する。具体的には,以下の条件を満たすノードvを選択する。
【数1】
つまり、ノードの集合Vから、mに最も近いノードを選択する。
【0045】
<リンクを選択する場合>
観測データに示された地点をm、その緯度をm
0、経度をm
1とする(m=(m
0,m
1))。
このとき、始点がv=(v
0,v
1)、終点がw=(w
0,w
1)であるリンクe=φ(v,w)について、以下の式が成立すれば、リンクeを選択する。
【数2】
【0046】
<属性の存在確率の考慮>
S25でリンクを選択する場合、存在確率を考慮することができる。
ある属性の種別と属性値(以下、属性bという)を示す観測データに示された地点をμ、その緯度をμ
0、経度をμ
1とする。
【0047】
μ
0、μ
1の分散をそれぞれρ
02、ρ
12とする。属性bの存在確率は、観測データに示された地点を中心とした正規分布を仮定し、緯度方向と経度方向の相関はないもの(共分散は0)とする。
すると、ある地点x=(x
0,x
1)における属性bの存在確率は、
【数3】
として、2変数の正規分布に従い、以下の通りとなる。
【数4】
ここで、行列Aについて、|A|はAの行列式、A
−1はAの逆行列である。
Σは対角行列であるため、|Σ|=ρ
02・ρ
12である。
【0048】
また、
【数5】
である。
そのため、
【数6】
である。
【0049】
従って、地点xにおける属性bの存在確率は以下のようになる。
【数7】
始点がv=(v
0,v
1)、終点がw=(w
0,w
1)であるリンクe=φ(v,w)について、そのリンクeのいずれかの地点の属性bの存在確率a(φ(v,w),b)は、始点と終点を結ぶ直線の式がx
1=g(x
0)であれば、f(x
0,x
1,b)=p(x,b)として、以下の式で表される。
【数8】
【0050】
緯度方向と経度方向の分散が等しい(ρ
02=ρ
12=ρ
2)とすると、存在確率は、以下の式で表される。
【数9】
ただし、全てのリンクについて全ての属性の存在確率を持たせるのは計算コストの観点から非現実的であり、実際には、予め閾値θ(0<θ<1)を設定し、存在確率がθ未満の場合は、リンクを選択せず、存在確率がθ以上の場合は、リンクを選択し、属性を付与する(当該リンクに関係するフィーチャーテーブル51と対応テーブル52のレコードを更新する:S27)のが好ましい。
【0051】
<属性データ記憶部5の更新例>
ステップS27においては、観測データの形式に関わらず、属性データ生成部4は、観測データ内の属性の種別と属性値の組を含むレコードをフィーチャーテーブル51から検索する。該当レコードが無い場合は、フィーチャーテーブル51に新たな属性IDと当該属性の種別と属性値を含むレコードを追加する。
【0052】
(形式1)
この形式の観測データについては、属性データ生成部4は、さらに、対応テーブル52に、検索したレコード又は追加したレコードの属性IDと観測データ内のノードIDを含むレコードを追加する。
(形式2)
属性データ生成部4は、この観測データについては、観測データ内の緯度と経度に基づいてノードIDを特定し、以降は形式1の観測データと同様に属性データ記憶部5を更新する。
【0053】
(形式3)
この形式の観測データについては、属性データ生成部4は、さらに、対応テーブル52に、検索したレコード又は追加したレコードの属性IDと観測データ内のリンクIDを含むレコードを追加する。
(形式4)
この形式の観測データについては、属性データ生成部4は、さらに、対応テーブル52に、検索したレコード又は追加したレコードの属性IDと観測データ内のリンクIDと属性始点と属性終点を含むレコードを追加する。
【0054】
(形式5)
この形式の観測データについては、属性データ生成部4は、さらに、観測データ内の中間リンクの中から、始点リンクに接続されるリンクを求め、これと始点リンクの接続点となるノードの位置(これを属性終点とする)を求める。属性データ生成部4は、対応テーブル52に、検索したレコード又は追加したレコードの属性IDと観測データ内の始点リンクのリンクIDと属性始点と、求めた属性終点を含むレコードを追加する。
【0055】
また、属性データ生成部4は、さらに、観測データ内の中間リンクの中から、終点リンクに接続されるリンクを求め、これと終点リンクの接続点となるノードの位置(これを属性始点とする)を求める。属性データ生成部4は、対応テーブル52に、検索したレコード又は追加したレコードの属性IDと観測データ内の始点リンクのリンクIDと属性終点と、求めた属性始点を含むレコードを追加する。
【0056】
また、属性データ生成部4は、さらに、各中間リンクにつき、リンクIDと、検索したレコード又は追加したレコードの属性IDを含むレコードを追加する。
【0057】
(形式6)
属性データ生成部4は、この観測データについては、属性始点と属性終点の緯度と経度に基づいて、属性始点と属性終点を結ぶ直線に少なくとも一部が位置するリンク(のリンクID)を特定する。
【0058】
リンク(のリンクID)が1つの場合、属性データ生成部4は、形式3の観測データと同様に属性データ記憶部5を更新する。
リンク(のリンクID)が2つ以上の場合、属性データ生成部4は、形式5の観測データと同様に属性データ記憶部5を更新する。この場合、属性始点を含むリンクを始点リンク、属性終点を含むリンクを終点リンク、その他のリンクを中間リンクとして扱う。
【0059】
<地理ネットワーク構成変更部6>
図10は、地理ネットワーク構成変更部6のフローチャートである。
地理ネットワーク構成変更部6は、対応テーブル52からレコードを読み出し(S31)、レコード内の属性IDと同じ属性IDを含む、フィーチャーテーブル51のレコードを読み出す(S31)。これらレコードで特定される属性(属性始点、属性終点、属性の種別、属性値)が他の属性と矛盾するか否かを判定する(S33)。
【0060】
矛盾すると判定したなら、地理ネットワーク構成変更部6は、矛盾を解消するように、必要に応じて、ノードテーブル21、リンクテーブル22、フィーチャーテーブル51、対応テーブル52を更新する(S35:地理ネットワークの構成変更)。
矛盾しないと判定したなら、または、更新が行われたなら、地理ネットワーク構成変更部6は、次の対応テーブル52のレコードの有無を判定し(S37)、有る場合は、ステップS31に戻り、無い場合は、処理を終了させる。
【0061】
また、地理ネットワーク構成変更部6は、矛盾がない場合でも、必要に応じて、ノードテーブル21、リンクテーブル22、フィーチャーテーブル51、対応テーブル52を更新する。
【0062】
図11は、地理ネットワークの構成変更の例を示す図である。
(ノード変更形式1)
地理ネットワーク構成変更部6は、例えば、リンク上へのノードの追加を行う(
図11(a))。
(ノード変更形式2)
地理ネットワーク構成変更部6は、例えば、孤立するノードの追加を行う(
図11(b))。
【0063】
(ノード変更形式3)
地理ネットワーク構成変更部6は、例えば、リンク上のノードの削除を行う(
図11(c))。
(ノード変更形式4)
地理ネットワーク構成変更部6は、例えば、孤立するノードの削除を行う(
図11(d))。
【0064】
(リンク変更形式1)
地理ネットワーク構成変更部6は、例えば、リンクが存在しないノード間へのリンクの追加を行う(
図11(e))。
(リンク変更形式2)
地理ネットワーク構成変更部6は、例えば、リンクが存在するノード間へのリンクの追加を行う(
図11(f))。
【0065】
(リンク変更形式3)
地理ネットワーク構成変更部6は、例えば、ノード間の唯一のリンクの削除を行う(
図11(g))。
(リンク変更形式4)
地理ネットワーク構成変更部6は、例えば、複数のリンクが存在するノード間の1つのリンクを削除する(
図11(h))。
【0066】
(ノード変更形式1(リンク上へのノード追加)の詳細処理)
ノードv1のレコードとノードv2のレコードと、ノードv1をリンク始点、ノードv2をリンク終点とするリンクe1のレコードが存在し、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードに、フィーチャーテーブル51の属性(属性の種別と属性値の組)f1を含むレコードの属性IDが設定されている場合を考える。また、属性始点と属性終点が、リンク始点からの距離をリンクの長さで割った割合で表現されていることとする。
【0067】
新たなノードv3のレコードを追加する場合の処理を以下に示す。
(1) ノードテーブル21にノードv3のレコードを新たに作成し、このレコードに新たなノードIDを設定し、リンクe1のいずれかの位置を示す点の緯度と経度を設定する。
(2) リンクテーブル22におけるリンクe1のレコードの終点IDとして、ノードv3のレコードのノードIDを設定する。
(3) リンクテーブル22において新たなリンクe2のレコードを作成し、このレコードに新たなリンクIDを設定し、始点IDとして、ノードv3のレコードのノードIDを設定し、終点IDとして、第2のノードv2のレコードのノードIDを設定する。
【0068】
(4) 属性f1に対する属性データ記憶部5のレコードを更新する。
(4a)属性f1をリンクe1とリンクe2の両方に付与すべき場合
新たに対応テーブル52にレコードを作成し、対応先IDとして、リンクe2のリンクIDを設定し、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDを設定する。
【0069】
なお、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードには、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDが既に設定されている。
また、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードの属性始点を、短くなったリンクe1の長さに応じて変更する。
また、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードの属性終点をノードv3を示すように更新する。
また、対応先IDとして、リンクe2のリンクIDを設定された対応テーブル52のレコードの属性始点をノードv3を示すように更新する。
また、対応先IDとして、リンクe2のリンクIDを設定された対応テーブル52のレコードの属性終点を、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードの更新前の属性終点を示すように更新する。
【0070】
(4b)属性f1をリンクe1だけに付与すべき場合
新たに対応テーブル52にレコードを作成し、対応先IDとして、リンクe2のリンクIDを設定し、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDを設定する。なお、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードには、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDが既に設定されている。
また、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードの属性始点と属性終点を、短くなったリンクe1の長さに応じて変更する。
【0071】
(4c)属性f1をリンクe2だけに付与すべき場合
新たに対応テーブル52にレコードを作成し、対応先IDとして、リンクe2のリンクIDを設定し、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDを設定する。なお、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードには、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDが既に設定されている。
【0072】
この、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコード(属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDが既に設定されている)を消去する。
また、対応先IDとして、リンクe2のリンクIDを設定された対応テーブル52のレコードの属性始点と属性終点を、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードの更新前の属性始点と属性終点をそれぞれ示すように更新する。
【0073】
図12は、ノード変更形式1の一例を示す図である。
図のように、リンク上へ2つのノードを追加する場合は、上記ノード変更形式1の方法でリンク上へノードを追加し、元のリンク又は追加されたリンク上へ上記ノード変更形式1の方法でノードを追加すればよい。例えば、リンクのある部分に属性がある場合、その属性始点を、追加する一方のノードとし、属性終点を、追加する他方のノードとすることができる。この場合、追加された2つのノード間のリンク全体に属性が設定されることとなる。
(ノード変更形式2(孤立するノードの追加および削除)の詳細処理)
【0074】
孤立しているノードの追加に当たってノードテーブル21、フィーチャーテーブル51、対応テーブル52をどのように更新するかは自明であるため、説明を省略する。
【0075】
(ノード変更形式3(リンク上のノードの削除)の詳細処理)
ノードv1のレコードとノードv2のレコードと、ノードv1をリンク始点、ノードv2をリンク終点とするリンクe1のレコードが存在し、ノードv2のレコードとノードv3のレコードと、ノードv2をリンク始点、ノードv3をリンク終点とするリンクe1のレコードが存在し、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードに、フィーチャーテーブル51の属性f1を含むレコードの属性IDが設定され、対応先IDとして、リンクe2のリンクIDを設定された対応テーブル52のレコードに、フィーチャーテーブル51の属性f2を含むレコードの属性IDが設定されている場合を考える。また、属性始点と属性終点が、リンク始点からの距離をリンクの長さで割った割合で表現されていることとする。
【0076】
ノードv2を削除する場合の処理を以下に示す。
(1) リンクe1とリンクe2から、残す一方のリンクを任意に選択する。ここでは、リンクe1を選択したこととする。
(2) リンクテーブル22において、リンクe1のレコードの終点IDを、ノードv2のノードIDからノードv3のノードIDに変更する。
(3) また、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52のレコードの属性始点と属性終点を、長くなったリンクe1の長さに応じて変更する。
(4) また、新たに対応テーブル52にレコードを作成し、対応先IDとして、リンクe1のリンクIDを設定し、属性IDとして、属性f2を含むフィーチャーテーブル51のレコードの属性IDを設定する。そして、対応先IDとして、リンクe2のリンクIDを設定された対応テーブル52のレコードの属性始点と属性終点を、ノードv1(リンク始点)からの距離を長くなったリンクe1の長さで割った割合で表現し、これらを新たに作成したレコードに設定する。
(5) ノードテーブル21からノードv2のレコードを削除し、リンクテーブル22からリンクe2のレコードを削除する。
【0077】
(ノード変更形式4(孤立しているノードの削除)の詳細処理)
孤立しているノードの削除に当たってノードテーブル21、フィーチャーテーブル51、対応テーブル52をどのように更新するかは自明であるため、説明を省略する。
【0078】
(リンク変更形式1(リンクが存在しないノード間へのリンクの追加)の詳細処理)
リンクが存在しないノード間へのリンクの追加に当たってリンクテーブル22、フィーチャーテーブル51、対応テーブル52をどのように更新するかは自明であるため、説明を省略する。
(リンク変更形式2(リンクが存在するノード間へのリンクの追加)の詳細処理)
ノードv1のレコードとノードv2のレコードと、ノードv1をリンク始点、ノードv2をリンク終点とするリンクe1のレコードが存在し、対応先IDとして、リンクe1のリンクIDを設定された対応テーブル52の3レコードの内の第1のレコードに、フィーチャーテーブル51の属性f1を含むレコードの属性IDが設定され、第2のレコードに、フィーチャーテーブル51の属性f2を含むレコードの属性IDが設定され、第3のレコードに、フィーチャーテーブル51の属性f3を含むレコードの属性IDが設定されている場合を考える。また、属性f3が属性f1とは矛盾せず、属性f2とは矛盾することとする。
【0079】
この場合における新たなリンクの追加処理を以下に示す。
(1)リンクテーブル22において、ノードv1(リンク始点)を示す始点ID、ノードv2(リンク終点)を示す終点ID、新たなリンクe2のリンクIDを含むレコードを作成する。
(2)フィーチャーテーブル51から属性f3の属性IDを検索し、フィーチャーテーブル51から、この属性IDが設定されたレコードを検索する。
(3)検索したレコードの対応先IDはリンクe1のリンクIDなので、これをリンクe2のリンクIDに変更する。
【0080】
図13は、リンク変更形式2の一例を示す図である。
例えば、リンクe1に対して、属性f4(属性の種別「移動方法」と属性値「階段」の組)と、属性f5(属性の種類「移動方法」と属性値「スロープ」の組)が設定されている場合、リンクe1は、実際には、階段とスロープに分かれると判断できるので、新たにリンクe2が追加され、属性f5が設定される。
このように、本実施の形態では、矛盾のある属性については、その属性をもつリンクを追加することにより、矛盾を解消できる。
【0081】
(リンク変更形式3(ノード間の唯一のリンクの削除)の詳細処理)
ノード間の唯一のリンクの削除に当たってリンクテーブル22、フィーチャーテーブル51、対応テーブル52をどのように更新するかは自明であるため、説明を省略する。
(リンク変更形式4(複数のリンクが存在するノード間から1つのリンクを削除)の詳細処理)
ノードv1のレコードとノードv2のレコードと、ノードv1をリンク始点、ノードv2をリンク終点とするリンクe1のレコードと、ノードv1をリンク始点、ノードv2をリンク終点とするリンクe2のレコードが存在することとする。
【0082】
ここで、対応先IDとして、リンクe1のリンクIDが設定された対応テーブル52の2レコードの一方に、属性IDとして、属性f1を含むフィーチャーテーブル51のレコードの属性IDが設定され、他方に属性IDとして、属性f2を含むフィーチャーテーブル51のレコードの属性IDが設定されていることとする。
また、対応先IDとして、リンクe2のリンクIDが設定された対応テーブル52のレコードに、属性IDとして、属性f1とは矛盾しないが属性f2とは矛盾する属性f3を含むフィーチャーテーブル51のレコードの属性IDが設定されていることとする。
【0083】
例えば、リンクe1に属性f2を付与する必要がなくなった場合、リンクe2を削除する。
(1) 対応先IDとして、リンクe2のリンクIDが設定された対応テーブル52から、属性IDとして、属性f2を含むフィーチャーテーブル51のレコードの属性IDが設定されていないレコードを検索し、属性IDを読み出す。ここで、属性f3を含むフィーチャーテーブル51のレコードの属性IDと同じものが読み出される。
(2) リンクテーブル22から、リンクe2のレコードを削除する。
(3) 対応テーブル52から、対応先IDとして、リンクe2のリンクIDが設定された対応テーブル52のレコードを削除する。
(4) 対応テーブル52に新たなレコードを作成し、対応先IDとして、リンクe1のリンクIDを設定し、属性IDとして、(1)で読み出した属性ID(属性f3の属性ID)を設定する。
なお、(1)で複数の属性IDを読み出した場合は、それぞれについて(4)を行う。
【0084】
以上のように、本実施の形態によれば、地理ネットワークのノードやリンクに対して自動的に属性を付与でき、属性などに応じて、地理ネットワークの構成を変更でき、また、属性の矛盾を解消できる。
【0085】
なお、本実施の形態では、地理ネットワーク構成変更部6は、必要に応じて、ノードテーブル21、リンクテーブル22、フィーチャーテーブル51、対応テーブル52を更新したが以下のようにしてもよい。すなわち、フィーチャーテーブル51、対応テーブル52に設定された属性をノードテーブル21、リンクテーブル22に設定し、つまり、属性付きのノードテーブル21、属性付きのリンクテーブル22を、元のノードテーブル21、元のリンクテーブル22とは別に作成し、元のノードテーブル21、元のリンクテーブル22、フィーチャーテーブル51、対応テーブル52は更新せず、属性付きのノードテーブル21、属性付きのリンクテーブル22を更新してもよい。
【0086】
また、本実施の形態の地理ネットワークデータ管理装置としてコンピュータを機能させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。