(57)【特許請求の範囲】
【請求項１】
２次元領域内の指定位置の近傍に自動的にデータを配置するデータ配置方法において、
上記指定位置を原点とする渦巻線に沿って上記データを配置可能な空白領域を探索し、所定の探索範囲内で検出された上記原点に最も近い空白領域、または既存データとの重なり度が最も少ない領域に上記データを配置することを特徴とするデータ配置方法。
【請求項２】
前記指定位置を原点として回転角度を所定ピッチで増加することにより前記渦巻線上に複数の極座標点を設定し、各極座標点を基点として前記データの所要領域と既存データとの重なりをチェックすることによって、前記空白領域、または前記重なり度が最も少ない領域を検出することを特徴とする請求項１に記載のデータ配置方法。
【請求項３】
前記指定位置が、前記２次元領域内に配置されたシンボル図形の代表点であり、配置対象となる前記データが、上記シンボル図形に付随した表示文字列であることを特徴とする請求項１または請求項２に記載のデータ配置方法。
【請求項４】
前記渦巻線上に設定された複数の極座標点のうち、前記シンボル図形の外側に位置した各極座標点を計算点として、前記表示文字列の所要領域と既存データとの重なりをチェックすることを特徴とする請求項３に記載のデータ配置方法。
【請求項５】
前記渦巻線上に設定された複数の極座標点のうち、前記シンボル図形の外側に位置した各極座標点を計算点として、前記シンボル図形と前記表示文字列の所要領域との重なりをチェックし、上記表示文字列の所要領域が上記シンボル図形と重ならない位置に達したとき、上記シンボル図形以外の既存データとの重なりをチェックすることを特徴とする請求項３に記載のデータ配置方法。
【請求項６】
前記計算点において、前記表示文字列の配置パターンを変えて、前記所要領域と既存データとの重なりチェックを繰り返すことを特徴とする請求項４または請求項５に記載のデータ配置方法。
【請求項７】
前記データの配置領域の代表点が、前記指定位置から所定距離以上離れた場合、上記データ配置領域と上記指定位置との間に引出し線を描画することを特徴とする請求項１〜請求項６の何れかに記載のデータ配置方法。
【請求項８】
前記引出し線として、前記指定位置と前記データ配置領域内の特定点とを結ぶ最短直線と、上記指定位置と上記特定点とを結ぶ屈折点位置の異なる複数の折れ線とのうち、予め除外指定された特定データ以外の既存データ配置領域に重ならないものを選択し、該選択された線分の一部を加工した形で描画することを特徴とする請求項７に記載のデータ配置方法。
【請求項９】
２次元領域内の特定座標点の周囲に、原点からの距離ｒが回転角θに応じて変化する極座標（ｒ、θ）を適用して複数の計算点を設定し、上記特定座標点に近い計算点から順に、上記各計算点を基準位置として上記特定座標点に付随する表示データの配置領域枠の座標点群を算出し、上記表示データの配置領域と既存データの配置領域との重なり判定計算を繰り返すことにより、上記表示データを配置可能な空白領域、または既存データとの重なり度が最も少ない領域を検出することを特徴とするデータ配置方法。
【請求項１０】
複数のシンボル図形と文字列とを含む２次元図面を編集するための２次元図面データ処理システムにおいて、
上記２次元図面に含まれる特定シンボル図形の基点座標を原点とする渦巻線に沿って所定の回転角間隔で計算点を生成するための第１手段と、
上記各計算点を表示領域代表点として、特定シンボル図形に付随する表示文字列を配置するための空白領域の有無を判定し、最初に見つかった空白領域に上記表示文字列を配置するための第２手段とを備えたことを特徴とする２次元図面データ処理システム。
【請求項１１】
前記第１手段は、原点からの距離ｒが回転角θに応じて変化する極座標（ｒ、θ）に従って、上記回転角θが予め決められた上限角度を超えない範囲内で、前記計算点を生成し、
前記第２手段は、上記範囲内で空白領域が見つからなかった場合、他のシンボル図形または文字列によって使用済みの領域と上記表示文字列の配置に要する領域との重なり度が最小の領域を選択して、上記表示文字列を配置することを特徴とする請求項１０に記載の２次元図面データ処理システム。
【請求項１２】
２次元図面領域に文字列を自動的に配置する２次元図面データ処理システムにおいて、
シンボル図形と文字列とを含む２次元図面を表示するための表示装置と、
２次元図面領域に配置すべきシンボル図形を定義した複数のデータエントリと、上記２次元図面領域に配置すべき文字列を定義した複数のデータエントリとを蓄積したデータファイルと、
上記データファイルから特定シンボル図形のデータエントリと該特定シンボルに付随した文字列のデータエントリとを読み出し、上記特定シンボル図形のデータエントリが示す上記２次元図面領域内の特定の座標点を原点Ｐとして、原点Ｐからの距離ｒが回転角θに応じて変化する極座標Ｑ（ｒ，θ）に基づいて、上記特定シンボル図形の表示領域周囲に回転角θを異にする複数の計算点Ｑを設定し、各計算点毎に上記文字列データエントリが示す文字列データを所定の配列パターンで配置した場合の文字列表示領域枠の座標データを算出し、該座標データを上記データファイルから読み出された他のシンボル図形および文字列のデータエントリで特定される障害領域と重なり判定することによって、上記付随文字列を配置可能な空白領域を選択し、該空白領域に上記付随文字列を配置するデータ処理手段とを備えたことを特徴とする２次元図面データ処理システム。
【請求項１３】
前記データ処理手段が、前記回転角θによって決まる所定の探索範囲で前記付随文字列を収容可能な完全な空白領域がみつからなかった場合、上記探索範囲における前記障害領域との重なり度が最小の領域を選択し、前記付随文字列を２次元領域上の他の文字列とは異なる表示形式で前記表示装置に出力するための手段を備えたことを特徴とする請求項１２に記載の２次元図面データ処理システム。
【請求項１４】
前記データ処理手段が、前記原点Ｐから所定距離以上離れた計算点で選択された空白領域、または重なり度が最小の領域に配置された付随文字列について、前記シンボル図形との間に描画すべき引出し線を生成するための手段を備えたことを特徴とする請求項１３に記載の２次元図面データ処理システム。
【請求項１５】
前記データ処理手段が、前記障害領域と部分的に重なった文字列表示領域を含む２次元図面領域において、既に配置決定された既存の文字列を対象として配置可能な空白領域の選択動作を再実行するための手段を備えたことを特徴とする請求項１３に記載の２次元図面データ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ配置方法および２次元図面データ処理システムに関し、更に詳しくは、複数のシンボル図形および文字列を含む２次元領域内の指定位置の近傍でデータ配置に必要な空白領域を検出し、上記指定位置に付随したデータを自動的に配置するためのデータ配置方法および２次元図面データ処理システムに関する。
【０００２】
【従来の技術】
ディジタルデータとして提供される地図上に、ユーザニーズに応じたシンボル図形や表示文字列を配置することによって、例えば、電力、電話、ガス、水道等の設備系統図や、住宅地図、レジャー施設案内図等のマップが得られる。この場合、設備や施設を表すシンボル図形は、或る程度正確な座標位置に配置され、各シンボル図形に付随した名称や補足説明用の表示文字列は、対象シンボルの近傍に見つけた比較的見易い位置に配置される。
【０００３】
図３は、このような特殊用途向けマップの１例として、電力会社で利用される高圧配電線系統図の概要を示す。高圧配電線系統図は、一般家庭に供給されている１００Ｖ／２００Ｖの低圧電力の配線の上流に位置付けられる高圧電力の配線経路の保守／管理に利用されるもので、地図１０００上に、例えば、高電圧配線の経路を示す電線シンボル１（１−１…１−１４）と、上記配線に接続された配電箱や分電盤などの設備を示す設備シンボル１０（１０−１…１０−１４）と、上記配線の区間番号等を示す文字列１１と、各設備シンボル１０に付随する表示文字列３０（３０−１…３０−１４）等が表示されている。表示文字列３０は、例えば、各設備を使用している顧客の名称、契約電力（契約高）、各設備に固有の設備番号（設備No.）のうちの少なくとも１つを示している。
上記配電線系統図において、例えば、設備シンボル１０−１５が新たに追加され、この設備シンボル１０−１５に付随する表示文字列を自動的に配置する場合を想定する。この場合、設備シンボル１０−１５の近傍に、新たに加える表示文字列の面積に見合った空白領域を見つける必要がある。もし、新たな文字列を道路、境界線、家型などの地図基盤要素に上書きしても良ければ、例えば、図４に示すように、配電線系統図を方形のメッシュに区切り、シンボル図形や既存文字列の有無によって使用済メッシュ領域と空白メッシュ領域とに分け、設備シンボル１０−１５の周辺にある空白メッシュ領域の中から、新たな文字列を収容できる空白領域を選択すればよい。
【０００４】
【発明が解決しようとする課題】
しかしながら、上述したように対象図面をメッシュに分割して空白領域を見つける方式では、計算量を少なくするためにメッシュサイズを大きくした場合、使用済みと判定されるメッシュ領域の面積が、実際にシンボル図形や既存文字列が占める面積よりも増え、空白領域面積が狭くなため、実際には追加文字列を収容可能な領域が空白メッシュ領域の面積不足を理由に配置対象位置から除外されてしまうという問題がある。この問題は、メッシュサイズを小さくすれば解決できるが、逆に計算量が増えるという別の問題が発生する。
【０００５】
また、対象図面をメッシュ領域に分割して表示文字列を配置すると、各文字列の先頭文字の位置がメッシュサイズによって正規化され、結果的に、追加文字列が左右に位置する既存文字列と行方向において位置合わせされる。このため、例えば、シンボル１０−１５の表示文字列を既存の文字列３０−１３と３０−１４の間にある空白領域に配置した場合、文字列間に１個以上の空白メッシュが存在しない限り、行方向で３つの文字列が連続し、文字列が混同すると言う問題がある。また、上記メッシュ分割方式によれば、対象シンボルの周辺に存在する複数の候補領域の中から最適な空白領域を選択するためには、優先順位の高い位置から空白領域面積を判定する複雑な判定ルールを用意しておく必要となる。
【０００６】
本発明の目的は、２次元領域内の指定位置の近傍の適切な位置に自動的にデータを配置するためのデータ配置方法および図面データ処理システムを提供することにある。
本発明の他の目的は、複数のシンボル図形および文字列を含む２次元図面領域において、特定シンボルに付随する表示データの配置位置を自動的に決定するためのデータ配置方法および２次元図面データ処理システムを提供することにある。
【０００７】
本発明の更に他の目的は、複数のシンボル図形および文字列を含む２次元図面領域において、各シンボルに付随する表示文字列の配置位置を自動的に修正し、最適化するためのデータ配置方法および２次元図面データ処理システムを提供することにある。
本発明の更に他の目的は、複数のシンボル図形および文字列を含む２次元図面領域において、文字列が他の文字列と近接した場合でも文字列間の識別が容易にできる位置関係で、各シンボルに付随する表示文字列の配置位置を決定または修正可能なデータ配置方法および２次元図面データ処理システムを提供することにある。
本発明の更に他の目的は、特に複数の特殊シンボル図形と文字列を含む地図上において、特定のシンボルに付随する表示文字列の配置位置を自動的に決定または修正するのに適したデータ配置方法およびデータ処理システムを提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するために、本発明のデータ配置方法は、配置目標となる２次元領域内の指定位置を原点とする渦巻線に沿ってデータを配置可能な空白領域を探索し、所定の探索範囲内で検出された上記原点に最も近い空白領域、または既存データとの重なり度が最も少ない領域に上記データを配置することを特徴とする。
本発明に適用される渦巻線は、原点からの距離ｒが回転角θに応じて変化する極座標（ｒ、θ）の軌跡であり、本発明のデータ配置方法では、指定位置を原点として回転角度を所定ピッチで増加することにより、渦巻線に沿って複数の極座標点を設定し、各極座標点を基点として配置データの所要領域と既存データとの重なりをチェックすることにより、空白領域、または重なり度が最も少ない領域を検出する。上記極座標点は、回転角θが大きくなるに従って徐々に原点から離れていくため、回転角度を所定ピッチで増加しながら各極座標点で空白領域を探索すれば、最初に見つかった空白領域が２次元領域内の指定位置に最も近い最適な空白領域となる。
【０００９】
２次元領域内の上記指定位置は、例えば、２次元領域内に配置されたシンボル図形の代表点であり、配置対象データは、例えば、上記シンボル図形に付随した表示文字列である。但し、シンボル図形は、例えば、地図上の特定地点を示す２次元領域内の単なる座標点であってもよく、また、配置対象データは、例えば、標識、写真、グラフ、詳細図形のように、文字列以外のデータであってもよい。
【００１０】
更に詳述すると、例えば、シンボル図形の近傍に表示文字列を配置する場合、本発明のデータ配置方法では、渦巻線に沿って設定された複数の極座標点のうち、上記シンボル図形の外側に位置した各極座標点を計算点として、表示文字列の所要領域と既存データとの重なりをチェックすることを特徴とする。
【００１１】
本発明の好ましい実施例では、無駄な計算を省くために、シンボル図形の外側に位置した各極座標点を計算点として、先ず、シンボル図形と表示文字列の所要領域との重なりをチェックし、上記表示文字列の所要領域が上記シンボル図形と重ならない位置に達したとき、上記シンボル図形以外の既存データとの重なりをチェックする。また、できるだけ指定位置（対象シンボル図形）の近くにデータ（表示文字列）を配置できるようにするために、各計算点において、データ（表示文字列）の配置パターンを変えながら、所要領域と既存データとの重なりチェックを繰り返し、データ配置可能な空白領域の有無を判定する。
【００１２】
本発明のデータ配置方法の他の特徴は、データ配置領域の代表点が、指定位置から所定距離以上離れた場合、上記データ配置領域と上記指定位置との間に引出し線を描画することにある。上記引出し線としては、例えば、指定位置とデータ配置領域内の特定点とを結ぶ最短直線と、上記指定位置と上記特定点とを結ぶ屈折点位置の異なる複数の折れ線とのうち、予め除外指定された特定データ以外の既存データ配置領域に重ならないものを選択し、該選択された線分の一部を加工した形で描画する。
【００１３】
一方、本発明による２次元図面データ処理システムは、複数のシンボル図形と文字列とを含む２次元図面を編集するためのものであって、上記２次元図面に含まれる特定シンボル図形の基点座標を原点とする渦巻線に沿って所定の回転角間隔で計算点を生成するための第１手段と、上記各計算点を表示領域代表点として、特定シンボル図形に付随する表示文字列を配置するための空白領域の有無を判定し、最初に見つかった空白領域に上記表示文字列を配置するための第２手段とを備えたことを特徴とする。
【００１４】
更に詳述すると、本発明による２次元図面データ処理システムは、シンボル図形と文字列とを含む２次元図面を表示するための表示装置と、２次元図面領域に配置すべきシンボル図形を定義した複数のデータエントリと、上記２次元図面領域に配置すべき文字列を定義した複数のデータエントリとを蓄積したデータファイルと、データ処理手段とからなり、上記データ処理手段は、上記データファイルから特定シンボル図形のデータエントリと該特定シンボルに付随した文字列のデータエントリとを読み出し、上記特定シンボル図形のデータエントリが示す上記２次元図面領域内の特定の座標点を原点Ｐとして、原点Ｐからの距離ｒが回転角θに応じて変化する極座標Ｑ（ｒ，θ）に基づいて、上記特定シンボル図形の表示領域周囲に回転角θを異にする複数の計算点Ｑを設定し、各計算点毎に上記文字列データエントリが示す文字列データを所定の配列パターンで配置した場合の文字列表示領域枠の座標データを算出し、該座標データを上記データファイルから読み出された他のシンボル図形および文字列のデータエントリで特定される障害領域と重なり判定することによって、上記付随文字列を配置可能な空白領域を選択し、該空白領域に上記付随文字列を配置することを特徴とする。
【００１５】
本発明による２次元図面データ処理システムの他の特徴は、上記データ処理手段が、回転角θによって決まる所定の探索範囲で前記付随文字列を収容可能な完全な空白領域がみつからなかった場合、上記探索範囲における前記障害領域との重なり度が最小の領域を選択し、付随文字列を２次元領域上の他の文字列とは異なる表示形式で表示装置に出力するための手段を備えたことを特徴とする。
【００１６】
また、本発明の２次元図面データ処理システムでは、上記データ処理手段が、障害領域と部分的に重なった文字列表示領域を含む２次元図面領域において、既に配置決定された既存の文字列を対象として配置可能な空白領域の選択動作を再実行することによって、表示文字列の配列を自動的に修正する機能を備える。
本発明のその他の特徴は、以下に述べる図面を参照した実施形態の説明から明かになる。
【００１７】
【発明の実施の形態】
図１は、本発明によるデータ配列の原理図を示す。
本発明では、対象シンボル１０に付随する表示データの配置位置を決定するために、対象シンボルの基点Ｐを原点とする渦巻線ＳＰに沿って空白領域を探索することを特徴とする。上記渦巻線は、Ｐを原点とする極座標（ｒ、θ）において、ｒの値がθに応じて変化するような曲線を意味しており、図１は、ｒ＝ａθ（ａは正の定数）で表されるアルキメデスの渦巻を示している。
以下の実施例では、アルキメデスの渦巻を前提として説明するが、本発明には、例えば、ｒ＝ａｅpθ（ｐ＞０）で表される対数渦巻や、ｒ2＝ａθで表される放物渦巻など、アルキメデスの渦巻以外の他の渦巻線も適用可能である。
【００１８】
本発明では、対象シンボル内に定義された１つの代表点を基点Ｐとして、これを原点とする半直線ｍの角度θを所定ピッチΔθで変化させ、渦巻線に沿って変化する半直線ｍ上の極座標Ｑ（ｒ、θ）を文字列配置の候補位置（計算点）として、表示文字列を収容可能な空白領域を探索する。表示文字列３０の配置に要する領域サイズは、例えば、図２に示すように、文字列の外接枠を規定する複数の座標値群（白丸）によって表すことができる。
【００１９】
本発明では、上記文字列外接枠内の特定の位置を文字列代表点と定義しておき、上記文字列代表点を各極座標Ｑ（ｒ、θ）に位置付けた状態で、文字列外接枠と既存シンボルまたは既存文字列との重なり関係をチェックすることにより、表示文字列を配置可能な空白領域を見つける。
極座標Ｑ（ｒ、θ）は、最初のうちは対象シンボル１０の内側で移動し、半直線ｍの回転角度がθｓを超えた時、極座標Ｑ（ｒ、θ）が対象シンボルの外側に出る。図示した例では、表示文字列１０の代表点が第１行文字列の中央に設定されているため、極座標Ｑ（ｒ、θ）が対象シンボルの外に出てから暫くの間は、文字列外接枠が対象シンボル１０に重なった状態が続く。文字列外接枠と対象シンボル以外の他の既存シンボルまたは既存文字列との重なり関係のチェックは、回転角度θが更に大きくなり、文字列外接枠全体が対象シンボル１０から外れた状態となった時に開始すればよい。
【００２０】
表示文字列を配置すべき空白領域の探索を上述した渦巻線ＳＰに沿って実行した場合、対象シンボル周辺における空白領域の広がり形態の無関係に、最初に検出された空白領域が対象シンボルに最も近い空白領域となる。従って、本発明によれば、対象シンボルの近傍で選び得る最適な位置に表示文字列を配置することが可能となる。
また、本発明によれば、表示文字列３０の代表点の座標が、対象シンボル１０の基点Ｐと極座標Ｑ（ｒ、θ）によって決まる。すなわち、各表示文字列の第１行目のＹ座標は、基点ＰのＹ座標にｒcosθを加えたもので、ｒも角度θに関数となっているため、各表示文字列の開始位置が、対象シンボル毎に異なったＹ座標をもつ。従って、２つの表示文字列がＸ軸方向に近接して配置された場合でも、Ｙ軸方向に位置がずれているため、２つの表示文字列が混同する可能性は少ない。
【００２１】
以下、本発明の１実施例として、上記渦巻線に沿った判定アルゴリズムを適用した配電線系統図編集システム４０について説明する。
配電線系統図編集システム４０は、図５に示すように、プロセッサ４１と、キーボードおよびマウスを含む入力装置４２と、表示装置４３と、地図および配電線系統図用のデータが格納されたファイル装置（データベース：ＤＢ）４４と、その他のデータ格納用およびワーク領域として使用されるメモリ４５と、各種のプログラムが格納されたプログラムメモリ４６とからなり、これらの要素はバス４７によって相互接続されている。プログラムメモリ４６には、配電線系統図の編集に固有のプログラムとして、配電線系統図作成処理プログラム４６Ａと、後述する文字列配置処理プログラム４６Ｂと、その他のプログラム４６Ｃが用意されている。
【００２２】
図６は、データベース４４に格納される地図および配電線系統図用のデータ構造を示す。
地図１０００は複数のメッシュ領域からなり、各メッシュ領域と対応して、地図基盤レイヤ５０とユーザ固有レイヤ６０のデータが用意されている。地図基盤レイヤ５０は、一般的な地図を形成するために必要なデータであり、例えば、道路または街区、境界（都道府県境界、都市区町村境界など）、鉄道、河川、家型、それらに付随する名称、その他のシンボル等、地図の構成要素毎に分けられた複数のレイヤ５０−１〜５０−Ｎに分かれている。ユーザ固有レイヤ６０は、地図基盤レイヤ５０で形成された地図上にユーザ固有の情報を表示するためのデータであり、本実施例では、配電線系統図用のデータとして、電線レイヤ６０Ａと、シンボルレイヤ６０Ｂと、文字列レイヤ６０Ｃと、引出し線レイヤ６０Ｄとが用意されている。
【００２３】
電線レイヤ６０Ａは、各メッシュ内に表示される電線を定義するためのもので、例えば、図７に示すように、メッシュ番号６１Ａと、データ番号６２Ａと、図形仕様６３Ａと、基点座標６４Ａと、構成座標６５Ａと、文字列データ番号６６Ａからなる複数のエントリを含む。図形仕様６３Ａは、表示される電線の種類、線種、太さ、大きさ、色を指定する。基点座標６４Ａは、メッシュ内における各電線の基点を示し、構成座標６５Ａは、基点から延びる電線の各屈折点および終点の座標を示している。文字列データ番号６６Ａは、例えば、区間番号のように、その電線に付すべき文字列があった場合に、文字列レイヤ６０Ｃ内に定義された文字列のデータ番号を示す。
【００２４】
シンボルレイヤ６０Ｂは、各メッシュ内に表示される配電箱などのシンボル図形を定義するためのもので、例えば、図８に示すように、メッシュ番号６１Ｂと、データ番号６２Ｂと、図形仕様６３Ｂと、基点座標６４Ｂと、構成座標６５Ｂと、文字列データ番号６６Ｂとからなる複数のエントリを含む。基点座標６４Ｂは、シンボル図形に代表点を示し、シンボル図形が円の場合は、図形仕様の種類で円、大きさで半径が指定される。シンボル図形が三角形、矩形、その他の形状をもつ場合は、構成座標６５Ｂで図形の各頂点の位置が指定される。文字列データ番号６６Ｂは、そのシンボル図形に付随して表示すべき文字列レイヤ６０Ｃ内に定義された関連文字列エントリのデータ番号を示す。
【００２５】
文字列レイヤ６０Ｃは、例えば、図９に示すように、メッシュ番号６１Ｃと、データ番号６２Ｃと、顧客名文字数（ｎ）７１と、表示文字列７２と、文字仕様７３と、基点座標６４Ｃと、配列パターン７４と、シンボルデータ番号７５と、完了フラグ７６と、引出し線フラグ７７とからなる複数のエントリを含む。
【００２６】
表示文字列７２は、顧客名７２ａ、契約高７２ｂ、設備番号７２ｃの３つのデータ項目からなり、顧客名文字数７１は、上記顧客名７２ａの文字数ｎを示す。文字仕様７３は、表示文字列７２が示す各文字データの表示フォント、大きさ、表示角度および色を指定する。表示文字列に含まれるデータ項目の数はシンボルによって異なり、上記顧客名、契約高、設備番号の３項目が全て表示される場合もあれば、１つまたは２つのデータ項目だけが表示される場合もある。また、顧客名は可変長であり、文字数が長い場合は、顧客名が数行に分けて表示される。
【００２７】
配列パターン７４は、表示文字列７２を構成する複数の文字の配列パターンを示すもので、後述するように、文字列配置処理プログラム４６Ｂを実行した時、文字列配置領域の周囲状況に応じた最適な配列パターンが決定される。シンボルデータ番号７５は、各表示文字列と対応するシンボルレイヤまたは電線レイヤのデータ番号を示す。
【００２８】
完了フラグ７６は、表示文字列の配置位置が決定済みか否かを示し、引出し線フラグ７７は、表示文字列と対象シンボルとの間に引出し線を描画すべきか否かを示す。引出し線は、表示文字列が対象シンボルから或る程度離れた位置に設定された場合に描画される。尚、文字列レイヤの基点座標６４Ｃは、初期値として、例えば、対象シンボルの基点座標６４Ｂと同一の座標値を仮設定しておき、文字列配置処理プログラム４６Ｂの実行によって配置位置が決定した時、正規の座標値に置き換えられ、完了フラグ７６が決定済みの状態（＝“１”）となる。
【００２９】
引出し線レイヤ６０Ｄの各エントリは、図１０に示すように、電線レイヤ６０Ａと同様、メッシュ番号６１Ｄと、データ番号６２Ｄと、図形仕様６３Ｄと、基点座標６４Ｄと、構成座標６５Ｄと、文字列データ番号６６Ｄとを含み、この他に、消去区間座標６８を含んでいる。構成座標６５Ｄは、引出し線の描画に必要な座標値群を示し、消去区間座標６８は、例えば、引出し線が電線とクロスした場合、引出し線の消去区間を指定する座標値群を示す。
【００３０】
図１１〜図１３は、表示文字列の内容と配列パターンとの関係を定義した文字列配列パターン選択テーブルを示す。
後述するように、文字列配置処理プログラム４６Ｂでは、渦巻線に沿った各極座標Ｑ（ｒ，θ）において、表示文字列の配列パターンを適宜変更しながら文字列を表示できる空白領域を探索する。この場合、表示文字列の配列パターンは、文字列レイヤ６０Ｃが示す顧客名文字数（ｎ）７１と、表示文字列７２に含まれるデータ項目７２ａ〜７２ｃの組合せとに応じて決定される。
【００３１】
図１１は、表示文字列３０が、顧客名３０Ａ、契約高３０Ｂ、設備番号３０Ｃの３つのデータ項目を含む場合（項目組合せパターン：Ａ）に選択可能な文字列配列パターン３４を示す。尚、３１は配列パターン番号、３２は配列パターンに適した顧客名文字数ｎの範囲、３３は表示文字列のデータ項目間の位置合わせ方法を示している。
【００３２】
パターン番号Ａ１、Ａ２、Ａ３の配列パターンは、顧客名３０Ａ、契約高３０Ｂ、設備番号３０Ｃの３項目を縦に並べ、顧客名に対して契約高と設備番号をセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名３０Ａの文字数ｎが少ない（４＞ｎ＞０）場合に適している。
【００３３】
パターン番号Ａ４、Ａ５、Ａ６の配列パターンは、契約高３０Ｂと設備番号３０Ｃを同一の行にまとめ、これらを顧客名３０Ａに対してセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。パターン番号Ａ７、Ａ８、Ａ９の配列パターンは、顧客名３０Ａを２行に分割し、顧客名３０Ａに対して契約高３０Ｂと設備番号３０Ｃをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。尚、顧客名３０Ａの文字数ｎが奇数の場合、これを２行に分割すると上段と下段で文字数が異なってくるが、この場合は、下段の顧客名文字列を上記契約高３０Ｂ、設備番号３０Ｃと同様に扱い、上段の顧客名文字列に対して位置合わせするようにしてもよい。これらの配列パターン（Ａ４〜Ａ９）は、顧客名３０Ａの文字数ｎが比較的多い（７＞ｎ≧４）場合に適している。
【００３４】
パターン番号Ａ１０、Ａ１１、Ａ１２の配列パターンは、顧客名３０Ａを２行に分割し、契約高３０Ｂと設備番号３０Ｃを同一の行にまとめ、これらを顧客名３０Ａに対してセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターン（ Ａ１０〜Ａ１２）は、顧客名３０Ａの文字数ｎが比較的多い（ｎ≧７）場合に適している。
【００３５】
図１２は、表示文字列３０が、顧客名３０Ａと契約高３０Ｂの２つのデータ項目からなる場合（項目組合せパターン：Ｂ）に選択可能な文字列の配列パターンを示している。
パターン番号Ｂ１、Ｂ２、Ｂ３の配列パターンは、顧客名３０Ａに対して契約高３０Ｂをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名３０Ａの文字数ｎが少ない（４＞ｎ＞０）場合に適している。
パターン番号Ｂ４、Ｂ５、Ｂ６の配列パターンは、顧客名３０Ａを２行に分割し、契約高３０Ｂをセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。これらの配列パターンは、顧客名３０Ａの文字数ｎが比較的多い（ｎ≧４）場合に適している。
【００３６】
図１３は、表示文字列３０が、設備番号３０Ｃ（または電線の区間番号）のみからなる場合（項目組合せパターン：Ｃ）に選択可能な文字列の配列パターンを示している。
パターン番号Ｃ１は、設備番号を構成する標識と番号（No.）を同一の行に配置した場合であり、パターン番号Ｃ２、Ｃ３、Ｃ４の配列パターンは、設備番号を標識と番号に分割し、標識に対して番号をセンタリングした場合、左詰めにした場合、右詰めにした場合を示す。
【００３７】
本発明において、渦巻線に沿った各極座標Ｑ（ｒ，θ）における空白領域の探索は、図２に示した表示文字列３０の外接枠と、配電線系統図に含まれる既存のシンボルまたは文字列（以下、これらを総称して障害図形と言う）との重なりを判定することによって実現される。
表示文字列の自動配置を地図上の１つのメッシュ領域Ｓ（ｉ，ｊ）内に位置したシンボル図形を対象として実行する場合、本発明では、例えば、図１４に示すように、メッシュ領域Ｓ（ｉ，ｊ）を４分割し、対象シンボル図形（または対象文字列）がサブ領域Ａ内に位置している場合は、メッシュ領域Ｓ（ｉ，ｊ）と、上記サブ領域Ａに隣接した３つのメッシュ領域Ｓ（ｉ−１，ｊ＋１）、Ｓ（ｉ−１，ｊ）、Ｓ（ｉ，ｊ＋１）から障害図形を抽出し、表示文字列外接枠３０との重なりを判定する。これによって、もし、メッシュ領域Ｓ（ｉ，ｊ）内に適当な空白領域が見つからなければ、隣接したメッシュ領域内にある最も近い空白領域に文字列が配置示される。
【００３８】
対象シンボル図形がサブ領域Ｂ内に位置している場合は、メッシュ領域Ｓ（ｉ，ｊ）と、上記サブ領域Ｂに隣接した３つのメッシュ領域Ｓ（ｉ，ｊ＋１）、Ｓ（ｉ＋１，ｊ＋１）、Ｓ（ｉ＋１，ｊ）が障害図形の抽出対象領域となる。これと同様に、対象シンボル図形がサブ領域ＣまたはＤ内に位置している場合は、メッシュ領域Ｓ（ｉ，ｊ）と、これらのサブ領域に隣接した他の３つのメッシュ領域が障害図形の抽出対象領域となる。
【００３９】
図１５は、表示文字列３０が顧客名と契約高とを含む場合、配列パターンＢ１に従った文字列の外接枠定義データを示す。この場合、外接枠は、顧客名を示す文字群と契約高を示す文字群を囲むポリゴンの凸頂点座標値（ｘ１，ｙ１）〜（ｘ６，ｙ６）と凹頂点座標値（ｘ７，ｙ７）〜（ｘ８，ｙ８）とによって定義される。これらの座標値は、既知となっている対象シンボル１０の基点Ｐの座標に基づいて極座標Ｑ（ｒ，θ）を算出し、上記極座標を表示文字列３０の代表点、例えば、顧客文字列の中心座標に合わせた場合の座標変換によって求められる。
【００４０】
図１６は、障害図形がポリライン２０−１の場合の表示文字列３０との重なり判定方法を示す。この場合は、ポリラインの定義式：Ｙ＝ａＸ＋ｂに上記表示文字列外接枠の凸頂点座標値（ｘｉ，ｙｉ）（ｉ＝１〜６）を代入し、上記定義式の左辺と右辺との大小関係が全ての代入座標値において同一か否かを判定する。全ての代入座標値において同一となれば、「ポリライン２０−１と表示文字列３０は重なっていない」と判断する。
【００４１】
図１７は、障害図形が円２０−２の場合の表示文字列３０との重なり判定方法を示す。この場合は、円の定義式：ｒ2＝（Ｘ−ａ）2＋（Ｙ−ｂ）2に上記表示文字列外接枠の凸頂点座標値（ｘ１，ｙ１）〜（ｘ６，ｙ６）を代入し、上記定義式から導出されるＹの値を示す式において、左辺と右辺との大小関係が全ての代入座標値において同一か否かを判定する。全ての代入座標値において同一となれば、「円２０−２と表示文字列３０は重なっていない」と判断する。
【００４２】
図１８は、障害図形が他のシンボルに付された文字列２０−３の場合の表示文字列３０との重なり判定方法を示す。この場合は、障害となる文字列の外接枠を求め、上記外接枠の凸凹頂点座標値（Ｘ１，Ｙ１）〜（Ｘ４，Ｙ４）と表示文字列外接枠の凸頂点座標値（ｘ１，ｙ１）〜（ｘ６，ｙ６）とを比較する。表示文字列外接枠の全ての凸頂点座標が障害文字列外接枠の凸凹頂点座標の外側にあれば、「障害文字列２０−３と表示文字列３０は重なっていない」と判断する。
【００４３】
図１９は、配電線系統図管理システム４０で実行される文字列配列処理プログラム４６Ｂのフローチャートを示す。
このプログラムでは、先ず、文字列配列処理を実行すべき対象メッシュ領域を特定する（ステップ１０２）。対象メッシュ領域の指定は、ユーザが、入力装置（キーボード）４２からメッシュ番号を入力してもよいし、例えば、表示装置４３の画面に表示された地図上でカーソルによって対象メッシュ領域の一部を指定するようにしてもよい。
【００４４】
対象メッシュ領域が特定されると、図１４で説明したように、対象メッシュ領域を４個のサブ領域に分割し（１０４）、サブ領域を示すパラメータｉの値を０に設定（１０６）する。次に、上記パラメータｉの値をインクリメントし（１０８）、地図データベース４４にある上記対象メッシュ領域と対応する文字列レイヤ６０Ｃから、基点座標６４Ｃが上記第ｉサブ領域内にある文字列データエントリを抽出して、ワークメモリ４５に形成された処理対象文字列テーブルに記憶する（１１０）。処理対象文字列は、完了フラグ７６が未処理（＝“０”）の文字列に限定してもよいし、既存文字列の配置位置を修正するために完了フラグの状態に関係なく選択してもよい。
【００４５】
次に、図１４で説明したように、第ｉサブ領域に位置に応じてチェック対象となる周辺メッシュ領域を特定し（１１２）、地図データベース４４を参照して、上記特定された周辺メッシュ領域と対象メッシュ領域に対応する電線レイヤ６０Ａ、シンボルレイヤ６０Ｂ、文字列レイヤ６０Ｃから、障害図形（文字列を含む）データエントリを抽出し、ワークメモリ４５に形成された障害図形テーブルに記憶する（１１４）。本実施例では、地図データベースのうち、ユーザ固有レイヤ６０に定義された図形または文字列のみを障害図形とし、地図基盤レイヤ５０の構成要素を無視した形で表示文字列配置用の空白領域を探索するようにしているが、地図基盤レイヤ５０の特定の要素を障害図形として扱うようにしてもよい。
【００４６】
この状態で、図２０で詳述する文字列の自動配置処理２００を実行し、処理対象文字列テーブルに記憶された文字列について自動配置処理が終了すると、４分割された全てのサブ領域について処理が終了したか否かを判定する（１１６）。もし、未処理のサブ領域があればステップ１０８に戻り、次のサブ領域について同様の処理を繰り返す。全てのサブ領域について処理が終了していた場合は、自動配置の繰り返しが指定されているか否かを判定する（１２０）。もし、自動配置の繰り返し回数が指定されていた場合は、実行回数を示すパラメータｊの値をインクリメントし（１２２）、ｊが指定回数を超えていなければ、ステップ１０６以降の処理を繰り返す。
【００４７】
後述するように、文字列の自動配置処理２００では、完全な空白領域が見つからなかった場合、追加文字列と障害図形との重なりを許容して、表示文字列の配置位置を決定している。従って、表示文字列が新たに追加された状態で、メッシュ領域内の全ての表示文字列について配置処理を再実行した場合、例えば、追加文字列に対して障害図形となっていた既存の文字列が配置処理対象となった時、この既存の文字列に対して今度は上記追加文字列が障害図形となる。この結果、上記既存の文字列の位置が修正され、自動配置処理２００を繰り返すことによって、最初は部分的に重なっていた２つの文字列を最終的に離間した位置関係で配置することが可能となる。
【００４８】
繰り返し回数ｊが指定回数を超えた場合は、パラメータｊの値を初期値（＝０）に戻し（１２６）、図２６で詳述する引出し線の描画処理３００を実行する。引出し線の描画処理３００が終了すると、処理すべきメッシュ領域が他にあるか否かを判定し（１２８）、処理すべきメッシュ領域があればステップ１０２に戻り、なければ、このプログラムを終了する。
【００４９】
図２０は、自動配置処理２００の詳細フローチャートを示す。
自動配置処理２００では、ワークメモリ４５にある処理対象文字列テーブルから自動配置すべき１つの表示文字列を選択し、ワークメモリ４５の障害図形テーブルまたは地図データベース４４から上記表示文字列と対応する対象シンボルを選択する（ステップ２０２）。処理対象文字列テーブルに自動配置すべき未処理の表示文字列がなくなった場合は（２０４）、このルーチンを終了する。
【００５０】
次に、ワークメモリ４５上に用意したワークテーブルと、渦巻線の回転角度θ、その他のパラメータを初期化（２０６）した後、回転角度θの値を所定ピッチ（Δθ）増加し（２０８）、θの値が予め設定された上限値θｅを超えたか否かを判定する（２１０）。
θの値が上限値θｅを超えていなければ、計算点となる極座標Ｑ（ｒ，θ）が対象シンボルの外側か否かを判定する（２１２）。もし、計算点Ｑが対象シンボルの内側にあった場合は、ステップ２０８に戻り、回転角度θの値を増加して、同様の判定を繰り返す。図２に示した角度θｓが予め判っている場合、この角度θｓをθの初期値にすれば、速やかに空白領域の探索動作に移行できる。
【００５１】
計算点Ｑが対象シンボルの外側にあることが確認された場合、表示文字列の配列パターンを選択する（２１４）。配列パターンの選択範囲は、表示文字列として含まれるデータ項目の組合せパターンと顧客名の文字数ｎとによって決まり、例えば、表示文字列の項目組合せが図１１に示したパターン：Ａの場合、顧客名文字数ｎが、４＞ｎ≧１の時は配列パターンＡ１〜Ａ３の範囲内、７＞ｎ≧４の時は配列パターンＡ１〜Ａ９の範囲内、ｎ≧７の時は配列パターンＡ１〜Ａ１２の範囲内で順次に配列パターンを選択し、選択すべき配列パターンがなくなった場合（２１６）はステップ２０８に戻り、次の計算点で同様の処理を繰り返す。
【００５２】
配列パターンが決まると、表示文字列をこの配列パターンで計算点Ｑに配置した場合の文字列外接枠の頂点座標値群を計算し（２１８）、図１６〜図１８で説明した障害図形との重なり判定と同様の手法で、文字列外接枠が対象シンボルの外側にあるか否かを判定する（２２０）。
文字列外接枠が対象シンボルと重なっていた場合は、ステップ２１４に戻り、配列パターンを変えて同様の処理を繰り返す。もし、文字列外接枠が対象シンボルの外側にあった場合は、障害図形テーブルから１つの障害図形データを選択し（２２２）、図１６〜図１８で説明した手法で、選択された障害図形と文字列外接枠との重なり判定計算を行う（２２６）。障害図形と文字列外接枠とが重なっていなければ、ステップ２２２に戻って次の障害図形を選択し、同様の処理を繰り返す。障害図形と文字列外接枠とが重なっていた場合は、重なり度合いを計算する（２３０）。上記重なり度合いは、例えば、障害図形と文字列外接枠との重なり区間の座標点間距離の合計値によって表すことができる。
【００５３】
障害図形が電線（ポリライン）の場合は、例えば、図２１に示すように、障害ポリライン２０−１と表示文字列の外接枠３０との交差点の座標（ｓ１，ｔ１）、（ｓ２，ｔ２）、（ｓ３，ｔ３）、（ｓ４，ｔ４）を求め、距離（ｓ１，ｔ１）〜（ｓ２，ｔ２）、（ｓ３，ｔ３）〜（ｓ４，ｔ４）の合計値を重なり度とする。
【００５４】
障害図形が円の場合は、例えば、図２２に示すように、円２０−２と表示文字列の外接枠３０との交差点の座標（ｓ１，ｔ１）、（ｓ２，ｔ２）を算出し、距離（ｓ１，ｔ１）〜（ｓ２，ｔ２）を重なり度とする。
【００５５】
障害図形が文字列の場合は、例えば、図２３に示すように、障害文字列の外接枠２０−３と表示文字列の外接枠３０との交差点の座標（ｓ１，ｔ１）、（ｓ２，ｔ２）を算出し、距離（ｓ１，ｔ１）〜（ｓ２，ｔ２）を重なり度とする。
【００５６】
尚、上述した交差点座標間の距離計算に代えて、重なり度合いの精度を高くするために、障害図形と表示文字列外接枠との重複部分の概略面積を求めても良いし、逆に、計算を簡単にするために、交差点間のＸ座標距離とＹ座標距離の合計値を重なり度としてもよい。
重なり度合いの計算結果は、例えば、図２４に示すように、計算点Ｐの座標値５０１と文字列配列パターン番号５０２との組合わせ別に、重なり度の累計値５０３としてワークテーブル５００に記憶する（ステップ２３２）。尚、ワークテーブル５００には、計算点の近傍に存在する障害図形の過密度を示すために、重複する障害図形の個数５０４も記憶するようにしてもよい。
【００５７】
ワークテーブルへの重なり度データの記憶が終わると、ステップ２２２に戻って次の障害図形を選択し、同様の処理を繰り返す。全ての障害図形について表示文字列との重なり判定が終了すると（２２４）、ワークテーブル５００を参照することによって、現在選択中の配列パターンを現在の計算点に配置した場合、重なる障害図形が皆無か否かを判定する（２４０）。もし、重なる障害図形が１つでもあれば、ステップ２１４に戻って次の配列パターンを選択し、同様の処理を繰り返す。
【００５８】
ステップ２４０での判定の結果、重なる障害図形が皆無であれば、この時点で、表示文字列の配置位置と配列パターン、即ち、文字列配置のための空白領域が判明したことになる。この場合は、文字列レイヤ６０Ｃにおける該当データエントリに、現在の計算点Ｑの座標値（基点座標６４Ｃ）と文字列配置パターン（配列パターン７５）を設定し、上記データエントリの完了フラグ７６を処理済状態（＝“１”）にし、ワークテーブル５００をクリアして、ステップ２５０を実行する。
【００５９】
ステップ２５０では、回転角度θが予め決められた閾値θt（θt ＜θｅ）を超えているか否かを判定する。もし、θ＞θtの場合は、表示文字列の位置が対象シンボルから或る程度離れていることを意味している。この場合は、引出し線描画処理３００の対象とするために、文字列レイヤ６０Ｃにおける該当データエントリの引出し線フラグ７７を“１”に設定しておく（２５２）。この後、ステップ２０２に戻って、次の表示文字列と対象シンボルを選択し、上述した処理を繰り返す。
【００６０】
完全な空白領域が見つからないまま、ステップ２０８で、θの値が上限値θｅを超えた場合は、ワークテーブル５００を参照し、重なり度合いが最小のエントリを選択する（２３６）。重なり度合いが同一の場合は、例えば、エントリ番号の若いもの（θの小さいもの）を選ぶ。これに代えて、重複する障害図形数５０４の少ないものを選択するようにしてもよい。この後、上記選択されたエントリが示す計算点５０１と文字列配列パターン５０２を文字列レイヤ６０Ｃにおける該当データエントリに設定し、上記データエントリの完了フラグ７６を処理済状態（＝“１”）にし、ワークテーブル５００をクリアして、ステップ２５０以降の処理を実行する。尚、文字列が他の図形と重なる位置に自動配置された場合は、マニュアル操作による配置位置変更の対象文字列であることをユーザが容易に識別できるように、表示ステップ２５４で文字色を変えて表示する。
【００６１】
上記文字列の自動配列処理ルーチン２００によれば、文字数とデータ項目の組合せに応じて決まる幾つかの文字配列パターンについて、各計算点Ｑで文字配列パターンを変えながら障害図形との重なり判定を繰り返すことによって、空白領域または障害図形との重複が最も少ない領域に表示文字列を配置することが可能となる。
【００６２】
図２５は、自動配列処理ルーチン２００の変形例として、表示文字列のフォントサイズを変更して空白領域を探索できるようにしたフローチャートの１例を示す。
完全な空白領域が見つからないまま、回転角度θが上限値θｅを超えた場合、ワークテーブルから重なり度が最小のエントリを選択し（ステップ２３６）、重なり度が予め設定された許容限度（閾値）内か否かを判定する（２３７）。重なり度が許容限度内であれば、既に説明済みのステップ２３８〜２５４を実行した後、次の表示文字列の配列処理に移る。もし、重なり度が許容限度を超えていた場合は、縮小回数を示すパラメータｋをインクリメントし（２６０）、上限回数Ｋと比較する（２６２）。縮小回数ｋが上限回数Ｋを超えていれば、パラメータｋを初期化（２６４）した後、ステップ２３８〜２５４を実行する。上限回数Ｋを超えていなければ、文字仕様７３で指定されていたフォントサイズを所定の比率（ｚ％）で縮小し（２６６）、図２０のステップ２０６に戻って、空白領域の探索処理をやり直す。
【００６３】
このようにフォントサイズを縮小した上で空白領域の探索処理を繰り返すようにすれば、指定フォントサイズでは表示文字列を収容できる空白領域が見つからないような図形が密集したメッシュ領域において、他の図形との重なりを完全に回避、あるいは重なり度を一層軽減した文字列配置が可能となる。尚、上記実施例では、指定フォントサイズによって見つけた候補領域の重なり度が或る閾値を越えた場合に、フォントサイズを縮小したが、指定フォントサイズで空白領域が見つからなければ無条件で、上記フォントサイズを縮小した空白領域探索を実行するようにしてもよい。
【００６４】
図２６は、引出し線描画処理３００の詳細フローチャートを示す。
引出し線描画処理３００では、ワークメモリ４５にある処理対象文字列テーブルから引出し線描画対象となる文字列を選択し、ワークメモリ４５の障害図形テーブルまたは地図データベース４４から上記表示文字列と対応する対象シンボルを選択する（ステップ３０２）。引出し線描画対象となる文字列は、その基点座標６４Ｃが対象シンボルの基点座標６４Ｂから或る程度以上離れたものであり、前述の自動配置処理ルーチン２００の実行過程で引出し線フラグ７７が“１”に設定されたデータエントリを選択すればよい。
【００６５】
次に、引出し線の描画領域を設定する（３０４）。引出し線の描画領域は、例えば、図２７に示すように、対象シンボル１０−ｉの基点Ｐと、選択された文字列３０−ｉにおける上記基点Ｐから最も離れた点（以下、遠隔点と言う）Ｑとを対角とする矩形領域Ｓ１である。この矩形領域Ｓ１の外側に一定距離隔てた位置に各辺をもつ第２の矩形領域Ｓ２を設定し、第２の矩形領域Ｓ２内に基点をもつ図形（文字列を含む）データを障害図形として抽出する（３０６）。本実施例では、電線レイヤ６０Ａは、障害図形の対象外としておき、引出し線と電線とが交差した場合は、後述するクロスライン処理４００によって、引出し線の一部を消去するようにしている。
【００６６】
次に、図２７に示すように、遠隔点Ｑと基点Ｐとを結ぶ最短直線Ｌｑｐを算出し（３０８）、上記最短直線Ｌｑｐと障害図形との重なり判定計算を実行する（３１０）。全ての障害図形について重なり判定を実行した結果、最短直線Ｌｑｐが障害図形に重ならないことが判明した場合（３１２）は、最短直線Ｌｑｐを引出し線に決定し、表示画面上で引出し線を描画する（３３８）。
【００６７】
もし、最短直線Ｌｑｐに重なる図形が存在していた場合は、図２８に示すように、対象シンボルの基点Ｐに接するＸ辺とＹ辺をｎ等分し、文字列の遠隔点Ｑと上記Ｘ辺上のｎ等分点Ｐｘ１、Ｐｘ２、Ｐｘ３、…とを結ぶ半直線群（Ｌｑｘ１、Ｌｑｘ２、Ｌｑｘ３、…）と、上記遠隔点Ｑと上記Ｙ辺上のｎ等分点Ｐｙ１、Ｐｙ２、Ｐｙ３、…を結ぶ半直線群（Ｌｑｙ１、Ｌｑｙ２、Ｌｑｙ３、…）を算出する（３１４）。次に、Ｘ辺側とＹ辺側を交互に、基点Ｐに近いものから順に半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す（３１６）。
【００６８】
全ての半直線について重なり判定を行った結果、もし、障害図形と重ならない半直線が見つからなければ（３１８）、本実施例による引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する（３４４）。この後、処理すべき文字列の有無を確認し（３４６）、未処理の文字列が残っていれば、ステップ３０２に戻り、処理すべき文字列がなければ、このルーチンを終了する。
【００６９】
ステップ３１６の重なり判定計算過程で、障害図形と重ならない半直線（以下、第１の半直線と言う）が見つかった場合は、対象シンボルの基点Ｐから、上記第１半直線と交差して、遠隔点Ｑ側のＸ辺またはＹ辺に向かう第２の半直線群を計算する（３２０）。例えば、上記ステップ３１６の重なり判定で、遠隔点ＱからＸ辺に向かう半直線Ｌｑｘ２が障害図形と重ならないことが判った場合、ステップ３２０では、図２９に示すように、遠隔点Ｑに接するＹ辺をｎ等分し、基点Ｐと上記Ｙ辺上のｎ等分点Ｑｙ１、Ｑｙ２、Ｑｙ３、…を結ぶ半直線群（Ｌｐｙ１、Ｌｐｙ２、Ｌｐｙ３、…）を第２の半直線群として算出する。
【００７０】
これらの第２の半直線群のなかから、遠隔点Ｑに近いものから順に判定対象となる半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す（３２２）。この重なり判定計算の過程で、もし、障害図形と重ならない第２半直線が見つかった場合は（３２４）、見つかった第１、第２の半直線の交点Ｏと点Ｑ、Ｐを結ぶ折れ線を算出し（３３６）、この折れ線を引出し線として描画する（３３８）。
【００７１】
第２の全ての半直線群について重なり判定を行った結果、もし、障害図形と重ならない第２半直線が見つからなかった場合は、ステップ３１６で見つけた第１半直線を無効にして、矩形Ｓ１内の限定された領域で、残りの半直線と障害図形との重なり判定計算を行う（３２６）。例えば、図２９に示した第１半直線Ｌｑｘ２が無効になった場合、図３０に示すように、基点Ｐに接するＹ辺側の残りの半直線Ｌｑｙ２、Ｌｑｙ３、…が判定対象となる。重なり判定の結果、これらの半直線の中に障害図形と重ならない第１半直線が見つからなかった場合は（３２８）、引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する（３４４）。
【００７２】
ステップ３２６で行った重なり判定の過程で、障害図形と重ならない第１半直線が見つかった場合は、対象シンボルの基点Ｐから、上記第１半直線と交差して、遠隔点Ｑ側のＸ辺またはＹ辺に向かう第２の半直線群を計算する（３３０）。例えば、上記ステップ３２６の重なり判定で、半直線Ｌｑｙ４が障害図形と重ならないことが判った場合、ステップ３３０では、図３１に示すように、遠隔点Ｑに接するＸ辺をｎ等分し、基点Ｐと上記Ｘ辺上のｎ等分点Ｑｘ１、Ｑｘ２、Ｑｘ３、…を結ぶ半直線群（Ｌｐｘ１、Ｌｐｘ２、Ｌｐｘ３、…）を第２の半直線群として算出する。これらの第２半直線群のなかから、遠隔点Ｑに近いものから順に判定対象となる半直線を選択し、選択された半直線と障害図形との重なり判定計算を繰り返す（３３２）。
【００７３】
上記重なり判定の結果、障害図形と重ならない第１半直線が見つからなかった場合は（３３４）、引出し線の描画は不可能と判断し、処理対象文字列の表示色を特殊な色に変更する（３４４）。上記重なり判定計算の過程で、もし、障害図形と重ならない第２半直線が見つかった場合は、第１、第２の半直線、例えば、図３１に示すＬｑｙ４とＬｐｘ３の交点Ｏを求め、交点Ｏと点Ｑ、Ｐを結ぶ折れ線を算出し（３３４）、図３２にＬｑｏｐで示すように、上記折れ線を引出し線として描画する（３３８）。
【００７４】
引出し線の描画の後、図３３に示すクロスライン処理４００を実行する。
クロスライン処理４００では、先ず、電線レイヤ６０Ｃを参照して、描画領域Ｓ１を通過する電線データを抽出する（４０２）。抽出した電線データと上記引出し線の座標データに基づいて、電線と引出し線との重なり（交差）判定計算を行い（４０６）、もし、交差していなければ、ステップ４０２に戻って、次の電線データについて、同様の処理を繰り返す。
【００７５】
例えば、図３４に示すように、電線Ｌ１と引出し線Ｌｑｏｐとが交差していた場合は、引出し線のうち、上記電線との交差部分を消去するための計算処理を行う（４１０）。引出し線の部分消去は、電線Ｌ１と引出し線Ｌｑｏｐとの交差点を中心とする所定半径の小円Ｃ１を設定し、該小円Ｃ１と引出し線Ｌｑｏｐとの交点座標を算出して、２つの座標間を消去区間とする。これらの交点座標を消去区間データとしてワークエリアに記憶し、現在表示されている引出し線Ｌｑｏｐのうち、上記消去区間に相当する線分を消去（４１２）した後、ステップ４０２に戻り、次の電線データについて同様の処理を繰り返す。描画領域Ｓ１を通過する全ての電線データについて上述した処理が終えると（４０４）、クロスライン処理４００が完了し、図２６の引出し線終端処理（３４０）を実行する。
【００７６】
引出し線終端処理（３４０）では、図３５に示すように、引出し線Ｌｑｏｐのうち、対象シンボル１０−ｉとの重なり区間と、文字列外接枠３０−ｉとの重なり区間を計算し、これらの区間を消去区間として記憶すると共に、現在表示されている引出し線Ｌｑｏｐのうち、上記消去区間に相当する線分を消去する。また、残された引出し線Ｌｑｏｐと対象シンボル１０−ｉとの交点側に、矢印マークとなる線分を設定し、これを表示すると共に、引出し線の一部として記憶する。
【００７７】
上記引出し線終端処理３４０の後、上記引出し線に関するデータを図１０に示したエントリフォーマットにまとめ、地図データベースの該当する引出し線レイヤに登録する（３４２）。この後、引出し線描画すべき文字列の有無を判定し（３４６）、引出し線描画すべき文字列があれば、ステップ３０２に戻り、引出し線描画すべき文字列がなければ、処理ルーチン３００を終了する。
【００７８】
以上説明した本発明の実施例によれば、配電線系統図に新たなシンボルが追加された時、該シンボルに付随する文字列を対象シンボルに最も近い空白領域に自動的に配置でき、文字列の位置が対象シンボルから予め決められた距離以上に離れた場合、引出し線を自動的に描画できることが判る。また、対象シンボルの近傍に表示文字列を完全に収容できる空白領域がなかった場合、文字列サイズを変更することによって、文字列を対象シンボルに最も近い空白領域の検出が可能となる。
更に、自動配置の結果、他の図形または文字列と重なった位置に配置せざるを得なかった文字列、あるいは、引出し線の自動描画ができなかった文字列については、他の文字列とは異なる色で表示することによって、目視による識別を容易にし、ユーザのマニュアル操作による修正を容易にすることができる。
【００７９】
以上の実施例では、配電線系統図における表示文字列を配列対象としたデータ自動配列について説明したが、本発明は、配電線系統図以外の他の地図情報応用図面、電気回路図面、製品・装置の説明図面、工程管理図面などにも応用可能である。また、実施例では、特定のシンボル図形に対して表示文字列を配置する例について説明したが、本発明の用途によっては、シンボル図形は単なる座標点であってもよく、また、シンボル図形に付随する自動配置の対象データは、例えば、標識、写真、グラフ、拡大図のように、文字列以外のデータであってもよい。
【００８０】
【発明の効果】
以上の説明から明らかなように、本発明によれば、目標点となる２次元図面上の特定の座標点を原点とした渦巻線に沿って空白領域を探索することにより、目標点または該目標点に配置された対象データ表示領域に最も近い位置に、付随データの配置に適した空白領域を見つけことができる。また、本発明によれば、付随データの配置位置が、特定の座標点を原点とした渦巻線上の極座標によって決まるため、付随データ表示領域のX、Y座標値が目標点毎に固有の値となり、特に文字列を自動配置の対象とした場合、配置位置が近接しても２つの文字列の混同を回避できる。
【図面の簡単な説明】
【図１】本発明によるデータ配列の原理を説明するための図。
【図２】本発明によるシンボル１０に付随する文字列３０の配置位置決定方法を説明するための図。
【図３】本発明の適用分野の１つである配電線系統図の１例を示す図。
【図４】配電線系統図における従来の文字列配置方法の説明するための図。
【図５】本発明の１実施例を示す配電線系統図管理システムの構成図。
【図６】データベースに格納されている配電線系統図用のデータ構造を示す図。
【図７】電線レイヤのデータ形式の１例を示す図。
【図８】シンボルレイヤのデータ形式の１例を示す図。
【図９】文字列レイヤのデータ形式の１例を示す図。
【図１０】引出し線レイヤのデータ形式の１例を示す図。
【図１１】文字列が３つの項目データからなる場合の文字列配置パターンを示す図。
【図１２】文字列が２つの項目データからなる場合の文字列配置パターンを示す図。
【図１３】文字列が１つの項目データからなる場合の文字列配置パターンを示す図。
【図１４】データ自動配置処理の対象メッシュ領域と障害図形の抽出領域との関係を示す図。
【図１５】表示文字列の外接枠定義データの１例を示す図。
【図１６】障害図形がポリラインの場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図１７】障害図形が円の場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図１８】障害図形が文字列の場合の表示文字列と障害図形との重なり判定方法を説明するための図。
【図１９】本発明の１実施例である文字列配置処理プログラムのフローチャート。
【図２０】上記文字列配置処理プログラムにおける自動配置処理２００の詳細を示すフローチャート。
【図２１】障害図形がポリラインの場合の表示文字列と障害図形との重なり度の算出方法の１例を説明するための図。
【図２２】障害図形が円の場合の表示文字列と障害図形との重なり度の算出方法の１例を説明するための図。
【図２３】障害図形が文字列の場合の表示文字列と障害図形との重なり度の算出方法の１例を説明するための図。
【図２４】重なり度を記憶するためのワークテーブルの１例を示す図。
【図２５】自動配置処理２００の変形例を説明するためのフローチャート。
【図２６】上記文字列配置処理プログラムにおける引出し線描画処理３００の詳細を示すフローチャート。
【図２７】引出し線描画処理３００におけるステップ３０４とステップ３０８を説明するための図。
【図２８】引出し線描画処理３００におけるステップ３１４を説明するための図。
【図２９】引出し線描画処理３００におけるステップ３２０を説明するための図。
【図３０】引出し線描画処理３００におけるステップ３２６を説明するための図。
【図３１】引出し線描画処理３００におけるステップ３３６を説明するための図。
【図３２】引出し線描画処理３００におけるステップ３３８を説明するための図。
【図３３】引出し線描画処理３００におけるクロスライン処理４００の詳細フローチャート。
【図３４】クロスライン処理４００におけるステップ４１０を説明するための図。
【図３５】引出し線描画処理３００におけるステップ３４０を説明するための図。
【符号の説明】
ＳＰ:渦巻線、Ｐ:シンボル基点、Ｑ：文字列基点、１０：対象シンボル、
２０：障害図形、３０：表示文字列、３０Ａ：顧客名、３０Ｂ：契約高、
３０Ｃ：設備No.、４０：配電線系統図管理システム、４１：プロセッサ、
４２：入力装置、４３：表示装置、４４：地図データベース、４５：メモリ、
４６：プログラムメモリ、４６Ａ：配電線系統図作成処理プログラム、
４６Ｂ：文字列配置処理プログラム、５０：地図基盤レイヤ、
６０：ユーザ固有レイヤ、６０Ａ：電線レイヤ、６０Ｂ：シンボルレイヤ、
６０Ｃ：文字列レイヤ、６０Ｄ：引出し線レイヤ。
【図１】
0003884901.tif 000002
【図２】
0003884901.tif 000003
【図３】
0003884901.tif 000004
【図４】
0003884901.tif 000005
【図５】
0003884901.tif 000006
【図６】
0003884901.tif 000007
【図７】
0003884901.tif 000008
【図８】
0003884901.tif 000009
【図９】
0003884901.tif 000010
【図１０】
0003884901.tif 000011
【図１１】
0003884901.tif 000012
【図１２】
0003884901.tif 000013
【図１３】
0003884901.tif 000014
【図１４】
0003884901.tif 000015
【図１５】
0003884901.tif 000016
【図１６】
0003884901.tif 000017
【図１７】
0003884901.tif 000018
【図１８】
0003884901.tif 000019
【図１９】
0003884901.tif 000020
【図２０】
0003884901.tif 000021
【図２１】
0003884901.tif 000022
【図２２】
0003884901.tif 000023
【図２３】
0003884901.tif 000024
【図２４】
0003884901.tif 000025
【図２５】
0003884901.tif 000026
【図２６】
0003884901.tif 000027
【図２７】
0003884901.tif 000028
【図２８】
0003884901.tif 000029
【図２９】
0003884901.tif 000030
【図３０】
0003884901.tif 000031
【図３１】
0003884901.tif 000032
【図３２】
0003884901.tif 000033
【図３３】
0003884901.tif 000034
【図３４】
0003884901.tif 000035
【図３５】
0003884901.tif 000036