(57)【要約】    【課題】  本発明の目的は、表示指示から表示が行われるまでの演算処理量を減少させてポリゴン生成を行うことができる地図情報システム用ポリゴン生成方法及びその装置を提供することにある。    【解決手段】  本発明は、地図データに記憶されている表示対象家枠を構成する複数の頂点座標を読みだし、前記頂点座標のi番目の頂点と隣合う（i+1）番目の頂点を結ぶ第1の線分を求め、次いで（i+1）番目の頂点と（i+2）番目の頂点を結ぶ第２の線分を求め、前記第1の線分に対する前記第2の線分がなす角度差を求め、該角度差が予め定められた値よりも小さいとき、前記（i+1）番目の頂点座標を間引く過程を順次全頂点座標によって形成される線分に対して繰り返し、間引かれなかった前記頂点座標に基づいてポリゴン生成することを特徴とする地図情報システム用ポリゴン生成方法にある。【選択図】  図１
2004348708.tif 000002
【特許請求の範囲】
【請求項１】
地図データに記憶されている表示対象家枠を構成する複数の頂点座標を読みだし、前記頂点座標のi番目の頂点と隣合う（i+1）番目の頂点を結ぶ第1の線分を求め、次いで（i+1）番目の頂点と（i+2）番目の頂点を結ぶ第２の線分を求め、前記第1の線分に対する前記第2の線分がなす角度差を求め、該角度差が予め定められた値よりも小さいとき、前記（i+1）番目の頂点座標を間引く工程を順次全頂点座標によって形成される線分に対して繰り返し、間引かれなかった前記頂点座標に基づいてポリゴン生成することを特徴とする地図情報システム用ポリゴン生成方法。
【請求項２】
地図データから読み出された表示対象家枠ポリゴンを示す複数の頂点座標に対して互いに隣接する前記頂点座標を結ぶ線分に基づいて互いに隣接する前記線分の角度差を求め、前記角度差が予め定められた値より小さいときに前記頂点座標を間引き、間引かれなかった前記頂点座標により前記家枠の内側にオフセット処理して補助線を算出すると共に該補助線の交点によりオフセットポリゴンを算出し、前記家枠ポリゴンとオフセットポリゴンとを画面表示することを特徴とする地図情報システム用ポリゴン生成方法。
【請求項３】
表示対象家枠ポリゴンとしての複数の頂点座標を記憶する地図データ記憶部と、前記頂点座標の各々について隣合う頂点座標を結ぶ二つの線分の角度差を求める角変位算出部と、前記算出された角度差が予め定められた値よりも小さいとき前記頂点座標を間引く判定部と、間引き処理後のポリゴンデータに基づいて前記家枠ポリゴンを表示する表示装置とを備えたことを特徴とする地図情報システム用ポリゴン生成装置。
【請求項４】
表示対象家枠ポリゴンとしての複数の頂点座標を記憶する地図データ記憶部と、前記頂点座標の各々について隣合う前記頂点座標を結ぶ二つの線分の角度差を求める角変位算出部と、前記角度差が予め定められた値よりも小さいとき前記頂点座標を間引く判定部と、間引き処理後のポリゴンデータに基づいて前記家枠の内側にオフセット処理した補助線を算出する補助線算出部と、前記補助線の交点によりオフセットポリゴンの頂点座標を求める座標算出部と、前記補助線で構成されるオフセットポリゴンと前記地図データ記憶部から読み出された前記家枠ポリゴンとを表示する表示装置とを備えたことを特徴とする地図情報システム用ポリゴン生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、住宅地図の家枠の内側を強調表示する新規な地図情報システム用ポリゴン生成方法及びその装置に関する。
【背景技術】
【０００２】
従来の地図情報システムでは、電子計算機の入力装置（マウス・キーボード）を操作して住所検索を行うと地図データ記憶部に記憶されている部分から該当する住所の地図データを読み出し、その家枠のポリゴンを元に演算（ポリゴンの内側にポリゴンの角線分と平行な補助線を一定間隔で引いて、それらの交点を結ぶことで強調表示用のポリゴンを演算）して、その結果を表示装置（ディスプレイ）に表示していた。
【０００３】
従来、この種の装置として特許文献１がある。この特許文献１は、ガス、水道、電気などの広域事業者が工事区域を示すときの図面の作成に係わり、工事を行う基準線周りのポリゴン自動生成方法に関するものである。工事区域の範囲を明示するような場合、基準線の両側に所定長さだけポリゴン構成線を自動作成していくことにより、作成者側の作業負担を軽減すると共に、見栄えの良い図面を作成することができる。
【０００４】
【特許文献１】特開平9-185700号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の方法では、地図情報から得られた地図データに基づいて家枠ポリゴンを作成している。また、特許文献1のように工事区域の明示のために基準線から所定距離だけ離れた基準線に平行な線を設けるものであった。しかしながら、特許文献１では、地図データから読み取ったデータを用いて家枠を強調表示するものではない。また、ポリゴン生成におけるデータ処理量についてはなんら述べられていない。家枠の場合、一般的には正方形あるいは長方形とは限らず複雑な形をしている場合が一般的である。それらを読み取った地図データに基づいて忠実にポリゴンを生成しようとすると、そのためのデータ演算量が膨大になることがある。
【０００６】
又、地図情報から対象となる家枠をポリゴン表示する場合、地図情報から得られる頂点と線分全てのデータポイントについて演算表示すると演算量が増大して計算機の負担が大きくなるとともに表示が遅くなるという課題がある。
【０００７】
本発明はこの点に着目し、家枠を示すデータについて地図の表示縮尺に対応した所定の条件判定により、家枠データ数を減らし、データ演算量の軽減を図るものである。すなわち、従来はポリゴンの任意の頂点をその隣接する頂点とを結んだ全ての線分ごとに内側の補助線を引いて、それらの交点を演算することにより強調表示用のポリゴンを求めていた。従って、頂点数の多い家枠の場合は、演算量が多くなり表示に時間がかかる問題があった。この演算処理時間はなるべく小さいほうがよい。頂点が少ない方が、地図上で表示指示をしてから実際に表示されるまでの時間は短くなる。
【０００８】
本発明の目的は、表示指示から表示が行われるまでの演算処理量を減少させてポリゴン生成を行うことができる地図情報システム用ポリゴン生成方法及びその装置を提供することにある。
【０００９】
本発明の他の目的は、地図の表示縮尺の変化に対応した基準値に従って頂点を省き、演算量を減らしてポリゴン生成を行うことができる地図情報システム用ポリゴン生成方法及びその装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、地図データに記憶されている表示対象家枠を構成する複数の頂点座標を読みだし、前記頂点座標のi番目の頂点と隣合う（i+1）番目の頂点を結ぶ第1の線分を求め、次いで（i+1）番目の頂点と（i+2）番目の頂点を結ぶ第２の線分を求め、前記第1の線分に対する前記第2の線分がなす角度差を求め、該角度差が予め定められた値よりも小さいとき、前記（i+1）番目の頂点座標を間引く工程を順次全頂点座標によって形成される線分に対して繰り返し、間引かれなかった前記頂点座標に基づいてポリゴン生成することを特徴とする地図情報システム用ポリゴン生成方法にある。
【００１１】
本発明は、より具体的には、地図データ記憶部からデータを読み出し、表示装置に住宅地図の家枠を強調表示する地図情報システム用ポリゴン生成方法であって、前記地図データ記憶部に記憶されている表示対象家枠を構成する複数の頂点座標を読み出し、前記頂点座標のi番目の頂点と相隣合う（i＋1）番目の頂点を結ぶ第１線分を求め、次いで（i＋1）番目の頂点と（i＋2）番目での頂点を結ぶ第2の線分を求め、前記第1の線分がなす角と前記第2の線分がなす角との角度差を求め、前記求められた角度差が予め定められた値として評価角度管理テーブルに示す地図表示縮尺に応じて設定された基準値より小さいとき前記（i＋1）番目の座標値を間引いて、順次読み出された複数の頂点座標について前記間引き判定をし、間引かれなかった頂点に基づいて家枠強調表示を行うポリゴン生成することを特徴とする。
【００１２】
前記ポリゴン生成は、前記地図データから読み出された家枠の内側に強調表示するものであること、又、前記予め定められた値は、地図の表示縮尺に対応して定められる基準値であり、前記角度差を前記基準値に基づいて前記間引き処理を行うことが好ましい。
【００１３】
又、本発明は、地図データから読み出された表示対象家枠ポリゴンを示す複数の頂点座標に対して互いに隣接する前記頂点座標を結ぶ線分に基づいて互いに隣接する前記線分の角度差を求め、前記角度差が予め定められた値より小さいときに前記頂点座標を間引き、間引かれなかった前記頂点座標により前記家枠の内側にオフセット処理して補助線を算出すると共に該補助線の交点によりオフセットポリゴンを算出し、前記家枠ポリゴンとオフセットポリゴンとを画面表示することを特徴とする地図情報システム用ポリゴン生成方法にある。
【００１４】
本発明の家枠強調表示を行うポリゴン生成は、前記地図データ記憶部から読み出された家枠の内側に強調表示するものである。即ち、表示対象の家枠を記憶されている地図データから読み出し、読み出された対象家枠の内側を強調表示する地図情報システム用ポリゴン生成方法であって、読み出された家枠ポリゴンの頂点の座方について相隣り合う頂点についての線分を求め、角変位フィルタ部の角変位算出部により前記線分の傾斜角を求め、前記角変位判定部により１つの線分の傾きとそれに隣接する線分の傾きを求めると共に両線分の角度差を求め、求められた角度差が予め定められた値として評価角度管理テーブルで定められた地図表示縮尺に対する基準値より小さいとき当該頂点を間引き、求められた角度差が前記基準値より大きいとき入力ポリゴン格納テーブルへ格納し、前記入ポリゴン格納テーブルに格納され間引かれたデータにより前記家枠のオフセット処理としての補助線を算出し、その補助線の方程式を補助線方程式格納テーブルに格納し、オフセット処理により前記補助線の交点によりオフセットしたポリゴンを演算し、前記家枠ポリゴンとオフセットポリゴンを編集処理し、家枠ポリゴンとオフセットした家枠強調ポリゴンを表示装置に表示するものである。
【００１５】
本発明は、表示対象家枠ポリゴンとしての複数の頂点座標を記憶する地図データ記憶部と、前記頂点座標の各々について隣合う頂点座標を結ぶ二つの線分の角度差を求める角変位算出部と、前記算出された角度差が予め定められた値よりも小さいとき前記頂点座標を間引く判定部と、間引き処理後のポリゴンデータに基づいて前記家枠ポリゴンを表示する表示装置とを備えたことを特徴とする地図情報システム用ポリゴン生成装置にある。
【００１６】
具体的には、地図データ記憶部から地図情報を読み出し、住宅地図の家枠に内側を強調表示する地図情報システム用ポリゴン生成装置において、表示対象の家枠データとしての頂点座標を入力し、入力された頂点座標の各々ついて相隣り合う頂点を結ぶ二つの線分の角度差を求める角変位算出部と、前記算出された角度差が予め定められた値として評価角度管理テーブルに定められた地図表示縮尺に対する基準値より小さいかを判定し前記角度差が前記基準値より小さいときに当該頂点座標を間引く判定部と、間引き処理後のポリゴンデータに基づいて前記家枠の内側にオフセットした補助線を算出する補助線算出部と、前記補助線を利用してオフセットポリゴンの座標を求める座標算出部と、前記補助線により演算されるオフセットポリゴンの座標と慙愧地図データ記憶部から読み出された家枠ポリゴンとを表示する表示装置とを備えたことを特徴とする。また、補助線は、補助線方程式として格納する補助線方程式格納テーブルを有することにより、課題を解決することができる。
【００１７】
又、本発明は、表示対象家枠ポリゴンとしての複数の頂点座標を記憶する地図データ記憶部と、前記頂点座標の各々について隣合う前記頂点座標を結ぶ二つの線分の角度差を求める角変位算出部と、前記角度差が予め定められた値よりも小さいとき前記頂点座標を間引く判定部と、間引き処理後のポリゴンデータに基づいて前記家枠の内側にオフセット処理した補助線を算出する補助線算出部と、前記補助線の交点によりオフセットポリゴンの頂点座標を求める座標算出部と、前記補助線で構成されるオフセットポリゴンと前記地図データ記憶部から読み出された前記家枠ポリゴンとを表示する表示装置とを備えたことを特徴とする地図情報システム用ポリゴン生成装置にある。
【００１８】
更に、本発明は、家枠を示す任意のポリゴンによる線分の傾きとその隣接する線分の傾きとの角度差を演算して、評価角度管理テーブルから地図の表示縮尺に対応した基準値を設定し、前記角度差が前記基準値に満たない頂点を処理の対象から除外する。そして残った頂点の内側に補助線を引いて、それらの交点を演算することで家枠の内側の強調表示用ポリゴンを求め、表示指示から表示が行われるまでの演算処理量を減少させ、地図の表示縮尺の変化に応じた処理を行うように改善を図ることにある。
【００１９】
前記判定部は、前記角度差が評価角度管理テーブルに定められた地図の表示縮尺に対応する基準値よりも小さいとき前記頂点座標を間引く処理であること、又、間引かれなかった前記頂点座標を格納する入力ポリゴン格納テーブルと、該入力ポリゴン格納テーブルに格納されたデータにより前記家枠のオフセット処理としての補助線を算出して前記補助線の方程式を格納する補助線方式格納テーブルと、前記家枠ポリゴンとオフセットポリゴンを編集処理する編集部とを有することが好ましい。
【発明の効果】
【００２０】
本発明によれば、表示指示から表示が行われるまでの演算処理量を減少させてポリゴン生成を行うことができる地図情報システム用ポリゴン生成方法及びその装置を提供することができる。
【００２１】
更に、本発明によれば、地図の表示縮尺に対応した基準値に従って頂点を省き、演算量を減らしてポリゴン生成を行うことができる地図情報システム用ポリゴン生成方法及びその装置を提供することができる。
【発明を実施するための最良の形態】
【００２２】
図１は、本発明の一実施例に係る地図情報システム用ポリゴン生成装置の機能ブロック構成図である。制御装置1と、制御装置1の中の、特に主制御部により制御演算された結果を表示する部分である表示装置2と、操作部3とを有する。制御装置1は、主制御部11、対話式制御部12、記憶部13、地図データ記憶部14、各変位フィルタ部15、オフセット処理部16、編集部17、表示制御部18などから構成されている。
【００２３】
記憶部13は、入力ポリゴン格納テーブルA131、入力ポリゴン格納テーブルB132、ベクトル格納テーブル133、補助線通過点格納テーブル134、補助線方程式格納テーブル135、オフセットポリゴン格納テーブル136、評価角度管理テーブル137などのテーブルから構成されていて、主制御部11による制御演算に利用される。
【００２４】
また、角変位フィルタ部15は、角変位算出部151、判定部152から構成され、角変位を演算し、その角変位が予め定められた値として評価角度管理テーブル137の地図表示縮尺に応じて設定された基準値よりも大きいかどうかなどの判断を行う。また、オフセット処理部16は、補助線算出部161、座標算出部162から構成されている。
【００２５】
入力ポリゴン格納テーブルA131は、対話制御部12が操作部3からの命令を受けると地図データ記憶部14から処理したい図形の座標値を制御部11を介して受け取り、座標値を格納する。
【００２６】
図２は、入力ポリゴン格納テーブルA131、入力ポリゴン格納テーブルB132、補助線通過点格納テーブル134、オフセットポリゴン格納テーブル136のデータ構成を示す説明図である。図２に示すように、例えば、第１点から第100点までの頂点のX，Y座標のデータから構成されている。
【００２７】
図３は、評価角度管理テーブル137のデータ構成を示す説明図である。図３に示すように、地図表示縮尺が1/2000〜1/20000のように、その縮尺に応じて予め基準値となる角度差がDelta1〜Delta3(deg)として設定される。
【００２８】
図４は、地図における家枠（図形）が与えられたとき、入力ポリゴン格納テーブルB132について、任意の線分の傾きと隣接する線分の傾きとの角度差により頂点を除く処理を示す説明図である。図４（Ａ）では、点[2]を中心として、相隣合う頂点の点[3]と[2]を結ぶ線分と点[2]と点[1]を結ぶ線分の角度差Delta[deg]を求める場合を示している。そして、角変位フィルタ部15の角変位算出部151が前記隣り合う線分の角度差Delta[deg]を演算する。その後、判定部152が角度差Delta[deg]が予め定められた値として評価角度管理テーブル137から読み出された地図の表示縮尺に対応した基準値CONST[deg]に満たない点かどうかを判断する。この場合は点[2]が基準値CONST[deg]に満たない点であると判定され、点[2]が間引かれることになる。
【００２９】
図４（Ｂ）は、間引いた残りの頂点座標データが、家枠図形の座標値として格納されるものである。即ち、間引かれる前の家枠のデータが入力ポリゴン格納テーブルA131に格納され、点[2]に間引かれた家枠データが入力ポリゴン格納テーブルB132に格納される。この例では全点数8点に対して点[2]が間引かれ、残りの7点について家枠強調ポリゴンを求めれば良いので演算処理量の削減を図ることができる。
【００３０】
このように、入力ポリゴン格納テーブルA131に格納されている点について相隣り合う線分について角度差を求めたところ、点[2]が間引かれる点と判定される。そして図４(ｂ)の入力ポリゴン格納テーブルB132として示されているように、点[2]が間引かれた座標値データが格納される。その場合格納されるデータは、図２と同様のデータ形式で、座標値のX，Y座標ベータである。
【００３１】
図５は、ベクトル格納テーブルの説明図である。ベクトル格納テーブル133は、補助線算出部161が入力ポリゴン格納テーブルB132の連続する2点の位置の差からベクトルをポリゴンの内側に向けて90度回転させ、さらにベクトルの大きさをオフセットする値だけ変更させたことにより得られる頂点の座標を格納するテーブルである。テーブルの内容は図２と同様のデータ形式である。
【００３２】
図６は、補助線方程式格納テーブルの説明図である。補助線方程式格納テーブル135は、座標算出部162がベクトル格納テーブル133に格納されたベクトルと平行で、補助線通過点格納テーブル134に格納された頂点を通過する直線の方程式の傾きと切片を演算し格納するテーブルである。
【００３３】
オフセットポリゴン格納テーブル136は座標算出部162がベクトル格納テーブル133に格納されたベクトルと平行で補助線通過点格納テーブル134に格納された頂点を通過する直線の交点を演算し格納する。テーブルのデータ形式は図２と同様である。地図データ記憶部14は、地図データ（住宅地図等）を格納しており、地図アプリケーションの操作により操作部から対話制御部12へ命令が送られると、主制御部11が地図データ記憶部から必要な地図情報を読み出し、編集部17を経て表示制御部18から表示装置2に送られ、表示される。
【００３４】
図７は、補助線により内側に一定オフセットで閉ポリゴンを生成する方法を示す説明図である。住所検索（例として“日立市久慈町１２３４−５６”を検索）を行うと操作部3から対話制御部12へ命令が伝送される。これにより主制御部11は検索された住所に存在するK氏の住宅の家枠の情報を地図データ記憶部から読み出して入力ポリゴン格納テーブルA131へ格納する。それは、図７の点P0〜P11のX，Y座標データが格納される。
【００３５】
角変位フィルタ部15の角変位算出部151は、入力ポリゴン格納テーブルA131に入力された座標値（図７の点P0〜P11）により、ある点とその前の点を結んだ線の傾きと、ある点とその次の点を結んだ線分の傾きを求める。すなわちi番目の頂点と（i+1）番目を結ぶ線分と、（i+1）番目と（i+2）番目の頂点を結ぶ線分を求める。そして判定部152はその2つの線分の傾きの角度差が予め定められた値として評価角度管理テーブル137の地図表示縮尺に対しての基準値CONST[deg]を満たしているかどうかを判定する。満たしていなければその点を間引き処理する。傾きが基準値CONST[deg]より大きい場合には入力ポリゴン格納テーブルB132に格納する。角変位算出部151による演算及び判定部152による判定結果、図７の例ではP1、P3、P7がその後もポリゴン生成演算処理では間引かれることになる（頂点がないものとして扱う）。
【００３６】
オフセット処理部16の補助線算出部161は入力ポリゴン格納テーブルB132の座標値よりポリゴンが右回りか左回りかを判定する。入力ポリゴン格納テーブルB132の座標より、隣り合う2頂点を結ぶ線分のベクトルを求めてその結果をベクトル格納テーブル133へ格納する。座標算出部162はベクトル格納テーブルに格納されているベクトルを内側に向けて90[deg]回転させて、さらにベクトルの大きさをオフセットする値に変更したベクトルを演算して、求めたベクトルの終点を内側の補助線が通過する点の座標として補助線通過点格納テーブル134に格納する。
【００３７】
座標算出部162は補助線通過点格納テーブル134に格納されている座標値とベクトル格納テーブル133に格納されているベクトルの傾きから、内側にオフセットした補助線の方程式を求めて補助線方程式格納テーブル135に格納する（例えば、図７の破線）。また、座標算出部162は補助線方程式格納テーブル135の隣り合う2線の交点を求めて、オフセットポリゴン格納テーブル136に格納する（例えば、図７のP'0〜P'8）。座標算出部162はベクトル格納テーブル133に格納されているベクトルの中で、隣り合うベクトルの傾きの角度差が１[deg]未満の場合、オフセットポリゴン格納テーブル136の座標値を補助線通過点格納テーブル134の座標値に置き換える。主制御部11がオフセットポリゴン格納テーブル136に格納された座標値を編集部17に読み込ませると、既存の住宅の枠と内側に描かれたポリゴンが共に表示制御部18に送られ、表示装置2に表示される。
【００３８】
図８は、本発明の地図情報システム用ポリゴン生成方法を示す全体処理フロー図である。初めに、ステップ1000では評価角度管理テーブル137の地図表示縮尺に対しての角度CONST[deg]を読み込む。ステップ2000では処理したいポリゴンの座標と頂点数を読み込む。ステップ3000では、任意の線分の傾きと隣接する線分の傾きとの角度差が一定値として基準値CONST[deg]に満たない頂点を間引くための処理、例えば図７に示したような処理である。点[i]と点[i+1]を結ぶ線分の傾きをa１、点[j=i+1]と点[j+1]を結ぶ線分の傾きをa2としたときのa1とa2の角度差をDelta[deg]と表す。DeltaがCONST[deg]未満の場合、点[i+1]を間引く。この処理を処理したいポリゴン頂点の全てについて行う。ステップ4000は内側にオフセットした補助線を求めて、それらの交点を求めるための処理である。
【００３９】
図９は、評価角度管理テーブル137の地図表示縮尺に対しての角度CONST[deg]を読み込むための処理フロー図である。ステップ1001では初期化処理を行い、ステップ1002では地図の表示縮尺を取得する。次にステップ1003では評価角度管理テーブル137を読み込み、ステップ1004では評価角度管理テーブル137において地図の表示縮尺に対する角度CONST[deg]を読み込む。
図１０は、任意の線分の傾きと、隣接する線分の傾きとの角度差が一定値として評価角度管理テーブル137の地図表示縮尺に対しての基準値CONST[deg]に満たない頂点を間引くための処理フロー図である。ステップ2001ではループカウンタiを初期化し、入力ポリゴン格納テーブルB132へ格納する頂点の数を示す変数を0に初期化する。また、入力ポリゴン格納テーブルB132の先頭に入力ポリゴン格納テーブルA131の先頭座標値を代入する。ステップ2002では、ループカウンタiが入力ポリゴン格納テーブルA131に格納されている頂点の数より小さい場合は、ステップ2003に進む。そうでない場合は、サブルーチンを抜ける。ステップ2003では、隣接する線分の配列番号を示す変数jに、（i+1）を代入してステップ2004に進む。
【００４０】
ステップ2004では、点[i]と点[i+1]を結ぶ線分の傾きをa１に、点[j]と点[j+1]を結ぶ線分の傾きをa2として求める。その後、(a1−a2)の絶対値をDelta_aに代入し、次式で角度差Delta[deg]を（1）式で演算する。
【００４１】
Delta=atn（delta_a）                                  …（１）
その後、ステップ2005に進む。ステップ2005では、Deltaが一定値CONST[deg]（外部より設定可能とする）より小さい場合はステップ2006に進み、そうでない場合はステップ2007に進む。ステップ2006では変数jの値を１加算した後、ステップ2004に進む。従って、ステップ2006はステップ2005で角度差が基準値CONST[deg]に満たない場合は次の線分と比較するための処理であるといえる。ステップ2007では、入力ポリゴン格納テーブルB132の頂点数を示すカウンタｍ_iPointNumを１加算した後、入力ポリゴン格納テーブル2のｍ_iPointNum番目に入力ポリゴン格納テーブルA131のj番目の座標値を格納してステップ2008へ進む。ステップ2008ではループカウンタiの値を１加算した後、ステップ2002へ進む。
【００４２】
図１１は、内側にオフセットした点を求めて、それらの点を結んだ線の交点を求めるための処理のサブルーチンを示す処理フロー図である。図１１では、6つの子サブルーチンに分割されている。ステップ3100では、ポリゴンの面積を格納する変数anserを０に。オフセット値を示す変数offsetをオフセットする大きさ（単位：ピクセル）に初期化する。
【００４３】
ステップ3200は、第１のサブルーチン(Sub.R)で入力ポリゴン格納テーブルB132の座標を読み込んで、その面積を演算することでポリゴンが右回りか左回りかを判定する。ステップ3300は、第２のサブルーチン(Sub.R)で入力ポリゴン格納テーブルB132の座標を読み込んで、隣り合う2頂点を結ぶベクトルを求めてベクトル格納テーブル133に格納する。ステップ3300は、第３のサブルーチン(Sub.R)でベクトル格納テーブル133に格納されているベクトルを内側に向けて90度回転させ、かつ大きさが変数offsetで示される値の大きさであるベクトルを演算し、求めたベクトルの終点の座標値を補助線通過点格納テーブル134に格納する。
【００４４】
ステップ3500は、第4のサブルーチン(Sub.R)で補助線通過点格納テーブル134に格納された座標値より補助線の方程式を求めて補助線方程式格納テーブル135に格納する。また、ステップ3600は、第5のサブルーチン(Sub.R)で補助線方程式格納テーブルに135に格納されている補助線のうち隣り合う補助線同士の交点を求めて、オフセットポリゴン格納テーブル136に格納する。ステップ3700は、第6のサブルーチンでベクトル格納テーブル133に格納されているベクトルのなかで、隣り合うベクトルとの傾きの角度差が1[deg]未満の場合、オフセットポリゴン格納テーブル136の座標値を補助線通過点格納テーブル134の座標値に置き換える。
【００４５】
図１２は、第１のサブルーチン(Sub.R)を示す処理フロー図である。処理したいポリゴンが右回りか左回りかを判定するための処理である。ステップ3201では、ループカウンタiを０に初期化し、ポリゴンの面積を格納する変数anserを0に初期化する。ステップ3202ではループカウンタiが入力ポリゴン格納テーブルB132の頂点数ｍ_iPointNumより小さい場合は3203に進み、そうでない場合はサブルーチンを抜ける。ステップ3203ではカウンタcont_nにループカウンタiの値−1を代入してステップ3204に進む。ステップ3204では、カウンタcont_nが−1の場合はステップ3205へ進み、そうでない場合はステップ3206へ進む。
【００４６】
ステップ3205ではカウンタcont_nに入力ポリゴン格納テーブルB132の頂点数ｍ_iPointNum−1を代入してステップ3206へ進む。ステップ3206ではcont_pにループカウンタの値i+1を代入する。ステップ3207では、カウンタcont_pが入力ポリゴン格納テーブルB132の頂点数ｍ_iPointNumと等しい場合はステップ3208に進み、そうでない場合はステップ3209に進む。ステップ3209では、ポリゴンの面積を格納する変数anserにポリゴンの面積の一部である（2）式の値を計算してステップ3210へ進む。
（点[cont_n]のX座標一点[cont_p]のX座標）×点[i]のｙ座標/2      …（2）
ステップ3210ではカウンタiを1増加させる。その後、ステップ3202へ進む。参考までにポリゴンの面積の演算方法を説明しておく。多角形の頂点座標を時計回りに順に、点[0]、点[１]…、点[m_iPointNum]とする。面積は（3）式で表される。
【００４７】
（面積）＝Σ（点[i-1]x−点[i+1]x）×点[i]ｙ/（−２）            …(3)
（i＝１）から（i=m_PointNum）までサムアップした値となる。（ただし、点[0]＝点[m_PointNum]）
このように、（3）式の関係から求めることができる。画面の左上を原点として下方向を正とする座標系なのでポリゴンの面積を計算して、その値が正の場合は右回り、負の場合は左回りと判定する。
【００４８】
図１３は、第２のサブルーチンを示す処理フロー図である。入力された座標値より隣り合う2頂点を結ぶベクトルを求める処理である。ステップ3301ではループカウンタiを0に初期化して、ステップ3302へ進む。ステップ3302ではループカウンタiが入力ポリゴン格納テーブルB132の頂点数ｍ_iPointNumより小さい場合はステップ3303へ進み、そうでない場合はサブルーチンを抜ける。ステップ3303では変数jにループカウンタiの値＋1を代入してステップ3304に進む。ステップ3304では、ループカウンタiが入力ポリゴン格納テーブルB132の頂点数m_iPointNum−1と等しい場合はステップ3305へ進み、そうでない場合はステップ3306へ進む。ステップ3306では入力ポリゴン格納テーブルB132の座標値からベクトルを求めてベクトル格納テーブル133へ格納する。ベクトル格納テーブルを配列Vector[  ]で表すと、（4）、（5）式
Vector[i].ｘ  =  点[i].x  点[i].x                                …（4）
Vector[i].y  =  点[i].y  点[i].y                                  …（5）
となる。
【００４９】
その後、ステップ3307へ進む。ステップ3307では、ループカウンタiの値を1増加させた後、ステップ3302へ進む。
【００５０】
図１４は、第3のサブルーチンを示す処理フロー図である。各ベクトルをポリゴンの内側へ向けて90[deg]回転させたベクトルを求めて、内側にオフセットした点の座標を求めるための処理である。ステップ3401では、ループカウンタiを0に初期化してステップ3402へ進む。ステップ3402では、ポリゴンの面積anserが0より大きい場合はステップ3403に進み変数Kに１を代入し、そうでない場合はステップ3404に進み変数ｋに−1を代入する。その後、ステップ3405に進む。ステップ3405では、ループカウンタiが入力ポリゴン格納テーブルB132の頂点m_iPointNumより小さい場合はステップ3406へ進み、そうでない場合はサブルーチンを抜ける。ステップ3406では、Vector[i]の大きさを演算した結果を変数sizeに代入した後、内側にオフセットした点の座標を演算して補助線通過点格納テーブル134に格納する。補助線通過点格納テーブル134を配列Pdush[ ]で表すと、（6）、（7）式となる。
【００５１】
Pdush[i].x＝（点[i].x−ｋ×（Vector[i].y）×offset/size）          …（6）
Pdush[i].y＝（点[i].y−ｋ×（Vector[i].x）×offset/size）          …（7）
その後ステップ3407へ進む。ステップ3407ではループカウンタiを１加算して、ステップ3405へ進む。
【００５２】
図１５及び１６は、第4のサブルーチンを示す処理フロー図である。内側にオフセットした点の座標より内側にオフセットした補助線の方程式（y=mx+c）を求める処理である。ステップ3501では、ループカウンタiを0に初期化してステップ3502へ進む。ステップ3502では、ループカウンタiが入力ポリゴン格納テーブルB132の頂点数m_PointNumより小さい場合はステップ3503へ進み、そうでない場合はサブルーチンを抜ける。ステップ3503では変数ｊに（i＋１）を代入してステップ3504に進む。ステップ3504ではループカウンタiが入力ポリゴン格納テーブルB132の頂点数ｍ_iPointNumの値−1と等しい場合はステップ3505へ進み、そうでない場合は図１６のステップ3506へと進む。
【００５３】
ステップ3505では変数jを0に初期化してステップ3506へ進む。ステップ3506では点[i].xと点[j].xが等しければステップ3507へ進み、そうでない場合はステップ3508へ進む。傾きmはY方向変化分をX方向変化分で割った値となる。但し、X方向変化分が0の場合は分母を１とする（実行時にエラーが発生するのを避けるため）。ステップ3507では補助線の方程式を求める。傾きの配列をｍ[]とすると、（8）式となる。
【００５４】
m[i]＝（double）（点[j].y−点[i].y）                              …（8）
その後、ステップ3509に進む。ステップ4508では補助線の方程式を求める。傾きの配列をｍ[ ]とすると（9）式となる。
【００５５】
ｍ[i]＝（double）（点[j].y−点[i].y）/（double）（点[j].x−点[i].x）…（9）
その後ステップ3509に進む。ステップ3509では、切片を求める。切片cはy＝mx＋ｃより、切片の配列をc[]とすると、（10）式となる。
【００５６】
c[i]＝（double）（Pdush[j].y（double）m[i]×（double）Pdush[i].x    …（10）
その後、ステップ3510へ進む。ステップ3510では、ループカウンタiを１増加させてステップ3502へ進む。
【００５７】
図１７は、第5のサブルーチンを示す処理フロー図である。求めた補助線の交点を求める処理である。ステップ3601では、ループカウンタiを0に初期化してステップ3602へ進む。ステップ3602ではループカウンタiが入力ポリゴン格納テーブルB132の頂点m_iPointNumより小さい場合はステップ3603へ進み、そうでない場合はサブルーチンを抜ける。ステップ3603では、変数jに値（i−1）を代入してステップ3604へ進む。
ステップ3604では、ループカウンタｉが0の場合はステップ3605へ進み、そうでない場合はステップ3606へ進む。ステップ3605では、変数jに入力ポリゴン格納テーブルＢ132の頂点数m_iPointNum-1を代入してステップ3606へ進む。ステップ3606では、補助線の交点のx座標を演算する。オフセットポリゴン格納テーブルの配列をNew Point[]とすると、（11）式
New Point[i].x=(long)floor(−(c[j]−ｃ[i])/(m[j]−m [i]))          …（11）
となる。その後、ステップ3607へ進む。ステップ3607では、補助線の交点のｙ座標を演算する。
New Point[i].y=(long)floor(m[i]×(−(c[j]−ｃ[i])/(m[j]−m[i]))＋ｃ[i]…（12）
（12）式となる。その後、ステップ3608へ進む。ステップ3608では、ループカウンタｉを１増加した後、ステップ3602へ進む。
【００５８】
図１８は、第６のサブルーチンを示す処理フロー図である。隣り合うベクトルの傾きの差が1[deg]未満の場合、内側にオフセットした点の座標に置き換える処理である。この処理は。傾きの差が0の場合に交点を求めると無限遠になってしまうのを防ぐ役割がある。ステップ3701では、ループカウンタiを0に初期化してステップ3702へ進む。ステップ3702では、ループカウンタiが入力ポリゴン格納テーブルB132の頂点数ｍ＿iPointNumより小さい場合はステップ3703へ進み、そうでない場合はサブルーチンを出る。ステップ3703では、変数ｊに値（ｉ＋1）を代入してステップ3704へ進む。
【００５９】
ステップ3704では、ループカウンｉが入力ポリゴン格納テーブルB132の頂点数ｍ＿iPointNum−１と等しい場合はステップ3705へ進み、そうでない場合はステップ3706へ進む。ステップ3705では、変数ｊを0に初期化してステップ3706へ進む。ステップ3706では、変数size 1にVector[i]の大きさを、変数size 2にVector[j]の大きさを求める。2次元ベクトルの大きさは、ｘ成分の値の2乗とｙ成分の値の2乗を加えたものの平方根を演算することで得られる。2つのベクトルの角度差をRAD［rad］とすると内積の定義より（13）式が成立する。
【００６０】
Vector[I].x×Vector[j].x＋Vector[I].y×Vector[j].y
= size 1×size 2×cos(RAD)        …（13）
これより、（14）式を演算する。
【００６１】
RAD=a cos((Vector[I].x×Vector[j].x＋Vector[I].y×Vector)j).y)／
（size 1×size 2））…（14）
その後、ステップ3707へ進む。ステップ3707では、角度差RADの絶対値が１［deg］に満たない場合は、ステップ3708へ進む。そうでない場合はステップ3709へ進む。ステップ3708では、New Point[j]にP dush[j]の値を代入する。その後、ステップ3709へ進む。ステップ4709では、ループカウンタｉの値を１増加させた後、ステップ3702へ進む。
【００６２】
以上で述べたように、本実施例によれば、地図データ記憶部から得られた家枠ポリゴンを構成する頂点データから相隣り合う頂点を結ぶ線分を求め、その角度差が予め定められた値として地図表示縮尺に対しての基準値よりも小さいとき、その頂点は家枠強調ポリゴンを構成する頂点としては省略するように角変位フィルタリング処理を行う。そしてフィルタリング処理をして残った頂点について家枠強調表示を行う。したがって、必要最小限のデータ処理で家枠強調表示を行うことができる効果がある。
【００６３】
又、本実施例によれば、家枠ポリゴンの内側に設ける強調表示のための補助線は、家枠ポリゴンデータについてフィルタリング処理をした後で家枠強調表示のための演算処理を行うので、強調表示のための演算量を低減することができる。
【図面の簡単な説明】
【００６４】
【図１】本発明に係る地図情報システム用ポリゴン生成装置の機能ブロック構成図である。
【図２】入力ポリゴン格納テーブルA、入力ポリゴン格納テーブルB、補助線通過点格納テーブル、オフセットポリゴン格納テーブルのデータ構成を示す説明図である。
【図３】評価角度管理テーブルのデータ構成を示す説明図である。
【図４】任意の線分の傾きと隣接する線分の傾きとの角度差により頂点を除く処理を示す説明図である。
【図５】ベクトル格納テーブルの説明図である。
【図６】補助線方程式格納テーブルの説明図である。
【図７】補助線により内側にポリゴン生成する方法を示す説明図である。
【図８】処理全体の流れを示す説明図である。
【図９】評価角度管理テーブルの地図表示縮尺に対しての基準値CONST[deg]を読み込むための処理フロー図である。
【図１０】任意の線分の傾きと隣接する線分の傾きとの角度差により頂点を除く処理のサブルーチンを示した図である。
【図１１】内側にオフセットした点を求めて、それらの点を結んだ交点を求めるサブルーチンを示す説明図である。
【図１２】入力されたポリゴンが右回りか左回りか判定するサブルーチンを示す説明図である。
【図１３】入力された座標値より、隣り合う２頂点を結ぶベクトルを求めるサブルーチンを示す説明図である。
【図１４】各ベクトルに垂直なベクトルを求め、内側にオフセットした点を求めるサブルーチンを示す説明図である。
【図１５】内側にオフセットした点の座標より、内側にオフセットした補助線の方程式を求めるサブルーチンを示す説明図（その1）である。
【図１６】内側にオフセットした点の座標より、内側にオフセットした補助線の方程式を求めるサブルーチンを示す説明図（その2）である。
【図１７】求めた補助線の交点を求めるサブルーチンを示す説明図である。
【図１８】隣り合うベクトルの傾きの大きさが１［deg］未満の場合、内側にオフセットした点の座標に置き換えるサブルーチンを示す説明図である。
【符号の説明】
【００６５】
1…制御装置、2…表示装置、3…操作部、11…主制御部、12…対話制御部、13…記憶部、14…地図データ記憶部、15…各変位フィルタ部、16…オフセット処理部、17…編集部、18…表示制御部、131…入力ポリゴン格納テーブルA、132…入力ポリゴン格納テーブルB、133…ベクトル格納テーブル、134…補助線通過点格納テーブル、135…補助線方程式格納テーブル、136…オフセットポリゴン格納テーブル、137…評価角度管理テーブル、151…角変位算出部、152…判定部、161…補助線算出部、162…座標算出部。
【図１】
2004348708.tif 000003
【図２】
2004348708.tif 000004
【図３】
2004348708.tif 000005
【図４】
2004348708.tif 000006
【図５】
2004348708.tif 000007
【図６】
2004348708.tif 000008
【図７】
2004348708.tif 000009
【図８】
2004348708.tif 000010
【図９】
2004348708.tif 000011
【図１０】
2004348708.tif 000012
【図１１】
2004348708.tif 000013
【図１２】
2004348708.tif 000014
【図１３】
2004348708.tif 000015
【図１４】
2004348708.tif 000016
【図１５】
2004348708.tif 000017
【図１６】
2004348708.tif 000018
【図１７】
2004348708.tif 000019
【図１８】
2004348708.tif 000020