【実施例1】
【0021】
[全体構成]
本実施例による地理情報ベクタ化支援方法を実現する地理情報ベクタ化支援シテムは、
図1に示す如く、GPS受信部101と、詳細化部102と、初期値入力部103と、集約部104と、記憶部105と、入力部106と、出力部107と、最適化部108と図示しない制御部がバス109を介して相互接続されるように構成され、地理情報をベクタデータの形式で管理するときにベクタデータの精度を任意に設定することができる。例えば、ある曲がった道路をどこに何点の点を置いてそれらを結ぶ線分で表現するか、その詳細度を自由に設定できる。これにより、煩雑なデータ管理と正確性とのトレードオフを図ることができる。この地理情報ベクタ化支援シテムは、操作者が携帯可能な携帯型の端末装置として構成することや、操作者が操作するGPS受信部101を含む携帯端末と、該携帯端末とネットワークを介して他の部位と接続させ、協働して後述する動作をおこなうように構成しても良い。
【0022】
前記GPS受信部101は、複数のGPS(Global Positioning System)衛星からの電波を受信して緯度経度高度を測定するGPS処理機能を有し、前記詳細化部102は、線形要素を詳細化する詳細化処理機能を有し、前記初期値入力部103は、地図上の線形要素を表す点列データの初期値を入力する初期値入力処理機能を有する。
【0023】
前記集約部104は、地図上の線形要素を集約する集約処理を有し、前記入力部106は、地図上に追加する点位置情報の入力や分岐判断等の情報を入力する機能を有し、前記出力部107は、地図情報を表示出力する機能を有し、前記最適化部108は、点列データから適切な点を抽出して連続する線片データを出力する最適化処理機能を有し、これら各機能の詳細は後述する。
【0024】
前記記憶部105は、点列データ(
図5)及び線片データ(
図7)からなるベクタ形式の地図情報及びラスタデータ形式と緯度・経度情報を持つ点データ(
図16)を含む地図データを格納する記憶機能を有する。
【0025】
前記点列データは、
図6に示した複数点の乗る線形要素(道路401)の番号(001,403,404,405)を記載するものであって、
図5に示す如く、一意に道路毎に付与された道路ID501、この道路
上に存在する点の順番を表す順序502、この順番の点に一意に付与された点ID503の各項目情報を持つ。
【0026】
前記線片データは、
図7に示す如く、前記道路ID501、該道路上に存在する点の順序を表す順序502、該順序の点ID503、該点IDに対して順序が一つ前の点IDを示す直前の点ID704、該点IDに対して順序が一つ後の点IDを示す直後の点ID705、前記点IDを始点として直後の点IDとの間の線片(2点を結ぶ線分)のIDを示す線片ID706からなる。この線片データの行(レコード)は点列データの中で線形要素を表す際に用いる点のみが抽出される。なお、
図7の線片データにおける始点での直前の点IDはNULLとなり、終点での直後の点IDはNULLとなり、終点での線片IDはNULLとなる。
【0027】
図7に示した例では全部の点を使うと仮定したときのデータを示し、点列データの中で線片として使わない点がある場合にはその点を飛ばして格納される。従って、
図5に示す点列データは、位置座標が分かっているすべての点のデータであるのに対し、
図7に示す線片データは、線片を構成する点のみのデータとなる。
【0028】
前記点データは、
図16に示す如く、前記点ID503に対応した位置情報を示す緯度1602及び経度1603を格納する。
【0029】
[動作]
本実施例による地理情報ベクタ化支援シテムは、前記詳細化部102が地図上の道路等の線形要素を詳細化する詳細化処理機能を有する。
[線形要素詳細化処理]
まず、本実施例による線形要素を詳細化する処理概要を次に
図3を参照して説明する。
図3(a)は、ある地点の地図を示す。この
図3(a)の例では、左上に学校が有り、二本の道路が縦方向及び斜め横方向に横切っており、中央付近で交差している。このように地図上においては、道路や河川他を曲線や直線で表すことができ、この一次元のパラメトリック曲線上に位置を示すことができる要素を線形要素と呼ぶ。
【0030】
このため、
図3(a)に示す地図は、横方向の道路301のみをパラメトリック曲線として抽出すると、
図3(b)に示す如く該当道路の表現を点302と点303を結ぶ線分304として表現することができる。
【0031】
この
図3(b)に示したパラメトリック曲線の道路301を、
図3(c)に示す如く、点302と点303に加えてその間に点305を配置(追加)したとき、点302から点305を経由して点303に至る折れ線として表現される。この図において点302と点305の間は線分306であり、点305と点303の間は線分307である。
【0032】
このように本実施例で述べる線形要素を詳細化する処理とは、道路301を線分304として表現していたものを、詳細化した連続する線分306及び線分307で表現するように置き換えることを指す。
【0033】
この詳細化処理を実行する詳細化部102の動作は
図2に示す次に述べるステップにより実行される。
s201:追加する点の位置情報を入力するステップ。
このステップは、ある道路上の点で位置情報を携帯端末によって取得するユースケースを想定したとき、ボタンの機能を有する入力部106への入力をトリガーとし、GPS受信部101がその入力があったときのGPS受信装置の位置情報を取得することが考えられる。
【0034】
s202:出力部107にs201で取得された点の近傍の地図(地図データ)を表示出力するステップ。
この地図データは、記憶部105から読み出される線形要素上の点として既に入力された点を表す点列データ(
図5)と、線形要素を複数の線分にて近似したときの線分である線片データ(
図7)と、各点の緯度経度を含む点データ(
図16)とを含み、本ステップs202では、線片データを構成する点の中から2点が出力部107の地図に重畳表示される。その際に、ステップs201で入力された点の近傍且つ線形要素の各方向に近いものを一つずつ選ぶ。
【0035】
この出力部107の画面例を
図4(a)に示す。
図4(a)は、道路401が画面上表示され、ステップs201で取得した点は点1000として重畳表示される。この地図の表示範囲内には、点403、点404、点405が道路上の点として存在し、既に存在する点(点403、点404、点405)から、点1000の近傍の点(点404、点405)が2点選ばれることにより、
図4(b)にあるように出力部107に点404と点405を結ぶ地図が表示される。
【0036】
s203:ステップs201で取得した点で詳細化を行うか否かを操作者の入力部106への入力により判定するステップ。
s204:ステップs203において詳細化を行う旨が入力されたことを判定したとき、ステップs201で取得した点を用いて詳細化処理を実行するステップ。
【0037】
このステップs204による詳細化処理は、前記ステップs201で取得した点の前後の点をステップs202で抽出し、この抽出した2点を結ぶ線分をステップs201で取得した点を端点に含む2本の線分に分割する処理であって、具体的には、この区間(ステップs202により抽出した2点を結ぶ線分)の線分表現をs201で取得した点を経由する折れ線にする処理である。
【0038】
次に、
図8(a)に示した詳細化前の点及び線分を、
図8(b)に示した詳細化後の点及び線分に詳細化する処理を説明する。本例は、
図8(a)に示した点404と点405を結ぶSeg9を、
図8(b)に示す点404と点405との間に点1000を挿入し、点404と点1000を結ぶSeg11と点1000と点405を結ぶSeg12に置き換える例である。
【0039】
この詳細化処理は、前述の詳細化処理と同様に点列データ(
図5)への行の挿入修正及び線片データ(
図7)への行の挿入修正を行い、
図8(c)及び
図8(d)に示す点列データ及び線片データに修正することによって行われる。
【0040】
図8(c)の点列データの修正は、順序が4に相当する点1000の1行(レコード)を挿入し、順序4以降については順序をすべて修正することによって行う。
図8(d)の線片データの修正は、順序が4に相当する1行(レコード)を挿入し、直前の行の直後の点ID及び線分IDを修正し、直後の行の直前の点IDを修正し、順序4以降については順序をすべて修正し、新しいIDは使っていない値を自動採番することによって行う。
【0041】
s205:ステップs203において詳細化を行う旨が入力されていないことを判定したとき、詳細化しない場合の処理を行うステップ。
このステップS205は、線片データの追加や修正を行わず、点列データのみ追加修正する。ここでは、道路ID、順序、点IDを持つ行を適当な順序位置に挿入し、それ以降の順序の点の順序欄を修正する。
【0042】
なお、前記例ではステップs203の詳細化を行うかどうかの判定を入力部106への入力に基づいて判定する例を説明したが、本実施例はこれに限られるものではなく、常に判断をYESとして処理してステップs204に遷移するように構成することや、評価値を計算してその結果を元にステップs204に遷移するか否かを判定するように構成しても良い。前記常に判断をYESとして処理してステップs204に遷移する構成は、ステップs201により入力した点を自動的に線片データとして採用してs204の詳細化処理につなげることができ、ステップs201の位置情報入力に処理のフローを制御させられることができ、詳細化処理を呼び出す上位手続きを考えた場合に入力操作の煩雑さを軽減することができる。
【0043】
[詳細化処理の評価値計算方法]
前述したステップS203の判定を行うための評価値の計算方法を
図12を参照して次に説明する。
図12に示す地図は、二重丸で示す点1202及び点1203がステップs202により抽出された点であり、線片中の星印で示す点1201がステップs201により入力された点の位置を表し、これら点は線形要素を近似する点に含まれ、各点及び線分は次の通りである。
【0044】
・黒丸で示す点1204及び1205は、点列データにおいて、点1202と1203の間にある点であって線片データに含まれていない点を表す。
・折れ線1206は、点1202と点1203の間を点列データ及びステップs201により入力された点1201の全てを通る折れ線(連続する線分)である。
・線分1207は、点1202と点1203を結ぶ線分である。
・線分1208は、点1202から点1203へ向かって点1201のみを経由する折れ線(二つの連続する線分)である。
【0045】
ここで、本実施例で述べる評価値とは、折れ線1206を近似するために、端点を結んだ線分1207よりも線分1208がどの程度適切かという指標である。
本実施例による評価は、折れ線1206と線分1208の間に挟まれる多角形面積が
折れ線1206と線分1207の間に挟まれる多角形面積より小さくなっているか否かを判定することによって行う。
【0046】
このように、前記直線と直線との間に挟まれる面積は、定積分の計算により容易に算出できるため、全ての座標が確定している折れ曲がった点で積分区間を分割することによって、解析的に計算することができる。
【0047】
これを具体的に説明すると、
図14に示すような、f1(x)とf2(x)の二つの曲線で挟まれる面積は、数1で示すように、それぞれの曲線を示す関数の差の絶対値を積分することで表される。
【数1】
面積は回転に対して不変量なため、x軸やy軸がこれらの曲線に対してどちらを向いているかには無関係であり、軸が直交していればよい。すなわち、緯度、経度で十分である。曲線は、この場合、折れ線なので、折れる点ごとに区間を分割すれば区間ごとに二つの一次直線の差の定積分の計算となる。計算した結果、
図12に示す
折れ線1206と線分1207で囲む場合よりも、折れ線1206と線分1208で囲む面積が小さくなる場合には、ステップs204に移り詳細化を行い、そうでない場合にはステップs205に移る。
【0048】
また、前述の評価値の計算は、区分ごとの直線間で囲む面積のみで計算したが、これに加えて、区分の数を評価に含むように修正して実施することもできる。区分の数が多いほど、誤差であるところの面積が小さくなるのは一般的にあり得る傾向であるが、その分、データ数が多くなり煩雑となる。近似の折れ線の頂点が少ないほど単純で良いという評価を実現するために、例えば、面積と区分の数の積を評価値とすることが可能である。これにより、より少ない点数での近似が選好される評価が可能となる。
【0049】
[点列データ初期値入力処理]
次に、初期値入力部103が行う線形要素を表す点列データの初期値入力処理について説明する。
前述した詳細化処理では、少なくとも線形要素に対して近傍の2点が予め存在する必要があった。したがって、これらの初期値を入力する処理が予め必要となる。そのためには、入力部106への入力をトリガーとしてGPS受信部101が、操作者がGPS受信装置の位置情報を取得する工程を同じ線形要素(道路や河川)で2回繰り返すことで実現できる。
【0050】
その結果の点列データは、
図5に示した形式で2行が作成され、
図7に示した線片データが2行作成される。したがって、最初の2点はデフォルトで線形要素を近似する点として登録される。また、緯度、経度の情報は、点IDとともに
図16に示した形式の点データとして作成される。これらの点列データ、線片データ、点データは、いずれも記憶部105に記憶される。
【0051】
[線形要素集約処理]
次に、集約部104が行う線形要素を集約する処理を
図9に示すフローを参照して説明する。この線形要素集約処理動作は、次に述べるステップにより実行される。
【0052】
s901:線片データから二点を選択するステップ。
このステップは、例えば、
図10に示した出力部107により表示される地図に点列データ及び線片データが重畳表示され、線片データで示す道路1001と二重丸で示す点403・404・1000・405と、黒丸で示す点列データの点の中で線片データに入らなかった点001が表示され、この線片データの道路
1001上の二重丸で示す点404及び405の2点を選択する工程である。
【0053】
s902:ステップs901により選択した点404及び点405を端点として、その間の点列データを用いて順序が間の点1000を抽出するステップ。
s903:操作者からの入力部106からの入力により点404及び点405の間を集約するか否かの判定を行い、集約しないと判定したときに処理を終了するステップ。
s904:点404及び点405の間を集約を実行して処理を終了するステップ。
【0054】
この集約処理は、選択された端点の2点の間に点(黒丸点)があった場合、その点を線片データから削除すると共に、直前の点に対して、線分IDを新規登録し、直後の点IDを修正し、直後の点に対して、直前の点IDを修正する。また、直後の点以降の順序を修正するものであり、点列データの修正を次に説明する。
【0055】
この点列データの修正は、
図11(a)に示す集約処理前の線片データの点列として、001・403・404・1000・405がこの順序で並んでいるところを、点404と点405で集約処理をした場合、
図11(b)に示す集約処理後の線片データに示す如く、次のように修正を行う。
・点1000に相当する行(レコード)を削除すること。
・直前の点404に対する線分IDに新しいIDであるSeg13が付与され、直後の点IDを405に修正すること。
・直後の点405に対する直前の点IDが404に修正すること。
・点405以降の順序の全てを修正すること。
【0056】
なお、本実施例においては、前記ステップs903による集約するか否かの判定を入力部106への入力によって行う例を記載したが、本実施例はこれに限られるものではなく、例えば、常に判断をYESとして処理することや、評価値を計算してその結果に基づいて判定するように構成することもできる。
【0057】
前記常に判断をYESとする処理は、ステップs901による入力が自動的にステップs904の集約処理につながり、集約処理を呼び出す上位手続きを考えた場合に入力操作の煩雑さが軽減することができる。
【0058】
[集約処理の評価値計算方法]
ここで、前記評価値を計算してその結果に基づいて判定する処理における評価値の計算の方法を
図13を用いて説明する。
図13における二重丸で示す点1301及び1302は、ステップs901で選択された線片データの2点を表し、黒丸で示す
符号1303・1304・1305は、ステップs902で抽出された点のうち線片データに含まれない点であり、二重丸で示す点1306は、ステップs902で抽出された点のうち線片データに含まれる点である。また、折れ線1307は、点1301及び1302を端点とし、その間の点1303・1306・1304・1305を順序にしたがって結んだ折れ線であり、線分1308は、線片データのみを結んだ折れ線であり、線分1309は、端点を結んだ線分である。
【0059】
ここで評価値とは、折れ線1307を近似するために、
線分1308よりも端点を結んだ
線分1309の方がどの程度適切かという指標である。本実施例による評価値の算出は、折れ線1307との間に挟まれる面積を計算して、それが小さくなっているかどうかにより判定する。
【0060】
すなわち、直線と直線との間に挟まれる面積は、単純な定積分の計算で算出ができ、折れ曲がった点で積分区間を分割することにより、解析的に計算することができる。本実施例による評価は、折れ曲がった点はすべて座標が確定しているため、計算の結果、線分1308と折れ線1307で囲む場合に比べて、線分1309と折れ線1307で囲む方が面積が小さくなる場合、ステップs904に移り集約を行い、線分1309と折れ線1307で囲む方が面積が小さくならない場合には終了する。
【0061】
また、前述の評価値の計算は、区分ごとの直線間で囲む面積のみで計算したが、これに加えて、区分の数を評価に含むように修正して実施することもできる。区分の数が多いほど、誤差であるところの面積が小さくなるのは一般的にあり得る傾向ではあるが、その分、データ数が多くなり煩雑となる。近似の折れ線の頂点が少ないほど単純で良いという評価を実現するために、例えば、面積と区分の数の積を評価値とする実施例が可能である。これにより、より少ない点数での近似が選好される評価が可能となる。
【0062】
また、線分1308と折れ線1307で囲む場合よりも、線分1309と折れ線1307で囲む方が面積が小さくなる場合に、ステップs904に移り集約を行うとした上述の実施例を変更し、線分1309と折れ線1307で囲む面積が、決められた値より小さい場合にはステップs904に移り集約を行っても良い。これにより、許容される誤差の条件を満たしつつ、少ない数の点で線形要素を近似することができる。
【0063】
[最適化処理]
次に、本実施例による最適化部108が行う、点列データから適切な点を抽出して連続する線片データを出力する処理(最適化処理)について、
図15のフローチャートを用いて説明する。
s1501:点列データから始点と終点となる2点を入力するステップ。
このステップは、入力部106から入力したN点すべてを経由する折れ線と、両端の2点を結ぶ線分で囲む図形の面積を計算し、最小値Sにその面積の値を代入し、点の集合を保持する変数C0に両端の2点をセットする処理で有り、この点の集合を保持する変数C0は、点IDのリストとして表される。
【0064】
s1502:点列データから、この2点を結ぶ折れ線の候補を構成する点を選択するステップ。
このステップは、ステップs1501で選ばれた2点の間に、これらの2点も含んで点列データにN点存在するとし、これらの2点も含め、ここからn点を抽出して折れ線を構成する点を選択する処理である。
【0065】
この点を選ぶ組合せの総数は、(N−2)C(n―2)個と書ける。ここで、aCbとはa個からb個を取る組合せの総数を表す(nは2以上でN以下の整数)。このステップs1502では、2以上N以下のすべてのnについて、すべての(N−2)C(n―2)個の組合せの中から、まだ選ばれていないn点の組合せを一つ選ぶ。
【0066】
s1503:N点すべてを経由する折れ線と、n点を経由する折れ線で囲む図形の面積を計算するステップ。
s1504:ステップs1503で計算された面積が最小値Sより小さいか否かを判定し、小さくないと判定したときに前記ステップs1502に戻り、小さいと判定したときに最小値Sを更新すると共に点の集合を保持する変数C0をそのときのn点の点に更新するステップ。
【0067】
s1505:ステップ1504により算出した面積が最小値Sより小さいと判定したとき、結果を出力部107から変数C0を出力するステップ。
この変数C0は、N点を近似する最も良いn点の組合せである。Sはそのときの評価値に相当する。
【0068】
前記実施例では、ステップs1503による計算処理として、N点すべてを経由する折れ線と、n点を経由する折れ線で囲む図形の面積とする例を説明したが、本発明はこれに限られるものではなく、面積と区分の数の積を評価値としても良い。これにより、より少ない点数での近似が選好される評価が可能となる。
【0069】
さらに、上記実施例では、N−2個からn−2個の組合せを全探索したが、nを固定して、その中でのみ探索するように変更しても良い。この場合、ステップs1501では、nを別途入力し、ステップs1502では、そのnに対してのみ(N−2)C(n―2)個の組合せから、まだ選ばれていないn点の組合せを一つ選べばよい。この変更例では、全探索をしないことで実行時間を短縮でき、ある道路の区間をいくつの点で結びたいかという意図を外部入力することができる。
【0070】
[出力画面例]
以上説明した、詳細化処理・初期値入力処理・集約処理・最適化処理を用いて地理情報のベクタ化を支援する際に出力部107に表示する出力画面の一例を
図17を参照して説明する。
【0071】
この出力画面は、GPS受信部101が存在する場所の地
図1701と、道路IDの入力用のテキストボックス1702と、処理対象の地図情報(点列データ及び線片データ)を指定するための少なくとも2点の点IDによる初期値を入力するための初期入力ボタン1703と、詳細化を行うための詳細化ボタン1704と、集約を行うための集約ボタン1705と、最適化を行うための最適化ボタン1706と、処理終了を行うための終了ボタン1707が表示される。
【0072】
この出力画面において、操作者が、テキストボックス1702へ道路ID401を入力することにより、道路ID401に対応した地
図1701が表示され、該道路ID401に対する初期値入力・詳細化処理・初期値入力処理・集約処理・最適化処理が可能となる。
【0073】
この状態において、初期入力ボタン1703を押すことにより、初期値入力部103による線形要素を表す点列データの初期値を入力する処理が呼び出され、詳細化ボタン1704を押した場合には詳細化部102による線形要素を集約する処理が呼び出され、集約ボタン1705を押した場合には、集約部104による集約処理が呼び出され、最適化ボタン1706を押した場合には最適化部108による最適化処理が呼び出され、終了ボタン1707を押した場合には終了する。呼び出された処理は、前記記載した処理がなされて、必要な出力を出力部107に出力される。
【0074】
このように本実施例による地理情報ベクタ化支援シテムは、地理情報をベクタデータの形式で管理する際に、そのベクタデータの精度を、必要なだけ細かく或いは必要なだけ粗く設定することができる。例えば、ある曲がった道路をどこに何点の点を置いてそれらを結ぶ線分で表現するか、その詳細度を自由に設定できる。これにより、煩雑なデータ管理と正確性とのトレードオフを図ることができる。