以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における情報管理システムの構成例を示す図である。同図の情報管理システム1において、移動体端末20a、20b、及び20c等の複数の移動体端末20と情報管理装置10とは、例えば、移動体通信網等を介して通信可能とされている。
移動体端末20は、管理対象とされる移動体の位置を把握するために用いられる。したがって、移動体端末20は、車載器、携帯電話、スマートフォン、又はタブレット型端末等、移動体通信網を利用した通信機能及びGPS(Global Positioning System)機能を有し、移動可能な端末であるのが好適である。移動体とは、移動体端末20が設置された車両、や移動体端末20を携帯する人等、移動体端末20を移動させる主体である。但し、移動体端末20自体が移動体として把握されてもよい。また、台風、雨雲、雷雲、前線等、それ自体に位置を計測するための機器は設置されなくても、その位置を外部から観測又は計測可能なものが移動体として把握されてもよい。
情報管理装置10は、各移動体や、非図示の施設又はエリアに関する位置情報(緯度及び経度)等を管理するコンピュータである。複数のコンピュータが情報管理装置10を構成してもよい。情報管理装置10が管理する情報は、各移動体端末20を用いて検索可能である。又は、当該情報は、PC(Personal Computer)等、固定端末から検索可能であってもよい。なお、エリアは、行政区画のように、予め定まっている範囲でもよいし、任意に定義される範囲でもよい。
図2は、本発明の実施の形態における情報管理装置のハードウェア構成例を示す図である。図2の情報管理装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
情報管理装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って情報管理装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
図3は、本発明の実施の形態における情報管理装置の機能構成例を示す図である。同図において、情報管理装置10は、サービス部11及び基盤部12を有する。
基盤部12は、情報管理装置10における情報管理機能において基盤的又は基本的な機能をサービス部11に提供する。したがって、基本的に、基盤部12のクライアントは、サービス部11である。サービス部11は、基盤部12が提供する機能を利用して、応用的な機能又はサービスを移動体端末20等に提供する。したがって、基本的に、サービス部11のクライアントは、移動体端末20等である。なお、基盤部12の機能は、基盤部12が備えるAPI(Application Program Interface)を介して利用することができる。
基盤部12は、移動体情報受信部121、登録要求受付部122、MBR算出部123、位置キー対象矩形特定部124、位置キー生成部125、登録部126、検索要求受付部127、及び検索部128等を含む。これら各部は、情報管理装置10にインストールされたプログラムがCPU104に実行させる処理により実現される。基盤部12は、また、移動体情報記憶部131、施設情報記憶部132、及びエリア情報記憶部133等を利用する。これら各記憶部は、補助記憶装置102又は情報管理装置10とネットワークを介して接続される記憶装置等を用いて実現可能である。
移動体情報受信部121は、移動体の位置情報及び属性情報等を逐次的に受信する。以下、移動体の位置情報及び属性情報等を含む情報を「移動体情報」という。本実施の形態において、移動体の位置情報は、移動体の形状を表現する多角形の各頂点の緯度及び経度によって示される。以下、多角形の各頂点の緯度及び経度の集合を、「ポリゴン情報」という。したがって、ポリゴン情報は、移動体の位置と共に範囲を示す情報であるといえる。なお、ポリゴン情報に含まれる各緯度及び経度は、例えば、多角形を形成する順番に配列されていてもよい。または、多角形を形成するための順序情報が、各緯度及び経度に付与されていてもよい。すなわち、緯度及び経度の集合に基づいて、どのように多角形を形成すべきかを識別可能な情報が、ポリゴン情報に含まれていればよい。
移動体情報は、移動体端末20ごとに、適当なタイミングで受信される。例えば、移動体情報は、一定周期ごと、又は移動体の位置が所定量変化するたびに受信される。移動体情報は、移動体通信網を介して各移動体端末20から直接的に受信されてもよいし、移動体情報を管理している他のコンピュータシステムより取得又は受信されてもよい。後者の場合、他のコンピュータシステムは、一種類に限定されなくてもよい。他のコンピュータシステムの一例として、テレマティクスサービスを提供するコンピュータシステムが挙げられる。
なお、移動体情報が取得されるタイミングは、移動体端末20ごとに異なっていてもよい。すなわち、全ての移動体端末20に関して、同じ日時における移動体情報が受信されなくてもよい。
登録要求受付部122は、施設の位置情報及び属性情報やエリアの位置情報及び属性情報の登録要求をサービス部11より受け付ける。施設の位置情報及び属性情報を、以下「施設情報」という。エリアの位置情報及び属性情報を、以下「エリア情報」という。
すなわち、登録要求受付部122は、基盤部12が提供するAPIの一部を構成する。但し、登録要求受付部122が、能動的に、施設情報やエリア情報等を他のコンピュータシステムより取得してもよい。なお、施設やエリアの位置情報についても、施設又はエリアの形状を表現する多角形の各頂点の緯度及び経度の集合であるポリゴン情報によって示される。
MBR算出部123は、受信された移動体情報、又は登録要求に係る施設情報若しくはエリア情報等に含まれているポリゴン情報が示す多角形に対する最小外接矩形を求める。以下、最小外接矩形を、「MBR」という。MBRは、Minimum Bouding Rectangleの略である。
位置キー対象矩形特定部124は、緯度及び経度の精度ごとに、当該精度の緯線及び経線のメッシュ、格子、又は交差によって形成される単位矩形の中で、位置キーの生成対象となる単位矩形を特定する。以下、位置キーの生成対象となる単位矩形を、「位置キー対象矩形」という。例えば、緯度及び経度の精度ごとに形成される単位矩形の中で、多角形のMBRに一致する又は該MBRを含む最小の単位矩形が有る場合、当該最小の単位矩形は、位置キー対象矩形である。換言すれば、当該単位矩形の範囲を示す位置キーが生成される。以下、斯かる最小の単位矩形を、「最小単位矩形」という。例えば、1000分の1度の精度の緯線及び経線によって形成される矩形は、1000分の1度幅の単位矩形である。100分の1度の精度の緯線及び経線によって形成される矩形は、100分の1度幅の単位矩形である。例えば、対象とする多角形のMBRが、10000分の1度幅の単位矩形に一致する場合、又は当該単位矩形に含まれる場合であって、100000分の1度幅の単位矩形には含まれない場合、10000分の1度幅の単位矩形が、当該多角形の最小単位矩形となる。なお、後述されるように、位置キー対象矩形は、必ずしも、最小単位矩形であるとは限らない。
位置キー生成部125は、移動体情報受信部121によって受信された移動体情報や、登録要求受付部122によって受け付けられた施設情報又はエリア情報に関するキーを生成する。キーとは、KVS(Key-Value Store)におけるキーである。すなわち、本実施の形態では、KVSを用いて、移動体情報、施設情報、及びエリア情報が管理される。本実施の形態では、移動体、施設、又はエリアに対して求められた最小単位矩形に基づいてキーが生成される。当該キーを、「位置キー」と呼ぶ。
登録部126は、位置キー生成部125によって生成された位置キーに対応付けて、移動体情報、施設情報、又はエリア情報を、移動体情報記憶部131、施設情報記憶部132、又はエリア情報記憶部133に登録する。
移動体情報記憶部131は、位置キーに対応付けて移動体情報を記憶するKVS型のデータベースである。施設情報記憶部132は、位置キーに対応付けて施設情報を記憶するKVS型のデータベースである。エリア情報記憶部133は、位置キーに対応付けてエリア情報を記憶するKVS型のデータベースである。
検索要求受付部127は、移動体情報、施設情報、又はエリア情報の検索要求をサービス部11より受け付ける。検索部128は、検索要求に基づいて位置キー生成部125等によって生成される位置キーを用いて、移動体情報、施設情報、又はエリア情報の検索を行う。
以下、情報管理装置10が実行する処理手順について説明する。まず、位置キーの生成処理について説明する。
図4は、位置キーの生成処理の処理手順の一例を説明するためのフローチャートである。当該処理手順は、移動体情報等の登録時や検索時における上位の処理手順から呼び出されるものであるが、説明の便宜上、上位の処理手順よりも先に説明する。
ステップS301において、位置キー生成部125は、処理対象の緯度及び経度のそれぞれを、数値から文字列に変換する。したがって、緯度を示す文字列(以下、「緯度文字列」という。)と、経度を示す文字列(以下、「経度文字列」という。)とが生成される。ここでは、処理対象の緯度及び経度は、(35.5678,139.1234)であるとする。したがって、緯度文字列は、「35.5678」であり、経度文字列は、「139.1234」である。なお、緯度の範囲は、+90度(北緯)〜−90度(南緯)であるとする。すなわち、南緯は、マイナス(−)で表現されることとする。また、経度の範囲は、+180度(東経)〜−180度(西経)であるとする。すなわち、西経は、マイナス(−)で表現されることとする。なお、北緯及び東経は、プラス(+)で表現されるが、数値である北緯及び東経には、「+」は明示的には付加されていなくてもよい。また、緯度および経度の、どの角度範囲を「+」とし、どの角度範囲をマイナス(−)とするかは、上記例に限るものではない。
続いて、位置キー生成部125は、緯度文字列及び経度文字列を所定の形式に変換する(S302)。まず、整数部分が3桁となるように、整数部分が1桁または2桁の場合には文字「0(ゼロ)」が先頭に挿入される。したがって、緯度文字列は「035.5678」となる。経度文字列は、この例では整数部分は当初から3桁であるため、「139.1234」のままである。また、元の数値としての緯度及び経度に基づいて、緯度文字列及び経度文字列の先頭に「+」又は「−」が付加される。したがって、緯度文字列は「+035.5678」となり、経度文字列は、「+139.1234」となる。また、小数点を示す文字(「.」)が除去される。したがって、緯度文字列は「+0355678」となる。経度文字列は、「+1391234」となる。更に、小数点以下について、短い方には「0」が追加される。例えば、一方が、変換前の経度文字列が「35.567」であり、変換前の緯度文字列は、「139.1234」である場合、「35.567」の後に「0」が追加される。その結果、経度文字列は、「+0355670」となる。
以上で所定の形式への変換は完了する。
続いて、位置キー生成部125は、経度文字列の最上位桁から順に1つの文字を取得し、当該文字を作業用の文字列変数(以下、「作業用変数」という。)の先頭に追加する(S303)。したがって、最初にステップS304が実行されるときは、「+1391234」より「+」が取得され、作業用変数に追加される。
続いて、位置キー生成部125は、緯度文字列の最上位桁から順に1つの文字を取得し、当該文字を作業用変数の先頭に追加する(S304)。したがって、最初にステップS303が実行されるときは、「+0355678」より「+」が取得され、作業用変数に追加される。なお、ステップS304における作業用変数は、ステップS303における作業用変数と同一のものである。したがって、最初にステップS303及びS304が終了した時点において、作業用変数の内容は、「++」となる。なお、ステップS303とステップS304とは実行される順序を問わない。
ステップS303及びS304は、緯度文字列及び経度文字列の全ての桁(全ての文字)が処理されるまで繰り返し実行される(S305)。その結果、緯度文字列及び経度文字列のそれぞれの最上位桁から順に同じ桁の文字が1桁ずつ交互に配列された一つの文字列が作業用変数に格納される。上記の例では、「++10339515263748」という文字列が作業用変数に格納される。当該文字列が、位置キーとしての文字列である。したがって、位置キー生成部125は、作業用変数に格納された値、すなわち位置キーを返却する(S306)。
なお、本実施の形態において、位置キーは、当該位置キーに係る緯度及び経度の精度に応じた単位を一辺とする矩形範囲を示す情報としても扱われる。緯度及び経度の精度に応じた単位を一辺とする矩形範囲とは、例えば、(35.5678,139.1234)に関しては、10000分の1を一辺とする矩形範囲をいう。したがって、位置キーは、厳密には、範囲を示す情報を含むキーであるといえる。位置キーがこのように生成される意義については後述される。
続いて、移動体情報の登録処理の処理手順について説明する。図5は、移動体情報の登録処理の処理手順の一例を説明するためのフローチャートである。
ステップS101において、移動体情報受信部121は、移動体情報の登録要求を受信する。移動体情報には、例えば、移動体の識別情報及びポリゴン情報等が含まれる。移動体の識別情報を、以下「移動体ID」という。一つの移動体に関して、複数のポリゴン情報が移動体情報に含まれていてもよい。すなわち、一つの移動体の形状が、複数の多角形によって表現されてもよい。移動体に関するその他の属性情報が、移動体情報に含まれていてもよい。
続いて、MBR算出部123、位置キー対象矩形特定部124、及び位置キー生成部125等は、移動体の形状を表現する多角形に対する位置キーの生成処理を実行する(S102)。なお、複数の多角形によって表現される移動体については、多角形ごとにステップS102が実行される。また、後述より明らかなように、一つの多角形に対して複数の位置キーが生成される場合がある。
続いて、登録部126は、生成された位置キーごとに、移動体情報に含まれている移動体ID及びポリゴン情報等を値(Value)として対応付けて、移動体情報記憶部131に登録する(S103)。
図6は、移動体情報記憶部の構成例を示す図である。同図に示されるように、移動体情報記憶部131は、キーに対応付けて値を記憶する。キーには、移動体の形状を表現する多角形に対して生成された位置キーが記憶される。値は、一以上の行を含む。各行は、一つの移動体に対応し、id、データ、及び登録日時の三つの項目(列)を含む。idには、移動体IDが記憶される。データには、ポリゴン情報及びその他の属性情報等が記憶される。登録日時は、行が登録された日時である。なお、一つの位置キーに対して、複数の行(複数の移動体)が対応付けられうる。同時期又は異なる時期に、同じ緯度及び経度に対して複数の移動体が位置しうるからである。また、後述より明らかなように、異なる場所に位置する移動体同士に関して、同一の位置キーが生成される場合が有るからである。これは、位置キーが、移動体の多角形のMBRを含む単位矩形ごとに生成されることに起因する。
ステップS102において複数の位置キーが生成された場合は、移動体情報記憶部には、位置キーごとに、当該位置キーに対応付けられて値が記憶される。この場合、同じ位置情報に対する複数の位置キーに対応付けられる値は同じでもよい。同図では、移動体IDが、「id6666」である移動体に関して、三つの位置キーが割り当てられている例が示されている。
なお、図6に示される構成は一例であり、値の構成は適宜変更されてよい。
図5の処理は、移動体情報が受信されるたびに実行される。したがって、複数の移動体のそれぞれに関して、刻々と移動体情報が受信され、図6に示されるような形態で、移動体情報記憶部131に登録される。
一方、移動体情報記憶部131は、KVSエンジンの機能として、登録後所定時間が経過したデータは削除するように設定されている。したがって、移動体情報記憶部131に登録されたデータは、所定時間経過後に削除される。このことは、基本的に、各移動体に関して、最後に受信された位置情報が、移動体情報記憶部131において管理されることを意味する。
なお、図5では、移動体情報の登録処理を説明したが、登録要求受付部122が、施設情報又はエリア情報等の登録要求を受け付けた場合も、基本的に同様の処理手順が実行される。ただし、施設情報に関しては、移動体IDは施設の識別情報である施設IDに置き換えられ、登録先は施設情報記憶部132である。また、エリア情報に関しては、移動体IDはエリアの識別情報であるエリアIDに置き換えられ、登録先はエリア情報記憶部133である。更に、施設情報記憶部132及びエリア情報記憶部133は、登録後所定時間経過したデータの自動削除は行わないように設定されている。施設やエリアは、基本的に、移動体と異なり、位置情報が刻々と変化するものではないからである。
続いて、図5のステップS102の詳細について説明する。図7は、多角形に対する位置キーの生成処理の処理手順の一例を説明するための図である。
ステップS201において、MBR算出部123は、対象の多角形に対するMBRを求める。対象の多角形とは、図5の処理が、ステップS102より呼び出される場合は、移動体情報のポリゴン情報が示す多角形をいう。
図8は、MBRの例を示す図である。図8では、多角形Pgn1に対するMBR50が示されている。
なお、ステップS102では、MBRの各頂点の座標値が算出される。図8の例では、頂点P1〜P4のそれぞれの緯度及び経度が算出される。多角形Pgn1の各頂点の経度の中で最小の経度が、頂点P1及び頂点P3の経度となる。多角形Pgn1の各頂点の経度の中で最大の経度が、頂点P2及び頂点P4の経度となる。多角形Pgn1の各頂点の緯度の中で最大の緯度が、頂点P3及び頂点P4の緯度となる。多角形Pgn1の各頂点の緯度の中で最小の緯度が、頂点P1及び頂点P2の緯度となる。
続いて、位置キー対象矩形特定部124によって、位置キー対象矩形を特定するための処理が実行される。位置キー対象矩形を求めるための処理については、具体例を用いて説明する。
図9は、最小単位矩形を求めるための処理を説明するためのMBRの第一の例を示す図である。すなわち、図9では、単独で位置キー対象矩形を構成する最小単位矩形を求めるための処理が説明される。図9において、MBR51の各頂点の座標値は、図示されている通りである。
ステップS202において、位置キー対象矩形特定部124は、頂点P4の経度と頂点P1の経度との差の最大の桁を求める。最大の桁とは、有効数字が属する桁の中で最大の桁をいう。図9において、頂点P4の経度と頂点P1の経度との差、すなわち、MBR51の幅は、0.00065である。この数値における有効数字の中で、最大の桁は、10000分の1の桁の「6」である。したがって、最大の桁は、10000分の1である。
続いて、位置キー対象矩形特定部124は、頂点P4の緯度と頂点P1の緯度との差の最大の桁を求める(S203)。図9において、頂点P4の緯度と頂点P1の緯度との差、すなわち、MBR51の高さは、0.0006である。当該数値における有効数字は10000分の1の桁の「6」のみである。したがって、最大の桁は、10000分の1であることが求められる。
続いて、位置キー対象矩形特定部124は、求められた二つの最大の桁の中で、大きい方の桁を求める(S204)。以下、大きい方の桁を、「丸め桁」という。双方の桁が同じ場合は、当該桁が丸め桁とされる。大きい方の桁とは、小数点以下の桁であれば、小数点に近い方の桁をいい、小数点以上の桁であれば小数点より遠い方の桁をいう。したがって、例えば、100000分の1と、10000分の1とでは、10000分の1の方が大きい桁であると判定される。なお、図9の例では、双方が10000分の1であるため、10000分の1が丸め桁とされる。
続いて、位置キー対象矩形特定部124は、MBR51の頂点P1の緯度及び経度について、丸め桁以下の有効数字を削除した丸め座標値p1を求める(S205)。丸め桁以下の有効数字を削除するとは、丸め桁以下の有効数字を0に置き換えることをいう。頂点P1の(経度,緯度)は、(0.00115,0.00022)である。したがって、丸め座標値p1は、(0.001,0)となる。続いて、位置キー生成部125は、丸め座標値p1について、位置キーを生成する(S206)。すなわち、(0.001,0)に関して、図4において説明した処理が実行される。その結果、(0.001,0)に対する位置キーが生成される。以下、丸め座標値p1に基づいて生成された位置キーを、「位置キー1」という。
続いて、位置キー対象矩形特定部124は、MBR51の頂点P2の緯度及び経度について、丸め桁以下を削除した丸め座標値p2を求める(S207)。頂点P2の(経度,緯度)は、(0.00115,0.00082)である。したがって、丸め座標値p2は、(0.001,0)となる。続いて、位置キー生成部125は、丸め座標値p2について、位置キーを生成する(S208)。以下、丸め座標値p2に基づいて生成された位置キーを、「位置キー2」という。
続いて、位置キー対象矩形特定部124は、MBR51の頂点P3の緯度及び経度について、丸め桁以下を削除した丸め座標値p3を求める(S209)。頂点P3の(経度,緯度)は、(0.0018,0.00022)である。したがって、丸め座標値p3は、(0.001,0)となる。続いて、位置キー生成部125は、丸め座標値p3について、位置キーを生成する(S210)。以下、丸め座標値p3に基づいて生成された位置キーを、「位置キー3」という。
続いて、位置キー対象矩形特定部124は、MBR51の頂点P4の緯度及び経度について、丸め桁以下を削除した丸め座標値p4を求める(S211)。頂点P4の(経度,緯度)は、(0.0018,0.00082)である。したがって、丸め座標値p4は、(0.001,0)となる。続いて、位置キー生成部125は、丸め座標値p4について、位置キーを生成する(S212)。以下、丸め座標値p4に基づいて生成された位置キーを、「位置キー4」という。
続いて、位置キー対象矩形特定部124は、位置キー1を、処理結果に追加する(S213)。処理結果とは、図7の処理の処理結果をいう。位置キー1が処理結果に追加されるということは、位置キー1が、対象の多角形の位置キーとされたことを意味する。すなわち、図9において、MBR51は、左下頂点を(0.001,0)とし、1辺を1000分の1とする単位矩形に含まれる。一方、仮に、当該単位矩形が、緯度方向及び経度方向のそれぞれについて10分割された場合、すなわち、100個の単位矩形に分割された場合、その結果生成される単位矩形には、MBR51は含まれない。したがって、左下頂点を(0.001,0)とし、1辺を1000分の1とする単位矩形は、MBR51の最小単位矩形である。当該最小単位矩形の位置及び範囲を示すのは、位置キー1である。よって、位置キー1は、対象の多角形の位置キーとされる。
なお、対象の多角形に関して位置キー1が対応付けられるということは、対象の多角形の範囲が、位置キー1が示す単位矩形に丸められることを意味する。対象の多角形の範囲が位置キー1の示す単位矩形によって丸められることにより、後述されるように、高速な検索が可能となる。
続いて、位置キー対象矩形特定部124は、位置キー1と位置キー2とは同じであるか否かを判定する(S214)。MBR51に関しては、丸め座標値p1及び丸め座標値p2は同じである。すなわち、位置キー1と位置キー2とは一致する。したがって、ステップS219に進む。
ステップS219において、位置キー対象矩形特定部124は、位置キー1と位置キー3とは同じであるか否かを判定する。MBR51に関しては、丸め座標値p1及び丸め座標値p3は同じである。すなわち、位置キー1と位置キー3とは一致するはずである。したがって、図7の処理は終了する。
一方、位置キー1と位置キー3とは異なる場合(S219でNo)、位置キー対象矩形特定部124は、位置キー3を処理結果に追加する(S220)。すなわち、位置キー3についても、対象の多角形の位置キーとされる。
また、ステップS214において、位置キー1と位置キー2とは異なる場合(S214でNo)、位置キー対象矩形特定部124は、位置キー2を処理結果に追加する(S215)。すなわち、位置キー2についても、対象の多角形の位置キーとされる。続いて、位置キー対象矩形特定部124は、位置キー1と位置キー3とは同じであるか否かを判定する(S216)。位置キー1と位置キー3とは異なる場合(S216でNo)、位置キー対象矩形特定部124は、位置キー3を処理結果に追加する(S217)。すなわち、位置キー3についても、対象の多角形の位置キーとされる。続いて、位置キー対象矩形特定部124は、位置キー4を処理結果に追加する。すなわち、位置キー4についても、対象の多角形の位置キーとされる。
図7の処理の終了時の処理結果は、例えば、図5のステップS103において利用される。すなわち、当該処理結果に含まれる位置キーごとに、移動体情報が登録される。
ステップS214以降の意義について説明する。ステップS214以降の処理は、一つの多角形に対して、2以上の位置キーが生成されうることを意味する。図9の例では、MBR51の全部は、位置キー1に係る矩形範囲に含まれる。一方、MBRが、図10に示されるような位置及び範囲を有する場合、MBRの全部は、当該MBRに関して生成される位置キー1に係る矩形範囲には含まれない。すなわち、当該MBRを含みうる最小の単位矩形には含まれない。MBRを含みうる最小の単位矩形とは、サイズとしては、当該MBRを含む単位矩形の中で最小の単位矩形であって、MBRが当該単位矩形を跨ぐことによって、当該MBRが当該単位矩形に含まれない大きさの単位矩形をいう。
図10は、一つの多角形に対して複数の位置キーが生成される例を説明するための図である。
図10において、(1)、(2)、及び(3)に示される、MBR52、53、及び54は、サイズ的には、1000分の1の単位矩形に含まれうるが、斯かる単位矩形の境界を跨いでいる。すなわち、MBR52、53、及び54は、複数の1000分の1の単位矩形にその一部が含まれている。このような場合、各MBRは、当該MBRに関して生成される位置キー1に係る単位矩形には含まれない。具体的には、(1)の場合、MBR52の位置キー1が示す範囲は、左下頂点を(0,0)とし、1000分の1を1辺とする単位矩形である。しかしながら、MBR52において、0.001の経度を超える部分は、当該単位矩形には含まれない。
また、(2)の場合、MBR53の位置キー1が示す範囲は、左下頂点を(0.001,0)とし、1000分の1を1辺とする単位矩形である。しかしながら、MBR53において、0.001の緯度を超える部分は、当該単位矩形には含まれない。
また、(3)の場合、MBR54の位置キー1が示す範囲は、左下頂点を(0,0)とし、1000分の1を1辺とする単位矩形である。しかしながら、MBR54において、0.001の経度及び経度を超える部分は、当該単位矩形には含まれない。
そこで、ステップS214以降では、対象のMBRに関して、位置キー1が示す単位矩形に含まれない部分が有る場合に、当該部分が含まれる単位矩形に対する位置キーが処理結果として追加される。すなわち、位置キー1が示す単位矩形の他に、当該単位矩形に含まれない部分を含む単位矩形も、位置キー対象矩形とされる。その結果、複数の単位矩形の組み合わせによって、MBRの範囲が丸められる。
例えば、(1)の例では、ステップS220において、位置キー3が処理結果に追加される。(1)において、位置キー3が示す範囲は、(0.001,0)を左下頂点とし、1000分の1を1辺とする単位矩形である。
また、(2)の例では、ステップS215において、位置キー2が処理結果に追加される。(2)において、位置キー2が示す範囲は、(0.001,0.001)を左下頂点とし、1000分の1を1辺とする単位矩形である。
更に、(3)の例では、ステップS215にいて位置キー2が処理結果に追加され、ステップS217及びS218において、位置キー3及び位置キー4が処理結果に追加される。(3)において、位置キー2が示す範囲は、(0,0.001)を左下頂点とし、1000分の1を1辺とする単位矩形である。位置キー3が示す範囲は、(0.001,0)を左下頂点とし、1000分の1を1辺とする単位矩形である。位置キー4が示す範囲は、(0.001,0.001)を左下頂点とし、1000分の1を1辺とする単位矩形である。
このように、一つのMBR、ひいては、一つの多角形に関して、複数の位置キーが生成されうる。
なお、本実施の形態において、複数の位置キーが生成されうるのは、常に最小単位矩形を、位置キー対象矩形とした場合、当初の多角形の大きさに対して過大な単位矩形が、位置キー対象矩形とされてしまう場合があるからである。
すなわち、本実施の形態において、最小単位矩形の定義は、緯度及び経度の精度ごとに、当該精度幅の緯線及び経線のメッシュ、格子、又は交差によって形成される単位矩形の中で、多角形のMBRに一致する又は該MBRを含む最小の単位矩形である。この定義に従うと、図10の(1)〜(3)のそれぞれのケースにおいて、各MBRに一致する又は各MBRを含む最小の単位矩形は、左下頂点を(0,0)とし、100分の1幅の緯線及び経線のメッシュ等によって形成される単位矩形である。具体的には、1辺が100分の1である単位矩形である。当該単位矩形は、1辺が1000分の1である単位矩形の100個分に相当する。したがって、1辺が100分の1である単位矩形は、各MBRの100倍以上の面積を有することになる。そのような単位矩形は、MBRの範囲、ひいては、多角形の範囲を丸めた範囲として、当初の多角形に対してずれが大きすぎる。
そこで、本実施の形態では、必ずしも最小単位矩形に対する位置キーではなく、MBRを含む最小の大きさの単位矩形であって、MBRが跨る複数の単位矩形のそれぞれに対する位置キーを、元の多角形の位置キーとされる。そうすることで、最小単位矩形のみを用いる場合における問題点を回避しているのである。
続いて、移動体情報の検索処理について説明する。図11は、移動体情報の検索処理の処理手順の一例を説明するためのフローチャートである。
ステップS501において、検索要求受付部127は、移動体情報の検索要求をサービス部11より受け付ける。なお、サービス部11は、例えば、移動体端末20や、非図示の固定端末からの検索要求に応じて、検索要求受付部127に対して検索要求を入力する。
検索要求には、移動体情報の検索範囲を示す情報及び検索の種類が指定される。検索範囲は、移動体のポリゴン情報と同じ形式で指定される。すなわち、検索範囲は、当該検索範囲を示す多角形の各頂点の緯度及び経度の集合によって指定される。
検索の種類とは、検索範囲に対してどのような関係を有する移動体情報を検索するかを示す情報である。本実施の形態では、検索の種類として3通りの指定が可能である。第一の指定は、当該検索範囲が含むもの、すなわち、検索範囲に含まれるものを検索するという指定である。第二の指定は、当該検索範囲が含まれるもの、すなわち、検索範囲を含むものを検索するという指定である。第三の指定は、当該検索範囲と重なるものを検索するという指定である。
続いて、MBR算出部123、位置キー対象矩形特定部124、及び位置キー生成部125等は、検索範囲に指定された多角形に対する位置キーの生成処理を実行する(S502)。当該位置キーの生成処理は、図7において説明した通りである。したがって、位置キーは、1以上生成される。
生成された位置キーは、検索に用いられるキーである。当該位置キーと、移動体情報記憶部131に登録されている被検索対象に対する位置キーとの混同を避けるため、生成された位置キーを、以下、「検索キー」という。
続いて、検索部128は、検索要求に指定された検索の種類に基づいて、処理を分岐させる。検索範囲が含む移動体の検索である場合(S503でYes)、検索部128は、検索範囲が含む移動体の検索処理を実行する(S504)。一方、検索範囲が含まれる移動体の検索である場合(S505でYes)、検索部128は、検索範囲が含まれる移動体の検索処理を実行する(S506)。また、検索範囲と重なる移動体の検索である場合(S507でYes)、検索部128は、検索範囲と重なる移動体の検索処理を実行する(S508)。
ステップS504、S506、又はS508に続いて、検索部128は、結果データを検索結果としてサービス部11に応答する(S509)。結果データとは、ステップS504、S506、又はS508の検索処理において、検索結果の移動体情報が格納されるデータである。その後、サービス部11によって、検索結果が検索要求元の移動体端末20又は非図示の固定端末等に返信される。但し、検索結果がそのまま返信されなくてもよい。サービス部11によって、検索結果の加工が行われたり、当該検索結果に基づいて、基盤部12に対して更なる検索等が行われたりした結果が、検索要求元に返信されてもよい。
続いて、図11のステップS504の詳細について説明する。図12は、検索範囲が含む移動体の検索処理の処理手順の一例を説明するためのフローチャートである。
ステップS521において、検索部128は、図11のステップS502において生成された検索キーのうちの一つを処理対象とする。以下、処理対象とされた検索キーを「対象検索キー」という。続いて、検索部128は、対象検索キーに前方一致する位置キーを、移動体情報記憶部131より検索する(S522)。なお、対象検索キーに前方一致する位置キーとは、対象検索キーの全てを、前方からの一部又は全部に含む位置キーである。したがって、前方一致には、完全一致も含まれる。
対象検索キーに前方一致する位置キーは、対象検索キーに対応する単位矩形に一致する、又は当該単位矩形に含まれる単位矩形に対する位置キーに該当する。この点について図を用いて説明する。
図13は、検索キーとの前方一致の意義を説明するための図である。同図では、検索キーに対応する緯度及び経度が、(35.561,139.122)であり、移動体情報記憶部131に記憶されている移動体の位置キーに対応する緯度及び経度が(35.5612,139.1223)である例が示されている。この場合、検索キーが示す単位矩形は、図中太線で囲まれた単位矩形c1に相当する。一方、移動体の位置キーが示す単位矩形は、図中の黒い矩形で示された単位矩形c2に相当する。同図より明らかなように、単位矩形c1は単位矩形c2を含む。
また、(35.561,139.122)を位置キー(すなわち検索キー)に変換すると、「++103395152621」となる。(35.5612,139.1223)を位置キーに変換すると、「++10339515262132」となる。そして、当該位置キーは、当該検索キーに前方一致する。
このように、位置キーが検索キーに前方一致する場合、当該位置キーが示す単位矩形は、当該検索キーが示す単位矩形に含まれるか又は一致することになる。位置キーのこのような特性によって、本実施の形態では、検索範囲が含む可能性の有る移動体を高速に検索することができる。
換言すれば、本実施の形態では、或る範囲に含まれる移動体を検索する際に、キーの前方一致による高速な検索を可能とするために、緯度及び経度は、位置キーの形式に変換されて、KSVのキーとされるのである。仮に、緯度及び経度の順に単純に接続された文字列が位置キーとされた場合、上記のような前方一致による高速な検索は困難である。緯度及び経度の順に単純に接続された場合の文字列は、図13の例において、検索キーは、「+35561+139122」となる。また、移動体の位置キーは、「+355612+1391223」となる。当該位置キーは、当該検索キーに前方一致しない。また、KVSの特性上、「+35561*+139122*」といった正規表現によるキーの検索を行うのは困難である。なお、ここで、「*」は、ワイルドカードを示す。
なお、上記したように、単位矩形の大きさは、当該単位矩形の左下頂点を示す緯度及び経度の精度に依存する。単位矩形c1に関しては、左下頂点の緯度及び経度が、1000分の1度単位である。したがって、単位矩形c1は、1辺が1000分の1度である矩形領域に相当する。一方、単位矩形c2に関しては、左下頂点の緯度及び経度が、10000分の1度単位である。したがって、単位矩形c2は、1辺が10000分の1度である矩形領域に相当する。すなわち、位置キーの文字数が多くなればなるほど、当該位置キーに対応する単位矩形は小さいことを意味する。
続いて、検索部128は、検索された位置キーに対する値として記憶されている移動体情報を、移動体情報記憶部131より取得する(S523)。続いて、検索部128は、検索範囲に指定されたポリゴン情報が示す多角形が、取得された移動体情報に含まれているポリゴン情報が示す多角形を含むか否かを判定する(S524)。当該判定は、公知の幾何学的演算によって行われればよい。検索範囲に指定されたポリゴン情報が示す多角形が、取得された移動体情報に含まれているポリゴン情報が示す多角形を含む場合、当該移動体情報は、結果データに含められる。
すなわち、検索キーと位置キーとの包含関係は、必ずしも、検索キーに係る多角形と、位置キーに係る多角形との包含関係に一致しない。検索キーに対応する単位矩形は、検索範囲の多角形を丸めた範囲であり、位置キーに対応する単位矩形は、移動体の多角形を丸めた範囲であるからである。したがって、ステップS522において検索された位置キーに対応付けられているポリゴン情報の示す多角形は、必ずしも検索範囲に指定されたポリゴン情報の示す多角形に含まれているとは限らない。したがって、多角形同士の包含関係の判定については、双方のポリゴン情報に基づく幾何学的演算が必要とされる。但し、本実施の形態では、演算対象とされるポリゴン情報の数が、ステップS522によって、高速に絞り込まれる。換言すれば、検索範囲に含まれる可能性が全く無い移動体に関しては、ステップS522において、検索候補から除去される。したがって、ステップS524における演算量を削減することができる。
ステップS521〜S524は、図11のステップS502において生成された全ての検索キーについて実行される(S525)。続いて、検索部128は、結果データを返却する(S526)。
なお、図12の処理を、図によって概念的に示すと、例えば、図14に示される通りになる。
図14は、検索範囲が含む移動体の検索処理を説明するための図である。図14において、(1)は、検索範囲の多角形に対するMBR55を示す。(2)において網掛けが施されている領域は、MBR55に対する最小単位矩形である。すなわち、当該最小単位矩形は、検索キーが示す単位矩形である。検索キーと前方一致の位置キーが検索されることにより、当該単位矩形に含まれる多角形に対する位置キーが検索される。更に、(3)では、検索キーが示す単位矩形が、1桁高い精度の単位矩形によって分割された状態が示されている。すなわち、検索キーと前方一致する位置キーの中には、(3)に示されるように分割された単位矩形に対する位置キーも含まれる。すなわち、分割された単位矩形に含まれる多角形も検索される。なお、更に精度の高い単位矩形に対する位置キーが存在する場合は、斯かる位置キーも検索されるが、図14では便宜上省略されている。
続いて、図11のステップS506の詳細について説明する。図15は、検索範囲が含まれる移動体の検索処理の処理手順の一例を説明するためのフローチャートである。
ステップS531において、検索部128は、図11のステップS502において生成された検索キーのうちの一つを処理対象とする。以下、処理対象とされた検索キーを「対象検索キー」という。続いて、検索部128は、対象検索キーに完全一致する位置キーを、移動体情報記憶部131より検索する(S532)。なお、検索部128は、位置キーの検索に使用された対象検索キーを、使用済みの検索キーとして、例えば、メモリ装置103に記憶しておく。
続いて、検索部128は、検索された位置キーに対する値として記憶されている移動体情報を、移動体情報記憶部131より取得する(S533)。続いて、検索部128は、検索範囲に指定されたポリゴン情報が示す多角形が、取得された移動体情報に含まれているポリゴン情報が示す多角形に含まれるか否かを判定する(S534)。当該判定は、公知の幾何学的演算によって行われればよい。検索範囲に指定されたポリゴン情報が示す多角形が、取得された移動体情報に含まれているポリゴン情報が示す多角形に含まれる場合、当該移動体情報は、結果データに含められる。
続いて、検索部128は、対象検索キーが、「++」の2文字のみであるか否かを判定する(S535)。対象検索キーが、「++」以外の文字を含む場合(S535でNo)、検索部128は、対象検索キーの末尾から2文字を削除する(S536)。その結果、対象検索キーに係る単位矩形は、1桁大きな単位矩形となる。例えば、これまで対象検索キーに対応する単位矩形が10000分の1の単位矩形であった場合、1000分の1の単位矩形となる。以下における対象検索キーは、末尾の2文字が削除された検索キーである。
続いて、検索部128は、対象検索キーの使用履歴の有無を判定する(S537)。例えば、対象検索キーが、使用済みの検索キーとしてメモリ装置103に記憶されているか否かが判定される。対象検索キーについて使用履歴が無い場合(S537でNo)、対象検索キーに関して、ステップS532以降が繰り返される。すなわち、対象検索キーが「++」のみとなるまで、末尾から2文字ずつ削除されつつ、対象検索キーと完全一致する位置キーの検索等が行われる。
例えば、ステップS532〜S537では、図16に示されるような処理が実行される。
図16は、検索範囲が含まれる移動体の検索処理を説明するための図である。図16において、(1)は、検索範囲の多角形に対するMBR55を示す。(2)において網掛けが施されている領域は、MBR55に対する最小単位矩形である。すなわち、当初の対象検索キーが示す単位矩形である。「当初の」とは、末尾が削除される前のという意味である。したがって、最初にステップS532が実行される際は、当該単位矩形に含まれる多角形に対する位置キーが検索される。
(3)において網掛けが施されている領域は、末尾が2文字以上削除された対象検索キーが示す単位矩形領域である。したがって、2回目以降にステップS532が実行される際は、当該単位矩形領域に含まれる多角形に対する位置キーが検索される。
すなわち、検索範囲に係る多角形が、或る多角形に含まれるということは、換言すれば、当該或る多角形は、当該検索範囲に係る多角形を含むということである。そうすると、図13において説明したように、少なくとも当該或る多角形に対する位置キーは、検索範囲に係る多角形に対する位置キーに対して前方一致するはずである。したがって、ステップS532〜S537では、当初の対象検索キーに前方一致する位置キーを検索するために、対象検索キーの末尾から2文字ずつ削除された文字列と完全一致する位置キーが検索されるのである。
しかし、ステップS532において検索された位置キーに対応付けられているポリゴン情報の示す多角形は、必ずしも検索範囲に指定されたポリゴン情報の示す多角形が含まれる多角形であるとは限らない。したがって、多角形同士の包含関係の判定については、ステップS534において、双方のポリゴン情報に基づく幾何学的演算が必要とされる。但し、本実施の形態では、演算対象とされるポリゴン情報の数が、ステップS532によって、高速に絞り込まれる。したがって、ステップS534における演算量を削減することができる。
ステップS532〜S537は、図11のステップS502において生成された全ての検索キーについて実行される(S528)。続いて、検索部128は、結果データを返却する(S539)。
続いて、図11のステップS506の詳細について説明する。図17は、検索範囲と重なる移動体の検索処理の処理手順の一例を説明するためのフローチャートである。
移動体が検索範囲と重なる場合とは、移動体の形状を示す多角形の一部又は全部が、検索範囲の多角形の一部又は全部と重なる場合をいう。すなわち、移動体の形状を示す多角形が検索範囲の多角形を含む場合や、移動体の形状を示す多角形が検索範囲の多角形に含まれる場合等も、移動体が検索範囲と重なる場合に含まれる。したがって、図17の処理内容は、基本的に、図12と図15とを合わせたものとなっている。
すなわち、ステップS541〜S544は、図12のステップS521〜S524と同じである。続いて、ステップS545以降においては、図15のS535以降と同様の処理が実行される。
したがって、検索範囲と重なる可能性の有る移動体の候補を、ステップS542又はS548において高速に絞りことができる。その結果、ステップS544における演算量を削減することができる。
上述したように、本実施の形態によれば、移動体の形状を示す多角形のMBRを含む最小単位矩形、又は最小単位矩形と同じ大きさであって、当該MBRの一部が含まれる単位矩形を示す位置キーが、移動体情報に対するキーとしてKVSに登録される。その結果、位置キー同士の前方一致又は完全一致によって、包含関係又は重畳関係を有する可能性の有る多角形を高速に検索することができる。したがって、実用的な検索性能を確保しつつ位置情報を管理することができる。
なお、本実施の形態では、説明の便宜上、移動体情報が登録及び検索の対象とされたが、位置及び範囲を示すポリゴン情報を含む情報であれば、登録又は検索の対象とされる情報は、所定のものに限定されない。
また、本実施の形態では、位置キーの形式は、経度、緯度の順に緯度及び経度の各桁が交互に配列される例を示したが、経度と緯度との順が逆であってもよい。
また、必ずしも、緯度及び経度の全ての桁が交互に配列されなくてもよい。すなわち、検索時の精度(検索キーの精度)より上位の桁に関しては、交互に配列されなくてもよい。例えば、図13の例では、検索キーの精度は、小数点以下第3位である。したがって、小数点以下第3位より上位の桁に関しては、経度文字列と緯度文字列とが順番に配列されてもよい。具体的には、図13の例によればこの場合の検索キーは、「+3556+1391221」となる。また、移動体の位置キーは、「+3556+139122132」となる。これらは、いずれも、小数点以下第3位以下に関して、緯度文字列と経度文字列の文字を交互に配列したものである。この場合、当該位置キーは、当該検索キーに前方一致する。
上記より、本実施の形態の位置キーは、緯度及び経度のそれぞれの全部又は最下位桁からの一部の桁の上位から順に同じ桁を1桁ずつ交互に配列した文字列ということになる。ここで、最下位桁からの一部の桁とは、直前の例において、小数点以下第3位以下の桁をいう。
また、本実施の形態では、緯度の範囲は、+90度(北緯)〜−90度(南緯)であるとし、経度の範囲は、+180度(東経)〜−180度(西経)であるとした。しかし、緯度の範囲は、0度から180度とし、経度の範囲は、0度から360度としてもよい。この場合、符号を示す文字(+又は−)は、位置キーの先頭の2文字に含まれなくてもよい。
また、本実施の形態において、位置キーは、緯度及び経度の値を直接的に利用する例を説明したが、例えば、4分木によって2次元空間を再帰的又は階層的に分割することにより、多角形に対する位置キーが生成されてもよい。
図18は、4分木による位置キーの生成方法の一例を説明するための図である。図18において、黒塗りされている領域が、多角形のMBRが含まれる最小単位矩形であるとする。この場合、4分木によれば、当該単位矩形には、「110000」が割り当てられる。したがって、文字列「110000」を当該領域に含まれる多角形に対する位置キーとすることができる。
すなわち、直線Lx1は、X軸方向の0からmaxXの範囲を2等分する直線である。2等分された範囲のそれぞれには、「0」と「1」とが付与される。直線Lx2は、直線Lx1によって2等分され、「1」が付与された範囲を2等分する直線である。直線Lx3は、直線Lx2によって2等分され、「0」が付与された範囲を2等分する直線である。Y方向における直線Lx1、Lx2、及びLx3についても同様である。
以上の結果、黒塗りされた単位矩形に対する位置キーは、「110000」となる。当該値は、結果的に、X方向の座標値とY方向の座標値とを同じ桁ずつ交互に配列したものに相当する。したがって、4分木によって求められる位置キーを用いても、本実施の形態をそのまま適用することができる。
なお、4分木を用いる場合、分割の再帰数が一致する直線群によって形成される矩形が、単位矩形となる。具体的には、図18において、Lx1とLy2とによって形成される矩形は、最大の単位矩形である。Lx2とLy2とで形成される矩形は、2番目の大きさの単位矩形である。なお、Lx1又はLy1によって2等分され、「0」が付与された範囲に関しても、Lx2又はLy2によって分割されるが、図中では省略されている。
また、4分木は、X方向及びY方向のそれぞれを再帰的に2等分する方法であるが、X方向及びY方向のそれぞれが再帰的にN等分されてもよい。ここで、Nは1以上の整数である。例えば、再帰的に10等分されて、多角形のMBRが含まれる単位矩形が求められてもよい。以下、4分木も含めて、X方向及びY方向のそれぞれを再帰的にN等分する方法を、便宜上、N2分木という。
N2分木を用いる場合、2次元空間おけるX方向及びY方向の最大値、すなわち、図18におけるmaxXやmaxYの値は、必ずしも、実際の経度又は緯度の最大値でなくてもよい。N2分木に適した値が最大値とされてもよい。例えば、4分木であれば、2nの値が最大値とされてもよい。この場合、実際には、緯度及び経度の範囲に多角形は存在することになるが、位置キーの桁数が多くなるだけで、本実施の形態の有効性に影響は無い。
N2分木による位置キーの生成方法は、本実施の形態の変形例ではなく、本実施の形態を一般化したものであるといえる。例えば、X方向、すなわち、経度方向において、0〜1000の範囲を有し、Y方向、すなわち、緯度方向において0〜1000の範囲を有する2次元座標空間を用いる。当該2次元座標空間のX方向及びY方向を再帰的に10等分することにより形成される単位矩形のうち、多角形のMBRに一致する又はMBRを含む最小の単位矩形が特定される。当該単位矩形及び当該単位矩形を含む全ての単位矩形に対してX方向及びY方向のそれぞれに関して分割数に応じて付与された値を、大きな単位矩形に対応する値から順に、X方向及びY方向のいずれかを先として交互に配列して生成された文字列は、実際の緯度及び経度に即した位置キーとなる。但しこの場合は、経度の範囲を、0〜360度とし、緯度の範囲を0〜180度とした場合に対応する。
なお、分割数に応じて付与された値とは、10等分される場合、0〜9である。すなわち、再帰的に分割されるたびに、当該分割によって形成された各単位矩形に対して、X方向及びY方向のそれぞれについて、0〜9が付与される。
したがって、本実施の形態において、位置キー対象矩形特定部124は、緯度及び経度の範囲を含む2次元座空間をX方向及びY方向に同じ分割数ずつ再帰的に等分するたびに形成される単位矩形の中で、前記多角形の最小外接矩形に一致する又は該最小外接矩形を含む最小の単位矩形を特定するといえる。また、位置キー生成部125は、特定された前記単位矩形及び当該単位矩形を含む全ての単位矩形に対してX方向及びY方向のそれぞれに関して分割数に応じて付与された値を、大きな単位矩形に対応する値から順に、X方向及びY方向のいずれかを先として交互に配列して一つの文字列を生成するといえる。
また、本実施の形態では、緯度経度の2次元空間座標における範囲を表現するために位置キーを作成したが、1次元空間や3次元空間、ひいては、N次元空間においても同様の仕組みを用いることが出来る。2次元空間では単位矩形を用いて検索の高速化を図ったが、1次元空間では単位直線、3次元空間では単位3次元矩形を採用すればよい。
1次元空間の例としては、ある範囲を持った時間を扱うことが考えられる。例えば、ある時間帯に動作(移動、稼働など)を続けていた移動体の属性情報を登録したり検索したりする際、その時間範囲を含む最小単位時間をキーとすることで、本実施の形態と同様に、検索性能を確保することが出来る。
図19は、1次元空間を採用した場合の例を示す図である。時間範囲66は、2012年3月28日9時31分24秒から、2012年3月28日9時37分46秒までを示す。最小単位時間を10分単位とすると、時間範囲66を含む最小単位時間67は、2012年3月28日9時30分である。この値を「201203280930」などと表現し、登録又は検索のためのキーとして用いてもよい。
3次元空間の例としては、緯度及び経度に対して高度を加え、3次元のポリゴン情報を扱うことが考えられる。例えば、高さ情報を有した位置情報を登録したり検索したりする際、その範囲を含む最小単位3次元矩形(すなわち、最小単位直方体)をキーとすることで、本実施の形態と同様に、検索性能を確保することが出来る。
図20は、3次元空間を採用した場合の例を示す図である。3次元のポリゴン情報から最小外接3次元矩形77(又は最小外接直方体77)を導出し、最小外接3次元矩形77の頂点q1における緯度、経度、高度の3つの値に対して、桁合わせ等で所定形式に変換し、最上位から順に取得することで最小外接3次元矩形77の位置キーを求める。その上で、上述の「丸め桁」と同じ考え方を用いて、最小単位3次元矩形78とその位置キーを導出し、登録又は検索のためのキーとして用いてもよい。
このように次元の数が変化しようとも、同様の手法にてキーを作成することで、検索性能を確保しつつ、範囲を持つ情報の管理が可能になる。
なお、本実施の形態において、移動体情報受信部121又は登録要求受付部122は、受付部の一例である。位置キー生成部125は、生成部の一例である。移動体情報記憶部131、施設情報記憶部132、又はエリア情報記憶部133は、記憶部の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。