JP3884901B2 - データ配置方法および2次元図面データ処理システム - Google Patents
データ配置方法および2次元図面データ処理システム Download PDFInfo
- Publication number
- JP3884901B2 JP3884901B2 JP2000223867A JP2000223867A JP3884901B2 JP 3884901 B2 JP3884901 B2 JP 3884901B2 JP 2000223867 A JP2000223867 A JP 2000223867A JP 2000223867 A JP2000223867 A JP 2000223867A JP 3884901 B2 JP3884901 B2 JP 3884901B2
- Authority
- JP
- Japan
- Prior art keywords
- character string
- data
- area
- display
- symbol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Instructional Devices (AREA)
- Processing Or Creating Images (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、データ配置方法および2次元図面データ処理システムに関し、更に詳しくは、複数のシンボル図形および文字列を含む2次元領域内の指定位置の近傍でデータ配置に必要な空白領域を検出し、上記指定位置に付随したデータを自動的に配置するためのデータ配置方法および2次元図面データ処理システムに関する。
【0002】
【従来の技術】
ディジタルデータとして提供される地図上に、ユーザニーズに応じたシンボル図形や表示文字列を配置することによって、例えば、電力、電話、ガス、水道等の設備系統図や、住宅地図、レジャー施設案内図等のマップが得られる。この場合、設備や施設を表すシンボル図形は、或る程度正確な座標位置に配置され、各シンボル図形に付随した名称や補足説明用の表示文字列は、対象シンボルの近傍に見つけた比較的見易い位置に配置される。
【0003】
図3は、このような特殊用途向けマップの1例として、電力会社で利用される高圧配電線系統図の概要を示す。高圧配電線系統図は、一般家庭に供給されている100V/200Vの低圧電力の配線の上流に位置付けられる高圧電力の配線経路の保守/管理に利用されるもので、地図1000上に、例えば、高電圧配線の経路を示す電線シンボル1(1−1…1−14)と、上記配線に接続された配電箱や分電盤などの設備を示す設備シンボル10(10−1…10−14)と、上記配線の区間番号等を示す文字列11と、各設備シンボル10に付随する表示文字列30(30−1…30−14)等が表示されている。表示文字列30は、例えば、各設備を使用している顧客の名称、契約電力(契約高)、各設備に固有の設備番号(設備No.)のうちの少なくとも1つを示している。
上記配電線系統図において、例えば、設備シンボル10−15が新たに追加され、この設備シンボル10−15に付随する表示文字列を自動的に配置する場合を想定する。この場合、設備シンボル10−15の近傍に、新たに加える表示文字列の面積に見合った空白領域を見つける必要がある。もし、新たな文字列を道路、境界線、家型などの地図基盤要素に上書きしても良ければ、例えば、図4に示すように、配電線系統図を方形のメッシュに区切り、シンボル図形や既存文字列の有無によって使用済メッシュ領域と空白メッシュ領域とに分け、設備シンボル10−15の周辺にある空白メッシュ領域の中から、新たな文字列を収容できる空白領域を選択すればよい。
【0004】
【発明が解決しようとする課題】
しかしながら、上述したように対象図面をメッシュに分割して空白領域を見つける方式では、計算量を少なくするためにメッシュサイズを大きくした場合、使用済みと判定されるメッシュ領域の面積が、実際にシンボル図形や既存文字列が占める面積よりも増え、空白領域面積が狭くなため、実際には追加文字列を収容可能な領域が空白メッシュ領域の面積不足を理由に配置対象位置から除外されてしまうという問題がある。この問題は、メッシュサイズを小さくすれば解決できるが、逆に計算量が増えるという別の問題が発生する。
【0005】
また、対象図面をメッシュ領域に分割して表示文字列を配置すると、各文字列の先頭文字の位置がメッシュサイズによって正規化され、結果的に、追加文字列が左右に位置する既存文字列と行方向において位置合わせされる。このため、例えば、シンボル10−15の表示文字列を既存の文字列30−13と30−14の間にある空白領域に配置した場合、文字列間に1個以上の空白メッシュが存在しない限り、行方向で3つの文字列が連続し、文字列が混同すると言う問題がある。また、上記メッシュ分割方式によれば、対象シンボルの周辺に存在する複数の候補領域の中から最適な空白領域を選択するためには、優先順位の高い位置から空白領域面積を判定する複雑な判定ルールを用意しておく必要となる。
【0006】
本発明の目的は、2次元領域内の指定位置の近傍の適切な位置に自動的にデータを配置するためのデータ配置方法および図面データ処理システムを提供することにある。
本発明の他の目的は、複数のシンボル図形および文字列を含む2次元図面領域において、特定シンボルに付随する表示データの配置位置を自動的に決定するためのデータ配置方法および2次元図面データ処理システムを提供することにある。
【0007】
本発明の更に他の目的は、複数のシンボル図形および文字列を含む2次元図面領域において、各シンボルに付随する表示文字列の配置位置を自動的に修正し、最適化するためのデータ配置方法および2次元図面データ処理システムを提供することにある。
本発明の更に他の目的は、複数のシンボル図形および文字列を含む2次元図面領域において、文字列が他の文字列と近接した場合でも文字列間の識別が容易にできる位置関係で、各シンボルに付随する表示文字列の配置位置を決定または修正可能なデータ配置方法および2次元図面データ処理システムを提供することにある。
本発明の更に他の目的は、特に複数の特殊シンボル図形と文字列を含む地図上において、特定のシンボルに付随する表示文字列の配置位置を自動的に決定または修正するのに適したデータ配置方法およびデータ処理システムを提供することにある。
【0008】
【課題を解決するための手段】
上記課題を解決するために、本発明のデータ配置方法は、配置目標となる2次元領域内の指定位置を原点とする渦巻線に沿ってデータを配置可能な空白領域を探索し、所定の探索範囲内で検出された上記原点に最も近い空白領域、または既存データとの重なり度が最も少ない領域に上記データを配置することを特徴とする。
本発明に適用される渦巻線は、原点からの距離rが回転角θに応じて変化する極座標(r、θ)の軌跡であり、本発明のデータ配置方法では、指定位置を原点として回転角度を所定ピッチで増加することにより、渦巻線に沿って複数の極座標点を設定し、各極座標点を基点として配置データの所要領域と既存データとの重なりをチェックすることにより、空白領域、または重なり度が最も少ない領域を検出する。上記極座標点は、回転角θが大きくなるに従って徐々に原点から離れていくため、回転角度を所定ピッチで増加しながら各極座標点で空白領域を探索すれば、最初に見つかった空白領域が2次元領域内の指定位置に最も近い最適な空白領域となる。
【0009】
2次元領域内の上記指定位置は、例えば、2次元領域内に配置されたシンボル図形の代表点であり、配置対象データは、例えば、上記シンボル図形に付随した表示文字列である。但し、シンボル図形は、例えば、地図上の特定地点を示す2次元領域内の単なる座標点であってもよく、また、配置対象データは、例えば、標識、写真、グラフ、詳細図形のように、文字列以外のデータであってもよい。
【0010】
更に詳述すると、例えば、シンボル図形の近傍に表示文字列を配置する場合、本発明のデータ配置方法では、渦巻線に沿って設定された複数の極座標点のうち、上記シンボル図形の外側に位置した各極座標点を計算点として、表示文字列の所要領域と既存データとの重なりをチェックすることを特徴とする。
【0011】
本発明の好ましい実施例では、無駄な計算を省くために、シンボル図形の外側に位置した各極座標点を計算点として、先ず、シンボル図形と表示文字列の所要領域との重なりをチェックし、上記表示文字列の所要領域が上記シンボル図形と重ならない位置に達したとき、上記シンボル図形以外の既存データとの重なりをチェックする。また、できるだけ指定位置(対象シンボル図形)の近くにデータ(表示文字列)を配置できるようにするために、各計算点において、データ(表示文字列)の配置パターンを変えながら、所要領域と既存データとの重なりチェックを繰り返し、データ配置可能な空白領域の有無を判定する。
【0012】
本発明のデータ配置方法の他の特徴は、データ配置領域の代表点が、指定位置から所定距離以上離れた場合、上記データ配置領域と上記指定位置との間に引出し線を描画することにある。上記引出し線としては、例えば、指定位置とデータ配置領域内の特定点とを結ぶ最短直線と、上記指定位置と上記特定点とを結ぶ屈折点位置の異なる複数の折れ線とのうち、予め除外指定された特定データ以外の既存データ配置領域に重ならないものを選択し、該選択された線分の一部を加工した形で描画する。
【0013】
一方、本発明による2次元図面データ処理システムは、複数のシンボル図形と文字列とを含む2次元図面を編集するためのものであって、上記2次元図面に含まれる特定シンボル図形の基点座標を原点とする渦巻線に沿って所定の回転角間隔で計算点を生成するための第1手段と、上記各計算点を表示領域代表点として、特定シンボル図形に付随する表示文字列を配置するための空白領域の有無を判定し、最初に見つかった空白領域に上記表示文字列を配置するための第2手段とを備えたことを特徴とする。
【0014】
更に詳述すると、本発明による2次元図面データ処理システムは、シンボル図形と文字列とを含む2次元図面を表示するための表示装置と、2次元図面領域に配置すべきシンボル図形を定義した複数のデータエントリと、上記2次元図面領域に配置すべき文字列を定義した複数のデータエントリとを蓄積したデータファイルと、データ処理手段とからなり、上記データ処理手段は、上記データファイルから特定シンボル図形のデータエントリと該特定シンボルに付随した文字列のデータエントリとを読み出し、上記特定シンボル図形のデータエントリが示す上記2次元図面領域内の特定の座標点を原点Pとして、原点Pからの距離rが回転角θに応じて変化する極座標Q(r,θ)に基づいて、上記特定シンボル図形の表示領域周囲に回転角θを異にする複数の計算点Qを設定し、各計算点毎に上記文字列データエントリが示す文字列データを所定の配列パターンで配置した場合の文字列表示領域枠の座標データを算出し、該座標データを上記データファイルから読み出された他のシンボル図形および文字列のデータエントリで特定される障害領域と重なり判定することによって、上記付随文字列を配置可能な空白領域を選択し、該空白領域に上記付随文字列を配置することを特徴とする。
【0015】
本発明による2次元図面データ処理システムの他の特徴は、上記データ処理手段が、回転角θによって決まる所定の探索範囲で前記付随文字列を収容可能な完全な空白領域がみつからなかった場合、上記探索範囲における前記障害領域との重なり度が最小の領域を選択し、付随文字列を2次元領域上の他の文字列とは異なる表示形式で表示装置に出力するための手段を備えたことを特徴とする。
【0016】
また、本発明の2次元図面データ処理システムでは、上記データ処理手段が、障害領域と部分的に重なった文字列表示領域を含む2次元図面領域において、既に配置決定された既存の文字列を対象として配置可能な空白領域の選択動作を再実行することによって、表示文字列の配列を自動的に修正する機能を備える。
本発明のその他の特徴は、以下に述べる図面を参照した実施形態の説明から明かになる。
【0017】
【発明の実施の形態】
図1は、本発明によるデータ配列の原理図を示す。
本発明では、対象シンボル10に付随する表示データの配置位置を決定するために、対象シンボルの基点Pを原点とする渦巻線SPに沿って空白領域を探索することを特徴とする。上記渦巻線は、Pを原点とする極座標(r、θ)において、rの値がθに応じて変化するような曲線を意味しており、図1は、r=aθ(aは正の定数)で表されるアルキメデスの渦巻を示している。
以下の実施例では、アルキメデスの渦巻を前提として説明するが、本発明には、例えば、r=aep θ(p>0)で表される対数渦巻や、r2=aθで表される放物渦巻など、アルキメデスの渦巻以外の他の渦巻線も適用可能である。
【0018】
本発明では、対象シンボル内に定義された1つの代表点を基点Pとして、これを原点とする半直線mの角度θを所定ピッチΔθで変化させ、渦巻線に沿って変化する半直線m上の極座標Q(r、θ)を文字列配置の候補位置(計算点)として、表示文字列を収容可能な空白領域を探索する。表示文字列30の配置に要する領域サイズは、例えば、図2に示すように、文字列の外接枠を規定する複数の座標値群(白丸)によって表すことができる。
【0019】
本発明では、上記文字列外接枠内の特定の位置を文字列代表点と定義しておき、上記文字列代表点を各極座標Q(r、θ)に位置付けた状態で、文字列外接枠と既存シンボルまたは既存文字列との重なり関係をチェックすることにより、表示文字列を配置可能な空白領域を見つける。
極座標Q(r、θ)は、最初のうちは対象シンボル10の内側で移動し、半直線mの回転角度がθsを超えた時、極座標Q(r、θ)が対象シンボルの外側に出る。図示した例では、表示文字列10の代表点が第1行文字列の中央に設定されているため、極座標Q(r、θ)が対象シンボルの外に出てから暫くの間は、文字列外接枠が対象シンボル10に重なった状態が続く。文字列外接枠と対象シンボル以外の他の既存シンボルまたは既存文字列との重なり関係のチェックは、回転角度θが更に大きくなり、文字列外接枠全体が対象シンボル10から外れた状態となった時に開始すればよい。
【0020】
表示文字列を配置すべき空白領域の探索を上述した渦巻線SPに沿って実行した場合、対象シンボル周辺における空白領域の広がり形態の無関係に、最初に検出された空白領域が対象シンボルに最も近い空白領域となる。従って、本発明によれば、対象シンボルの近傍で選び得る最適な位置に表示文字列を配置することが可能となる。
また、本発明によれば、表示文字列30の代表点の座標が、対象シンボル10の基点Pと極座標Q(r、θ)によって決まる。すなわち、各表示文字列の第1行目のY座標は、基点PのY座標にrcosθを加えたもので、rも角度θに関数となっているため、各表示文字列の開始位置が、対象シンボル毎に異なったY座標をもつ。従って、2つの表示文字列がX軸方向に近接して配置された場合でも、Y軸方向に位置がずれているため、2つの表示文字列が混同する可能性は少ない。
【0021】
以下、本発明の1実施例として、上記渦巻線に沿った判定アルゴリズムを適用した配電線系統図編集システム40について説明する。
配電線系統図編集システム40は、図5に示すように、プロセッサ41と、キーボードおよびマウスを含む入力装置42と、表示装置43と、地図および配電線系統図用のデータが格納されたファイル装置(データベース:DB)44と、その他のデータ格納用およびワーク領域として使用されるメモリ45と、各種のプログラムが格納されたプログラムメモリ46とからなり、これらの要素はバス47によって相互接続されている。プログラムメモリ46には、配電線系統図の編集に固有のプログラムとして、配電線系統図作成処理プログラム46Aと、後述する文字列配置処理プログラム46Bと、その他のプログラム46Cが用意されている。
【0022】
図6は、データベース44に格納される地図および配電線系統図用のデータ構造を示す。
地図1000は複数のメッシュ領域からなり、各メッシュ領域と対応して、地図基盤レイヤ50とユーザ固有レイヤ60のデータが用意されている。地図基盤レイヤ50は、一般的な地図を形成するために必要なデータであり、例えば、道路または街区、境界(都道府県境界、都市区町村境界など)、鉄道、河川、家型、それらに付随する名称、その他のシンボル等、地図の構成要素毎に分けられた複数のレイヤ50−1〜50−Nに分かれている。ユーザ固有レイヤ60は、地図基盤レイヤ50で形成された地図上にユーザ固有の情報を表示するためのデータであり、本実施例では、配電線系統図用のデータとして、電線レイヤ60Aと、シンボルレイヤ60Bと、文字列レイヤ60Cと、引出し線レイヤ60Dとが用意されている。
【0023】
電線レイヤ60Aは、各メッシュ内に表示される電線を定義するためのもので、例えば、図7に示すように、メッシュ番号61Aと、データ番号62Aと、図形仕様63Aと、基点座標64Aと、構成座標65Aと、文字列データ番号66Aからなる複数のエントリを含む。図形仕様63Aは、表示される電線の種類、線種、太さ、大きさ、色を指定する。基点座標64Aは、メッシュ内における各電線の基点を示し、構成座標65Aは、基点から延びる電線の各屈折点および終点の座標を示している。文字列データ番号66Aは、例えば、区間番号のように、その電線に付すべき文字列があった場合に、文字列レイヤ60C内に定義された文字列のデータ番号を示す。
【0024】
シンボルレイヤ60Bは、各メッシュ内に表示される配電箱などのシンボル図形を定義するためのもので、例えば、図8に示すように、メッシュ番号61Bと、データ番号62Bと、図形仕様63Bと、基点座標64Bと、構成座標65Bと、文字列データ番号66Bとからなる複数のエントリを含む。基点座標64Bは、シンボル図形に代表点を示し、シンボル図形が円の場合は、図形仕様の種類で円、大きさで半径が指定される。シンボル図形が三角形、矩形、その他の形状をもつ場合は、構成座標65Bで図形の各頂点の位置が指定される。文字列データ番号66Bは、そのシンボル図形に付随して表示すべき文字列レイヤ60C内に定義された関連文字列エントリのデータ番号を示す。
【0025】
文字列レイヤ60Cは、例えば、図9に示すように、メッシュ番号61Cと、データ番号62Cと、顧客名文字数(n)71と、表示文字列72と、文字仕様73と、基点座標64Cと、配列パターン74と、シンボルデータ番号75と、完了フラグ76と、引出し線フラグ77とからなる複数のエントリを含む。
【0026】
表示文字列72は、顧客名72a、契約高72b、設備番号72cの3つのデータ項目からなり、顧客名文字数71は、上記顧客名72aの文字数nを示す。文字仕様73は、表示文字列72が示す各文字データの表示フォント、大きさ、表示角度および色を指定する。表示文字列に含まれるデータ項目の数はシンボルによって異なり、上記顧客名、契約高、設備番号の3項目が全て表示される場合もあれば、1つまたは2つのデータ項目だけが表示される場合もある。また、顧客名は可変長であり、文字数が長い場合は、顧客名が数行に分けて表示される。
【0027】
配列パターン74は、表示文字列72を構成する複数の文字の配列パターンを示すもので、後述するように、文字列配置処理プログラム46Bを実行した時、文字列配置領域の周囲状況に応じた最適な配列パターンが決定される。シンボルデータ番号75は、各表示文字列と対応するシンボルレイヤまたは電線レイヤのデータ番号を示す。
【0028】
完了フラグ76は、表示文字列の配置位置が決定済みか否かを示し、引出し線フラグ77は、表示文字列と対象シンボルとの間に引出し線を描画すべきか否かを示す。引出し線は、表示文字列が対象シンボルから或る程度離れた位置に設定された場合に描画される。尚、文字列レイヤの基点座標64Cは、初期値として、例えば、対象シンボルの基点座標64Bと同一の座標値を仮設定しておき、文字列配置処理プログラム46Bの実行によって配置位置が決定した時、正規の座標値に置き換えられ、完了フラグ76が決定済みの状態(=“1”)となる。
【0029】
引出し線レイヤ60Dの各エントリは、図10に示すように、電線レイヤ60Aと同様、メッシュ番号61Dと、データ番号62Dと、図形仕様63Dと、基点座標64Dと、構成座標65Dと、文字列データ番号66Dとを含み、この他に、消去区間座標68を含んでいる。構成座標65Dは、引出し線の描画に必要な座標値群を示し、消去区間座標68は、例えば、引出し線が電線とクロスした場合、引出し線の消去区間を指定する座標値群を示す。
【0030】
図11〜図13は、表示文字列の内容と配列パターンとの関係を定義した文字列配列パターン選択テーブルを示す。
後述するように、文字列配置処理プログラム46Bでは、渦巻線に沿った各極座標Q(r,θ)において、表示文字列の配列パターンを適宜変更しながら文字列を表示できる空白領域を探索する。この場合、表示文字列の配列パターンは、文字列レイヤ60Cが示す顧客名文字数(n)71と、表示文字列72に含まれるデータ項目72a〜72cの組合せとに応じて決定される。
【0031】
図11は、表示文字列30が、顧客名30A、契約高30B、設備番号30Cの3つのデータ項目を含む場合(項目組合せパターン:A)に選択可能な文字列配列パターン34を示す。尚、31は配列パターン番号、32は配列パターンに適した顧客名文字数nの範囲、33は表示文字列のデータ項目間の位置合わせ方法を示している。
【0032】
パターン番号A1、A2、A3の配列パターンは、顧客名30A、契約高30B、設備番号30Cの3項目を縦に並べ、顧客名に対して契約高と設備番号をセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名30Aの文字数nが少ない(4>n>0)場合に適している。
【0033】
パターン番号A4、A5、A6の配列パターンは、契約高30Bと設備番号30Cを同一の行にまとめ、これらを顧客名30Aに対してセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。パターン番号A7、A8、A9の配列パターンは、顧客名30Aを2行に分割し、顧客名30Aに対して契約高30Bと設備番号30Cをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。尚、顧客名30Aの文字数nが奇数の場合、これを2行に分割すると上段と下段で文字数が異なってくるが、この場合は、下段の顧客名文字列を上記契約高30B、設備番号30Cと同様に扱い、上段の顧客名文字列に対して位置合わせするようにしてもよい。これらの配列パターン(A4〜A9)は、顧客名30Aの文字数nが比較的多い(7>n≧4)場合に適している。
【0034】
パターン番号A10、A11、A12の配列パターンは、顧客名30Aを2行に分割し、契約高30Bと設備番号30Cを同一の行にまとめ、これらを顧客名30Aに対してセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターン( A10〜A12)は、顧客名30Aの文字数nが比較的多い(n≧7)場合に適している。
【0035】
図12は、表示文字列30が、顧客名30Aと契約高30Bの2つのデータ項目からなる場合(項目組合せパターン:B)に選択可能な文字列の配列パターンを示している。
パターン番号B1、B2、B3の配列パターンは、顧客名30Aに対して契約高30Bをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名30Aの文字数nが少ない(4>n>0)場合に適している。
パターン番号B4、B5、B6の配列パターンは、顧客名30Aを2行に分割し、契約高30Bをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名30Aの文字数nが比較的多い(n≧4)場合に適している。
【0036】
図13は、表示文字列30が、設備番号30C(または電線の区間番号)のみからなる場合(項目組合せパターン:C)に選択可能な文字列の配列パターンを示している。
パターン番号C1は、設備番号を構成する標識と番号(No.)を同一の行に配置した場合であり、パターン番号C2、C3、C4の配列パターンは、設備番号を標識と番号に分割し、標識に対して番号をセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。
【0037】
本発明において、渦巻線に沿った各極座標Q(r,θ)における空白領域の探索は、図2に示した表示文字列30の外接枠と、配電線系統図に含まれる既存のシンボルまたは文字列(以下、これらを総称して障害図形と言う)との重なりを判定することによって実現される。
表示文字列の自動配置を地図上の1つのメッシュ領域S(i,j)内に位置したシンボル図形を対象として実行する場合、本発明では、例えば、図14に示すように、メッシュ領域S(i,j)を4分割し、対象シンボル図形(または対象文字列)がサブ領域A内に位置している場合は、メッシュ領域S(i,j)と、上記サブ領域Aに隣接した3つのメッシュ領域S(i−1,j+1)、S(i−1,j)、S(i,j+1)から障害図形を抽出し、表示文字列外接枠30との重なりを判定する。これによって、もし、メッシュ領域S(i,j)内に適当な空白領域が見つからなければ、隣接したメッシュ領域内にある最も近い空白領域に文字列が配置示される。
【0038】
対象シンボル図形がサブ領域B内に位置している場合は、メッシュ領域S(i,j)と、上記サブ領域Bに隣接した3つのメッシュ領域S(i,j+1)、S(i+1,j+1)、S(i+1,j)が障害図形の抽出対象領域となる。これと同様に、対象シンボル図形がサブ領域CまたはD内に位置している場合は、メッシュ領域S(i,j)と、これらのサブ領域に隣接した他の3つのメッシュ領域が障害図形の抽出対象領域となる。
【0039】
図15は、表示文字列30が顧客名と契約高とを含む場合、配列パターンB1に従った文字列の外接枠定義データを示す。この場合、外接枠は、顧客名を示す文字群と契約高を示す文字群を囲むポリゴンの凸頂点座標値(x1,y1)〜(x6,y6)と凹頂点座標値(x7,y7)〜(x8,y8)とによって定義される。これらの座標値は、既知となっている対象シンボル10の基点Pの座標に基づいて極座標Q(r,θ)を算出し、上記極座標を表示文字列30の代表点、例えば、顧客文字列の中心座標に合わせた場合の座標変換によって求められる。
【0040】
図16は、障害図形がポリライン20−1の場合の表示文字列30との重なり判定方法を示す。この場合は、ポリラインの定義式:Y=aX+bに上記表示文字列外接枠の凸頂点座標値(xi,yi)(i=1〜6)を代入し、上記定義式の左辺と右辺との大小関係が全ての代入座標値において同一か否かを判定する。全ての代入座標値において同一となれば、「ポリライン20−1と表示文字列30は重なっていない」と判断する。
【0041】
図17は、障害図形が円20−2の場合の表示文字列30との重なり判定方法を示す。この場合は、円の定義式:r2=(X−a)2+(Y−b)2に上記表示文字列外接枠の凸頂点座標値(x1,y1)〜(x6,y6)を代入し、上記定義式から導出されるYの値を示す式において、左辺と右辺との大小関係が全ての代入座標値において同一か否かを判定する。全ての代入座標値において同一となれば、「円20−2と表示文字列30は重なっていない」と判断する。
【0042】
図18は、障害図形が他のシンボルに付された文字列20−3の場合の表示文字列30との重なり判定方法を示す。この場合は、障害となる文字列の外接枠を求め、上記外接枠の凸凹頂点座標値(X1,Y1)〜(X4,Y4)と表示文字列外接枠の凸頂点座標値(x1,y1)〜(x6,y6)とを比較する。表示文字列外接枠の全ての凸頂点座標が障害文字列外接枠の凸凹頂点座標の外側にあれば、「障害文字列20−3と表示文字列30は重なっていない」と判断する。
【0043】
図19は、配電線系統図管理システム40で実行される文字列配列処理プログラム46Bのフローチャートを示す。
このプログラムでは、先ず、文字列配列処理を実行すべき対象メッシュ領域を特定する(ステップ102)。対象メッシュ領域の指定は、ユーザが、入力装置(キーボード)42からメッシュ番号を入力してもよいし、例えば、表示装置43の画面に表示された地図上でカーソルによって対象メッシュ領域の一部を指定するようにしてもよい。
【0044】
対象メッシュ領域が特定されると、図14で説明したように、対象メッシュ領域を4個のサブ領域に分割し(104)、サブ領域を示すパラメータiの値を0に設定(106)する。次に、上記パラメータiの値をインクリメントし(108)、地図データベース44にある上記対象メッシュ領域と対応する文字列レイヤ60Cから、基点座標64Cが上記第iサブ領域内にある文字列データエントリを抽出して、ワークメモリ45に形成された処理対象文字列テーブルに記憶する(110)。処理対象文字列は、完了フラグ76が未処理(=“0”)の文字列に限定してもよいし、既存文字列の配置位置を修正するために完了フラグの状態に関係なく選択してもよい。
【0045】
次に、図14で説明したように、第iサブ領域に位置に応じてチェック対象となる周辺メッシュ領域を特定し(112)、地図データベース44を参照して、上記特定された周辺メッシュ領域と対象メッシュ領域に対応する電線レイヤ60A、シンボルレイヤ60B、文字列レイヤ60Cから、障害図形(文字列を含む)データエントリを抽出し、ワークメモリ45に形成された障害図形テーブルに記憶する(114)。本実施例では、地図データベースのうち、ユーザ固有レイヤ60に定義された図形または文字列のみを障害図形とし、地図基盤レイヤ50の構成要素を無視した形で表示文字列配置用の空白領域を探索するようにしているが、地図基盤レイヤ50の特定の要素を障害図形として扱うようにしてもよい。
【0046】
この状態で、図20で詳述する文字列の自動配置処理200を実行し、処理対象文字列テーブルに記憶された文字列について自動配置処理が終了すると、4分割された全てのサブ領域について処理が終了したか否かを判定する(116)。もし、未処理のサブ領域があればステップ108に戻り、次のサブ領域について同様の処理を繰り返す。全てのサブ領域について処理が終了していた場合は、自動配置の繰り返しが指定されているか否かを判定する(120)。もし、自動配置の繰り返し回数が指定されていた場合は、実行回数を示すパラメータjの値をインクリメントし(122)、jが指定回数を超えていなければ、ステップ106以降の処理を繰り返す。
【0047】
後述するように、文字列の自動配置処理200では、完全な空白領域が見つからなかった場合、追加文字列と障害図形との重なりを許容して、表示文字列の配置位置を決定している。従って、表示文字列が新たに追加された状態で、メッシュ領域内の全ての表示文字列について配置処理を再実行した場合、例えば、追加文字列に対して障害図形となっていた既存の文字列が配置処理対象となった時、この既存の文字列に対して今度は上記追加文字列が障害図形となる。この結果、上記既存の文字列の位置が修正され、自動配置処理200を繰り返すことによって、最初は部分的に重なっていた2つの文字列を最終的に離間した位置関係で配置することが可能となる。
【0048】
繰り返し回数jが指定回数を超えた場合は、パラメータjの値を初期値(=0)に戻し(126)、図26で詳述する引出し線の描画処理300を実行する。引出し線の描画処理300が終了すると、処理すべきメッシュ領域が他にあるか否かを判定し(128)、処理すべきメッシュ領域があればステップ102に戻り、なければ、このプログラムを終了する。
【0049】
図20は、自動配置処理200の詳細フローチャートを示す。
自動配置処理200では、ワークメモリ45にある処理対象文字列テーブルから自動配置すべき1つの表示文字列を選択し、ワークメモリ45の障害図形テーブルまたは地図データベース44から上記表示文字列と対応する対象シンボルを選択する(ステップ202)。処理対象文字列テーブルに自動配置すべき未処理の表示文字列がなくなった場合は(204)、このルーチンを終了する。
【0050】
次に、ワークメモリ45上に用意したワークテーブルと、渦巻線の回転角度θ、その他のパラメータを初期化(206)した後、回転角度θの値を所定ピッチ(Δθ)増加し(208)、θの値が予め設定された上限値θeを超えたか否かを判定する(210)。
θの値が上限値θeを超えていなければ、計算点となる極座標Q(r,θ)が対象シンボルの外側か否かを判定する(212)。もし、計算点Qが対象シンボルの内側にあった場合は、ステップ208に戻り、回転角度θの値を増加して、同様の判定を繰り返す。図2に示した角度θsが予め判っている場合、この角度θsをθの初期値にすれば、速やかに空白領域の探索動作に移行できる。
【0051】
計算点Qが対象シンボルの外側にあることが確認された場合、表示文字列の配列パターンを選択する(214)。配列パターンの選択範囲は、表示文字列として含まれるデータ項目の組合せパターンと顧客名の文字数nとによって決まり、例えば、表示文字列の項目組合せが図11に示したパターン:Aの場合、顧客名文字数nが、4>n≧1の時は配列パターンA1〜A3の範囲内、7>n≧4の時は配列パターンA1〜A9の範囲内、n≧7の時は配列パターンA1〜A12の範囲内で順次に配列パターンを選択し、選択すべき配列パターンがなくなった場合(216)はステップ208に戻り、次の計算点で同様の処理を繰り返す。
【0052】
配列パターンが決まると、表示文字列をこの配列パターンで計算点Qに配置した場合の文字列外接枠の頂点座標値群を計算し(218)、図16〜図18で説明した障害図形との重なり判定と同様の手法で、文字列外接枠が対象シンボルの外側にあるか否かを判定する(220)。
文字列外接枠が対象シンボルと重なっていた場合は、ステップ214に戻り、配列パターンを変えて同様の処理を繰り返す。もし、文字列外接枠が対象シンボルの外側にあった場合は、障害図形テーブルから1つの障害図形データを選択し(222)、図16〜図18で説明した手法で、選択された障害図形と文字列外接枠との重なり判定計算を行う(226)。障害図形と文字列外接枠とが重なっていなければ、ステップ222に戻って次の障害図形を選択し、同様の処理を繰り返す。障害図形と文字列外接枠とが重なっていた場合は、重なり度合いを計算する(230)。上記重なり度合いは、例えば、障害図形と文字列外接枠との重なり区間の座標点間距離の合計値によって表すことができる。
【0053】
障害図形が電線(ポリライン)の場合は、例えば、図21に示すように、障害ポリライン20−1と表示文字列の外接枠30との交差点の座標(s1,t1)、(s2,t2)、(s3,t3)、(s4,t4)を求め、距離(s1,t1)〜(s2,t2)、(s3,t3)〜(s4,t4)の合計値を重なり度とする。
【0054】
障害図形が円の場合は、例えば、図22に示すように、円20−2と表示文字列の外接枠30との交差点の座標(s1,t1)、(s2,t2)を算出し、距離(s1,t1)〜(s2,t2)を重なり度とする。
【0055】
障害図形が文字列の場合は、例えば、図23に示すように、障害文字列の外接枠20−3と表示文字列の外接枠30との交差点の座標(s1,t1)、(s2,t2)を算出し、距離(s1,t1)〜(s2,t2)を重なり度とする。
【0056】
尚、上述した交差点座標間の距離計算に代えて、重なり度合いの精度を高くするために、障害図形と表示文字列外接枠との重複部分の概略面積を求めても良いし、逆に、計算を簡単にするために、交差点間のX座標距離とY座標距離の合計値を重なり度としてもよい。
重なり度合いの計算結果は、例えば、図24に示すように、計算点Pの座標値501と文字列配列パターン番号502との組合わせ別に、重なり度の累計値503としてワークテーブル500に記憶する(ステップ232)。尚、ワークテーブル500には、計算点の近傍に存在する障害図形の過密度を示すために、重複する障害図形の個数504も記憶するようにしてもよい。
【0057】
ワークテーブルへの重なり度データの記憶が終わると、ステップ222に戻って次の障害図形を選択し、同様の処理を繰り返す。全ての障害図形について表示文字列との重なり判定が終了すると(224)、ワークテーブル500を参照することによって、現在選択中の配列パターンを現在の計算点に配置した場合、重なる障害図形が皆無か否かを判定する(240)。もし、重なる障害図形が1つでもあれば、ステップ214に戻って次の配列パターンを選択し、同様の処理を繰り返す。
【0058】
ステップ240での判定の結果、重なる障害図形が皆無であれば、この時点で、表示文字列の配置位置と配列パターン、即ち、文字列配置のための空白領域が判明したことになる。この場合は、文字列レイヤ60Cにおける該当データエントリに、現在の計算点Qの座標値(基点座標64C)と文字列配置パターン(配列パターン75)を設定し、上記データエントリの完了フラグ76を処理済状態(=“1”)にし、ワークテーブル500をクリアして、ステップ250を実行する。
【0059】
ステップ250では、回転角度θが予め決められた閾値θt(θt <θe)を超えているか否かを判定する。もし、θ>θtの場合は、表示文字列の位置が対象シンボルから或る程度離れていることを意味している。この場合は、引出し線描画処理300の対象とするために、文字列レイヤ60Cにおける該当データエントリの引出し線フラグ77を“1”に設定しておく(252)。この後、ステップ202に戻って、次の表示文字列と対象シンボルを選択し、上述した処理を繰り返す。
【0060】
完全な空白領域が見つからないまま、ステップ208で、θの値が上限値θeを超えた場合は、ワークテーブル500を参照し、重なり度合いが最小のエントリを選択する(236)。重なり度合いが同一の場合は、例えば、エントリ番号の若いもの(θの小さいもの)を選ぶ。これに代えて、重複する障害図形数504の少ないものを選択するようにしてもよい。この後、上記選択されたエントリが示す計算点501と文字列配列パターン502を文字列レイヤ60Cにおける該当データエントリに設定し、上記データエントリの完了フラグ76を処理済状態(=“1”)にし、ワークテーブル500をクリアして、ステップ250以降の処理を実行する。尚、文字列が他の図形と重なる位置に自動配置された場合は、マニュアル操作による配置位置変更の対象文字列であることをユーザが容易に識別できるように、表示ステップ254で文字色を変えて表示する。
【0061】
上記文字列の自動配列処理ルーチン200によれば、文字数とデータ項目の組合せに応じて決まる幾つかの文字配列パターンについて、各計算点Qで文字配列パターンを変えながら障害図形との重なり判定を繰り返すことによって、空白領域または障害図形との重複が最も少ない領域に表示文字列を配置することが可能となる。
【0062】
図25は、自動配列処理ルーチン200の変形例として、表示文字列のフォントサイズを変更して空白領域を探索できるようにしたフローチャートの1例を示す。
完全な空白領域が見つからないまま、回転角度θが上限値θeを超えた場合、ワークテーブルから重なり度が最小のエントリを選択し(ステップ236)、重なり度が予め設定された許容限度(閾値)内か否かを判定する(237)。重なり度が許容限度内であれば、既に説明済みのステップ238〜254を実行した後、次の表示文字列の配列処理に移る。もし、重なり度が許容限度を超えていた場合は、縮小回数を示すパラメータkをインクリメントし(260)、上限回数Kと比較する(262)。縮小回数kが上限回数Kを超えていれば、パラメータkを初期化(264)した後、ステップ238〜254を実行する。上限回数Kを超えていなければ、文字仕様73で指定されていたフォントサイズを所定の比率(z%)で縮小し(266)、図20のステップ206に戻って、空白領域の探索処理をやり直す。
【0063】
このようにフォントサイズを縮小した上で空白領域の探索処理を繰り返すようにすれば、指定フォントサイズでは表示文字列を収容できる空白領域が見つからないような図形が密集したメッシュ領域において、他の図形との重なりを完全に回避、あるいは重なり度を一層軽減した文字列配置が可能となる。尚、上記実施例では、指定フォントサイズによって見つけた候補領域の重なり度が或る閾値を越えた場合に、フォントサイズを縮小したが、指定フォントサイズで空白領域が見つからなければ無条件で、上記フォントサイズを縮小した空白領域探索を実行するようにしてもよい。
【0064】
図26は、引出し線描画処理300の詳細フローチャートを示す。
引出し線描画処理300では、ワークメモリ45にある処理対象文字列テーブルから引出し線描画対象となる文字列を選択し、ワークメモリ45の障害図形テーブルまたは地図データベース44から上記表示文字列と対応する対象シンボルを選択する(ステップ302)。引出し線描画対象となる文字列は、その基点座標64Cが対象シンボルの基点座標64Bから或る程度以上離れたものであり、前述の自動配置処理ルーチン200の実行過程で引出し線フラグ77が“1”に設定されたデータエントリを選択すればよい。
【0065】
次に、引出し線の描画領域を設定する(304)。引出し線の描画領域は、例えば、図27に示すように、対象シンボル10−iの基点Pと、選択された文字列30−iにおける上記基点Pから最も離れた点(以下、遠隔点と言う)Qとを対角とする矩形領域S1である。この矩形領域S1の外側に一定距離隔てた位置に各辺をもつ第2の矩形領域S2を設定し、第2の矩形領域S2内に基点をもつ図形(文字列を含む)データを障害図形として抽出する(306)。本実施例では、電線レイヤ60Aは、障害図形の対象外としておき、引出し線と電線とが交差した場合は、後述するクロスライン処理400によって、引出し線の一部を消去するようにしている。
【0066】
次に、図27に示すように、遠隔点Qと基点Pとを結ぶ最短直線Lqpを算出し(308)、上記最短直線Lqpと障害図形との重なり判定計算を実行する(310)。全ての障害図形について重なり判定を実行した結果、最短直線Lqpが障害図形に重ならないことが判明した場合(312)は、最短直線Lqpを引出し線に決定し、表示画面上で引出し線を描画する(338)。
【0067】
もし、最短直線Lqpに重なる図形が存在していた場合は、図28に示すように、対象シンボルの基点Pに接するX辺とY辺をn等分し、文字列の遠隔点Qと上記X辺上のn等分点Px1、Px2、Px3、…とを結ぶ半直線群(Lqx1、Lqx2、Lqx3、…)と、上記遠隔点Qと上記Y辺上のn等分点Py1、Py2、Py3、…を結ぶ半直線群(Lqy1、Lqy2、Lqy3、…)を算出する(314)。次に、X辺側とY辺側を交互に、基点Pに近いものから順に半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す(316)。
【0068】
全ての半直線について重なり判定を行った結果、もし、障害図形と重ならない半直線が見つからなければ(318)、本実施例による引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する(344)。この後、処理すべき文字列の有無を確認し(346)、未処理の文字列が残っていれば、ステップ302に戻り、処理すべき文字列がなければ、このルーチンを終了する。
【0069】
ステップ316の重なり判定計算過程で、障害図形と重ならない半直線(以下、第1の半直線と言う)が見つかった場合は、対象シンボルの基点Pから、上記第1半直線と交差して、遠隔点Q側のX辺またはY辺に向かう第2の半直線群を計算する(320)。例えば、上記ステップ316の重なり判定で、遠隔点QからX辺に向かう半直線Lqx2が障害図形と重ならないことが判った場合、ステップ320では、図29に示すように、遠隔点Qに接するY辺をn等分し、基点Pと上記Y辺上のn等分点Qy1、Qy2、Qy3、…を結ぶ半直線群(Lpy1、Lpy2、Lpy3、…)を第2の半直線群として算出する。
【0070】
これらの第2の半直線群のなかから、遠隔点Qに近いものから順に判定対象となる半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す(322)。この重なり判定計算の過程で、もし、障害図形と重ならない第2半直線が見つかった場合は(324)、見つかった第1、第2の半直線の交点Oと点Q、Pを結ぶ折れ線を算出し(336)、この折れ線を引出し線として描画する(338)。
【0071】
第2の全ての半直線群について重なり判定を行った結果、もし、障害図形と重ならない第2半直線が見つからなかった場合は、ステップ316で見つけた第1半直線を無効にして、矩形S1内の限定された領域で、残りの半直線と障害図形との重なり判定計算を行う(326)。例えば、図29に示した第1半直線Lqx2が無効になった場合、図30に示すように、基点Pに接するY辺側の残りの半直線Lqy2、Lqy3、…が判定対象となる。重なり判定の結果、これらの半直線の中に障害図形と重ならない第1半直線が見つからなかった場合は(328)、引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する(344)。
【0072】
ステップ326で行った重なり判定の過程で、障害図形と重ならない第1半直線が見つかった場合は、対象シンボルの基点Pから、上記第1半直線と交差して、遠隔点Q側のX辺またはY辺に向かう第2の半直線群を計算する(330)。例えば、上記ステップ326の重なり判定で、半直線Lqy4が障害図形と重ならないことが判った場合、ステップ330では、図31に示すように、遠隔点Qに接するX辺をn等分し、基点Pと上記X辺上のn等分点Qx1、Qx2、Qx3、…を結ぶ半直線群(Lpx1、Lpx2、Lpx3、…)を第2の半直線群として算出する。これらの第2半直線群のなかから、遠隔点Qに近いものから順に判定対象となる半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す(332)。
【0073】
上記重なり判定の結果、障害図形と重ならない第1半直線が見つからなかった場合は(334)、引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する(344)。上記重なり判定計算の過程で、もし、障害図形と重ならない第2半直線が見つかった場合は、第1、第2の半直線、例えば、図31に示すLqy4とLpx3の交点Oを求め、交点Oと点Q、Pを結ぶ折れ線を算出し(334)、図32にLqopで示すように、上記折れ線を引出し線として描画する(338)。
【0074】
引出し線の描画の後、図33に示すクロスライン処理400を実行する。
クロスライン処理400では、先ず、電線レイヤ60Cを参照して、描画領域S1を通過する電線データを抽出する(402)。抽出した電線データと上記引出し線の座標データに基づいて、電線と引出し線との重なり(交差)判定計算を行い(406)、もし、交差していなければ、ステップ402に戻って、次の電線データについて、同様の処理を繰り返す。
【0075】
例えば、図34に示すように、電線L1と引出し線Lqopとが交差していた場合は、引出し線のうち、上記電線との交差部分を消去するための計算処理を行う(410)。引出し線の部分消去は、電線L1と引出し線Lqopとの交差点を中心とする所定半径の小円C1を設定し、該小円C1と引出し線Lqopとの交点座標を算出して、2つの座標間を消去区間とする。これらの交点座標を消去区間データとしてワークエリアに記憶し、現在表示されている引出し線Lqopのうち、上記消去区間に相当する線分を消去(412)した後、ステップ402に戻り、次の電線データについて同様の処理を繰り返す。描画領域S1を通過する全ての電線データについて上述した処理が終えると(404)、クロスライン処理400が完了し、図26の引出し線終端処理(340)を実行する。
【0076】
引出し線終端処理(340)では、図35に示すように、引出し線Lqopのうち、対象シンボル10−iとの重なり区間と、文字列外接枠30−iとの重なり区間を計算し、これらの区間を消去区間として記憶すると共に、現在表示されている引出し線Lqopのうち、上記消去区間に相当する線分を消去する。また、残された引出し線Lqopと対象シンボル10−iとの交点側に、矢印マークとなる線分を設定し、これを表示すると共に、引出し線の一部として記憶する。
【0077】
上記引出し線終端処理340の後、上記引出し線に関するデータを図10に示したエントリフォーマットにまとめ、地図データベースの該当する引出し線レイヤに登録する(342)。この後、引出し線描画すべき文字列の有無を判定し(346)、引出し線描画すべき文字列があれば、ステップ302に戻り、引出し線描画すべき文字列がなければ、処理ルーチン300を終了する。
【0078】
以上説明した本発明の実施例によれば、配電線系統図に新たなシンボルが追加された時、該シンボルに付随する文字列を対象シンボルに最も近い空白領域に自動的に配置でき、文字列の位置が対象シンボルから予め決められた距離以上に離れた場合、引出し線を自動的に描画できることが判る。また、対象シンボルの近傍に表示文字列を完全に収容できる空白領域がなかった場合、文字列サイズを変更することによって、文字列を対象シンボルに最も近い空白領域の検出が可能となる。
更に、自動配置の結果、他の図形または文字列と重なった位置に配置せざるを得なかった文字列、あるいは、引出し線の自動描画ができなかった文字列については、他の文字列とは異なる色で表示することによって、目視による識別を容易にし、ユーザのマニュアル操作による修正を容易にすることができる。
【0079】
以上の実施例では、配電線系統図における表示文字列を配列対象としたデータ自動配列について説明したが、本発明は、配電線系統図以外の他の地図情報応用図面、電気回路図面、製品・装置の説明図面、工程管理図面などにも応用可能である。また、実施例では、特定のシンボル図形に対して表示文字列を配置する例について説明したが、本発明の用途によっては、シンボル図形は単なる座標点であってもよく、また、シンボル図形に付随する自動配置の対象データは、例えば、標識、写真、グラフ、拡大図のように、文字列以外のデータであってもよい。
【0080】
【発明の効果】
以上の説明から明らかなように、本発明によれば、目標点となる2次元図面上の特定の座標点を原点とした渦巻線に沿って空白領域を探索することにより、目標点または該目標点に配置された対象データ表示領域に最も近い位置に、付随データの配置に適した空白領域を見つけことができる。また、本発明によれば、付随データの配置位置が、特定の座標点を原点とした渦巻線上の極座標によって決まるため、付随データ表示領域のX、Y座標値が目標点毎に固有の値となり、特に文字列を自動配置の対象とした場合、配置位置が近接しても2つの文字列の混同を回避できる。
【図面の簡単な説明】
【図1】本発明によるデータ配列の原理を説明するための図。
【図2】本発明によるシンボル10に付随する文字列30の配置位置決定方法を説明するための図。
【図3】本発明の適用分野の1つである配電線系統図の1例を示す図。
【図4】配電線系統図における従来の文字列配置方法の説明するための図。
【図5】本発明の1実施例を示す配電線系統図管理システムの構成図。
【図6】データベースに格納されている配電線系統図用のデータ構造を示す図。
【図7】電線レイヤのデータ形式の1例を示す図。
【図8】シンボルレイヤのデータ形式の1例を示す図。
【図9】文字列レイヤのデータ形式の1例を示す図。
【図10】引出し線レイヤのデータ形式の1例を示す図。
【図11】文字列が3つの項目データからなる場合の文字列配置パターンを示す図。
【図12】文字列が2つの項目データからなる場合の文字列配置パターンを示す図。
【図13】文字列が1つの項目データからなる場合の文字列配置パターンを示す図。
【図14】データ自動配置処理の対象メッシュ領域と障害図形の抽出領域との関係を示す図。
【図15】表示文字列の外接枠定義データの1例を示す図。
【図16】障害図形がポリラインの場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図17】障害図形が円の場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図18】障害図形が文字列の場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図19】本発明の1実施例である文字列配置処理プログラムのフローチャート。
【図20】上記文字列配置処理プログラムにおける自動配置処理200の詳細を示すフローチャート。
【図21】障害図形がポリラインの場合の表示文字列と障害図形との重なり度の算出方法の1例を説明するための図。
【図22】障害図形が円の場合の表示文字列と障害図形との重なり度の算出方法の1例を説明するための図。
【図23】障害図形が文字列の場合の表示文字列と障害図形との重なり度の算出方法の1例を説明するための図。
【図24】重なり度を記憶するためのワークテーブルの1例を示す図。
【図25】自動配置処理200の変形例を説明するためのフローチャート。
【図26】上記文字列配置処理プログラムにおける引出し線描画処理300の詳細を示すフローチャート。
【図27】引出し線描画処理300におけるステップ304とステップ308を説明するための図。
【図28】引出し線描画処理300におけるステップ314を説明するための図。
【図29】引出し線描画処理300におけるステップ320を説明するための図。
【図30】引出し線描画処理300におけるステップ326を説明するための図。
【図31】引出し線描画処理300におけるステップ336を説明するための図。
【図32】引出し線描画処理300におけるステップ338を説明するための図。
【図33】引出し線描画処理300におけるクロスライン処理400の詳細フローチャート。
【図34】クロスライン処理400におけるステップ410を説明するための図。
【図35】引出し線描画処理300におけるステップ340を説明するための図。
【符号の説明】
SP:渦巻線、P:シンボル基点、Q:文字列基点、10:対象シンボル、
20:障害図形、30:表示文字列、30A:顧客名、30B:契約高、
30C:設備No.、40:配電線系統図管理システム、41:プロセッサ、
42:入力装置、43:表示装置、44:地図データベース、45:メモリ、
46:プログラムメモリ、46A:配電線系統図作成処理プログラム、
46B:文字列配置処理プログラム、50:地図基盤レイヤ、
60:ユーザ固有レイヤ、60A:電線レイヤ、60B:シンボルレイヤ、
60C:文字列レイヤ、60D:引出し線レイヤ。
【発明の属する技術分野】
本発明は、データ配置方法および2次元図面データ処理システムに関し、更に詳しくは、複数のシンボル図形および文字列を含む2次元領域内の指定位置の近傍でデータ配置に必要な空白領域を検出し、上記指定位置に付随したデータを自動的に配置するためのデータ配置方法および2次元図面データ処理システムに関する。
【0002】
【従来の技術】
ディジタルデータとして提供される地図上に、ユーザニーズに応じたシンボル図形や表示文字列を配置することによって、例えば、電力、電話、ガス、水道等の設備系統図や、住宅地図、レジャー施設案内図等のマップが得られる。この場合、設備や施設を表すシンボル図形は、或る程度正確な座標位置に配置され、各シンボル図形に付随した名称や補足説明用の表示文字列は、対象シンボルの近傍に見つけた比較的見易い位置に配置される。
【0003】
図3は、このような特殊用途向けマップの1例として、電力会社で利用される高圧配電線系統図の概要を示す。高圧配電線系統図は、一般家庭に供給されている100V/200Vの低圧電力の配線の上流に位置付けられる高圧電力の配線経路の保守/管理に利用されるもので、地図1000上に、例えば、高電圧配線の経路を示す電線シンボル1(1−1…1−14)と、上記配線に接続された配電箱や分電盤などの設備を示す設備シンボル10(10−1…10−14)と、上記配線の区間番号等を示す文字列11と、各設備シンボル10に付随する表示文字列30(30−1…30−14)等が表示されている。表示文字列30は、例えば、各設備を使用している顧客の名称、契約電力(契約高)、各設備に固有の設備番号(設備No.)のうちの少なくとも1つを示している。
上記配電線系統図において、例えば、設備シンボル10−15が新たに追加され、この設備シンボル10−15に付随する表示文字列を自動的に配置する場合を想定する。この場合、設備シンボル10−15の近傍に、新たに加える表示文字列の面積に見合った空白領域を見つける必要がある。もし、新たな文字列を道路、境界線、家型などの地図基盤要素に上書きしても良ければ、例えば、図4に示すように、配電線系統図を方形のメッシュに区切り、シンボル図形や既存文字列の有無によって使用済メッシュ領域と空白メッシュ領域とに分け、設備シンボル10−15の周辺にある空白メッシュ領域の中から、新たな文字列を収容できる空白領域を選択すればよい。
【0004】
【発明が解決しようとする課題】
しかしながら、上述したように対象図面をメッシュに分割して空白領域を見つける方式では、計算量を少なくするためにメッシュサイズを大きくした場合、使用済みと判定されるメッシュ領域の面積が、実際にシンボル図形や既存文字列が占める面積よりも増え、空白領域面積が狭くなため、実際には追加文字列を収容可能な領域が空白メッシュ領域の面積不足を理由に配置対象位置から除外されてしまうという問題がある。この問題は、メッシュサイズを小さくすれば解決できるが、逆に計算量が増えるという別の問題が発生する。
【0005】
また、対象図面をメッシュ領域に分割して表示文字列を配置すると、各文字列の先頭文字の位置がメッシュサイズによって正規化され、結果的に、追加文字列が左右に位置する既存文字列と行方向において位置合わせされる。このため、例えば、シンボル10−15の表示文字列を既存の文字列30−13と30−14の間にある空白領域に配置した場合、文字列間に1個以上の空白メッシュが存在しない限り、行方向で3つの文字列が連続し、文字列が混同すると言う問題がある。また、上記メッシュ分割方式によれば、対象シンボルの周辺に存在する複数の候補領域の中から最適な空白領域を選択するためには、優先順位の高い位置から空白領域面積を判定する複雑な判定ルールを用意しておく必要となる。
【0006】
本発明の目的は、2次元領域内の指定位置の近傍の適切な位置に自動的にデータを配置するためのデータ配置方法および図面データ処理システムを提供することにある。
本発明の他の目的は、複数のシンボル図形および文字列を含む2次元図面領域において、特定シンボルに付随する表示データの配置位置を自動的に決定するためのデータ配置方法および2次元図面データ処理システムを提供することにある。
【0007】
本発明の更に他の目的は、複数のシンボル図形および文字列を含む2次元図面領域において、各シンボルに付随する表示文字列の配置位置を自動的に修正し、最適化するためのデータ配置方法および2次元図面データ処理システムを提供することにある。
本発明の更に他の目的は、複数のシンボル図形および文字列を含む2次元図面領域において、文字列が他の文字列と近接した場合でも文字列間の識別が容易にできる位置関係で、各シンボルに付随する表示文字列の配置位置を決定または修正可能なデータ配置方法および2次元図面データ処理システムを提供することにある。
本発明の更に他の目的は、特に複数の特殊シンボル図形と文字列を含む地図上において、特定のシンボルに付随する表示文字列の配置位置を自動的に決定または修正するのに適したデータ配置方法およびデータ処理システムを提供することにある。
【0008】
【課題を解決するための手段】
上記課題を解決するために、本発明のデータ配置方法は、配置目標となる2次元領域内の指定位置を原点とする渦巻線に沿ってデータを配置可能な空白領域を探索し、所定の探索範囲内で検出された上記原点に最も近い空白領域、または既存データとの重なり度が最も少ない領域に上記データを配置することを特徴とする。
本発明に適用される渦巻線は、原点からの距離rが回転角θに応じて変化する極座標(r、θ)の軌跡であり、本発明のデータ配置方法では、指定位置を原点として回転角度を所定ピッチで増加することにより、渦巻線に沿って複数の極座標点を設定し、各極座標点を基点として配置データの所要領域と既存データとの重なりをチェックすることにより、空白領域、または重なり度が最も少ない領域を検出する。上記極座標点は、回転角θが大きくなるに従って徐々に原点から離れていくため、回転角度を所定ピッチで増加しながら各極座標点で空白領域を探索すれば、最初に見つかった空白領域が2次元領域内の指定位置に最も近い最適な空白領域となる。
【0009】
2次元領域内の上記指定位置は、例えば、2次元領域内に配置されたシンボル図形の代表点であり、配置対象データは、例えば、上記シンボル図形に付随した表示文字列である。但し、シンボル図形は、例えば、地図上の特定地点を示す2次元領域内の単なる座標点であってもよく、また、配置対象データは、例えば、標識、写真、グラフ、詳細図形のように、文字列以外のデータであってもよい。
【0010】
更に詳述すると、例えば、シンボル図形の近傍に表示文字列を配置する場合、本発明のデータ配置方法では、渦巻線に沿って設定された複数の極座標点のうち、上記シンボル図形の外側に位置した各極座標点を計算点として、表示文字列の所要領域と既存データとの重なりをチェックすることを特徴とする。
【0011】
本発明の好ましい実施例では、無駄な計算を省くために、シンボル図形の外側に位置した各極座標点を計算点として、先ず、シンボル図形と表示文字列の所要領域との重なりをチェックし、上記表示文字列の所要領域が上記シンボル図形と重ならない位置に達したとき、上記シンボル図形以外の既存データとの重なりをチェックする。また、できるだけ指定位置(対象シンボル図形)の近くにデータ(表示文字列)を配置できるようにするために、各計算点において、データ(表示文字列)の配置パターンを変えながら、所要領域と既存データとの重なりチェックを繰り返し、データ配置可能な空白領域の有無を判定する。
【0012】
本発明のデータ配置方法の他の特徴は、データ配置領域の代表点が、指定位置から所定距離以上離れた場合、上記データ配置領域と上記指定位置との間に引出し線を描画することにある。上記引出し線としては、例えば、指定位置とデータ配置領域内の特定点とを結ぶ最短直線と、上記指定位置と上記特定点とを結ぶ屈折点位置の異なる複数の折れ線とのうち、予め除外指定された特定データ以外の既存データ配置領域に重ならないものを選択し、該選択された線分の一部を加工した形で描画する。
【0013】
一方、本発明による2次元図面データ処理システムは、複数のシンボル図形と文字列とを含む2次元図面を編集するためのものであって、上記2次元図面に含まれる特定シンボル図形の基点座標を原点とする渦巻線に沿って所定の回転角間隔で計算点を生成するための第1手段と、上記各計算点を表示領域代表点として、特定シンボル図形に付随する表示文字列を配置するための空白領域の有無を判定し、最初に見つかった空白領域に上記表示文字列を配置するための第2手段とを備えたことを特徴とする。
【0014】
更に詳述すると、本発明による2次元図面データ処理システムは、シンボル図形と文字列とを含む2次元図面を表示するための表示装置と、2次元図面領域に配置すべきシンボル図形を定義した複数のデータエントリと、上記2次元図面領域に配置すべき文字列を定義した複数のデータエントリとを蓄積したデータファイルと、データ処理手段とからなり、上記データ処理手段は、上記データファイルから特定シンボル図形のデータエントリと該特定シンボルに付随した文字列のデータエントリとを読み出し、上記特定シンボル図形のデータエントリが示す上記2次元図面領域内の特定の座標点を原点Pとして、原点Pからの距離rが回転角θに応じて変化する極座標Q(r,θ)に基づいて、上記特定シンボル図形の表示領域周囲に回転角θを異にする複数の計算点Qを設定し、各計算点毎に上記文字列データエントリが示す文字列データを所定の配列パターンで配置した場合の文字列表示領域枠の座標データを算出し、該座標データを上記データファイルから読み出された他のシンボル図形および文字列のデータエントリで特定される障害領域と重なり判定することによって、上記付随文字列を配置可能な空白領域を選択し、該空白領域に上記付随文字列を配置することを特徴とする。
【0015】
本発明による2次元図面データ処理システムの他の特徴は、上記データ処理手段が、回転角θによって決まる所定の探索範囲で前記付随文字列を収容可能な完全な空白領域がみつからなかった場合、上記探索範囲における前記障害領域との重なり度が最小の領域を選択し、付随文字列を2次元領域上の他の文字列とは異なる表示形式で表示装置に出力するための手段を備えたことを特徴とする。
【0016】
また、本発明の2次元図面データ処理システムでは、上記データ処理手段が、障害領域と部分的に重なった文字列表示領域を含む2次元図面領域において、既に配置決定された既存の文字列を対象として配置可能な空白領域の選択動作を再実行することによって、表示文字列の配列を自動的に修正する機能を備える。
本発明のその他の特徴は、以下に述べる図面を参照した実施形態の説明から明かになる。
【0017】
【発明の実施の形態】
図1は、本発明によるデータ配列の原理図を示す。
本発明では、対象シンボル10に付随する表示データの配置位置を決定するために、対象シンボルの基点Pを原点とする渦巻線SPに沿って空白領域を探索することを特徴とする。上記渦巻線は、Pを原点とする極座標(r、θ)において、rの値がθに応じて変化するような曲線を意味しており、図1は、r=aθ(aは正の定数)で表されるアルキメデスの渦巻を示している。
以下の実施例では、アルキメデスの渦巻を前提として説明するが、本発明には、例えば、r=aep θ(p>0)で表される対数渦巻や、r2=aθで表される放物渦巻など、アルキメデスの渦巻以外の他の渦巻線も適用可能である。
【0018】
本発明では、対象シンボル内に定義された1つの代表点を基点Pとして、これを原点とする半直線mの角度θを所定ピッチΔθで変化させ、渦巻線に沿って変化する半直線m上の極座標Q(r、θ)を文字列配置の候補位置(計算点)として、表示文字列を収容可能な空白領域を探索する。表示文字列30の配置に要する領域サイズは、例えば、図2に示すように、文字列の外接枠を規定する複数の座標値群(白丸)によって表すことができる。
【0019】
本発明では、上記文字列外接枠内の特定の位置を文字列代表点と定義しておき、上記文字列代表点を各極座標Q(r、θ)に位置付けた状態で、文字列外接枠と既存シンボルまたは既存文字列との重なり関係をチェックすることにより、表示文字列を配置可能な空白領域を見つける。
極座標Q(r、θ)は、最初のうちは対象シンボル10の内側で移動し、半直線mの回転角度がθsを超えた時、極座標Q(r、θ)が対象シンボルの外側に出る。図示した例では、表示文字列10の代表点が第1行文字列の中央に設定されているため、極座標Q(r、θ)が対象シンボルの外に出てから暫くの間は、文字列外接枠が対象シンボル10に重なった状態が続く。文字列外接枠と対象シンボル以外の他の既存シンボルまたは既存文字列との重なり関係のチェックは、回転角度θが更に大きくなり、文字列外接枠全体が対象シンボル10から外れた状態となった時に開始すればよい。
【0020】
表示文字列を配置すべき空白領域の探索を上述した渦巻線SPに沿って実行した場合、対象シンボル周辺における空白領域の広がり形態の無関係に、最初に検出された空白領域が対象シンボルに最も近い空白領域となる。従って、本発明によれば、対象シンボルの近傍で選び得る最適な位置に表示文字列を配置することが可能となる。
また、本発明によれば、表示文字列30の代表点の座標が、対象シンボル10の基点Pと極座標Q(r、θ)によって決まる。すなわち、各表示文字列の第1行目のY座標は、基点PのY座標にrcosθを加えたもので、rも角度θに関数となっているため、各表示文字列の開始位置が、対象シンボル毎に異なったY座標をもつ。従って、2つの表示文字列がX軸方向に近接して配置された場合でも、Y軸方向に位置がずれているため、2つの表示文字列が混同する可能性は少ない。
【0021】
以下、本発明の1実施例として、上記渦巻線に沿った判定アルゴリズムを適用した配電線系統図編集システム40について説明する。
配電線系統図編集システム40は、図5に示すように、プロセッサ41と、キーボードおよびマウスを含む入力装置42と、表示装置43と、地図および配電線系統図用のデータが格納されたファイル装置(データベース:DB)44と、その他のデータ格納用およびワーク領域として使用されるメモリ45と、各種のプログラムが格納されたプログラムメモリ46とからなり、これらの要素はバス47によって相互接続されている。プログラムメモリ46には、配電線系統図の編集に固有のプログラムとして、配電線系統図作成処理プログラム46Aと、後述する文字列配置処理プログラム46Bと、その他のプログラム46Cが用意されている。
【0022】
図6は、データベース44に格納される地図および配電線系統図用のデータ構造を示す。
地図1000は複数のメッシュ領域からなり、各メッシュ領域と対応して、地図基盤レイヤ50とユーザ固有レイヤ60のデータが用意されている。地図基盤レイヤ50は、一般的な地図を形成するために必要なデータであり、例えば、道路または街区、境界(都道府県境界、都市区町村境界など)、鉄道、河川、家型、それらに付随する名称、その他のシンボル等、地図の構成要素毎に分けられた複数のレイヤ50−1〜50−Nに分かれている。ユーザ固有レイヤ60は、地図基盤レイヤ50で形成された地図上にユーザ固有の情報を表示するためのデータであり、本実施例では、配電線系統図用のデータとして、電線レイヤ60Aと、シンボルレイヤ60Bと、文字列レイヤ60Cと、引出し線レイヤ60Dとが用意されている。
【0023】
電線レイヤ60Aは、各メッシュ内に表示される電線を定義するためのもので、例えば、図7に示すように、メッシュ番号61Aと、データ番号62Aと、図形仕様63Aと、基点座標64Aと、構成座標65Aと、文字列データ番号66Aからなる複数のエントリを含む。図形仕様63Aは、表示される電線の種類、線種、太さ、大きさ、色を指定する。基点座標64Aは、メッシュ内における各電線の基点を示し、構成座標65Aは、基点から延びる電線の各屈折点および終点の座標を示している。文字列データ番号66Aは、例えば、区間番号のように、その電線に付すべき文字列があった場合に、文字列レイヤ60C内に定義された文字列のデータ番号を示す。
【0024】
シンボルレイヤ60Bは、各メッシュ内に表示される配電箱などのシンボル図形を定義するためのもので、例えば、図8に示すように、メッシュ番号61Bと、データ番号62Bと、図形仕様63Bと、基点座標64Bと、構成座標65Bと、文字列データ番号66Bとからなる複数のエントリを含む。基点座標64Bは、シンボル図形に代表点を示し、シンボル図形が円の場合は、図形仕様の種類で円、大きさで半径が指定される。シンボル図形が三角形、矩形、その他の形状をもつ場合は、構成座標65Bで図形の各頂点の位置が指定される。文字列データ番号66Bは、そのシンボル図形に付随して表示すべき文字列レイヤ60C内に定義された関連文字列エントリのデータ番号を示す。
【0025】
文字列レイヤ60Cは、例えば、図9に示すように、メッシュ番号61Cと、データ番号62Cと、顧客名文字数(n)71と、表示文字列72と、文字仕様73と、基点座標64Cと、配列パターン74と、シンボルデータ番号75と、完了フラグ76と、引出し線フラグ77とからなる複数のエントリを含む。
【0026】
表示文字列72は、顧客名72a、契約高72b、設備番号72cの3つのデータ項目からなり、顧客名文字数71は、上記顧客名72aの文字数nを示す。文字仕様73は、表示文字列72が示す各文字データの表示フォント、大きさ、表示角度および色を指定する。表示文字列に含まれるデータ項目の数はシンボルによって異なり、上記顧客名、契約高、設備番号の3項目が全て表示される場合もあれば、1つまたは2つのデータ項目だけが表示される場合もある。また、顧客名は可変長であり、文字数が長い場合は、顧客名が数行に分けて表示される。
【0027】
配列パターン74は、表示文字列72を構成する複数の文字の配列パターンを示すもので、後述するように、文字列配置処理プログラム46Bを実行した時、文字列配置領域の周囲状況に応じた最適な配列パターンが決定される。シンボルデータ番号75は、各表示文字列と対応するシンボルレイヤまたは電線レイヤのデータ番号を示す。
【0028】
完了フラグ76は、表示文字列の配置位置が決定済みか否かを示し、引出し線フラグ77は、表示文字列と対象シンボルとの間に引出し線を描画すべきか否かを示す。引出し線は、表示文字列が対象シンボルから或る程度離れた位置に設定された場合に描画される。尚、文字列レイヤの基点座標64Cは、初期値として、例えば、対象シンボルの基点座標64Bと同一の座標値を仮設定しておき、文字列配置処理プログラム46Bの実行によって配置位置が決定した時、正規の座標値に置き換えられ、完了フラグ76が決定済みの状態(=“1”)となる。
【0029】
引出し線レイヤ60Dの各エントリは、図10に示すように、電線レイヤ60Aと同様、メッシュ番号61Dと、データ番号62Dと、図形仕様63Dと、基点座標64Dと、構成座標65Dと、文字列データ番号66Dとを含み、この他に、消去区間座標68を含んでいる。構成座標65Dは、引出し線の描画に必要な座標値群を示し、消去区間座標68は、例えば、引出し線が電線とクロスした場合、引出し線の消去区間を指定する座標値群を示す。
【0030】
図11〜図13は、表示文字列の内容と配列パターンとの関係を定義した文字列配列パターン選択テーブルを示す。
後述するように、文字列配置処理プログラム46Bでは、渦巻線に沿った各極座標Q(r,θ)において、表示文字列の配列パターンを適宜変更しながら文字列を表示できる空白領域を探索する。この場合、表示文字列の配列パターンは、文字列レイヤ60Cが示す顧客名文字数(n)71と、表示文字列72に含まれるデータ項目72a〜72cの組合せとに応じて決定される。
【0031】
図11は、表示文字列30が、顧客名30A、契約高30B、設備番号30Cの3つのデータ項目を含む場合(項目組合せパターン:A)に選択可能な文字列配列パターン34を示す。尚、31は配列パターン番号、32は配列パターンに適した顧客名文字数nの範囲、33は表示文字列のデータ項目間の位置合わせ方法を示している。
【0032】
パターン番号A1、A2、A3の配列パターンは、顧客名30A、契約高30B、設備番号30Cの3項目を縦に並べ、顧客名に対して契約高と設備番号をセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名30Aの文字数nが少ない(4>n>0)場合に適している。
【0033】
パターン番号A4、A5、A6の配列パターンは、契約高30Bと設備番号30Cを同一の行にまとめ、これらを顧客名30Aに対してセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。パターン番号A7、A8、A9の配列パターンは、顧客名30Aを2行に分割し、顧客名30Aに対して契約高30Bと設備番号30Cをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。尚、顧客名30Aの文字数nが奇数の場合、これを2行に分割すると上段と下段で文字数が異なってくるが、この場合は、下段の顧客名文字列を上記契約高30B、設備番号30Cと同様に扱い、上段の顧客名文字列に対して位置合わせするようにしてもよい。これらの配列パターン(A4〜A9)は、顧客名30Aの文字数nが比較的多い(7>n≧4)場合に適している。
【0034】
パターン番号A10、A11、A12の配列パターンは、顧客名30Aを2行に分割し、契約高30Bと設備番号30Cを同一の行にまとめ、これらを顧客名30Aに対してセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターン( A10〜A12)は、顧客名30Aの文字数nが比較的多い(n≧7)場合に適している。
【0035】
図12は、表示文字列30が、顧客名30Aと契約高30Bの2つのデータ項目からなる場合(項目組合せパターン:B)に選択可能な文字列の配列パターンを示している。
パターン番号B1、B2、B3の配列パターンは、顧客名30Aに対して契約高30Bをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名30Aの文字数nが少ない(4>n>0)場合に適している。
パターン番号B4、B5、B6の配列パターンは、顧客名30Aを2行に分割し、契約高30Bをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名30Aの文字数nが比較的多い(n≧4)場合に適している。
【0036】
図13は、表示文字列30が、設備番号30C(または電線の区間番号)のみからなる場合(項目組合せパターン:C)に選択可能な文字列の配列パターンを示している。
パターン番号C1は、設備番号を構成する標識と番号(No.)を同一の行に配置した場合であり、パターン番号C2、C3、C4の配列パターンは、設備番号を標識と番号に分割し、標識に対して番号をセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。
【0037】
本発明において、渦巻線に沿った各極座標Q(r,θ)における空白領域の探索は、図2に示した表示文字列30の外接枠と、配電線系統図に含まれる既存のシンボルまたは文字列(以下、これらを総称して障害図形と言う)との重なりを判定することによって実現される。
表示文字列の自動配置を地図上の1つのメッシュ領域S(i,j)内に位置したシンボル図形を対象として実行する場合、本発明では、例えば、図14に示すように、メッシュ領域S(i,j)を4分割し、対象シンボル図形(または対象文字列)がサブ領域A内に位置している場合は、メッシュ領域S(i,j)と、上記サブ領域Aに隣接した3つのメッシュ領域S(i−1,j+1)、S(i−1,j)、S(i,j+1)から障害図形を抽出し、表示文字列外接枠30との重なりを判定する。これによって、もし、メッシュ領域S(i,j)内に適当な空白領域が見つからなければ、隣接したメッシュ領域内にある最も近い空白領域に文字列が配置示される。
【0038】
対象シンボル図形がサブ領域B内に位置している場合は、メッシュ領域S(i,j)と、上記サブ領域Bに隣接した3つのメッシュ領域S(i,j+1)、S(i+1,j+1)、S(i+1,j)が障害図形の抽出対象領域となる。これと同様に、対象シンボル図形がサブ領域CまたはD内に位置している場合は、メッシュ領域S(i,j)と、これらのサブ領域に隣接した他の3つのメッシュ領域が障害図形の抽出対象領域となる。
【0039】
図15は、表示文字列30が顧客名と契約高とを含む場合、配列パターンB1に従った文字列の外接枠定義データを示す。この場合、外接枠は、顧客名を示す文字群と契約高を示す文字群を囲むポリゴンの凸頂点座標値(x1,y1)〜(x6,y6)と凹頂点座標値(x7,y7)〜(x8,y8)とによって定義される。これらの座標値は、既知となっている対象シンボル10の基点Pの座標に基づいて極座標Q(r,θ)を算出し、上記極座標を表示文字列30の代表点、例えば、顧客文字列の中心座標に合わせた場合の座標変換によって求められる。
【0040】
図16は、障害図形がポリライン20−1の場合の表示文字列30との重なり判定方法を示す。この場合は、ポリラインの定義式:Y=aX+bに上記表示文字列外接枠の凸頂点座標値(xi,yi)(i=1〜6)を代入し、上記定義式の左辺と右辺との大小関係が全ての代入座標値において同一か否かを判定する。全ての代入座標値において同一となれば、「ポリライン20−1と表示文字列30は重なっていない」と判断する。
【0041】
図17は、障害図形が円20−2の場合の表示文字列30との重なり判定方法を示す。この場合は、円の定義式:r2=(X−a)2+(Y−b)2に上記表示文字列外接枠の凸頂点座標値(x1,y1)〜(x6,y6)を代入し、上記定義式から導出されるYの値を示す式において、左辺と右辺との大小関係が全ての代入座標値において同一か否かを判定する。全ての代入座標値において同一となれば、「円20−2と表示文字列30は重なっていない」と判断する。
【0042】
図18は、障害図形が他のシンボルに付された文字列20−3の場合の表示文字列30との重なり判定方法を示す。この場合は、障害となる文字列の外接枠を求め、上記外接枠の凸凹頂点座標値(X1,Y1)〜(X4,Y4)と表示文字列外接枠の凸頂点座標値(x1,y1)〜(x6,y6)とを比較する。表示文字列外接枠の全ての凸頂点座標が障害文字列外接枠の凸凹頂点座標の外側にあれば、「障害文字列20−3と表示文字列30は重なっていない」と判断する。
【0043】
図19は、配電線系統図管理システム40で実行される文字列配列処理プログラム46Bのフローチャートを示す。
このプログラムでは、先ず、文字列配列処理を実行すべき対象メッシュ領域を特定する(ステップ102)。対象メッシュ領域の指定は、ユーザが、入力装置(キーボード)42からメッシュ番号を入力してもよいし、例えば、表示装置43の画面に表示された地図上でカーソルによって対象メッシュ領域の一部を指定するようにしてもよい。
【0044】
対象メッシュ領域が特定されると、図14で説明したように、対象メッシュ領域を4個のサブ領域に分割し(104)、サブ領域を示すパラメータiの値を0に設定(106)する。次に、上記パラメータiの値をインクリメントし(108)、地図データベース44にある上記対象メッシュ領域と対応する文字列レイヤ60Cから、基点座標64Cが上記第iサブ領域内にある文字列データエントリを抽出して、ワークメモリ45に形成された処理対象文字列テーブルに記憶する(110)。処理対象文字列は、完了フラグ76が未処理(=“0”)の文字列に限定してもよいし、既存文字列の配置位置を修正するために完了フラグの状態に関係なく選択してもよい。
【0045】
次に、図14で説明したように、第iサブ領域に位置に応じてチェック対象となる周辺メッシュ領域を特定し(112)、地図データベース44を参照して、上記特定された周辺メッシュ領域と対象メッシュ領域に対応する電線レイヤ60A、シンボルレイヤ60B、文字列レイヤ60Cから、障害図形(文字列を含む)データエントリを抽出し、ワークメモリ45に形成された障害図形テーブルに記憶する(114)。本実施例では、地図データベースのうち、ユーザ固有レイヤ60に定義された図形または文字列のみを障害図形とし、地図基盤レイヤ50の構成要素を無視した形で表示文字列配置用の空白領域を探索するようにしているが、地図基盤レイヤ50の特定の要素を障害図形として扱うようにしてもよい。
【0046】
この状態で、図20で詳述する文字列の自動配置処理200を実行し、処理対象文字列テーブルに記憶された文字列について自動配置処理が終了すると、4分割された全てのサブ領域について処理が終了したか否かを判定する(116)。もし、未処理のサブ領域があればステップ108に戻り、次のサブ領域について同様の処理を繰り返す。全てのサブ領域について処理が終了していた場合は、自動配置の繰り返しが指定されているか否かを判定する(120)。もし、自動配置の繰り返し回数が指定されていた場合は、実行回数を示すパラメータjの値をインクリメントし(122)、jが指定回数を超えていなければ、ステップ106以降の処理を繰り返す。
【0047】
後述するように、文字列の自動配置処理200では、完全な空白領域が見つからなかった場合、追加文字列と障害図形との重なりを許容して、表示文字列の配置位置を決定している。従って、表示文字列が新たに追加された状態で、メッシュ領域内の全ての表示文字列について配置処理を再実行した場合、例えば、追加文字列に対して障害図形となっていた既存の文字列が配置処理対象となった時、この既存の文字列に対して今度は上記追加文字列が障害図形となる。この結果、上記既存の文字列の位置が修正され、自動配置処理200を繰り返すことによって、最初は部分的に重なっていた2つの文字列を最終的に離間した位置関係で配置することが可能となる。
【0048】
繰り返し回数jが指定回数を超えた場合は、パラメータjの値を初期値(=0)に戻し(126)、図26で詳述する引出し線の描画処理300を実行する。引出し線の描画処理300が終了すると、処理すべきメッシュ領域が他にあるか否かを判定し(128)、処理すべきメッシュ領域があればステップ102に戻り、なければ、このプログラムを終了する。
【0049】
図20は、自動配置処理200の詳細フローチャートを示す。
自動配置処理200では、ワークメモリ45にある処理対象文字列テーブルから自動配置すべき1つの表示文字列を選択し、ワークメモリ45の障害図形テーブルまたは地図データベース44から上記表示文字列と対応する対象シンボルを選択する(ステップ202)。処理対象文字列テーブルに自動配置すべき未処理の表示文字列がなくなった場合は(204)、このルーチンを終了する。
【0050】
次に、ワークメモリ45上に用意したワークテーブルと、渦巻線の回転角度θ、その他のパラメータを初期化(206)した後、回転角度θの値を所定ピッチ(Δθ)増加し(208)、θの値が予め設定された上限値θeを超えたか否かを判定する(210)。
θの値が上限値θeを超えていなければ、計算点となる極座標Q(r,θ)が対象シンボルの外側か否かを判定する(212)。もし、計算点Qが対象シンボルの内側にあった場合は、ステップ208に戻り、回転角度θの値を増加して、同様の判定を繰り返す。図2に示した角度θsが予め判っている場合、この角度θsをθの初期値にすれば、速やかに空白領域の探索動作に移行できる。
【0051】
計算点Qが対象シンボルの外側にあることが確認された場合、表示文字列の配列パターンを選択する(214)。配列パターンの選択範囲は、表示文字列として含まれるデータ項目の組合せパターンと顧客名の文字数nとによって決まり、例えば、表示文字列の項目組合せが図11に示したパターン:Aの場合、顧客名文字数nが、4>n≧1の時は配列パターンA1〜A3の範囲内、7>n≧4の時は配列パターンA1〜A9の範囲内、n≧7の時は配列パターンA1〜A12の範囲内で順次に配列パターンを選択し、選択すべき配列パターンがなくなった場合(216)はステップ208に戻り、次の計算点で同様の処理を繰り返す。
【0052】
配列パターンが決まると、表示文字列をこの配列パターンで計算点Qに配置した場合の文字列外接枠の頂点座標値群を計算し(218)、図16〜図18で説明した障害図形との重なり判定と同様の手法で、文字列外接枠が対象シンボルの外側にあるか否かを判定する(220)。
文字列外接枠が対象シンボルと重なっていた場合は、ステップ214に戻り、配列パターンを変えて同様の処理を繰り返す。もし、文字列外接枠が対象シンボルの外側にあった場合は、障害図形テーブルから1つの障害図形データを選択し(222)、図16〜図18で説明した手法で、選択された障害図形と文字列外接枠との重なり判定計算を行う(226)。障害図形と文字列外接枠とが重なっていなければ、ステップ222に戻って次の障害図形を選択し、同様の処理を繰り返す。障害図形と文字列外接枠とが重なっていた場合は、重なり度合いを計算する(230)。上記重なり度合いは、例えば、障害図形と文字列外接枠との重なり区間の座標点間距離の合計値によって表すことができる。
【0053】
障害図形が電線(ポリライン)の場合は、例えば、図21に示すように、障害ポリライン20−1と表示文字列の外接枠30との交差点の座標(s1,t1)、(s2,t2)、(s3,t3)、(s4,t4)を求め、距離(s1,t1)〜(s2,t2)、(s3,t3)〜(s4,t4)の合計値を重なり度とする。
【0054】
障害図形が円の場合は、例えば、図22に示すように、円20−2と表示文字列の外接枠30との交差点の座標(s1,t1)、(s2,t2)を算出し、距離(s1,t1)〜(s2,t2)を重なり度とする。
【0055】
障害図形が文字列の場合は、例えば、図23に示すように、障害文字列の外接枠20−3と表示文字列の外接枠30との交差点の座標(s1,t1)、(s2,t2)を算出し、距離(s1,t1)〜(s2,t2)を重なり度とする。
【0056】
尚、上述した交差点座標間の距離計算に代えて、重なり度合いの精度を高くするために、障害図形と表示文字列外接枠との重複部分の概略面積を求めても良いし、逆に、計算を簡単にするために、交差点間のX座標距離とY座標距離の合計値を重なり度としてもよい。
重なり度合いの計算結果は、例えば、図24に示すように、計算点Pの座標値501と文字列配列パターン番号502との組合わせ別に、重なり度の累計値503としてワークテーブル500に記憶する(ステップ232)。尚、ワークテーブル500には、計算点の近傍に存在する障害図形の過密度を示すために、重複する障害図形の個数504も記憶するようにしてもよい。
【0057】
ワークテーブルへの重なり度データの記憶が終わると、ステップ222に戻って次の障害図形を選択し、同様の処理を繰り返す。全ての障害図形について表示文字列との重なり判定が終了すると(224)、ワークテーブル500を参照することによって、現在選択中の配列パターンを現在の計算点に配置した場合、重なる障害図形が皆無か否かを判定する(240)。もし、重なる障害図形が1つでもあれば、ステップ214に戻って次の配列パターンを選択し、同様の処理を繰り返す。
【0058】
ステップ240での判定の結果、重なる障害図形が皆無であれば、この時点で、表示文字列の配置位置と配列パターン、即ち、文字列配置のための空白領域が判明したことになる。この場合は、文字列レイヤ60Cにおける該当データエントリに、現在の計算点Qの座標値(基点座標64C)と文字列配置パターン(配列パターン75)を設定し、上記データエントリの完了フラグ76を処理済状態(=“1”)にし、ワークテーブル500をクリアして、ステップ250を実行する。
【0059】
ステップ250では、回転角度θが予め決められた閾値θt(θt <θe)を超えているか否かを判定する。もし、θ>θtの場合は、表示文字列の位置が対象シンボルから或る程度離れていることを意味している。この場合は、引出し線描画処理300の対象とするために、文字列レイヤ60Cにおける該当データエントリの引出し線フラグ77を“1”に設定しておく(252)。この後、ステップ202に戻って、次の表示文字列と対象シンボルを選択し、上述した処理を繰り返す。
【0060】
完全な空白領域が見つからないまま、ステップ208で、θの値が上限値θeを超えた場合は、ワークテーブル500を参照し、重なり度合いが最小のエントリを選択する(236)。重なり度合いが同一の場合は、例えば、エントリ番号の若いもの(θの小さいもの)を選ぶ。これに代えて、重複する障害図形数504の少ないものを選択するようにしてもよい。この後、上記選択されたエントリが示す計算点501と文字列配列パターン502を文字列レイヤ60Cにおける該当データエントリに設定し、上記データエントリの完了フラグ76を処理済状態(=“1”)にし、ワークテーブル500をクリアして、ステップ250以降の処理を実行する。尚、文字列が他の図形と重なる位置に自動配置された場合は、マニュアル操作による配置位置変更の対象文字列であることをユーザが容易に識別できるように、表示ステップ254で文字色を変えて表示する。
【0061】
上記文字列の自動配列処理ルーチン200によれば、文字数とデータ項目の組合せに応じて決まる幾つかの文字配列パターンについて、各計算点Qで文字配列パターンを変えながら障害図形との重なり判定を繰り返すことによって、空白領域または障害図形との重複が最も少ない領域に表示文字列を配置することが可能となる。
【0062】
図25は、自動配列処理ルーチン200の変形例として、表示文字列のフォントサイズを変更して空白領域を探索できるようにしたフローチャートの1例を示す。
完全な空白領域が見つからないまま、回転角度θが上限値θeを超えた場合、ワークテーブルから重なり度が最小のエントリを選択し(ステップ236)、重なり度が予め設定された許容限度(閾値)内か否かを判定する(237)。重なり度が許容限度内であれば、既に説明済みのステップ238〜254を実行した後、次の表示文字列の配列処理に移る。もし、重なり度が許容限度を超えていた場合は、縮小回数を示すパラメータkをインクリメントし(260)、上限回数Kと比較する(262)。縮小回数kが上限回数Kを超えていれば、パラメータkを初期化(264)した後、ステップ238〜254を実行する。上限回数Kを超えていなければ、文字仕様73で指定されていたフォントサイズを所定の比率(z%)で縮小し(266)、図20のステップ206に戻って、空白領域の探索処理をやり直す。
【0063】
このようにフォントサイズを縮小した上で空白領域の探索処理を繰り返すようにすれば、指定フォントサイズでは表示文字列を収容できる空白領域が見つからないような図形が密集したメッシュ領域において、他の図形との重なりを完全に回避、あるいは重なり度を一層軽減した文字列配置が可能となる。尚、上記実施例では、指定フォントサイズによって見つけた候補領域の重なり度が或る閾値を越えた場合に、フォントサイズを縮小したが、指定フォントサイズで空白領域が見つからなければ無条件で、上記フォントサイズを縮小した空白領域探索を実行するようにしてもよい。
【0064】
図26は、引出し線描画処理300の詳細フローチャートを示す。
引出し線描画処理300では、ワークメモリ45にある処理対象文字列テーブルから引出し線描画対象となる文字列を選択し、ワークメモリ45の障害図形テーブルまたは地図データベース44から上記表示文字列と対応する対象シンボルを選択する(ステップ302)。引出し線描画対象となる文字列は、その基点座標64Cが対象シンボルの基点座標64Bから或る程度以上離れたものであり、前述の自動配置処理ルーチン200の実行過程で引出し線フラグ77が“1”に設定されたデータエントリを選択すればよい。
【0065】
次に、引出し線の描画領域を設定する(304)。引出し線の描画領域は、例えば、図27に示すように、対象シンボル10−iの基点Pと、選択された文字列30−iにおける上記基点Pから最も離れた点(以下、遠隔点と言う)Qとを対角とする矩形領域S1である。この矩形領域S1の外側に一定距離隔てた位置に各辺をもつ第2の矩形領域S2を設定し、第2の矩形領域S2内に基点をもつ図形(文字列を含む)データを障害図形として抽出する(306)。本実施例では、電線レイヤ60Aは、障害図形の対象外としておき、引出し線と電線とが交差した場合は、後述するクロスライン処理400によって、引出し線の一部を消去するようにしている。
【0066】
次に、図27に示すように、遠隔点Qと基点Pとを結ぶ最短直線Lqpを算出し(308)、上記最短直線Lqpと障害図形との重なり判定計算を実行する(310)。全ての障害図形について重なり判定を実行した結果、最短直線Lqpが障害図形に重ならないことが判明した場合(312)は、最短直線Lqpを引出し線に決定し、表示画面上で引出し線を描画する(338)。
【0067】
もし、最短直線Lqpに重なる図形が存在していた場合は、図28に示すように、対象シンボルの基点Pに接するX辺とY辺をn等分し、文字列の遠隔点Qと上記X辺上のn等分点Px1、Px2、Px3、…とを結ぶ半直線群(Lqx1、Lqx2、Lqx3、…)と、上記遠隔点Qと上記Y辺上のn等分点Py1、Py2、Py3、…を結ぶ半直線群(Lqy1、Lqy2、Lqy3、…)を算出する(314)。次に、X辺側とY辺側を交互に、基点Pに近いものから順に半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す(316)。
【0068】
全ての半直線について重なり判定を行った結果、もし、障害図形と重ならない半直線が見つからなければ(318)、本実施例による引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する(344)。この後、処理すべき文字列の有無を確認し(346)、未処理の文字列が残っていれば、ステップ302に戻り、処理すべき文字列がなければ、このルーチンを終了する。
【0069】
ステップ316の重なり判定計算過程で、障害図形と重ならない半直線(以下、第1の半直線と言う)が見つかった場合は、対象シンボルの基点Pから、上記第1半直線と交差して、遠隔点Q側のX辺またはY辺に向かう第2の半直線群を計算する(320)。例えば、上記ステップ316の重なり判定で、遠隔点QからX辺に向かう半直線Lqx2が障害図形と重ならないことが判った場合、ステップ320では、図29に示すように、遠隔点Qに接するY辺をn等分し、基点Pと上記Y辺上のn等分点Qy1、Qy2、Qy3、…を結ぶ半直線群(Lpy1、Lpy2、Lpy3、…)を第2の半直線群として算出する。
【0070】
これらの第2の半直線群のなかから、遠隔点Qに近いものから順に判定対象となる半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す(322)。この重なり判定計算の過程で、もし、障害図形と重ならない第2半直線が見つかった場合は(324)、見つかった第1、第2の半直線の交点Oと点Q、Pを結ぶ折れ線を算出し(336)、この折れ線を引出し線として描画する(338)。
【0071】
第2の全ての半直線群について重なり判定を行った結果、もし、障害図形と重ならない第2半直線が見つからなかった場合は、ステップ316で見つけた第1半直線を無効にして、矩形S1内の限定された領域で、残りの半直線と障害図形との重なり判定計算を行う(326)。例えば、図29に示した第1半直線Lqx2が無効になった場合、図30に示すように、基点Pに接するY辺側の残りの半直線Lqy2、Lqy3、…が判定対象となる。重なり判定の結果、これらの半直線の中に障害図形と重ならない第1半直線が見つからなかった場合は(328)、引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する(344)。
【0072】
ステップ326で行った重なり判定の過程で、障害図形と重ならない第1半直線が見つかった場合は、対象シンボルの基点Pから、上記第1半直線と交差して、遠隔点Q側のX辺またはY辺に向かう第2の半直線群を計算する(330)。例えば、上記ステップ326の重なり判定で、半直線Lqy4が障害図形と重ならないことが判った場合、ステップ330では、図31に示すように、遠隔点Qに接するX辺をn等分し、基点Pと上記X辺上のn等分点Qx1、Qx2、Qx3、…を結ぶ半直線群(Lpx1、Lpx2、Lpx3、…)を第2の半直線群として算出する。これらの第2半直線群のなかから、遠隔点Qに近いものから順に判定対象となる半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す(332)。
【0073】
上記重なり判定の結果、障害図形と重ならない第1半直線が見つからなかった場合は(334)、引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する(344)。上記重なり判定計算の過程で、もし、障害図形と重ならない第2半直線が見つかった場合は、第1、第2の半直線、例えば、図31に示すLqy4とLpx3の交点Oを求め、交点Oと点Q、Pを結ぶ折れ線を算出し(334)、図32にLqopで示すように、上記折れ線を引出し線として描画する(338)。
【0074】
引出し線の描画の後、図33に示すクロスライン処理400を実行する。
クロスライン処理400では、先ず、電線レイヤ60Cを参照して、描画領域S1を通過する電線データを抽出する(402)。抽出した電線データと上記引出し線の座標データに基づいて、電線と引出し線との重なり(交差)判定計算を行い(406)、もし、交差していなければ、ステップ402に戻って、次の電線データについて、同様の処理を繰り返す。
【0075】
例えば、図34に示すように、電線L1と引出し線Lqopとが交差していた場合は、引出し線のうち、上記電線との交差部分を消去するための計算処理を行う(410)。引出し線の部分消去は、電線L1と引出し線Lqopとの交差点を中心とする所定半径の小円C1を設定し、該小円C1と引出し線Lqopとの交点座標を算出して、2つの座標間を消去区間とする。これらの交点座標を消去区間データとしてワークエリアに記憶し、現在表示されている引出し線Lqopのうち、上記消去区間に相当する線分を消去(412)した後、ステップ402に戻り、次の電線データについて同様の処理を繰り返す。描画領域S1を通過する全ての電線データについて上述した処理が終えると(404)、クロスライン処理400が完了し、図26の引出し線終端処理(340)を実行する。
【0076】
引出し線終端処理(340)では、図35に示すように、引出し線Lqopのうち、対象シンボル10−iとの重なり区間と、文字列外接枠30−iとの重なり区間を計算し、これらの区間を消去区間として記憶すると共に、現在表示されている引出し線Lqopのうち、上記消去区間に相当する線分を消去する。また、残された引出し線Lqopと対象シンボル10−iとの交点側に、矢印マークとなる線分を設定し、これを表示すると共に、引出し線の一部として記憶する。
【0077】
上記引出し線終端処理340の後、上記引出し線に関するデータを図10に示したエントリフォーマットにまとめ、地図データベースの該当する引出し線レイヤに登録する(342)。この後、引出し線描画すべき文字列の有無を判定し(346)、引出し線描画すべき文字列があれば、ステップ302に戻り、引出し線描画すべき文字列がなければ、処理ルーチン300を終了する。
【0078】
以上説明した本発明の実施例によれば、配電線系統図に新たなシンボルが追加された時、該シンボルに付随する文字列を対象シンボルに最も近い空白領域に自動的に配置でき、文字列の位置が対象シンボルから予め決められた距離以上に離れた場合、引出し線を自動的に描画できることが判る。また、対象シンボルの近傍に表示文字列を完全に収容できる空白領域がなかった場合、文字列サイズを変更することによって、文字列を対象シンボルに最も近い空白領域の検出が可能となる。
更に、自動配置の結果、他の図形または文字列と重なった位置に配置せざるを得なかった文字列、あるいは、引出し線の自動描画ができなかった文字列については、他の文字列とは異なる色で表示することによって、目視による識別を容易にし、ユーザのマニュアル操作による修正を容易にすることができる。
【0079】
以上の実施例では、配電線系統図における表示文字列を配列対象としたデータ自動配列について説明したが、本発明は、配電線系統図以外の他の地図情報応用図面、電気回路図面、製品・装置の説明図面、工程管理図面などにも応用可能である。また、実施例では、特定のシンボル図形に対して表示文字列を配置する例について説明したが、本発明の用途によっては、シンボル図形は単なる座標点であってもよく、また、シンボル図形に付随する自動配置の対象データは、例えば、標識、写真、グラフ、拡大図のように、文字列以外のデータであってもよい。
【0080】
【発明の効果】
以上の説明から明らかなように、本発明によれば、目標点となる2次元図面上の特定の座標点を原点とした渦巻線に沿って空白領域を探索することにより、目標点または該目標点に配置された対象データ表示領域に最も近い位置に、付随データの配置に適した空白領域を見つけことができる。また、本発明によれば、付随データの配置位置が、特定の座標点を原点とした渦巻線上の極座標によって決まるため、付随データ表示領域のX、Y座標値が目標点毎に固有の値となり、特に文字列を自動配置の対象とした場合、配置位置が近接しても2つの文字列の混同を回避できる。
【図面の簡単な説明】
【図1】本発明によるデータ配列の原理を説明するための図。
【図2】本発明によるシンボル10に付随する文字列30の配置位置決定方法を説明するための図。
【図3】本発明の適用分野の1つである配電線系統図の1例を示す図。
【図4】配電線系統図における従来の文字列配置方法の説明するための図。
【図5】本発明の1実施例を示す配電線系統図管理システムの構成図。
【図6】データベースに格納されている配電線系統図用のデータ構造を示す図。
【図7】電線レイヤのデータ形式の1例を示す図。
【図8】シンボルレイヤのデータ形式の1例を示す図。
【図9】文字列レイヤのデータ形式の1例を示す図。
【図10】引出し線レイヤのデータ形式の1例を示す図。
【図11】文字列が3つの項目データからなる場合の文字列配置パターンを示す図。
【図12】文字列が2つの項目データからなる場合の文字列配置パターンを示す図。
【図13】文字列が1つの項目データからなる場合の文字列配置パターンを示す図。
【図14】データ自動配置処理の対象メッシュ領域と障害図形の抽出領域との関係を示す図。
【図15】表示文字列の外接枠定義データの1例を示す図。
【図16】障害図形がポリラインの場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図17】障害図形が円の場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図18】障害図形が文字列の場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図19】本発明の1実施例である文字列配置処理プログラムのフローチャート。
【図20】上記文字列配置処理プログラムにおける自動配置処理200の詳細を示すフローチャート。
【図21】障害図形がポリラインの場合の表示文字列と障害図形との重なり度の算出方法の1例を説明するための図。
【図22】障害図形が円の場合の表示文字列と障害図形との重なり度の算出方法の1例を説明するための図。
【図23】障害図形が文字列の場合の表示文字列と障害図形との重なり度の算出方法の1例を説明するための図。
【図24】重なり度を記憶するためのワークテーブルの1例を示す図。
【図25】自動配置処理200の変形例を説明するためのフローチャート。
【図26】上記文字列配置処理プログラムにおける引出し線描画処理300の詳細を示すフローチャート。
【図27】引出し線描画処理300におけるステップ304とステップ308を説明するための図。
【図28】引出し線描画処理300におけるステップ314を説明するための図。
【図29】引出し線描画処理300におけるステップ320を説明するための図。
【図30】引出し線描画処理300におけるステップ326を説明するための図。
【図31】引出し線描画処理300におけるステップ336を説明するための図。
【図32】引出し線描画処理300におけるステップ338を説明するための図。
【図33】引出し線描画処理300におけるクロスライン処理400の詳細フローチャート。
【図34】クロスライン処理400におけるステップ410を説明するための図。
【図35】引出し線描画処理300におけるステップ340を説明するための図。
【符号の説明】
SP:渦巻線、P:シンボル基点、Q:文字列基点、10:対象シンボル、
20:障害図形、30:表示文字列、30A:顧客名、30B:契約高、
30C:設備No.、40:配電線系統図管理システム、41:プロセッサ、
42:入力装置、43:表示装置、44:地図データベース、45:メモリ、
46:プログラムメモリ、46A:配電線系統図作成処理プログラム、
46B:文字列配置処理プログラム、50:地図基盤レイヤ、
60:ユーザ固有レイヤ、60A:電線レイヤ、60B:シンボルレイヤ、
60C:文字列レイヤ、60D:引出し線レイヤ。
Claims (15)
- 2次元領域内の指定位置の近傍に自動的にデータを配置するデータ配置方法において、
上記指定位置を原点とする渦巻線に沿って上記データを配置可能な空白領域を探索し、所定の探索範囲内で検出された上記原点に最も近い空白領域、または既存データとの重なり度が最も少ない領域に上記データを配置することを特徴とするデータ配置方法。 - 前記指定位置を原点として回転角度を所定ピッチで増加することにより前記渦巻線上に複数の極座標点を設定し、各極座標点を基点として前記データの所要領域と既存データとの重なりをチェックすることによって、前記空白領域、または前記重なり度が最も少ない領域を検出することを特徴とする請求項1に記載のデータ配置方法。
- 前記指定位置が、前記2次元領域内に配置されたシンボル図形の代表点であり、配置対象となる前記データが、上記シンボル図形に付随した表示文字列であることを特徴とする請求項1または請求項2に記載のデータ配置方法。
- 前記渦巻線上に設定された複数の極座標点のうち、前記シンボル図形の外側に位置した各極座標点を計算点として、前記表示文字列の所要領域と既存データとの重なりをチェックすることを特徴とする請求項3に記載のデータ配置方法。
- 前記渦巻線上に設定された複数の極座標点のうち、前記シンボル図形の外側に位置した各極座標点を計算点として、前記シンボル図形と前記表示文字列の所要領域との重なりをチェックし、上記表示文字列の所要領域が上記シンボル図形と重ならない位置に達したとき、上記シンボル図形以外の既存データとの重なりをチェックすることを特徴とする請求項3に記載のデータ配置方法。
- 前記計算点において、前記表示文字列の配置パターンを変えて、前記所要領域と既存データとの重なりチェックを繰り返すことを特徴とする請求項4または請求項5に記載のデータ配置方法。
- 前記データの配置領域の代表点が、前記指定位置から所定距離以上離れた場合、上記データ配置領域と上記指定位置との間に引出し線を描画することを特徴とする請求項1〜請求項6の何れかに記載のデータ配置方法。
- 前記引出し線として、前記指定位置と前記データ配置領域内の特定点とを結ぶ最短直線と、上記指定位置と上記特定点とを結ぶ屈折点位置の異なる複数の折れ線とのうち、予め除外指定された特定データ以外の既存データ配置領域に重ならないものを選択し、該選択された線分の一部を加工した形で描画することを特徴とする請求項7に記載のデータ配置方法。
- 2次元領域内の特定座標点の周囲に、原点からの距離rが回転角θに応じて変化する極座標(r、θ)を適用して複数の計算点を設定し、上記特定座標点に近い計算点から順に、上記各計算点を基準位置として上記特定座標点に付随する表示データの配置領域枠の座標点群を算出し、上記表示データの配置領域と既存データの配置領域との重なり判定計算を繰り返すことにより、上記表示データを配置可能な空白領域、または既存データとの重なり度が最も少ない領域を検出することを特徴とするデータ配置方法。
- 複数のシンボル図形と文字列とを含む2次元図面を編集するための2次元図面データ処理システムにおいて、
上記2次元図面に含まれる特定シンボル図形の基点座標を原点とする渦巻線に沿って所定の回転角間隔で計算点を生成するための第1手段と、
上記各計算点を表示領域代表点として、特定シンボル図形に付随する表示文字列を配置するための空白領域の有無を判定し、最初に見つかった空白領域に上記表示文字列を配置するための第2手段とを備えたことを特徴とする2次元図面データ処理システム。 - 前記第1手段は、原点からの距離rが回転角θに応じて変化する極座標(r、θ)に従って、上記回転角θが予め決められた上限角度を超えない範囲内で、前記計算点を生成し、
前記第2手段は、上記範囲内で空白領域が見つからなかった場合、他のシンボル図形または文字列によって使用済みの領域と上記表示文字列の配置に要する領域との重なり度が最小の領域を選択して、上記表示文字列を配置することを特徴とする請求項10に記載の2次元図面データ処理システム。 - 2次元図面領域に文字列を自動的に配置する2次元図面データ処理システムにおいて、
シンボル図形と文字列とを含む2次元図面を表示するための表示装置と、
2次元図面領域に配置すべきシンボル図形を定義した複数のデータエントリと、上記2次元図面領域に配置すべき文字列を定義した複数のデータエントリとを蓄積したデータファイルと、
上記データファイルから特定シンボル図形のデータエントリと該特定シンボルに付随した文字列のデータエントリとを読み出し、上記特定シンボル図形のデータエントリが示す上記2次元図面領域内の特定の座標点を原点Pとして、原点Pからの距離rが回転角θに応じて変化する極座標Q(r,θ)に基づいて、上記特定シンボル図形の表示領域周囲に回転角θを異にする複数の計算点Qを設定し、各計算点毎に上記文字列データエントリが示す文字列データを所定の配列パターンで配置した場合の文字列表示領域枠の座標データを算出し、該座標データを上記データファイルから読み出された他のシンボル図形および文字列のデータエントリで特定される障害領域と重なり判定することによって、上記付随文字列を配置可能な空白領域を選択し、該空白領域に上記付随文字列を配置するデータ処理手段とを備えたことを特徴とする2次元図面データ処理システム。 - 前記データ処理手段が、前記回転角θによって決まる所定の探索範囲で前記付随文字列を収容可能な完全な空白領域がみつからなかった場合、上記探索範囲における前記障害領域との重なり度が最小の領域を選択し、前記付随文字列を2次元領域上の他の文字列とは異なる表示形式で前記表示装置に出力するための手段を備えたことを特徴とする請求項12に記載の2次元図面データ処理システム。
- 前記データ処理手段が、前記原点Pから所定距離以上離れた計算点で選択された空白領域、または重なり度が最小の領域に配置された付随文字列について、前記シンボル図形との間に描画すべき引出し線を生成するための手段を備えたことを特徴とする請求項13に記載の2次元図面データ処理システム。
- 前記データ処理手段が、前記障害領域と部分的に重なった文字列表示領域を含む2次元図面領域において、既に配置決定された既存の文字列を対象として配置可能な空白領域の選択動作を再実行するための手段を備えたことを特徴とする請求項13に記載の2次元図面データ処理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000223867A JP3884901B2 (ja) | 2000-07-19 | 2000-07-19 | データ配置方法および2次元図面データ処理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000223867A JP3884901B2 (ja) | 2000-07-19 | 2000-07-19 | データ配置方法および2次元図面データ処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002042148A JP2002042148A (ja) | 2002-02-08 |
JP3884901B2 true JP3884901B2 (ja) | 2007-02-21 |
Family
ID=18717906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000223867A Expired - Fee Related JP3884901B2 (ja) | 2000-07-19 | 2000-07-19 | データ配置方法および2次元図面データ処理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3884901B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002099578A (ja) * | 2000-09-21 | 2002-04-05 | Mitsubishi Heavy Ind Ltd | 図面作画装置及び図面作画方法 |
JP2005128265A (ja) * | 2003-10-24 | 2005-05-19 | Kubota Corp | 小縮尺配管図形データの作成方法 |
JP4047326B2 (ja) | 2004-11-25 | 2008-02-13 | キヤノン株式会社 | レイアウト装置、レイアウト方法及びプログラム |
JP4690114B2 (ja) * | 2005-05-23 | 2011-06-01 | パイオニア株式会社 | 情報更新装置、その方法、そのプログラム、および、そのプログラムを記録した記録媒体 |
JP4789589B2 (ja) * | 2005-11-11 | 2011-10-12 | キヤノン株式会社 | レイアウト方法及びその装置 |
JP4681486B2 (ja) * | 2006-03-31 | 2011-05-11 | 本田技研工業株式会社 | 部品欄作成装置及び部品欄作成方法 |
JP2009230075A (ja) * | 2008-03-25 | 2009-10-08 | Nec Corp | 画面表示装置、画面表示方法、及びプログラム |
JP5312167B2 (ja) * | 2009-04-15 | 2013-10-09 | 中国電力株式会社 | 地図情報システムによる低圧引込線設計管理方法 |
JP2011043934A (ja) * | 2009-08-20 | 2011-03-03 | Fujitsu Ltd | 図面修正支援プログラム及び図面修正支援装置 |
US8488183B2 (en) * | 2011-03-10 | 2013-07-16 | Konica Minolta Laboratory U.S.A., Inc. | Moving labels in graphical output to avoid overprinting |
JP5578679B2 (ja) * | 2011-03-15 | 2014-08-27 | 株式会社テクノ | 時空間データの処理装置、統合化装置、共用化システム及び処理方法 |
JP6040838B2 (ja) * | 2012-08-29 | 2016-12-07 | 株式会社Jvcケンウッド | デプス推定装置、デプス推定方法、デプス推定プログラム、画像処理装置、画像処理方法及び画像処理プログラム |
JP7285721B2 (ja) * | 2019-07-25 | 2023-06-02 | 三菱電機株式会社 | 表示データ生成装置、表示装置および表示データ生成方法 |
-
2000
- 2000-07-19 JP JP2000223867A patent/JP3884901B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002042148A (ja) | 2002-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3884901B2 (ja) | データ配置方法および2次元図面データ処理システム | |
KR100579767B1 (ko) | 다각형으로 표현된 도로지도 데이터의 작성과 이용을 위한장치와 방법 | |
US7536664B2 (en) | Physical design system and method | |
EP0905655B1 (en) | Map editing apparatus enabling simplified editing through provision of user-selectable automatic editing functions | |
JPH0785249B2 (ja) | 設計支援装置 | |
JP3883644B2 (ja) | 引出線自動作成方法ならびにそのための引出線自動作成装置およびプログラム記憶媒体 | |
JPH06282593A (ja) | 引出線作成方法 | |
JP2777628B2 (ja) | 図形処理方法及び装置 | |
JP2753258B2 (ja) | 図面管理装置 | |
JPH05108729A (ja) | 線画デ−タ検索方式および線画デ−タフオーマツト | |
JP3108605B2 (ja) | 図形の属性表示方法 | |
JP4205903B2 (ja) | 地図データ作成支援装置 | |
JP5278002B2 (ja) | 情報処理装置及び方法、プログラム並びに記録媒体 | |
JP2858328B2 (ja) | 網図自動生成方法およびそのシステム | |
JP3423775B2 (ja) | 図形編集出図装置 | |
US10140410B1 (en) | Representing a routing strip in an integrated circuit design using a digit pattern | |
JP2788808B2 (ja) | Catvシステムにおける分岐器配置位置決定システム | |
CN116361890A (zh) | 基于匝道平面图形模板的立交孪生自动化制图方法 | |
JP2006260119A (ja) | 3次元形状処理装置、3次元形状処理方法、プログラムおよび記録媒体 | |
JP2007128173A (ja) | Cadを用いた面積算出方法 | |
JP3647075B2 (ja) | 画像検索方法及びその装置 | |
JPS59136864A (ja) | 画像編集方法 | |
JP2914302B2 (ja) | 配線設計の配線制限表示方法 | |
CN118089655A (zh) | 一种道路纵横断面测绘的方法及装置 | |
JP2836434B2 (ja) | 多層チャネル配線装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20031215 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061017 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061024 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061120 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |