以下、図面を参照しつつ本発明の様々な実施形態について説明する。本発明の技術的範囲はこれらの実施形態に限定されず、特許請求の範囲に記載された発明及びその均等物に及ぶ点に留意されたい。
図1は、本発明に係るラベル配置算出装置1の概略構成の一例を示す図である。ラベル配置算出装置1は、PC(Personal Computer)又はサーバ等の情報処理装置である。ラベル配置算出装置1は、地図において地物を表す、多角形である図形の形状及びかかる図形に配置されるラベルの幅及び高さを取得し、図形内のラベルの配置位置を算出する。そのために、ラベル配置算出装置1は、記憶部11、通信部12、表示部13、操作部14及び処理部15を有する。
記憶部11は、データ及びプログラムを記憶するための構成であり、例えば半導体メモリを備える。記憶部11は、処理部15による処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。プログラムは、CD(Compact Disc)-ROM(Read Only Memory)、DVD(Digital Versatile Disc)-ROM等のコンピュータ読み取り可能且つ非一時的な可搬型記憶媒体から、公知のセットアッププログラム等を用いて記憶部11にインストールされる。なお、記憶部11は、記憶手段の一例である。
通信部12は、ラベル配置算出装置1を他の装置と通信可能にする構成であり、通信インタフェース回路を備える。通信部12が備える通信インタフェース回路は、有線LAN(Local Area Network)又は無線LAN等の通信インタフェース回路である。通信部12は、データを他の装置から受信し、処理部15に供給するとともに、処理部15から供給されたデータを他の装置に送信する。
表示部13は、画像を表示するための構成であり、例えば、液晶ディスプレイ又は有機EL(Electro-Luminescence)ディスプレイを備える。表示部13は、処理部15から供給された表示データに基づいて画像を表示する。
操作部14は、ラベル配置算出装置1に対するユーザの入力操作を受付けるための構成であり、例えば、キーパッド、キーボード又はマウスを備える。操作部14は、表示部13と一体化されたタッチパネルを備えてもよい。操作部14は、ユーザの入力操作に応じた信号を生成して処理部15に供給する。
処理部15は、ラベル配置算出装置1の動作を統括的に制御するデバイスであり、一又は複数個のプロセッサ及びその周辺回路を備える。処理部15は、例えば、CPU(Central Processing Unit)である。処理部15は、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等でもよい。処理部15は、記憶部11に記憶されているプログラム並びに通信部12及び操作部14からの入力に基づいてラベル配置算出装置1の各種処理が適切な手順で実行されるように、各構成の動作を制御するとともに、各種の処理を実行する。
処理部15は、取得手段151、分割手段152、算出手段153及び出力手段154をその機能ブロックとして備える。これらの各手段は、処理部15によって実行されるプログラムによって実現される機能モジュールである。これらの各手段は、ファームウェアとしてラベル配置算出装置1に実装されてもよい。
図2は、ラベル配置算出装置1によって実行されるラベル配置算出処理の流れの一例を示すフロー図である。ラベル配置算出処理は、記憶部11に記憶されたプログラムを実行した処理部15がラベル配置算出装置1の各構成と協働することにより実現される。
まず、取得手段151は、多角形である図形の形状並びに図形に配置されるラベルの幅及び高さを取得する(S101)。例えば、取得手段151は、あらかじめ記憶部11に記憶された図形テーブルT1を、図形の形状並びにラベルの幅及び高さとして取得する。
図3は、図形テーブルT1のデータ構造の一例を示す図である。図形テーブルT1は、図形ID、頂点情報、文字情報、ラベルの幅及び高さを相互に関連付けて記憶する。
図形IDは、複数の図形のそれぞれを識別する識別情報である。頂点情報は、図形の頂点及び辺に関する情報である。図2に示す例では、頂点情報は、多角形を構成する頂点の座標が隣接する順番に格納されたリストである。すなわち、頂点情報において隣接する頂点の間にのみ辺が存在する。頂点の座標は2次元座標であり、例えば地図における各頂点の緯度及び経度であるが、このような例に限られず、任意の座標系における座標でもよい。文字情報は、ラベルに含まれる文字情報であり、例えば土地の地番や構造物の名称である。ラベルの幅及び高さは、文字情報の文字数や、あらかじめ設定された余白の大きさ等に基づいて設定される。
図2に戻り、分割手段152は、図形を、ラベルの幅方向に延伸する分割線により複数の分割図形に分割する(S102)。例えば、分割手段152は、図形の頂点から図形の内部に幅方向に延伸する半直線である分割線と、図形の辺との交点(以下、この交点を分割線の始点である頂点の対点と称する。)を設定する。分割手段152は、一又は相互に隣接する二つの分割線と、分割線に接続する図形の二つの辺とで囲まれる、三角形又は台形である分割図形を設定する。
図4は、分割手段152による処理について説明するための模式図である。図4に示す例では、図形200の頂点V0~V7は、反時計回りに順序付けられている。まず、分割手段152は、各頂点V0~V7について、分割線を設定する。図4に示す例では、頂点V0は図形200の右辺に位置するため、頂点V0には左方向に延伸する分割線のみが設定され、その分割線と図形の辺との交点が対点P0Lとして設定される。また、頂点V1には分割線が設定されない。また、頂点V2には左方向と右方向とに延伸する分割線がそれぞれ設定され、それらの分割線と図形の辺との交点がそれぞれ対点P2L及びP2Rとして設定される。
続いて、分割手段152は、頂点と対点との間に参照関係を設定する。対点が一つである頂点については、頂点と対点との間に相互に参照関係が設定される。図4に示す例では、対点が一つである頂点V0は対点P0Lを参照し、対点P0Lは頂点V0を参照する。なお、図4において、破線は、分割線を示すとともに、矢印方向により参照先を示す。一点鎖線は、矢印方向により参照先を示す。
対点が二つである頂点については、頂点と他の頂点との位置関係に応じた方向に循環する参照関係が設定される。図4に示す例では、対点が二つであり、下に凸である頂点V2には、右方向に循環する参照関係が設定される。すなわち、左側の対点P2Lは頂点V2を参照し、頂点V2は右側の対点P2Rを参照し、右側の対点P2Rは左側の対点P2Lを参照する。また、対点が二つであり、上に凸である頂点V6には、左方向に循環する参照関係が設定される。すなわち、右側の対点P6Rは頂点V6を参照し、頂点V6は左側の対点P6Lを参照し、左側の対点P6Lは右側の対点P6Rを参照する。
分割手段152は、図形の頂点又は対点のうちから、参照関係が設定されている頂点又は対点を分割図形の第1の頂点として特定する。分割手段152は、第1の頂点が参照する頂点又は対点を分割図形の第2の頂点として特定するとともに、第1の頂点の参照関係を削除する。分割手段152は、第2の頂点の次の頂点又は対点(第2の頂点と同一の辺上に位置し且つ第2の頂点から反時計回りの方向に位置する頂点又は対点をいう。)を分割図形の第3の頂点として特定する。
第3の頂点に参照関係が設定されていない場合、分割手段152は第1~第3の頂点によって構成される三角形を分割図形として設定する。第3の頂点に参照関係が設定されている場合、分割手段152は第3の頂点が参照する頂点又は対点を分割図形の第4の頂点として特定し、第1~第4の頂点によって構成される台形を分割図形として設定するとともに、第3の頂点の参照関係を削除する。分割手段152は、参照関係が設定されている頂点又は対点のうち、第1の頂点として特定した頂点又は対点の次の頂点又は対点を、次の分割図形の第1の頂点として特定し、同様に次の分割図形を設定する。分割手段152は、参照関係が設定されている頂点及び対点がなくなるまで同様の処理を繰り返すことにより、図形を三角形又は台形である複数の分割図形に分割する。
なお、図形がラベルの高さ方向における位置が同一である複数の頂点を有する場合、上述の処理により設定された分割図形に面積が0である図形が含まれる等、適切な分割図形が設定されない場合がある。分割手段152は、かかる場合、高さ方向における位置が同一である複数の頂点の高さ方向における位置を異ならせてから図形を分割する。例えば、分割手段152は、各頂点の高さ方向における位置座標に微小値(例えば、頂点間の距離の1億分の1のオーダの値)を加算又は減算することにより、頂点の高さ方向における位置を異ならせる。これにより、分割手段152は、図形がラベルの高さ方向における位置が同一である複数の頂点を有する場合でも、適切な分割図形を設定することができる。
分割手段152は、分割図形の間の隣接関係を示す隣接情報を生成する。隣接情報は、ある分割図形の上側に隣接する分割図形と下側に隣接する分割図形とをそれぞれ特定する情報である。分割手段152は、隣接情報を含む分割図形テーブルT2を生成し、記憶部11に記憶する。
図5は、分割図形テーブルT2のデータ構造の一例を示す図である。分割図形テーブルT2は、分割図形ID、頂点情報、高さ、隣接情報を相互に関連付けて記憶する。
分割図形IDは、複数の分割図形のそれぞれを識別する識別情報である。頂点情報は、分割図形を構成する頂点の座標が隣接する順番に格納された情報である。高さは、分割図形の高さである。隣接情報は、上側及び下側に隣接する分割図形のそれぞれの分割図形IDである。図4に示す例では、上側又は下側に複数の分割図形が隣接する場合、左側に位置する分割図形から順に分割図形IDが記憶されている。なお、隣接情報として、上側に隣接する分割図形及び下側に隣接する分割図形の何れか一方のみが記憶されるものとしてもよい。
図2に戻り、算出手段153は、ラベルが図形に包含されるようにラベルの配置位置を算出する算出処理を実行する(S103)。算出処理の詳細は後述する。
出力手段154は、算出されたラベルの配置位置に関する情報を出力し(S104)、ラベル配置算出処理を終了する。例えば、出力手段154は、通信部12を介して、算出処理によって生成された配置位置テーブルT3を他の装置に送信することにより出力する。
図6は、配置位置テーブルT3のデータ構造の一例を示す図である。配置位置テーブルT3は、対象図形と配置位置とを相互に関連付けて記憶する。対象図形は、ラベルが配置される対象となる図形であり、一又は相互に隣接する複数の分割図形の分割図形IDにより示される。配置位置は、ラベルの配置位置を示す情報であり、例えば、ラベルの左上頂点の位置座標である。
出力手段154は、図形テーブルT1及び配置位置テーブルT3に基づいて、図形内にラベルを配置した表示データを生成し、表示部13に表示することにより出力してもよい。
図7及び図8は、算出処理の流れの一例を示すフロー図である。図7及び図8は、矩形状のラベルを水平方向に、図形の左上付近に配置する場合の例である。なお、図形をあらかじめ左右又は上下に反転させてから算出処理を実行することによって、ラベルを反転前の図形の右上付近又は左下付近に配置することがそれぞれ可能となる。また、図形をあらかじめ所定角度だけ回転させてから算出処理を実行することによって、ラベルを回転前の図形に対して所定角度だけ傾けて配置することが可能となる。
以降の説明では、台形である分割図形の、分割線である二つの辺をそれぞれ上辺及び下辺と称し、分割線とは異なる二つの辺をそれぞれ左辺及び右辺と称する。また、以降の説明では、三角形である分割図形は、上辺又は下辺の幅が0である台形とみなすことがある。
まず、図7に示すように、算出手段153は、一の分割図形を選択する(S201)。例えば、算出手段153は、分割図形テーブルT2を参照し、まだ選択されていない分割図形のうちから最も上側に位置する分割図形を選択する。
続いて、算出手段153は、ラベルの上辺が選択された分割図形に包含されるように、ラベルの配置位置を設定する(S202)。分割図形の上辺の幅がラベルの幅以上である場合、算出手段153は、ラベルの左上頂点が分割図形の左辺の上端に一致するように、ラベルの配置位置を設定する。分割図形の上辺の幅がラベルの幅よりも小さく且つ分割図形の下辺の幅がラベルの幅以上である場合、ラベルの上辺が分割図形の左辺及び右辺に接するようなラベルの配置位置が一意に特定される。算出手段153は、かかる位置にラベルの配置位置を設定する。このように、算出手段153は、対象図形の左辺上にラベルの頂点が位置するようにラベルの配置位置を設定する。
分割図形の上辺及び下辺の幅がラベルの幅よりも小さい場合、ラベルの上辺は分割図形に包含されないため、算出手段153はラベルの配置位置を設定しない。
続いて、算出手段153は、ラベルの上辺が選択された分割図形に包含されたか否かを判定する(S203)。算出手段153は、S202においてラベルの配置位置が設定された場合、ラベルの上辺が選択された分割図形に包含されたと判定し、ラベルの配置位置が設定されなかった場合、ラベルの上辺が選択された分割図形に包含されないと判定する。
ラベルの上辺が分割図形に包含されたと判定された場合(S203-Yes)、算出手段153は、ラベルの高さに基づいて、一又は相互に隣接する複数の分割図形を対象図形として抽出する(S204)。算出手段153は、S202において設定された配置位置にラベルを配置した場合に、ラベルの上辺と下辺との間に、その上辺及び下辺の少なくとも一方が含まれる分割図形を対象図形として抽出する。以降の説明では、対象図形を構成する分割図形のうち最も上側の分割図形の上辺を対象図形の上辺と称し、最も下側の分割図形の下辺を対象図形の下辺と称する。また、対象図形を構成する分割図形の左辺を接続した線を対象図形の左辺と称し、右辺を接続した線を対象図形の右辺と称する。
続いて、図8に示すように、算出手段153は、抽出された対象図形にラベルを配置できる可能性があるか否かを判定する(S205)。対象図形を構成する分割図形がラベルの幅よりも小さい幅の上辺又は下辺を有し、且つ、その辺がラベルの上辺及び下辺の間に位置する場合、算出手段153は、抽出された対象図形にラベルを配置できる可能性がないと判定する。他の場合、算出手段153は、抽出された対象図形にラベルを配置できる可能性があると判定する。
なお、S205において、対象図形にラベルを配置できる可能性があるとは、対象図形を構成する全ての分割図形にわたってラベルを配置できる可能性があることをいう。すなわち、分割図形S1~S3からなる対象図形にラベルを配置できる可能性がないと判定され、分割図形S2及びS3からなる対象図形にラベルを配置できる可能性があると判定されることがあり得る。後述するS207及びS210においても同様とする。
抽出された対象図形にラベルを配置できる可能性があると判定された場合(S205-Yes)、算出手段153は、第1判定処理を実行する(S206)。第1判定処理は、ラベルの辺と対象図形の左辺との交点の有無を判定し、交点があると判定された場合にラベルの辺と対象図形の左辺とが交点を有しないようにラベルの配置位置を再設定する処理である。第1判定処理の詳細は後述する。
続いて、算出手段153は、第1判定処理を実行した結果に基づいて、対象図形にラベルを配置できる可能性があるか否かを判定する(S207)。第1判定処理において配置が不可能であると判定されなかった場合、算出手段153は、抽出された対象図形にラベルを配置できる可能性があると判定する。
抽出された対象図形にラベルを配置できる可能性があると判定された場合(S207-Yes)、算出手段153は、第1判定処理において対象図形が変更されたか否かを判定する(S208)。対象図形が変更されたと判定された場合(S208-Yes)、S205に戻る。この場合、変更後の対象図形について次に実行される第1判定処理が省略されてもよい。
対象図形が変更されていないと判定された場合(S208-No)、算出手段153は、第2判定処理を実行する(S209)。第2判定処理は、ラベルの辺と対象図形の右辺との交点の有無を判定し、交点があると判定された場合にラベルの辺と対象図形の右辺とが交点を有しないようにラベルの配置位置を再設定する処理である。第2判定処理の詳細は後述する。
続いて、算出手段153は、第2判定処理を実行した結果に基づいて、対象図形にラベルを配置できる可能性があるか否かを判定する(S210)。第2判定処理において配置が不可能であると判定されなかった場合、算出手段153は、抽出された対象図形にラベルを配置できる可能性があると判定する。
抽出された対象図形にラベルを配置できる可能性があると判定された場合(S210-Yes)、算出手段153は、第2判定処理において対象図形が変更されたか否かを判定する(S211)。対象図形が変更されたと判定された場合(S211-Yes)、S205に戻る。
対象図形が変更されていないと判定された場合(S211-No)、算出手段153は、対象図形と配置位置とを関連付けて配置位置テーブルT3に記憶する(S212)。
続いて、算出手段153は、S201において選択されていない他の分割図形があるか否かを判定する(S213)。選択されていない他の分割図形があると判定された場合(S213-Yes)、S201に戻り、算出手段153は、選択されていない分割図形のうちから一の分割図形を選択する。S201において選択されていない他の分割図形がないと判定された場合(S213-No)、算出処理を終了する。
S203においてラベルの上辺が分割図形に包含されていないと判定された場合(S203-No)も、同様に、算出手段153は、S201において選択されていない他の分割図形があるか否かを判定する(S213)。S205、S207又はS210において対象図形にラベルを配置できる可能性がないと判定された場合(S205-No、S207-No、S210-No)も、算出手段153は、S201において選択されていない他の分割図形があるか否かを判定する(S213)。
図9は、第1判定処理の流れの一例を示すフロー図であり、図10は、第1判定処理について説明するための模式図である。なお、以降では、ラベルの幅方向及び高さ方向をそれぞれX方向及びY方向と称し、X方向における位置及びY方向における位置をそれぞれX座標、Y座標と称することがある。
まず、算出手段153は、ラベルの辺と対象図形の左辺との交点があるか否かを判定する(S301)。
図10(a)に示すように、S202においてラベルLの上辺が対象図形300に包含され、且つ、ラベルLの左上頂点が対象図形300の左辺上に位置するようにラベルが配置されている。また、S204において、対象図形300の下辺がラベルLの下辺よりも下側に位置するように対象図形が抽出されている。すなわち、S301において対象図形の左辺とラベルの辺との交点がない場合、ラベルの左辺及び上辺はすでに対象図形に包含されている。したがって、交点がないと判定された場合(S301-No)、第1判定処理を終了する。
交点が有ると判定された場合(S301-Yes)、算出手段153は、ラベルの左辺及び上辺が対象図形に包含されるようにラベルの配置位置を再設定する(S302)。
まず、算出手段153は、ラベルの左辺の右側において、対象図形の左辺とラベルの辺との交点(ラベルの左上頂点を除き、S302の説明において同様とする。)よりも右側に、ラベルの内部に位置する対象図形の左辺の頂点があるか否かを判定する。すなわち、算出手段153は、ラベルの内部に位置する対象図形の頂点のうちの少なくとも一つが、交点のX座標よりも大きいX座標を有するか否かを判定する。
図10(b)に示すように、交点Cの右側にラベルの内部に位置する頂点Vがある場合、ラベルLの左辺が最も右側の頂点V上に位置するようにラベルLを右方向に移動することにより、ラベルLの左辺が対象図形310に包含される。このとき、ラベルLを右方向に移動することによりラベルLの上辺が対象図形に包含されなくなる場合がある。かかる場合は、ラベルLを下方向に移動することにより、ラベルLの上辺が対象図形に包含される可能性がある。このようなラベルの移動処理について以下で説明する。
交点よりも右側に頂点があると判定された場合、算出手段153は、ラベルの左辺が最も右側の頂点上に位置するように、ラベルを右方向に移動する。続いて、算出手段153は、右方向に移動したラベルの上辺が対象図形に包含されているか否かを判定する。上辺が対象図形に包含されていると判定された場合、算出手段153は、右方向への移動後の位置をラベルの配置位置として再設定する。
上辺が対象図形に包含されていない場合、算出手段153は、ラベルの右上頂点が対象図形の最も上側の分割図形の右辺上に位置するようにラベルを下方向に移動させた位置をラベルの配置位置に再設定する。なお、ラベルを下方向に移動させてもラベルの右上頂点が分割図形の右辺上に位置しない場合、ラベルの上辺及び左辺が対象図形に包含されるようなラベルの配置位置は存在しないため、算出手段153は、ラベルの配置位置を再設定しない。
図10(c)に示すように、交点Cよりも右側にラベルの内部に位置する頂点Vがない場合も、ラベルLの左辺が交点C上に位置するようにラベルLを右方向に移動することにより、ラベルLの左辺が対象図形320に包含される。しかし、交点Cよりも右側に頂点Vがない場合とは、対象図形の最も下側の分割図形の左辺の傾きが負である(すなわち、右下方向に延伸する)場合であるから、図10(b)を用いて説明したようにラベルLを下方向に移動させた場合、ラベルLの左辺が再び対象図形320に包含されなくなる。したがって、ラベルLを下方向に移動させたとしても、左辺及び上辺を対象図形320に包含させることはできない。かかる場合、ラベルLの右上頂点が対象図形320の右辺上に位置し且つラベルLの左下頂点が対象図形320の左辺上に位置するようにラベルLを右下方向に移動させることにより、ラベルLの左辺及び上辺が対象図形320に包含される。このようなラベルの移動処理について以下で説明する。
交点よりも右側に頂点がないと判定された場合、算出手段153は、ラベルの左辺が交点上に位置するように、ラベルを右方向に移動する。算出手段153は、右方向に移動したラベルの上辺が対象図形に包含されているか否かを判定する。上辺が対象図形に包含されていると判定された場合、算出手段153は、かかる位置をラベルの配置位置として再設定する。上辺が対象図形に包含されていないと判定された場合、算出手段153は、ラベルの上辺及び左辺が対象図形に包含されるようなラベルの配置位置を以下のように算出する。
対象図形の最も上側の分割図形の右辺の直線の式をX=ar・Y+brとし、ラベルの右上頂点の座標を(Xr,Yr)とする。対象図形の最も下側の分割図形の左辺の直線の式をX=al・Y+blとし、ラベルの左下頂点の座標を(Xl,Yl)とする。ラベルLの右上頂点が対象図形320の右辺上に位置し且つラベルLの左下頂点が対象図形320の左辺上に位置するとき、(Xr,Yr)は上述の右辺の式を満たし、(Xl,Yl)は上述の左辺の式を満たす。また、ラベルの幅及び高さをそれぞれW及びHとすると、Xr-Xl=W及びYr-Yl=Hが成立する。以上より、ラベルの上辺及び左辺が対象図形に包含されるようなラベルの上辺のY座標Yrは次の式により算出される。
Yrが対象図形の最も上側の分割図形の上辺のY座標以下であり且つ最も上側の分割図形の下辺のY座標以上である場合、算出手段153は、ラベルの上辺のY座標がYrとなり且つラベルの右上頂点が対象図形の右辺に接するようにラベルの配置位置を再設定する。かかる場合以外の場合(ar-al=0の場合も含む)、ラベルの上辺及び左辺が対象図形に包含されるようなラベルの配置位置は存在しないため、算出手段153は、ラベルの配置位置を再設定しない。
続いて、算出手段153は、S302においてラベルの配置位置が再設定されたか否かを判定する(S303)。ラベルの配置位置が再設定されていないと判定された場合(S303-No)、算出手段153は、ラベルの左辺及び上辺が対象図形に包含されるようにラベルを配置できる可能性がないと判定し(S304)、第1判定処理を終了する。
配置位置が再設定されたと判定された場合(S303-Yes)、算出手段153は、S302の実行により、ラベルが下方向に移動されたか否かを判定する(S305)。ラベルが下方向に移動されていないと判定された場合(S305-No)、第1判定処理を終了する。
ラベルが下方向に移動されたと判定された場合(S305-Yes)、算出手段153は、移動されたラベルの上辺の位置とラベルの高さとに基づいて、対象図形を抽出し(S306)、第1判定処理を終了する。すなわち、ラベルが下方向に移動された場合、ラベルの下辺が対象図形の下辺よりも下側に位置する可能性がある。かかる場合には、最も下側の分割図形の下方向に隣接する分割図形を更に対象図形として抽出する必要があるため、S306において改めて対象図形が抽出される。なお、対象図形は、S204と同様に抽出される。
このように、算出手段153は、第1判定処理において、ラベルの辺と、分割線とは異なる対象図形の二つの辺のうち第1の方向に位置する第1の辺との交点の有無を判定し、交点があると判定された場合にラベルの配置位置を再設定する。再設定された配置位置は、分割線に平行するラベルの第1の辺及び分割線と直交するラベルの二つの辺のうち第1の方向に位置する第2の辺の何れもが対象図形に包含されるような配置位置である。
図11は、第2判定処理の流れの一例を示すフロー図である。
まず、算出手段153は、ラベルの辺と対象図形の右辺との交点が有るか否かを判定する(S401)。第1判定処理においてラベルの左辺及び上辺が対象図形に包含されているから、ラベルの辺と対象図形の右辺との交点が無い場合、ラベルはすでに対象図形に包含されている。したがって、交点がないと判定された場合(S401-No)、第2判定処理を終了する。
交点があると判定された場合(S401-Yes)、算出手段153は、ラベルの右辺及び上辺が対象図形に包含されるようにラベルの配置位置を再設定する(S402)。
まず、算出手段153は、対象図形の最も上側の分割図形の左辺の傾きが正である(すなわち、左辺が左下方向に延伸する)か否かを判定する。左辺の傾きが正でない場合、現在のラベルの位置よりも下側にラベルの上辺及び右辺が対象図形に包含されるようなラベルの配置位置が存在しないため、算出手段153は、ラベルの配置位置を再設定しない。
左辺の傾きが正である場合、算出手段153は、ラベルの右辺の左側において、対象図形の右辺とラベルの辺との交点(ラベルの右上頂点を除き、S402の説明において同様とする。)よりも左側に、ラベルの内部に位置する対象図形の右辺の頂点があるか否かを判定する。
交点よりも左側に頂点があると判定された場合、算出手段153は、ラベルの右辺が最も左側の頂点上に位置するように、ラベルを左方向に移動する。続いて、算出手段153は、ラベルの左上頂点が対象図形の最も上側の分割図形の左辺上に位置するようにラベルを下方向に移動させた位置をラベルの配置位置に再設定する。なお、ラベルを下方向に移動させてもラベルの右上頂点が分割図形の右辺上に位置しない場合、ラベルの上辺、左辺及び右辺が対象図形に包含されるようなラベルの配置位置は存在しないため、算出手段153は、ラベルの配置位置を再設定しない。
対象図形の右辺とラベルの辺との交点の左側に対象図形の右辺の頂点が有ると判定された場合、算出手段153は、ラベルの上辺及び右辺が対象図形に包含されるようなラベルの配置位置を以下のように算出する。
対象図形の最も上側の分割図形の左辺の直線の式をX=al・Y+blとし、ラベルの左上頂点の座標を(Xl,Yl)とする。対象図形の最も下側の分割図形の右辺の直線の式をX=ar・Y+brとし、ラベルの右下頂点の座標を(Xr,Yr)とする。ラベルの上辺及び右辺が対象図形に包含されるとき、(Xl,Yl)は上述の左辺の式を満たし、(Xr,Yr)は上述の右辺の式を満たす。したがって、ラベルの上辺及び右辺が対象図形に包含されるようなラベルの上辺のY座標Ylは次の式により算出される。
Ylが現在のラベルの上辺のY座標よりも小さく且つ下辺のY座標以上である場合、算出手段153は、ラベルの上辺のY座標がYlとなり且つラベルの左上頂点が対象図形の左辺に接するようにラベルの配置位置を再設定する。かかる場合以外の場合(ar-al=0の場合も含む)、ラベルの上辺及び右辺が対象図形に包含されるようなラベルの配置位置は存在しないため、算出手段153は、ラベルの配置位置を再設定しない。
続いて、算出手段153は、S302においてラベルの配置位置が再設定されたか否かを判定する(S403)。ラベルの配置位置が再設定されていないと判定された場合(S403-No)、算出手段153は、ラベルの左辺及び上辺が対象図形に包含されるようにラベルを配置できる可能性がないと判定し(S404)、第2判定処理を終了する。
配置位置が再設定されたと判定された場合(S403-Yes)、算出手段153は、移動されたラベルの上辺の位置とラベルの高さとに基づいて、対象図形を抽出し(S405)、第2判定処理を終了する。
このように、算出手段153は、第2判定処理において、ラベルの辺と、分割線とは異なる対象図形の二つの辺のうち第2の方向に位置する第2の辺との交点の有無を判定し、交点があると判定された場合にラベルの配置位置を再設定する。再設定された配置位置は、分割線に平行するラベルの第1の辺、分割線と直交するラベルの二つの辺のうち第1の方向に位置する第2の辺、及び、第2の辺に対向する第3の辺が対象図形に包含されるような配置位置である。
以上説明したように、ラベル配置算出装置1は、多角形である図形をラベルの幅方向に延伸する分割線により複数の分割図形に分割する。また、ラベル配置算出装置1は、ラベルの高さに基づいて複数の分割図形のうちから対象図形を抽出し、ラベルの頂点及び辺と対象図形の頂点及び辺との位置関係に基づいて、ラベルが対象図形に包含されるようにラベルの配置位置を算出する。これにより、多角形である図形の内部におけるラベルの配置位置を確実且つ高速に算出することを可能とする。
すなわち、図形に対するラベルの配置可否を判定する際には包含判定がなされることが一般的であったが、包含判定は図形の頂点数が増加するに伴い計算負荷が増大するという問題点があった。他方、ラベル配置算出装置1は、ラベルの幅方向に平行な分割線を用いて図形を分割することにより、ラベルの配置可否を単純なX座標又はY座標の比較に基づいて判定し、ラベルの配置位置を高速に算出することを可能とする。
また、ラベル配置算出装置1は、あらかじめ設定された位置にラベルを配置するのではなく、第1判定処理及び第2判定処理において、ラベルの頂点及び辺と対象図形の頂点及び辺との位置関係に基づいて、ラベルが対象図形に包含されるようにラベルの配置位置を算出する。これにより、図形の内部にラベルを配置可能である場合には、ラベルの配置位置を確実に算出することを可能とする。
また、ラベル配置算出装置1は、図形がラベルの高さ方向における位置が同一である複数の頂点を有する場合、複数の頂点の高さ方向における位置を異ならせてから図形を分割する。これにより、ラベル配置算出装置1は、任意の形状を有する多角形である図形に対して同様の手法でラベルの配置位置を確実且つ高速に算出することを可能とする。
上述した説明では、S201において、算出手段153は選択されていない分割図形のうちから最も上側の分割図形を選択するものとしたが、このような例に限られない。例えば、算出手段153は、分割図形テーブルT2を参照し、直前に選択された分割図形の下側に隣接する図形を選択し、下側に隣接する分割図形がない場合に最も上側の分割図形を選択するようにしてもよい。図4に示す例では、算出手段153は、分割図形S1、S2、S3、S4の順に選択をした後に、分割図形S6を選択してもよい。
上述した説明では、S212において、算出手段153は対象図形内にラベルが配置された場合にのみ配置位置を配置位置テーブルT3に記憶するものとしたが、このような例に限られない。例えば、算出手段153は、S205、S207又はS210において対象図形にラベルを配置できる可能性がないと判定された場合も、可能性がないと判定された対象図形と配置可能性がない旨とを関連付けて配置位置テーブルT3に記憶してよい。これにより、配置位置テーブルT3を参照するだけでS205等における判定が可能となるため、処理が高速化する。なお、分割図形の数が多い場合には配置位置テーブルT3に多くの対象図形が記憶されることとなるため、対象図形の識別情報をキーとするハッシュテーブルが配置位置テーブルT3として用いられることが望ましい。
上述した説明では、ラベルの概略的な配置エリア(例えば、図形の左上付近、等)があらかじめ設定されていることを前提としていたが、このような例に限られない。例えば、ラベル配置算出装置1は、複数の配置エリア(例えば、図形の左上付近及び右上付近)についてラベルの配置位置をそれぞれ算出し、算出された複数の配置位置のうちからあらかじめ設定された評価関数を最小とする配置位置を抽出してもよい。評価関数は、例えば、図形の外接矩形の左上頂点とラベルの左上頂点との距離である。評価関数として、図形の外接矩形の左上頂点とラベルの左上頂点との、X座標の差の絶対値とY座標の差の絶対値との重み付け和が用いられてもよい。
また、図形がラベルに対して十分に大きい場合は、図形内にラベルを配置できる可能性が高いため、図形全体を分割して配置可能性を判定する必要性が小さい。このような場合、あらかじめ設定された所望の配置エリア(例えば、図形の左上部分のみ)を図形から抽出し、かかる配置エリアに対して上述した手法を適用することで、計算時間を短縮することができる。所望の配置エリアは、評価関数を用いて自動的に定められてもよい。
なお、上述した説明では、図形は地図において地物を表す図形であるものとしたが、このような例に限られない。ラベル配置算出装置1は、任意の図表において、多角形である図形内にラベルを配置するために用いられてもよい。また、ラベルは文字情報に限らず、グラフ等の任意の図形を含んでもよい。
当業者は、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。例えば、上述した各部の処理は、本発明の範囲において、適宜に異なる順序で実行されてもよい。また、上述した実施形態及び変形例は、本発明の範囲において、適宜に組み合わせて実施されてもよい。