まず、本発明に係る地図データ生成処理の概念について説明する。図1は、図郭線の除去について説明する図であり、図2は、本発明に係る地図データ生成処理の概念について説明する図である。
図1に示すように、図郭線の除去前の地図には、地図上で各市区町村の境界を表す閉多角形10とともに、水平および垂直の図郭線11,12が表示されている。このような図郭線11,12は、現実には存在しない線であり、図1に示すように広い地域の地図を表示する際には地図が見にくくなるため除去される。
本発明では、閉多角形10を構成する各線分の傾斜を判定することにより閉多角形10から図郭線を抽出し、除去する処理をおこなう。たとえば、図2には、閉多角形の頂点のXY直交座標系における座標値が(X1,Y1)、(X2,Y2)、(Xp,Yp)、(Xq,Yq)、(X5,Y5)である面20と、閉多角形の頂点の座標値が(X3,Y3)、(X4,Y4)、(Xq,Yq)、(Xp,Yp)である面21とが示されている。ここで、点(Xp,Yp)、(Xq,Yq)を結んだ線分は図郭線22であるものとする(Xp=Xq)。
このような場合、図郭線22の抽出は、面20,21を囲む閉多角形を各線分に分割し、各線分の傾斜を調べることによりおこなわれる。具体的には、各面20,21の閉多角形が、垂直な線分(2つの端点のX座標が等しくY座標だけが異なっている線分)を含んでいるか否か、あるいは、水平な線分(2つの端点のY座標が等しくX座標だけが異なっている線分)を含んでいるか否かを調べる。図2の例では、図郭線22は、2つの端点のX座標が等しくY座標だけが異なっているため、この図郭線22が垂直な線分として抽出される。
なお、たとえ垂直あるいは水平な線分であっても、市区町村の地域形状が偶然そのような線分で表される場合もあるため、本発明では、図郭線22が存在し得るX座標またはY座標の値をあらかじめ登録しておき、上述したようにして抽出された垂直な線分のX座標の値が、登録されているX座標の値に含まれているか否か、あるいは、水平な線分のY座標の値が、登録されているY座標の値に含まれているか否かを調べることにより、垂直あるいは水平な線分が図郭線22であるか否かを判定する処理をおこなう。
図3は、図郭線が存在し得るX座標またはY座標の値を記憶した図郭線データ30の一例を示す図である。図3に示すように、この図郭線データ30には、垂直な図郭線が存在し得るX座標の値および水平な図郭線が存在し得るY座標の値が1次元配列で登録されている。なお、このような図郭線が存在し得るX座標の値およびY座標の値は所定の統一規格により定められているものである。
このようにして図郭線22が抽出されると、図2に示すように、図郭線22を除外した各線分が結合され、新たな閉多角形23が生成される。この各線分の結合時には、各線分の端点の座標値(X座標の値、Y座標の値)が調べられ、座標値が一致する線分の端点同士が結合される。
この場合、面20に対応付けて記憶された座標値のデータと面21に対応付けて記憶された座標値のデータとの間で、図郭線22の端点の座標値に若干ずれがある場合などもあるので、端点の座標値間の距離が所定値以内である場合に端点の座標値が一致すると判定し、各線分を結合することとする。
このように、本発明では、各閉多角形の線分の傾斜から図郭線を抽出するので、各閉多角形について図郭線の有無を一度ずつ調べればよく、図郭線の抽出処理を高速に実行できるとともに、図郭線を抽出する閉多角形を人が指定する必要もないので、図郭線の抽出処理を容易におこなうことができる。
また、本発明では、各閉多角形について線分の傾斜から図郭線の候補を抽出し、図郭線の候補が抽出された場合にのみ、図郭線が存在し得る座標の情報を登録した図郭線データ30を用いてその線分が図郭線か否かを判定することとしたので、すべての線分の座標についてあらかじめ宣言あるいは予想された図郭線の座標値と比較して図郭線の抽出をおこなう場合よりも高速に図郭線の抽出処理をおこなうことができる。
つぎに、本実施例に係る地図データ生成処理の詳細について説明する。図4は、本実施例に係る地図データ生成処理の詳細について説明する図である。図4に示すように、本実施例に係る地図データ生成処理では、まず、地図データ40aを図郭線やサイクルごとに分割する処理をおこなう。
ここで、地図データ40aとは、複数のサイクルを持ち、図郭線を含み、また、各サイクルにIDが割り当てられている地図データのことである。また、サイクルとは、1つの閉じたループを構成している閉多角形のことである。図5は、図郭線を含む地域の地図データおよび地図データの属性情報を記憶した地図属性データの一例について説明する図である。
図5の例には、4つの面50a〜50dと図郭線51とが存在する場合が示されている。このような場合、地図データ40aには、図郭線51を含む4つの面50a〜50dに対応する各経過点の情報が登録される。具体的には、各面50a〜50dについて、面ID、サイクル数、経過点数、経過点座標の4種類の情報が登録される。
面IDは、各面を識別する識別情報である。サイクル数は、面IDにより識別される面に属するサイクルの数である。経過点数は、サイクルに含まれる各経過点の数である。ここで、経過点とは、閉多角形の頂点、および、図郭線51が頂点以外で閉多角形の線分と交わっている場合の交点のことである。経過点座標は、各経過点のX座標およびY座標である。
なお、市区町村が飛び地を有したり、湖などの領域を含む場合には、サイクル数が2以上になる。図6は、市区町村に飛び地や湖がある場合の地図データについて説明する図である。
図6において、面60aおよび面60bは、飛び地の関係にある市区町村であるものとする。この場合、2つの面60a,60bが1つの面IDで管理される。このような場合、図4に示した地図データ40aには、サイクル数として2が登録され、面60aに対応する1つ目のサイクルの経過点数および経過点座標の情報が登録された後、面60bに対応する2つ目のサイクルの経過点数および経過点座標の情報が登録される。
また、面61a内に湖などの領域を示す面61bを有する場合には、2つの面61a,61bが1つの面IDで管理される。そして、図4に示した地図データ40aには、サイクル数として2が登録され、面61aに対応する1つ目のサイクルの経過点数および経過点座標の情報が登録された後、面61bに対応する2つ目のサイクルの経過点数および経過点座標の情報が登録される。
図5の説明に戻ると、地図属性データ52aは、面IDと市区町村IDとを対応付けて記憶したデータである。ここで、面IDは、地図データ40aで説明した面IDに対応するものであり、市区町村IDは、各市区町村を識別する識別情報である。この地図属性データ52aを参照することにより、所定の市区町村に対応する面がどれであるかを判定することができる。
なお、図5に示した図郭線を含む地図データ40aに対し、図郭線を含まない地図データは図7のようになる。図7は、図郭線を含まない地域の地図データおよび当該地図データに係る地図属性データについて説明する図である。
図7の例では、2つの面70a,70bが示されているが、図郭線は存在しない。このような場合も同様に、地図データ71には、2つの面70a,70bに対応する情報が登録されるが、図郭線は存在しないため、経過点座標には閉多角形の頂点の座標値の情報のみが登録される。また、地域属性データ72は、図5に示した地域属性データ52と同様のものとなる。
図4の説明に戻ると、図5で示したような地図データ40aが分割されて分割データ41a〜41fが生成される。これらの分割データ41a〜41fは、図郭線を持たない、経過点の情報は持つがサイクルであるとは限らない、それぞれ固有のIDを持つという特徴を有する。
図8−1〜図8−3は、図4に示した分割データの生成処理について説明する図(1)、(2)、(3)である。また、図9は、分割データおよび当該分割データの属性情報を記憶した分割属性データの一例を示す図である。なお、ここでは、図郭線51が2つの面50a,50bの境界となっている場合について説明する。
この分割データの生成処理では、図郭線51が検出されるまで、経過点の座標が順に地図データ40aから読み出され、図郭線51が検出された場合にそれまでに端点の座標値が読み出された図郭線51以外の線分に係る情報を1つの分割データとして保存する。
また、図郭線51が検出された後、サイクル内のすべての経過点の座標が読み取られた場合には、図郭線51の検出以後に端点の座標値が読み出された線分に係る情報を1つの分割データとして保存する。
たとえば、図8−1の例では、地図データ40aから面50aの経過点の1点目の座標(X6,Y6)および2点目の座標(X7,Y7)が読み込まれる。そして、1点目のX座標X6と2点目のX座標X7とが一致するか否か、また、1点目のY座標Y6と2点目のY座標Y7とが一致するか否かが調べられる。この場合、X座標もY座標も一致しないため、1点目の経過点と2点目の経過点とを結んだ線分は図郭線ではないと判定される。
そして、座標値が(X7,Y7)である2点目の経過点と座標値が(Xp,Yp)である3点目の経過点とを結んだ線分が図郭線であるか否かがつぎに調べられる。この場合も、2点目の経過点と3点目の経過点との間でX座標もY座標も一致しないため、2点目の経過点と3点目の経過点とを結ぶ線分は図郭線ではないと判定される。
その後、さらに、座標値が(Xp,Yp)である3点目の経過点と座標値が(Xq,Yq)である4点目の経過点とを結んだ線分が図郭線であるか否かが調べられる。この場合、3点目のX座標と4点目のX座標とが一致するため(Xp=Xq)、3点目の経過点と4点目の経過点とを結ぶ線分が図郭線51の候補であると判定される。
さらに、一致したX座標の値Xpが図3に示した図郭線データ30に登録されているか否かが調べられる。そして、X座標の値Xpが図郭線データ30に登録されている場合には、3点目の経過点と4点目の経過点とを結ぶ線分が図郭線51であると判定される。
図8−1の場合、図郭線51が検出されたため、それまでに端点の座標値が読み出された図郭線51以外の線分を分割線とし、その分割線に係る情報が分割データおよび分割属性データとして記憶される。
図9には、図8−1に示した処理で生成される分割線80a、分割データ41aおよび分割属性データ81aが示されている。ここで、分割データ41aは、分割線80aに含まれる各経過点の座標を登録したデータである。
分割属性データ81aは、分割データ41aに係る属性情報を記憶したデータである。この分割属性データ81aは、市区町村ID、開始点座標、終了点座標、前の分割データの有無、後の分割データの有無、分割データファイル名、経過点数の情報が登録されている。
市区町村IDは、図5に示した地図属性データ52aに含まれる市区町村IDに対応するものであり、この分割線80aを境界線の一部として有する市区町村を識別する識別情報である。開始点座標は、分割線80aの開始点である経過点のX座標およびY座標である。終了点座標は、分割線80aの終了点である経過点のX座標およびY座標である。
前の分割データの有無は、この分割データ41aの前に生成された分割データがあるか否かを示す情報であり、分割データがある場合には「1」が、分割データがない場合には「0」が登録される。後の分割データの有無は、分割データ41aの後に生成される分割データがあるか否かを示す情報であり、分割データがある場合には「1」が、分割データがない場合には「0」が登録される。
分割データファイル名は、分割データ41aが記憶されているファイルを識別するファイル名の情報である。また、経過点数は、この分割線80aに含まれる経過点の数の情報である。
このようにして面50aから分割線80aが抽出されると、図8−2に示すように、4点目の経過点(Xq,Yq)に隣接する経過点(X2,Y2)が5点目の経過点として選択される。
そして、4点目のX座標Xqと5点目のX座標X2とが一致するか否か、また、4点目のY座標Yqと5点目のY座標Y2とが一致するか否かが調べられる。この場合、X座標もY座標も一致しないため、4点目の経過点と5点目の経過点とを結んだ線分は図郭線ではないと判定される。
続いて、座標値が(X2,Y2)である5点目の経過点と座標値が(X6,Y6)である6点目の経過点とを結んだ線分が図郭線であるか否かが調べられる。この場合も、5点目の経過点と6点目の経過点との間でX座標もY座標も一致しないため、5点目の経過点と6点目の経過点とを結ぶ線分は図郭線ではないと判定される。
ここで、座標データを読み取った経過点の数(6個)が、地図データに含まれる経過点数(5個)を超え、サイクル内のすべての経過点の座標が読み取られたため、図郭線51の検出以後に端点の座標値が読み出された線分を分割線とし、その分割線に係る情報を分割データおよび分割属性データとして記憶する。
図9には、図8−2に示した処理で生成される分割線80b、分割データ41bおよび分割属性データ81bが示されている。ここで、分割データ41bは、分割データ41aと同様のものであり、分割線80bの各経過点の座標の情報が登録されている。
また、分割属性データ81bは、分割属性データ81aと同様のものであり、分割線80bに対応する市区町村ID、開始点座標、終了点座標、前の分割データの有無、後の分割データの有無、分割データファイル名、経過点数の情報が登録されている。
図8−2に示した分割線分の抽出処理の終了後、図8−3に示すように、面50bに係る分割線分の抽出処理がおこなわれる。具体的には、面50aに係る分割線分の抽出処理と同様に、経過点の座標が順に地図データ40aから読み出され、図郭線51が検出された場合にそれまでに端点の座標値が読み出された図郭線51以外の線分に係る情報を1つの分割データとして保存する。
また、図郭線51が検出された後、サイクル内のすべての経過点の座標が読み取られた場合には、図郭線51の検出以後に端点の座標値が読み出された線分に係る情報を1つの分割データとして保存する。
図9には、図8−3に示した処理で生成される分割線80c,80d、分割データ41c,41dおよび分割属性データ81c,81dが示されている。ここで、分割データ41c,41dは、分割データ81aと同様のものであり、分割線80c,80dの各経過点の座標の情報が登録されている。
また、分割属性データ81c,81dは、分割属性データ81aと同様のものであり、分割線80c,80dに対応する市区町村ID、開始点座標、終了点座標、前の分割データの有無、後の分割データの有無、分割データファイル名、経過点数の情報が登録されている。
図4の説明に戻ると、このような方法で生成された分割データ41a〜41fは、サイクル単位で結合され、結合データ42a〜42cが生成される。具体的には、ある分割線の開始点と別の分割線の終了点とが一致する場合に、それらの分割線が結合され、このような処理を繰り返すことにより結合データ42a〜42cが生成される。ここで、各結合データ42a〜42cは、図郭線を持たず、1つのサイクルを持ち、IDが割り当てられているという特徴がある。
図10は、結合データおよび当該結合データの属性情報を記憶した結合属性データについて説明する図である。図10の例には、開始点と終了点とが一致する図9に示した分割線80a〜80dが結合され、面90が生成される場合が示されている。
このような場合、結合データ42aには、面90に含まれるすべての経過点の座標が登録される。また、結合属性データ91aには、市区町村ID、結合データファイル名、経過点数の情報が登録される。
市区町村IDは、図5に示した地図属性データ52aに含まれる市区町村IDに対応するものであり、この面90に対応する市区町村を識別する識別情報である。結合データファイル名は、結合データ42aが記憶されているファイルを識別するファイル名の情報である。経過点数は、この面90に含まれる経過点の数の情報である。
図4の説明に戻ると、結合データ42a〜42cが生成された後、その結合データ42a〜42cは1つの地図データに統合され、図郭線除去後の新地図データ43aが生成される。この新地図データ43aは、複数のサイクルを持ち、図郭線を持たず、各サイクルにIDが割り当てられているという特徴を有する。
図11は、新地図データおよび当該新地図データの属性情報を記憶した新地図属性データについて説明する図である。ここで、新地図データ43aとは、結合データ42a〜42cを統合することにより得られた図郭線除去後の地図データであり、新地図属性データ100aとは、その新地図データ43aの属性情報を記憶したデータである。
図11に示すように、新地図データ43aおよび新地図属性データ100aは、図5に示した地図データ40aおよび地図属性データ52aと同様のデータ形式を有している。具体的には、新地図データ43aは、図郭線が除去された面90に係る面ID、サイクル数、経過点数、経過点座標の情報が登録されている。また、新地図属性データ100aには、面IDと市区町村IDとが対応付けて登録されている。
つぎに、本実施例に係る地図データ生成装置の機能構成について説明する。図12は、本実施例に係る地図データ生成装置の機能構成を示す図である。図12に示すように、この地図データ生成装置は、入力部110、表示部111、ネットワークインターフェース部112、記憶部113、制御部114を有する。
入力部110は、キーボードやマウスなどの入力デバイスである。表示部111は、ディスプレイなどの表示デバイスである。ネットワークインターフェース部112は、他の装置との間でネットワークを介してデータの送受信をおこなうインターフェースである。
記憶部113は、ハードディスク装置などの記憶デバイスである。この記憶部113は、図5に一例を示した地図データ40a〜40z、図5に一例を示した地図属性データ52a〜52z、図3に一例を示した図郭線データ30、図9に一例を示した分割データ41a〜41z、図9に一例を示した分割属性データ81a〜81z、図10に一例を示した結合データ42a〜42z、図10に一例を示した結合属性データ91a〜91z、図11に一例を示した新地図データ43a〜43z、図11に一例を示した新地図属性データ100a〜100zの各ファイルを記憶する。
制御部114は、地図データ生成装置を全体制御する制御部であり、各機能部間のデータの授受などを司る。この制御部114は、データ管理部114a、データ分割部114b、データ結合部114c、地図データ生成部114d、地図出力制御部114eを有する。
データ管理部114aは、記憶部113に対する各種データの記憶または読み出しを管理する管理部である。データ分割部114bは、図8−1〜図8−3で説明したようにして、地図データ40a〜40zに含まれる各面の線分から図郭線を検出し、図郭線を含んだサイクルを複数の分割線に分割して分割データ41a〜41zおよび分割属性データ81a〜81zを生成し、生成した分割データ41a〜41zおよび分割属性データ81a〜81zを記憶部113に記憶する分割部である。
データ結合部114cは、図10で説明したように、データ分割部114bによりサイクルが分割されてできたある分割線の開始点と別の分割線の終了点とが一致する場合に、それらの分割線を結合して結合データ42a〜42zおよび結合属性データ91a〜91zを生成し、生成した結合データ42a〜42zおよび結合属性データ91a〜91zを記憶部113に記憶する結合部である。
地図データ生成部114dは、図11で説明したように、データ結合部114cにより結合されてできた各サイクルを統合して、新地図データ43a〜43zおよび新地図属性データ100a〜100zを生成し、生成した新地図データ43a〜43zおよび新地図属性データ100a〜100zを記憶部113に記憶する生成部である。
地図出力制御部114eは、地図データ生成部114dにより生成された新地図データ43a〜43zおよび新地図属性データ100a〜100zに基づいて、表示部111に対する地図画面の出力制御をおこなう制御部である。
具体的には、この地図出力制御部114eは、入力部110を介してユーザから表示部111への出力を希望する地域の指定を受け付け、指定された地域に対応する地図を新地図データ43a〜43zおよび新地図属性データ100a〜100zに基づいて表示部111に出力する処理をおこなう。
つぎに、本実施例に係る地図データ生成処理の処理手順について説明する。図13は、本実施例に係る地図データ生成処理の処理手順を示すフローチャートである。図13に示すように、まず、地図データ生成装置のデータ分割部114bは、地図データ40a〜40zに含まれる各サイクルを分割線に分割し、図郭線を除去する分割処理をおこなう(ステップS101)。
そして、データ結合部114cは、データ分割部114bにより分割されてできた分割線のデータを結合する処理をおこなう(ステップS102)。その後、地図データ生成部114dは、データ結合部114cにより結合されたデータを用いて図郭線が除去された地図データを作成する処理をおこない(ステップS103)、この地図データ生成処理を終了する。
つぎに、図13に示したステップS101〜ステップS103の処理を詳細に説明する。図14−1は、図13に示したデータ分割処理の処理手順を示すフローチャートである。
図14−1に示すように、まず、地図データ生成装置のデータ分割部114bは、地図データ40a〜40zのファイルおよび地図属性データ52のファイルを開く(ステップS201)。また、データ分割部114bは、サイクルの分割結果を登録する分割データ41a〜41zのファイルおよび分割属性データ81a〜81zのファイルを開く(ステップS202)。
そして、データ分割部114bは、地図属性データ52a〜52zのファイルから市区町村IDを、地図データ40a〜40zのファイルからサイクル数の情報を読み込む(ステップS203)。また、データ分割部114bは、地図データ40a〜40zのファイルから経過点数の情報を読み込み(ステップS204)、さらに、最初の経過点の経過点座標の値を第1の点の座標値として読み込む(ステップS205)。
その後、データ分割部114bは、分割属性データ81a〜81zのファイルに属性情報を登録する(ステップS206)。ここで、属性情報とは、市区町村ID、開始点座標(ここでは、第1の点の座標)、前の分割データ41a〜41zの有無(ここでは、前の分割データ41a〜41zが無いので「0」)、経過点数(座標値を読み出した経過点の数。ここでは、「1」)、開いた分割データ41a〜41zのファイルの分割データファイル名の情報である。
続いて、データ分割部114bは、第1の点の座標値を分割データ41a〜41zに登録し(ステップS207)、つぎの経過点が地図データ40a〜40zにあるか否かをすでに座標値を読み取った経過点数と、地図データ40a〜40zに登録されている経過点数とを比較することにより判定する(ステップS208)。
そして、つぎの経過点がある場合には(ステップS208,Yes)、データ分割部114bは、つぎの経過点の座標値を第2の経過点の座標値として地図データ40a〜40zから読み込む(ステップS209)。
そして、データ分割部114bは、第1の経過点と第2の経過点を結んだ線分の傾斜に基づいて、当該線分が図郭線であるか否かを判定する処理を実行する(ステップS210)。ここで、この図郭線判定処理について詳しく説明する。
図14−2は、図14−1に示した図郭線判定処理の処理手順を示すフローチャートである。図14−2に示すように、まず、データ分割部114bは、第1の点のX座標と第2の点のX座標とが一致するか否かを調べることにより、線分が垂直線か否かを調べる(ステップS301)。
線分が垂直線である場合には(ステップS301,Yes)、データ分割部114bは、そのX座標の値を図郭線データ30に登録されているX座標の値と比較し(ステップS302)、そのX座標の値が図郭線データ30に存在するか否かを調べる(ステップS303)。
X座標の値が図郭線データ30に存在する場合には(ステップS303,Yes)、データ分割部114bは、線分が図郭線であると判定し(ステップS304)、この図郭線判定処理を終了する。X座標の値が図郭線データ30に存在しない場合には(ステップS303,No)、データ分割部114bは、線分が図郭線ではないと判定し(ステップS305)、この図郭線判定処理を終了する。
また、ステップS301において、線分が垂直線でない場合には(ステップS301,No)、データ分割部114bは、第1の点のY座標と第2の点のY座標とが一致するか否かを調べることにより、線分が水平線か否かを調べる(ステップS306)。
そして、線分が水平線ではない場合には(ステップS306,No)、データ分割部114bは、線分が図郭線ではないと判定し(ステップS310)、この図郭線判定処理を終了する。
線分が水平線である場合には(ステップS306,Yes)、データ分割部114bは、そのY座標の値を図郭線データ30に登録されているY座標の値と比較し(ステップS307)、Y座標の値が図郭線データ30に存在するか否かを調べる(ステップS308)。
Y座標の値が図郭線データ30に存在する場合には(ステップS308,Yes)、データ分割部114bは、線分が図郭線であると判定し(ステップS309)、この図郭線判定処理を終了する。Y座標の値が図郭線データ30に存在しない場合には(ステップS308,No)、データ分割部114bは、線分が図郭線ではないと判定し(ステップS310)、この図郭線判定処理を終了する。
図14−1の説明に戻ると、ステップS210の後、データ分割部114bは、線分が図郭線であると判定されたか否かを調べ(ステップS211)、線分が図郭線であると判定された場合には(ステップS211,Yes)、図郭線を除去する処理を実行する(ステップS212)。ここで、この図郭線除去処理について詳しく説明する。
図14−3は、図14−1に示した図郭線除外処理の処理手順を示すフローチャートである。図14−3に示すように、データ分割部114bは、分割属性データ81a〜81zに属性情報を登録する(ステップS401)。ここで、属性情報とは、終了点座標(ここでは、第1の点の座標)、後の分割データ41a〜41zの有無(ここでは、後の分割データ41a〜41zがあるので「1」)、経過点数(分割データ41a〜41zに登録される経過点の数)の情報である。
そして、データ分割部114bは、分割結果の登録用に開いた分割データ41a〜41zおよび分割属性データ81a〜81zを閉じ(ステップS402)、新規の分割データ41a〜41zおよび分割属性データ81a〜81zを開く処理をおこなう(ステップS403)。
その後、データ分割部114bは、開いた分割属性データ81a〜81zに属性情報を登録し(ステップS404)、この図郭線除外処理を終了する。ここで、属性情報とは、市区町村ID、開始点座標(ここでは、第2の点の座標)、前の分割データ41a〜41zの有無(ここでは、前の分割データ41a〜41zがあるので「1」)、経過点数(座標値を読み出した経過点の数。ここでは、「1」)、開いた分割データ41a〜41zのファイルの分割データファイル名の情報である。
このように、図郭線が検出された場合には、図郭線を境としてサイクルを分割することにより、図郭線を含まない分割線のデータを分割データ41a〜41zとして生成することができる。
図14−1の説明に戻ると、ステップS212の後、データ分割部114bは、第2の点の座標値を分割データ41a〜41zのファイルに登録する処理をおこなう(ステップS213)。ステップS211において、線分が図郭線でないと判定された場合には(ステップS211,No)、データ分割部114bは、そのままステップS213の処理を実行する。
その後、データ分割部114bは、第2の点を第1の点として設定し(ステップS214)、ステップS208に移行して、つぎの経過点が地図データ40a〜40zにあるか否かをすでに座標値を読み取った経過点数と、地図データ40a〜40zに登録されている経過点数とを比較することにより判定する。
そして、つぎの経過点が地図データ40a〜40zにある場合には(ステップS214,Yes)、データ分割部114bは、ステップS209以降の処理を継続する。つぎの経過点がない場合には(ステップS208,No)、データ分割部114bは、分割属性データ81a〜81zのファイルに属性情報を登録する(ステップS215)。
ここで、属性情報とは、終了点座標(ここでは、最後の点の座標)、後の分割データ41a〜41zの有無(ここでは、後の分割データ41a〜41zがないので「0」)、経過点数(分割データ41a〜41zに登録された経過点の数)の情報である。
そして、データ分割部114bは、開いた分割データ41a〜41zのファイルおよび分割属性データ81a〜81zのファイルを閉じ(ステップS216)、すべてのサイクルについてデータ分割処理が終了したか否かを調べる(ステップS217)。
そして、すべてのサイクルについてデータ分割処理が終了していない場合には(ステップS217,No)、データ分割部114bは、新規の分割データ41a〜41zのファイルおよび分割属性データ81a〜81zのファイルを開き(ステップS218)、ステップS204に移行して、それ以後の処理を継続する。
すべてのサイクルについてデータ分割処理が終了した場合には(ステップS217,Yes)、データ分割部114bは、すべての面データに対してデータ分割処理が終了したか否かを調べる(ステップS219)。
そして、すべての面データに対してデータ分割処理が終了していない場合には(ステップS219,No)、ステップS202に移行して、データ分割部114bは、新規の分割データ41a〜41zのファイルおよび分割属性データ81a〜81zのファイルを開き(ステップS202)、それ以後の処理を継続する。
すべての面データに対してデータ分割処理が終了した場合には(ステップS219,Yes)、そのままこのデータ分割処理を終了する。
つぎに、図13に示した分割データ結合処理の処理手順について説明する。図15は、図13に示した分割データ結合処理の処理手順を示すフローチャートである。図15に示すように、まず、地図データ生成装置のデータ結合部114cは、結合データ42a〜42zのファイルおよび結合属性データ91a〜91zのファイルを新規に開く(ステップS501)。
そして、データ結合部114cは、データ分割部114bにより生成された分割データ41a〜41zのファイルを開き(ステップS502)、さらに分割属性データ81a〜81zのファイルを開く(ステップS503)。
続いて、データ結合部114cは、分割データ41a〜41zのファイルに登録された経過点の座標をすべて結合データ42a〜42zのファイルに登録し(ステップS504)、さらにその分割データ41a〜41zのファイルに対応する分割属性データ81a〜81zのファイルの「後の分割データの有無」に結合処理が済んだことを示す情報である「2」を登録する(ステップS505)。
その後、データ結合部114cは、ステップS502でファイルを開いた分割データ41a〜41zと結合可能な分割データ41a〜41zのファイルが存在するか否かを検索する(ステップS506)。
具体的には、データ結合部114cは、ファイルを開いた分割データ41a〜41zに対応する市区町村IDと同じ市区町村IDを持ち、ファイルを開いた分割データ41a〜41zの終了点座標と一致する開始点座標を有し、後の分割データの有無が「2」でないという条件を満足する分割データ41a〜41zが存在するか否かを検索する。
そして、上記条件を満足する結合可能な分割データ41a〜41zのファイルが存在する場合には(ステップS506,Yes)、ステップS502に移行して、データ結合部114cは、分割データ41a〜41zのファイルを開き、それ以後の処理を継続する。
上記条件を満足する結合可能な分割データ41a〜41zのファイルが存在しない場合には(ステップS506,No)、データ結合部114cは、結合属性データ91a〜91zのファイルに属性情報を登録する(ステップS508)。ここで、属性情報とは、分割データ41a〜41zに対応する市区町村ID、結合データ42a〜42zの結合データファイル名、経過点数(結合データ42a〜42zに座標値が登録された経過点の数)の情報である。
その後、データ結合部114cは、ステップS501で開いた結合データ42a〜42zのファイルおよび結合属性データ91a〜91zのファイルを閉じ(ステップS509)、分割属性データ81a〜81zにおける後の分割データ41a〜41zの有無が「2」である未処理の分割データ41a〜41zが存在するか否かを調べる(ステップS510)。
そして、未処理の分割データ41a〜41zが存在する場合には(ステップS510,Yes)、ステップS501に移行して、データ結合部114cは、それ以後の処理を継続する。未処理の分割データ41a〜41zが存在しない場合には(ステップS510,No)、そのままこの分割データ結合処理を終了する。
つぎに、図13に示した地図データ作成処理の処理手順について説明する。図16は、図13に示した地図データ作成処理の処理手順を示すフローチャートである。図16に示すように、まず、地図データ生成装置の地図データ生成部114dは、新地図データ43a〜43zおよび新地図属性データ100a〜100zのファイルを新規に開く処理をおこなう(ステップS601)。
そして、地図データ生成部114dは、データ結合部114cにより生成された結合データ42a〜42zのファイルを開き(ステップS602)、さらに結合属性データ91a〜91zのファイルを開く(ステップS603)。
続いて、地図データ生成部114dは、同じ市区町村IDを持つ結合データ42a〜42zのファイルを検索し(ステップS604)、検索された同じ市区町村IDを持つ結合データ42a〜42zのファイル数をサイクル数として設定する(ステップS605)。これにより、図6に示したように、市区町村が飛び地を有したり、湖などの領域を含む場合のサイクル数を把握することができる。
その後、地図データ生成部114dは、面に割り当てられた面IDおよびサイクル数の情報を新地図データ43a〜43zのファイルに登録し(ステップS606)、さらに経過点数の情報を新地図データ100a〜100zのファイルに登録する(ステップS607)。
そして、地図データ生成部114dは、経過点の座標の情報を新地図データ100a〜100zのファイルに登録し(ステップS608)、開いていた結合データ42a〜42zのファイルを閉じる処理をおこなう(ステップS609)。
続いて、地図データ生成部114dは、同じ市区町村IDを持つ結合データ42a〜42zのファイルが他に存在するか否かを調べ(ステップS610)、同じ市区町村IDを持つ結合データ42a〜42zのファイルが存在する場合には(ステップS610,Yes)、その結合データ42a〜42zのファイルを開く処理をおこなう(ステップS611)。
そして、地図データ生成部114dは、開いた結合データ42a〜42zに対応する結合属性データ91a〜91zを開き(ステップS612)、ステップS607に移行して、それ以後の処理を継続する。
ステップS610において、同じ市区町村IDを持つ結合データ42a〜42zのファイルが存在しない場合には(ステップS610,No)、地図データ生成部114dは、新地図属性データ100a〜100zのファイルに属性情報を登録する(ステップS613)。ここで、属性情報とは、新地図データ43a〜43zに登録された面IDと、面IDに対応する市区町村IDの情報である。
そして、地図データ生成部114dは、新地図データ43a〜43zのファイルおよび新地図属性データ100a〜100zのファイルを閉じ(ステップS614)、新地図データ43a〜43zのファイルに経過点の座標値が登録されていない未処理の結合データ42a〜42zがあるか否かを調べる(ステップS615)。
そして、未処理の結合データ42a〜42zがある場合には(ステップS615,Yes)、ステップS601に移行して、地図データ生成部114dは、それ以後の処理を継続する。未処理の結合データ42a〜42zがない場合には(ステップS615,No)、そのままこの地図データ作成処理を終了する。
なお、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図17を用いて、上記各種処理を実現するプログラムを実行するコンピュータの一例について説明する。図17は、図12に示した地図データ生成装置となるコンピュータのハードウェア構成を示す図である。
このコンピュータは、ユーザからのデータの入力を受け付ける入力装置200、ディスプレイなどの表示装置201、RAM(Random Access Memory)202、ROM(Read Only Memory)203、各種プログラムを記録した記録媒体からプログラムを読み取る媒体読取り装置204、ネットワークを介して他のコンピュータとの間でデータの授受をおこなうネットワークインターフェース205、CPU(Central Processing Unit)206およびHDD(Hard Disk Drive)207をバス208で接続して構成される。
そして、HDD207には、地図データ生成装置の機能と同様の機能を発揮するプログラム、すなわち、図17に示す地図データ生成プログラム207bが記憶されている。なお、地図データ生成プログラム207bについては、適宜分散して記憶することとしてもよい。
そして、CPU206が、地図データ生成プログラム207bをHDD207から読み出して実行することにより、地図データ生成プロセス206aとして機能するようになる。この地図データ生成プロセス206aは、図12に示したデータ管理部114a、データ分割部114b、データ結合部114c、地図データ生成部114d、地図出力制御部114eに対応する。
また、HDD207には、各種データ207aが記憶される。この各種データ207aは、図12に示した地図データ40a〜40z、地図属性データ52a〜52z、図郭線データ30、分割データ41a〜41z、分割属性データ81a〜81z、結合データ42a〜42z、結合属性データ91a〜91z、新地図データ43a〜43z、新地図属性データ100a〜100zに対応する。
そして、CPU206は、各種データ207aをHDD207に記憶するとともに、各種データ207aをHDD207から読み出してRAM202に格納し、RAM202に格納された各種データ202aに基づいてデータ処理を実行する。
ところで、地図データ生成プログラム207bは、必ずしも最初からHDD207に記憶させておく必要はない。たとえば、コンピュータに挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータの内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータに接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶しておき、コンピュータがこれらから各プログラムを読み出して実行するようにしてもよい。
上述してきたように、本実施例では、データ分割部114bが、記憶部113に記憶された地図データ40a〜40zを読み出して当該地図データ40a〜40zに対応する地図を構成する閉多角形の各線分の傾斜を判定することにより図郭線を抽出し、地図データ生成部114dが、抽出した図郭線を除去した地図のデータを新地図データ43a〜43zとして生成することとしたので、地図データ40a〜40zから図郭線のデータを抽出・除去する処理を高速かつ効果的におこない、図郭線を除去した新地図データ43a〜43zを生成することができる。
また、本実施例では、データ分割部114bが、線分の傾斜を判定することにより図郭線の候補となる線分を抽出し、XY直交座標系において図郭線が存在し得るX座標またはY座標をあらかじめ登録した図郭線データ30に、抽出した線分のX座標またはY座標が含まれるか否かを判定することにより図郭線を抽出することとしたので、図郭線の候補が抽出された場合にのみ、図郭線が存在し得る座標のあらかじめ登録された情報を読み出して線分が図郭線か否かを判定することとしたので、図郭線の抽出を高速におこなうことができる。
また、本実施例では、データ分割部114bにより地図を構成する図郭線を含んだ閉多角形から当該図郭線が抽出された場合に、データ結合部114dが、当該図郭線の端点から所定の距離内にある当該図郭線以外の線分の端点同士を結合して新たな閉多角形を生成することにより図郭線を除去した地図のデータを新地図データ43a〜43zとして生成することとしたので、図郭線を除去した地図の地図データを効率的に生成することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、この装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(付記1)図郭線を除去した地図の地図データを生成する地図データ生成プログラムであって、
データベースに記憶された地図データを読み出して当該地図データに対応する地図を構成する閉多角形の各線分の傾斜を判定することにより前記図郭線を抽出する抽出手順と、
前記抽出手順により抽出された図郭線を除去した地図の地図データを生成する生成手順と、
をコンピュータに実行させることを特徴とする地図データ生成プログラム。
(付記2)前記抽出手順は、前記線分の傾斜を判定することにより前記図郭線の候補となる線分を抽出し、XY直交座標系において前記図郭線が存在し得るあらかじめ登録されたX座標またはY座標の情報に、抽出した線分のX座標またはY座標が含まれるか否かを判定することにより前記図郭線を抽出することを特徴とする付記1に記載の地図データ生成プログラム。
(付記3)前記生成手順は、前記抽出手順により前記地図を構成する図郭線を含んだ閉多角形から当該図郭線が抽出された場合に、当該図郭線の端点から所定の距離内にある当該図郭線以外の線分の端点同士を結合して新たな閉多角形を生成することにより前記図郭線を除去した地図の地図データを生成することを特徴とする付記1または2に記載の地図データ生成プログラム。
(付記4)図郭線を除去した地図の地図データを生成する地図データ生成方法であって、
データベースに記憶された地図データを読み出して当該地図データに対応する地図を構成する閉多角形の各線分の傾斜を判定することにより前記図郭線を抽出する抽出工程と、
前記抽出工程により抽出された図郭線を除去した地図の地図データを生成する生成工程と、
を含んだことを特徴とする地図データ生成方法。
(付記5)図郭線を除去した地図の地図データを生成する地図データ生成装置であって、
地図データを記憶する記憶手段と、
前記記憶手段に記憶された地図データを読み出して当該地図データに対応する地図を構成する閉多角形の各線分の傾斜を判定することにより前記図郭線を抽出する抽出手段と、
前記抽出手段により抽出された図郭線を除去した地図の地図データを生成する生成手段と、
を備えたことを特徴とする地図データ生成装置。