(57)【特許請求の範囲】
【請求項１】
コンピュータが、
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
検索された領域の情報を出力する
ことを特徴とする、領域検索方法。
【請求項２】
前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに前記記憶部に記憶された情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノードを検索する処理において、前記取得した距離を範囲内に含むノードを検索することを特徴とする、請求項１記載の領域検索方法。
【請求項３】
前記距離を取得する処理において、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得し、
前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されていることを特徴とする、請求項２記載の領域検索方法。
【請求項４】
前記距離を取得する処理において、前記前回検索された領域と前記所定の位置との間の距離を、前記領域の次元軸に沿った方向ごとに取得し、
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、全ての次元軸に沿った方向で前記取得した各方向の距離よりも大きい範囲を持つノードを検索することを特徴とする、請求項２または請求項３記載の領域検索方法。
【請求項５】
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、前記複数のノードのうちの葉ノードから上位のノードに向かって順に、前記取得した距離を範囲内に含むか否かを判断し、
判断の結果、前記取得した距離を範囲内に含む場合、当該ノードを、前記検索されたノードとして決定することを特徴とする、請求項２〜４のいずれか１項記載の領域検索方法。
【請求項６】
コンピュータに、
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
検索された領域の情報を出力する、
処理を実行させることを特徴とする、領域検索プログラム。
【請求項７】
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得する距離取得部と、
複数のノードそれぞれに設定される閾値に関する情報を記憶する記憶部と、
前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するノード検索部と、
前記インデックス情報を用いて、前記ノード検索部により検索されたノードから前記所定の位置を含む領域を検索する領域検索部と、
前記領域検索部により検索された領域の情報を出力する出力部と、をそなえることを特徴とする、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、領域検索方法，領域検索プログラム，および情報処理装置に関する。
【背景技術】
【０００２】
近年、ＧＰＳ（Global Positioning System）が搭載された携帯電話等の普及により、端末の位置情報を取得及び送信できるようになり、この位置情報を利用した様々なサービスが増加している。位置情報を利用したサービスの例としては、ある店舗の周辺（領域）に端末を保持した使用者が移動したときに、サービス提供者がその端末に対して店舗の情報を通知するサービス等がある。
【０００３】
今後、位置情報を通知する端末やその位置情報を利用するサービスの増加に伴い、サービスを提供するサーバ等の情報処理装置において位置情報を検索する処理量も増加する。従って、情報処理装置には、通知される位置情報がどの領域に含まれるかを高速に判定することが求められる。
空間内に存在する大量のデータから条件に合ったデータを高速に検索するために、情報処理装置では、インデックスを用いたデータ管理方式が利用される。インデックスを用いたデータ管理方式には、例えば、多次元データを検索する場合に用いられるＲ−Ｔｒｅｅ（Ｒツリー）を利用した方式がある。
【０００４】
Ｒツリーを利用したデータ管理について、図２７を参照して説明する。図２７は、Ｒツリーで管理する領域データ及び矩形領域の例を示す図であり、（ａ）は領域データとノードとの位置関係の一例を示す図、（ｂ）は空間インデックスツリーの一例を示す図である。
図２７（ａ）及び（ｂ）に示すように、Ｒ１は、中間ノードである子ノードＲ２及びＲ３の矩形領域を全て含む矩形領域であり、Ｒ２は、Ｒ４及びＲ５の矩形領域を全て含む矩形領域であり、Ｒ３は、Ｒ６及びＲ７の矩形領域をすべて含む矩形領域である。また、最下段のＲ４〜Ｒ７は葉ノードであり、内部に領域データを含む矩形領域である。すなわち、Ｒ１はＲ２のインデックス情報となり、Ｒ２はＲ４のインデックス情報となっている。
【０００５】
例えば情報処理装置において、条件に合ったデータを検索するためにかかるインデックス情報を用いて該当範囲を検索する場合、情報処理装置は、ルートノードであるＲ１の２つの子ノードＲ２及びＲ３から検索範囲が重なるノードを選択する。重なる部分を持つノードは、再帰的に検索範囲が重なるノードを選択し、最終的に葉ノードの中から検索範囲内にある領域データの情報を選択する。情報処理装置は、検索範囲と重なる全ての葉ノードから領域データの情報を選択し終えると、選択した領域データの情報を検索結果として出力し、検索を終了する。このように、情報処理装置は、検索範囲が重なる子ノードに絞って検索を行なうことで、全てのノードのノード領域を確認せずに所望の情報を取得でき、検索を高速化することができる。
【０００６】
なお、関連する技術として、親ノードの矩形の位置に基づいて子ノードの矩形の位置を相対的に表現することで、位置表現コストを削減する技術がある。
また、他の関連する技術として、同一位置に複数の異なる情報提供エリアを定義するために、Ｒツリーにより候補となるエリアを高速に検索し、検索されたエリアから改良された４分木データを利用してエリアを特定し、特定されたエリアに関連するサービスや情報を提供する技術がある。
【０００７】
さらに、検索処理を高速且つ小容量で実施するために、ルートノードから順に、検索範囲の代表点をスカラ値に写像した検索符号値と、各ノードの空間領域のキー値とを照合することで、検索範囲の代表点が含まれる空間領域と、その空間領域からリンクするオブジェクトとを抽出する技術がある。この技術では、空間データ管理装置は、一巡ごとに検索範囲から辿った空間領域を除外した領域の代表点を新たな検索符号値として更新し繰り返すことで、検索範囲に交わるオブジェクトを検索する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２００３４２号公報
【特許文献２】国際公開ＷＯ２００６／０５９６２９号パンフレット
【特許文献３】特開２０１０−１６０５９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、インデックスを用いた従来の範囲検索では、検索時間を要してしまうという問題があった。すなわち、Ｒツリーを利用したデータ管理方式では、情報処理装置は、検索操作を実行する都度、ルートノードから検索を開始するので、検索を常時ｌｏｇＮオーダの回数実行することになり、検索時間を要してしまう。
また、上述した関連する各技術においても、検索操作を実行する都度、ルートノードから検索を開始するので、検索時間を要してしまうことには変わりがない。
【００１０】
１つの側面では、本発明は、インデックスを用いた範囲検索の検索時間を短縮することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１１】
本件の領域検索方法は、コンピュータが、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、検索された領域の情報を出力するものである。
【００１２】
また、本件の領域検索プログラムは、コンピュータに、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、検索された領域の情報を出力する、処理を実行させるものである。
【００１３】
さらに、本件の情報処理装置は、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得する距離取得部と、複数のノードそれぞれに設定される閾値に関する情報を記憶する記憶部と、前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するノード検索部と、前記インデックス情報を用いて、前記ノード検索部により検索されたノードから前記所定の位置を含む領域を検索する領域検索部と、前記領域検索部により検索された領域の情報を出力する出力部と、をそなえるものである。
【発明の効果】
【００１４】
一実施形態によれば、インデックスを用いた範囲検索の検索時間を短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】一実施形態としての領域検索システムの構成例を示す図である。
【図２】本実施形態に係る領域検索サーバのハードウェア構成例を示す図である。
【図３】本実施形態に係る領域インデックスで管理する領域データ及び矩形領域の一例を示す図であり、（ａ）は領域データとノードとの位置関係の一例を示す図、（ｂ）は空間インデックスツリーの一例を示す図である。
【図４】本実施形態に係る領域インデックスにおけるルートノードの情報の一例を示す図である。
【図５】本実施形態に係る領域インデックスにおける中間ノードの情報の一例を示す図である。
【図６】本実施形態に係る領域インデックスにおける葉ノードの情報の一例を示す図である。
【図７】本実施形態に係る領域データ情報のデータ構造の一例を示す図である。
【図８】本実施形態に係る前回位置情報のデータ構造の一例を示す図である。
【図９】本実施形態に係るノード範囲情報を説明する図であり、（ａ）はノードの位置関係の一例を示す図、（ｂ）は空間インデックスツリーの一例を示す図である。
【図１０】本実施形態に係るノード範囲情報のデータ構造の一例を示す図であり、（ａ）はノード範囲情報の一例を示す図、（ｂ）は各ノードのノード範囲の一例を示す図である。
【図１１】本実施形態に係るノード範囲情報のデータ構造の一例を示す図であり、（ａ）はノード範囲情報のデータ構造の一例を示す図、（ｂ）は各ノードのノード範囲の一例を示す図である。
【図１２】本実施形態に係る領域検索要求の内容の一例を示す図である。
【図１３】本実施形態に係る領域検索応答の内容の一例を示す図である。
【図１４】本実施形態に係る検索開始ノード決定部の説明における前回位置と今回位置との位置関係の一例を示す図である。
【図１５】本実施形態に係る移動距離とノード範囲との位置関係の一例を示す図である。
【図１６】本実施形態に係る移動距離及び空間インデックスツリーの一例を示す図である。
【図１７】本実施形態に係るリクエスト受付処理の手順の一例を示すフローチャートである。
【図１８】本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。
【図１９】本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。
【図２０】本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。
【図２１】本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。
【図２２】本実施形態に係る領域データ追加処理の手順の一例を示すフローチャートである。
【図２３】本実施形態に係る領域データ追加処理の手順の一例を示すフローチャートである。
【図２４】本実施形態に係るノード範囲設定処理の手順の一例を示すフローチャートである。
【図２５】図２０及び図２１に示すノード範囲情報及び検索開始ノード決定部を用いた領域検索処理に対する対比例としての領域検索処理の手順の一例を示すフローチャートである。
【図２６】本実施形態に係るノード範囲情報及び検索開始ノード決定部を用いた領域検索処理と他の領域検索処理との領域検索時間の比較結果の一例を示す図である。
【図２７】Ｒツリーで管理する領域データ及び矩形領域の一例を示す図であり、（ａ）は領域データとノードとの位置関係の一例を示す図、（ｂ）は空間インデックスツリーの一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して実施の形態を説明する。
〔１〕一実施形態
〔１−１〕領域検索システムの構成例
図１は、一実施形態としての領域検索システム１の構成例を示す図であり、図２は、領域検索システム１のハードウェア構成例を示す図である。図１に例示するように、領域検索システム１は、少なくとも１つ（図１では１つ）の端末装置６と、各端末装置６と通信可能な領域検索サーバ２と、をそなえる。
【００１７】
端末装置（領域問合せ装置）６は、領域検索サーバ２に対して領域検索要求を送信して、領域検索サーバ２から領域検索応答を受信することで、所定の位置が含まれる領域の情報を領域検索サーバ２に問合せるものである。端末装置６としては、携帯電話やＰＤＡ（Personal Digital Assistant）等の情報端末であっても良いし、ＰＣ等のコンピュータであっても良く、少なくとも位置情報を取得可能であり、領域検索サーバ２と通信可能な装置であれば良い。
【００１８】
ここで、領域検索要求は、端末装置６の位置情報がいずれの領域に含まれるかを領域検索サーバ２に問合せる要求である。なお、位置情報は、例えば端末装置６が存在する緯度、経度の情報であるが、空間内の範囲を示す情報であっても良い。
また、領域検索要求には、端末装置６の位置情報とともに、例えば端末装置６が持つＧＰＳ受信機等のセンサーのＩＤ（IDentification）（以下、センサーＩＤという）等の識別ＩＤが含まれる。なお、識別ＩＤは、センサーＩＤに限定されるものではなく、領域検索を要求する端末装置６の装置ＩＤであっても良いし、端末装置６を利用するユーザやグループ等の固有のＩＤや、携帯電話の携帯電話番号等の情報であっても良い。
【００１９】
領域検索応答は、領域検索要求に対応する応答であり、領域の検索結果である結果リストを含む。
領域検索サーバ（情報処理装置）２は、図１に例示するように、通信インタフェース３、記憶部４、及び、制御部５をそなえる。また、領域検索サーバ２は、図２に例示するように、ハードウェア構成として、記憶装置４ａ、メモリ４ｂ、ＣＰＵ（Central Processing Unit）５ａ、入力装置７、出力装置８、及び、読取装置９をそなえる。なお、領域検索サーバ２としては、ＰＣやサーバ等のコンピュータが挙げられる。
【００２０】
通信インタフェース３は、各端末装置６との間で通信を確立して、各端末装置６から領域検索要求を受信したり、各端末装置６に対して領域検索応答を送信したりするインタフェースである。なお、通信インタフェース３は、例えば、ＬＡＮ（Local Area Network）やインターネット等と接続するネットワークインタフェースカードや、無線アンテナを有する無線通信部等である。すなわち、本実施形態に係る領域検索サーバ２は、有線又は無線ネットワークを介して各端末装置６と通信可能に構成される。
【００２１】
記憶装置４ａは、例えばＨＤＤ（Hard Disk Drive）等の磁気ディスク装置やＳＳＤ（Solid State Drive）等の半導体ドライブ装置等の各種デバイスであり、種々のデータやプログラム等を格納するハードウェアである。
メモリ４ｂは、種々のデータやプログラムを一時的に格納する記憶装置であって、ＣＰＵ５ａがプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。なお、メモリ４ｂとしては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリが挙げられる。本実施形態においては、記憶装置４ａ及びメモリ４ｂの少なくとも一方は、領域検索サーバ２において用いられる種々の情報を記憶する記憶部４を構成する。
【００２２】
ＣＰＵ５ａは、種々の制御や演算を行なう処理装置であり、記憶装置４ａ、メモリ４ｂ又は図示しないＲＯＭ（Read Only Memory）等に格納されたプログラムや、後述する読取装置９により記録媒体から読み取られたプログラムを実行することにより、種々の機能を実現する。本実施形態においては、領域検索サーバ２における種々の処理を行なう後述する制御部５としての機能が、ＣＰＵ５ａにより実現される。なお、ＣＰＵ５ａに限らず、制御部５としての機能は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）等の集積回路、ＭＰＵ（Micro Processing Unit）等の電子回路により実現されても良い。
【００２３】
入力装置７及び出力装置８は、それぞれユーザインタフェースであり、管理者等により、領域検索サーバ２の種々の制御を行なうために用いられる。例えば、領域検索サーバ２では、入力装置７から入力された情報に基づいて、プログラムの動作等の制御が行なわれ、制御結果や種々のメッセージ等の情報が出力装置８に提示される。なお、入力装置７としてはキーボードやマウス等が挙げられ、出力装置８としてはモニタやプリンタ等が挙げられる。
【００２４】
読取装置９は、制御部５からの制御に応じて、光ディスク（記録媒体）に記録されたデータやプログラム等の情報の読み取りを行なう装置である。
〔１−２〕領域検索サーバの説明
次に、簡単に、本実施形態に係る領域検索サーバ２について説明する。
従来のＲツリーを用いた領域の検索では、領域検索サーバにより、領域検索を行なうたびに、毎回ツリーの最上位ノードから検索が実行されるため、ノードの深さに比例する比較処理が発生する。例えば、領域検索サーバでは、領域検索の際に、検索対象の位置情報を含む非葉ノードの子ノード数の総和に等しい回数の子ノードの範囲の重なり判定を行なうための計算量が発生する。さらに、領域検索サーバでは、検索対象の位置情報が重なる葉ノードが持つ領域データの情報の総和に等しい回数の、領域データが検索対象の位置情報を含むか否かの判定を行なうための計算量が発生する。
【００２５】
領域検索サーバが検索を行なう際に、あるエリアに領域データがまばらな（領域データが「疎」である）場合については、比較的短時間に、位置情報を含む領域データが無いと判断でき、検索を終了することができる。
一方、領域検索サーバは、あるエリアに領域データが多い（領域データが「密」である）場合については、領域データや中間ノードが重なり合っているため、多くの領域データ及びノードに係る検索が発生する。例えば、検索しようとする領域が集まるエリアとは、繁華街や交通機関等、人や物が集中するエリアであり、領域検索要求として領域検索サーバに与えられる位置情報も、このようなエリアに位置することが多い。従って、従来のＲツリーを用いた領域の検索では、検索時間を効率的に削減することが困難であった。
【００２６】
そこで、本実施形態に係る領域検索サーバ２（制御部５）は、空間インデックスツリーを用いてある地点（所定の位置）がどの領域データに含まれるかを判定する際に、以下の（１）〜（３）の処理を行なうことで、領域検索の検索時間を短縮するものである。
（１）端末装置６（センサーＩＤ）ごとに前回検索できた領域を、後述する前回位置情報４３として記憶部４に記憶しておき、次回検索を行なう際には、前回検索できた領域の近傍のノードをボトムアップ的に探索する。
【００２７】
（２）領域が重複する領域データについて、重複する互いの領域ＩＤを重複領域として、記憶部４の後述する領域データ情報４２に記憶することで、重複する領域データが異なる葉ノードに含まれる場合であっても、ツリーの全解探索が実行されることを防ぐ。
ここで、上記（１）及び（２）を実行する場合、前回検索できた領域からの端末装置６の移動距離が比較的短距離である場合には、領域検索サーバ２は、重複領域の探索や前回検索できた領域の近傍のノードの探索によって、検索時間の短縮を図ることができる。
【００２８】
一方、移動距離が比較的長距離（中距離以上）である場合には、検索対象の位置情報が、前回検索できた領域に含まれず、且つ、比較的遠くのノードの領域データに含まれる可能性が高い。従って、領域検索サーバ２は、上記（１）において前回検索できた領域からボトムアップ的に探索を行なっても、位置情報を含む領域データを発見しないままツリーのルートノードに到達してしまい、ルートノードからトップダウンに探索を行なうことになる。このため、移動距離が比較的長距離である場合、領域検索サーバ２は、上記（１）及び（２）を実行しても、従来のＲツリーによる検索と同程度の性能しか得られない。
【００２９】
そこで、領域検索サーバ２（制御部５）は、次の（３）の処理を行なう。
（３）ツリーの葉ノードごとに、葉ノード及びその上位のノードとそれぞれのノードの範囲とを、後述するノード範囲情報４４として記憶部４に記憶する。位置情報が与えられると、前回検索できた領域からの移動距離を算出し、前回検索できた領域を含む葉ノードからその上位のノードに向けて順に、移動距離がどのノードの配下に位置するかを推定し、推定したノードから探索を行なう。
【００３０】
上記（３）の処理により、領域検索サーバ２は、個々のノードの大きさと移動距離とに基づいて、前回検索できた領域を含むノードの大きさと移動距離とのバランスが最適となるノードを、検索を開始するノードとして決定することができる。これにより、移動距離が比較的長距離である場合でも、領域検索サーバ２は、移動距離に応じた最適なノードから領域検索を行なうことができ、検索時間を短縮することができる。
【００３１】
以下、上述の如き領域検索サーバ２の詳細を説明する。
〔１−３〕記憶部の説明
次に、図１に例示する記憶部４が記憶する情報について説明する。
記憶部４は、制御部５が実行するプログラム等を記憶するとともに、領域インデックス４１と、領域データ情報４２と、前回位置情報４３と、ノード範囲情報４４とを記憶する。
【００３２】
領域インデックス（インデックス情報）４１は、空間内に存在する大量の領域から条件に合った領域を高速に検索するための索引情報であり、どの領域がどこにあるのかを示したインデックスをＲツリーで保持する情報である。つまり、領域インデックス４１は、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造でこの複数の領域を管理する情報である。
【００３３】
なお、Ｒツリーでは、相互に重なり合う矩形領域（ノード領域）を持つノードにより木が構成され、各ノードは、子ノードの最小外接矩形、つまり子ノードのノード領域を全て含む最小の矩形領域である。ここで、矩形領域は、多次元に対応する超矩形を示し、二次元の場合は長方形、三次元の場合は直方体となる。四次元以上の場合も、次元数に合わせて拡張した領域を示す。以下、本実施形態に係る領域インデックス４１は、二次元の空間における矩形領域を管理するものとする。
【００３４】
ここで、領域インデックス４１に記憶される情報の例を、図３〜図６を参照して説明する。図３は、本実施形態に係る領域インデックス４１で管理する領域データ及び矩形領域の一例を示す図であり、（ａ）は領域データとノードとの位置関係の一例を示す図、（ｂ）は空間インデックスツリーの一例を示す図である。図４〜図６は、本実施形態に係る領域インデックス４１におけるノード種別ごとの情報の一例を示す図であり、図４はルートノード、図５は中間ノード、図６は葉ノードの情報の一例を示す図である。
【００３５】
図３（ａ）及び（ｂ）に例示するように、領域インデックス４１は、ルートノード、中間ノード及び葉ノードのいずれかを示すノードで形成されるＲツリーを記憶する。ルートノードは、Ｒツリーに１つ存在する頂点のノードである。また、葉ノードは、Ｒツリーの最底辺のノードであり、自らは子ノードを含まず、検索対象となる多次元（例えば二次元）のノードを１つ以上持つ。それ以外の木の中間に存在するノードは、中間ノードであり、それぞれ子ノードを１つ以上持つ。
【００３６】
図３（ａ）及び（ｂ）に示す例では、ノードＲ１はルートノードであり、ノードＲ１０及びＲ１１は、それぞれＲ１の子ノード且つ中間ノードである。なお、ノードＲ１はノードＲ１０及びＲ１１の矩形領域（ノード領域）を全て含む矩形領域（最小外接矩形）である。
また、ノードＲ１００及びＲ１０１は、それぞれ中間ノードＲ１０の子ノード且つ葉ノードであり、ノードＲ１１０及びＲ１１１は、それぞれ中間ノードＲ１１の子ノード且つ葉ノードである。なお、ノードＲ１０はノードＲ１００及びＲ１０１の矩形領域を全て含む矩形領域であり、ノードＲ１１はノードＲ１１０及びＲ１１１の矩形領域を全て含む矩形領域である。
【００３７】
さらに、葉ノードであるノードＲ１００は検索対象となる領域データ１、２及び３を持ち、葉ノードであるノードＲ１０１は検索対象となる領域データ４及び５を持つ。また、葉ノードであるノードＲ１１０は検索対象となる領域データ６及び７を持ち、葉ノードであるノードＲ１１１は検索対象となる領域データ８及び９を持つ。これらの葉ノードは、それぞれ内部に持つ領域データ（座標データ）の最小外接矩形である。なお、領域データ１〜９は、例えば領域データを識別可能な領域ＩＤとすることができる。
【００３８】
領域インデックス４１には、Ｒツリーの実体としてルート、中間、葉の各ノードの情報が含まれる。
図４に例示するように、領域インデックス４１には、ルートノードの情報として、「ノード種別」、「矩形領域」及び「子ノードリスト」が含まれる。「ノード種別」は、ノードがルート、中間、葉のいずれであるかを示す情報である。「矩形領域」は、子ノードの担当領域（ノード領域）を全て含む最小外接矩形の情報である。「子ノードリスト」は、自身のノード（ここではルートノード）の子ノードへのリンクポインタのリストである。
【００３９】
図４の例では、ルートノードＲ１は、ｘ，ｙの二次元データを管理する。なお、「ｘ１＝３５．５、ｙ１＝１３９．０」はノードＲ１の担当領域の最小点であり、「ｘ２＝３５．９、ｙ２＝１３９．５」はノードＲ１の担当領域の最大点を示す。すなわち、ノードＲ１が担当する領域つまりノードＲ１のノード領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、ノードＲ１の情報には、子ノード「Ｒ１０」及び「Ｒ１１」へのポインタのリストが含まれる。
【００４０】
また、図５に例示するように、領域インデックス４１には、中間ノードの情報として、「ノード種別」、「矩形領域」及び「子ノードリスト」が含まれる。なお、中間ノードの情報である「ノード種別」、「矩形領域」及び「子ノードリスト」は、図４に示すものと同様であるので詳細な説明は省略する。領域インデックス４１には、中間ノードＲ１０及びＲ１１について、図５に例示する情報が含まれる。
【００４１】
図５の例では、中間ノードＲ１０は、ｘ，ｙの二次元データを管理する。なお、「ｘ１＝３５．５、ｙ１＝１３９．２」はノードＲ１０の担当領域の最小点であり、「ｘ２＝３５．７、ｙ２＝１３９．３」はノードＲ１０の担当領域の最大点を示す。すなわち、中間ノードＲ１０が担当する領域つまりノードＲ１０のノード領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、ノードＲ１０の情報には、子ノード「Ｒ１００」及び「Ｒ１０１」へのポインタのリストが含まれる。
【００４２】
さらに、図６に例示するように、領域インデックス４１には、葉ノードの情報として、「ノード種別」、「矩形領域」及び「データリスト」が含まれる。なお、葉ノードの情報である「ノード種別」及び「矩形領域」は、図４に示すものと同様であるので詳細な説明は省略する。「データリスト」は、自身のノード（葉ノード）が管理する多次元（例えば二次元）の領域データである。領域インデックス４１には、葉ノードＲ１００、Ｒ１０１、Ｒ１１０及びＲ１１１について、図６に例示する情報が含まれる。
【００４３】
図６の例では、葉ノードＲ１００は、ｘ，ｙの二次元データを管理する。なお、「ｘ１＝３５．５、ｙ１＝１３９．２」はノードＲ１００の担当領域の最小点であり、「ｘ２＝３５．６、ｙ２＝１３９．３」はノードＲ１００の担当領域の最大点を示す。すなわち、葉ノードＲ１００が担当する領域つまり葉ノードＲ１００のノード領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、ノードＲ１００の情報には、領域データ「Ｄ１」、「Ｄ２」及び「Ｄ３」へのポインタのリストが含まれる。領域データへのポインタの一例として、領域データを識別する領域ＩＤが用いられる。各領域データの実体は、領域データ情報４２に格納されている。
【００４４】
図１の説明に戻って、領域データ情報４２は、複数の領域データを管理するとともに、複数の領域データのそれぞれについて、領域データの領域と重複する他の領域の領域データを管理する情報である。
ここで、領域データ情報４２のデータ構造の一例を、図７を参照して説明する。図７は、本実施形態に係る領域データ情報４２のデータ構造の一例を示す図である。
【００４５】
図７に例示するように、領域データ情報４２は、領域ＩＤ４２ａごとに、データ名４２ｂ、領域情報４２ｃおよび重複領域４２ｄを対応付けた情報である。領域ＩＤ４２ａは、領域データを一意に識別可能なＩＤを示す。データ名４２ｂは、領域ＩＤで示される領域データのデータ名を示す。領域情報４２ｃは、領域ＩＤで示される領域データの実体である具体的な領域つまり位置及び範囲を示す。重複領域４２ｄは、領域ＩＤで示される領域データと重複する他の領域データの領域ＩＤを示す。
【００４６】
例えば、領域データ情報４２には、領域ＩＤ４２ａが「００００１」である場合、データ名４２ｂとして「Ａ商店Ｘ店舗近辺」、領域情報４２ｃとして「円領域：緯度３５．４９１、経度１３９．６５０、半径１００ｍ」が含まれる。そして、領域データ情報４２には、領域ＩＤ４２ａが「００００１」である場合の重複領域４２ｄとして「０００３４」の領域ＩＤが含まれる。
【００４７】
図１の説明に戻り、前回位置情報４３は、前回領域検索要求があったときに検索できた位置情報を当該要求元に対応付けて管理する情報である。
ここで、前回位置情報４３のデータ構造の一例を、図８を参照して説明する。図８は、本実施形態に係る前回位置情報４３のデータ構造の一例を示す図である。
図８に例示するように、前回位置情報４３は、センサーＩＤ４３ａごとに、前回検索領域４３ｂを対応付けた情報である。センサーＩＤ４３ａは、領域検索要求の要求元のセンサーの識別ＩＤを示す。なお、前回位置情報４３には、センサーＩＤ４３ａの代わりに、センサーＩＤ以外の他の識別ＩＤが含まれても良い。前回検索領域４３ｂは、前回領域検索要求があったときに検索できた領域情報を示す。例えば前回検索領域４３ｂには、検索できた場合に当該領域の領域データ（領域ＩＤ）が設定され、検索できなかった場合に「未検出」が設定される。
【００４８】
例えば、センサーＩＤ４３ａが「Ｓｅｎｓｏｒ０００１」である場合、前回検索領域４３ｂには「未検出」が設定されている。また、センサーＩＤ４３ａが「Ｓｅｎｓｏｒ０００２」である場合、前回検索領域４３ｂには「領域ＩＤ０００３４」が設定されている。
ノード範囲情報４４は、領域インデックス４１のツリー構造における葉ノードごとに記憶部４に記憶された情報であって、ツリー構造における葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報である。つまり、ノード範囲情報４４には、葉ノード及び葉ノードを自身のノード領域に含むノードそれぞれのノード領域の範囲に関する情報が設定される。
【００４９】
ここで、ノード範囲情報４４のデータ構造の一例を、図９〜図１１を参照して説明する。図９は、本実施形態に係るノード範囲情報４４を説明する図であり、（ａ）はノードの位置関係の一例を示す図、（ｂ）は空間インデックスツリーの一例を示す図である。図１０及び図１１は、それぞれ本実施形態に係るノード範囲情報４４のデータ構造の一例を示す図であり、図１０（ａ）及び図１１（ａ）はノード範囲情報４４の一例を示す図、図１０（ｂ）及び図１１（ｂ）は各ノードのノード範囲の一例を示す図である。
【００５０】
以下、ノード範囲情報４４の説明においては、領域インデックス４１が、図９（ａ）に示すノード領域の位置関係であり、図９（ｂ）に示すツリー構造のＲツリーであるものとする。なお、図９〜図１１の例では、ノード範囲情報４４は、ｘ，ｙの二次元データを管理する。
図１０（ａ）及び図１１（ａ）に例示するように、ノード範囲情報４４には、ツリー構造における葉ノードからルートノードまでの複数のノードのノード情報４４ａとノード範囲４４ｂとが対応付けられる。ノード情報４４ａは、例えばノード（図９（ｂ）に示す例ではノードＲ１〜Ｒ１５）へのポインタであり、図１０（ａ）及び図１１（ａ）においては、そのノードを一意に識別可能なＩＤとして示す。ノード範囲４４ｂは、複数のノードそれぞれのノード領域の範囲に関する情報である。
【００５１】
図１０（ａ）の例では、ノードＲ８におけるノード範囲情報４４には、ノード情報４４ａとして、ツリー構造における葉ノード「Ｒ８」からルートノード「Ｒ１」までの複数のノードである、葉ノード「Ｒ８」、中間ノード「Ｒ４」及び「Ｒ２」、並びに、ルートノード「Ｒ１」が設定されている。また、ノードＲ８におけるノード範囲情報４４には、ノード範囲４４ｂとして、葉ノードＲ８は「ｘ＝５０，ｙ＝１００」、中間ノードＲ４は「ｘ＝２００，ｙ＝１０００」、中間ノードＲ２は「ｘ＝１５００，ｙ＝２０００」、ルートノードＲ１は「ｘ＝１００００，ｙ＝２００００」がそれぞれ設定されている。
【００５２】
また、図１１（ａ）の例では、ノードＲ１０におけるノード範囲情報４４には、ノード情報４４ａとして、ツリー構造における葉ノード「Ｒ１０」からルートノード「Ｒ１」までの複数のノードである、葉ノード「Ｒ１０」、中間ノード「Ｒ５」及び「Ｒ２」、並びに、ルートノード「Ｒ１」が設定されている。また、ノードＲ１０におけるノード範囲情報４４には、ノード範囲４４ｂとして、葉ノードＲ１０は「ｘ＝３０，ｙ＝５０」、中間ノードＲ５は「ｘ＝１００，ｙ＝５００」がそれぞれ設定され、中間ノードＲ２及びルートノードＲ１のノード範囲４４ｂは、それぞれノードＲ８におけるノード範囲情報４４と同じ値である。
【００５３】
ここで、ノード範囲４４ｂは、複数のノードに対応するノード領域の基準位置を一致させた状態で規定される。例えば、図１０（ｂ）に示すように、葉ノードＲ８におけるノード範囲情報４４は、葉ノードＲ８からルートノードＲ１までの複数のノードそれぞれのノード範囲４４ｂとして、ノードＲ８、Ｒ４、Ｒ２及びＲ１の基準位置（例えば中心位置）を一致させた状態で管理する。また、図１１（ｂ）に示すように、葉ノードＲ１０におけるノード範囲情報４４は、葉ノードＲ１０からルートノードＲ１までの複数のノードそれぞれのノード範囲４４ｂとして、ノードＲ１０、Ｒ５、Ｒ２及びＲ１の基準位置（例えば中心位置）を一致させた状態で管理する。
【００５４】
すなわち、ノード範囲４４ｂは、ノード領域を示す領域情報４２ｃ（座標及び範囲）から座標（位置）の情報を除いた範囲情報であり、全ての次元軸に沿った方向ごとにそのノードが有する範囲（距離）を規定する情報である。
さらに、ノード範囲４４ｂに設定される範囲は、ノードの基準位置が中心位置である場合、図１０（ｂ）及び図１１（ｂ）の破線で囲われた範囲における各ノードの範囲であっても良い。すなわち、ノード範囲情報４４ｂには、各ノードの基準位置を原点とした場合における次元軸成分ごとの絶対値が設定されても良い。ノード範囲４４ｂに次元軸成分ごとの絶対値が設定されることにより、後述するノード検索部５３ｂによる計算量を減少させることができ、領域の検索時間を短縮（処理を高速化）することができる。以下、ノード範囲４４ｂには、次元軸成分ごとの絶対値が設定されるものとして説明する。
【００５５】
なお、上述した領域インデックス４１及び領域データ情報４２は、インデックスを構築する際や、領域データの追加や削除が行なわれる場合に、例えば制御部５により作成・更新される。また、前回位置情報４３は、端末装置６からの領域検索要求に応じた領域データの検索処理において、後述する前回領域設定部５７により作成・更新される。さらに、ノード範囲情報４４は、インデックスを構築する際や、領域データの追加や削除が行なわれ領域インデックス４１が変更される場合に、後述するノード範囲設定部５８により作成・更新される。
【００５６】
〔１−４〕制御部の説明
次に、図１に例示する領域検索サーバ２における、制御部５の機能について説明する。
制御部５は、リクエスト受付部５１と、前回領域比較部５２と、検索開始ノード決定部５３と、ツリー検索部５４と、重複領域検索部５５と、レスポンス転送部５６と、前回領域設定部５７と、ノード範囲設定部５８とをそなえる。
【００５７】
リクエスト受付部５１は、通信インタフェース３によって受信された検索リクエストを受け付ける。レスポンス転送部（出力部）５６は、検索リクエストに対応する領域検索応答を通信インタフェース３に転送するものであり、検索できた領域の情報を例えばリストとして通信インタフェース３に出力する。
ここで、リクエスト受付部５１が通信インタフェース３を介して受け付ける領域検索要求の内容、及び、レスポンス転送部５６が通信インタフェース３を介して出力する領域検索応答の内容について、図１２及び図１３を参照して説明する。図１２は、本実施形態に係る領域検索要求の内容の一例を示す図であり、図１３は、領域検索応答の内容の一例を示す図である。
【００５８】
図１２に示すように、領域検索要求は、センサーを識別するセンサーＩＤ４３ａと、位置情報の一例としての緯度及び経度とを含む。図１２の例では、領域検索要求には、センサーＩＤ４３ａとして「Ｓｅｎｓｏｒ０００Ｘ」、緯度として「３５．４１３４」、経度として「１３９．６２５２」が設定されている。なお、領域検索要求にはセンサーＩＤ４３ａが含まれるものとしたが、センサーＩＤ４３ａ以外の識別ＩＤが含まれても良い。
【００５９】
また、図１３に示すように、領域検索応答は、領域検索要求による問合せ位置（位置情報）を含む領域の情報のリスト（結果リスト）であり、領域の情報に対応する領域ＩＤ４２ａとデータ名４２ｂとを含む。図１３の例では、領域検索応答には、領域ＩＤ４２ａとして「００００１」、データ名４２ｂとして「Ａ商店Ｘ店舗周辺」が設定されているとともに、領域ＩＤ４２ａとして「０００３４」、データ名４２ｂとして「レストランＣ周辺」が設定されている。なお、領域の情報のリストには領域ＩＤ４２ａとデータ名４２ｂとが含まれるものとしたが、少なくとも領域を特定できる情報（例えば領域ＩＤ４２ａ）が含まれれば良く、また、例えば領域の位置、大きさや形状等が含まれるものとしても良い。
【００６０】
図１の説明に戻り、前回領域比較部５２は、前回領域検索した際に検索できた領域を用いて、所定の位置情報を含む領域を検索する。例えば、前回領域比較部５２は、リクエスト受付部５１によって受け付けられた領域検索要求の中からセンサーＩＤ４３ａおよび位置情報を取り出す。そして、前回領域比較部５２は、取り出したセンサーＩＤ４３ａに対応する前回検索領域４３ｂが前回位置情報４３に設定されているか否かを判定する。
【００６１】
前回領域比較部５２は、取り出したセンサーＩＤ４３ａの前回検索領域４３ｂが前回位置情報４３に設定されていない場合、後述するトップダウン検索により、当該位置情報を含む領域をツリー検索部５４に検索させる。
一方、前回領域比較部５２は、取り出したセンサーＩＤ４３ａの前回検索領域４３ｂが前回位置情報４３に設定されている場合、領域検索要求の中から取り出した位置情報が前回検索領域４３ｂに含まれるか否かを判定する。例えば、前回領域比較部５２は、前回検索領域４３ｂに領域ＩＤ４２ａが設定される場合、領域データ情報４２を参照して、取り出した位置情報が前回検索領域４３ｂに設定された領域ＩＤ４２ａの領域情報４２ｃに含まれるか否かを判定する。
【００６２】
そして、前回領域比較部５２は、取り出した位置情報が前回検索領域４３ｂに含まれる場合、当該前回検索領域４３ｂ（領域ＩＤ４２ａ）を結果リストに追加し、前回領域比較部５２の検索処理を終了し、重複領域検索部５５に重複領域を検索させる。一方、前回領域比較部５２は、取り出した位置情報が前回検索領域４３ｂに含まれない場合、検索開始ノード決定部５３に、ツリー検索部５４が検索を開始するノードを決定させる。
【００６３】
検索開始ノード決定部５３は、前回検索領域４３ｂと、領域検索要求に含まれる位置情報（所定の位置）とに基づいて、ツリー検索部５４が領域の検索を開始する検索開始ノードを決定するものであり、距離取得部５３ａと、ノード検索部５３ｂとをそなえる。なお、検索開始ノード決定部５３は、前回領域比較部５２において、領域検索要求から取り出した位置情報が前回検索領域４３ｂに含まれないと判定された場合に動作する。
【００６４】
距離取得部５３ａは、領域インデックス４１を用いた領域の検索により前回検索できた領域と、位置情報との間の距離（移動距離）を取得する。
ノード検索部５３ｂは、ノード範囲情報４４に基づいて、距離取得部５３ａが取得した距離を範囲内に含むノードを検索し、検索できたノードをツリー検索部５４に通知して、当該検索できたノードから位置情報を含む領域を検索させる。
【００６５】
ここで、距離取得部５３ａ及びノード検索部５３ｂについて、図１４〜図１６を参照して説明する。図１４は、本実施形態に係る検索開始ノード決定部５３の説明における前回位置と今回位置との位置関係の一例を示す図であり、図１５は、移動距離とノード範囲４４ｂとの位置関係の一例を示す図である。また、図１６は、移動距離及び空間インデックスツリーの一例を示す図である。
【００６６】
以下、図１４に例示するように、今回、端末装置６から送信された領域検索要求に含まれる所定の位置（以下、今回位置という）をＰ１とする。また、前回位置情報４３において、今回位置Ｐ１を問い合わせた端末装置６（センサーＩＤ４３ａ）に対応する前回検索領域４３ｂに設定された領域データを前回位置Ｐ０とする。なお、前回位置Ｐ０は葉ノードＲ８に含まれ、今回位置Ｐ１は葉ノードＲ１０に含まれるものとし、前回位置Ｐ０から今回位置Ｐ１までは４５ｋｍ離れているものとする。ここで、前回位置Ｐ０は、例えば、前回検索領域４３ｂに設定された領域データの基準位置（例えば中心位置）とすることができる。
【００６７】
距離取得部５３ａは、前回位置情報４３から取得した、前回検索できた領域（前回検索領域４３ｂ）の基準位置と、今回位置Ｐ１との間の距離を取得（算出）する。
具体的には、距離取得部５３ａは、前回検索領域４３ｂの基準位置と今回位置Ｐ１との間の距離を、領域の次元軸に沿った方向ごとに取得する。
図１４の例では、距離取得部５３ａは、前回位置Ｐ０から今回位置Ｐ１までの移動距離のｘ軸成分として、前回位置Ｐ０を含む領域データＸの基準位置（中心位置）と今回位置Ｐ１のｘ軸上の位置との間の距離Ｐ１ｘを算出（取得）する。同様に、距離取得部５３ａは、前回位置Ｐ０から今回位置Ｐ１までの移動距離のｙ軸成分として、領域データＸの基準位置（中心位置）と今回位置Ｐ１のｙ軸上の位置との間の距離Ｐ１ｙを算出（取得）する。一例として、距離取得部５３ａは、今回位置Ｐ１のｘ軸上の座標から前回位置Ｐ０のｘ軸上の座標を減算し、距離Ｐ１ｘを算出するとともに、今回位置Ｐ１のｙ軸上の座標から前回位置Ｐ０のｙ軸上の座標を減算し、距離Ｐ１ｙを算出する。
【００６８】
ノード検索部５３ｂは、ノード範囲情報４４に基づいて、前回検索領域４３ｂを含むインデックスツリーの葉ノードが持つノード範囲４４ｂの中から、領域検索要求に含まれる位置情報と前回検索領域４３ｂとの距離が範囲内に含まれるノードを検索する。すなわち、ノード検索部５３ｂは、記憶部４に記憶された、前回位置Ｐ０を含む葉ノードに係るノード範囲４４に基づいて、距離取得部５３ａから取得した距離を範囲内に含むノードを検索するのである。
【００６９】
具体的には、ノード検索部５３ｂは、ノード範囲情報４４に基づいて、全ての次元軸に沿った方向で取得した各方向の距離以上の範囲を持つノードを検索する。このとき、ノード検索部５３ｂは、前回位置Ｐ０を領域に含む葉ノードの基準位置（例えば中心位置）Ｐ０′を前回位置として、上記検索を行なう。
例えば、図１５に示すように、ノード検索部５３ｂは、前回位置Ｐ０を含む葉ノードＲ８に係るノード範囲情報４４に基づき、前回位置Ｐ０を含む葉ノードＲ８の基準位置Ｐ０′を原点として、距離取得部５３ａが取得した各方向の距離（Ｐ１ｘ及びＰ１ｙ）よりも大きい範囲を持つノードを検索する。
【００７０】
より具体的に、ノード検索部５３ｂは、葉ノードＲ８に係るノード範囲情報４４に基づいて、複数のノードのうちの葉ノードＲ８から上位のノードに向かって順にノード情報４４ａを選択する。そして、ノード検索部５３ｂは、選択したノード情報４４ａに対応するノード範囲４４ｂが、距離取得部５３ａから取得した各方向の距離Ｐ１ｘ及びＰ１ｙを範囲内に含むか否かを判断し、各距離を範囲内に含むノードを決定する。なお、上述の如く、本実施形態においては、ノードの基準位置が中心位置であり、ノード範囲４４ｂには、次元軸成分ごとの絶対値が設定されているものとする。
【００７１】
図１０（ａ）及び図１５の例では、ノード検索部５３ｂは、取得した距離Ｐ１ｘと、ノードＲ８のノード範囲４４ｂのｘ軸方向の距離「５０」とを比較するとともに、取得した距離Ｐ１ｙとノードＲ８のノード範囲４４ｂのｙ軸方向の距離「１００」とを比較する。図１５に示すように、距離Ｐ１ｘ及びＰ１ｙはいずれもノードＲ８の各方向の距離よりも大きいため、ノード検索部５３ｂは、ノードＲ８は距離Ｐ１ｘ及びＰ１ｙを範囲内に含まないと判断し、次の上位ノードについて同様に判断する。このように、ノード検索部５３ｂは、ノードＲ８、Ｒ４、Ｒ２、Ｒ１と順に、距離Ｐ１ｘ及びＰ１ｙを含むか否かの判断を行なう。
【００７２】
ここで、ノード検索部５３ｂは、ノードＲ４に係る判断において、ノードＲ４のノード範囲４４ｂのｙ軸方向の距離「１０００」が取得した距離Ｐ１ｙよりも大きいと判断する一方、ｘ軸方向の距離「２００」が取得した距離Ｐ１ｘ以下であると判断したとする。この場合、ノード検索部５３ｂは、ノードＲ４のｘ軸方向の距離は取得した距離Ｐ１ｘを含まないため、ノードＲ４は距離Ｐ１ｘを範囲内に含まないと判断し、次の上位ノードについて同様に判断する。
【００７３】
また、ノード検索部５３ｂは、ノードＲ２に係る判断において、ノードＲ２のノード範囲４４ｂのｘ軸方向の距離「１５００」と、ｙ軸方向の距離「２０００」とがいずれも取得した距離Ｐ１ｘ及びＰ１ｙよりも大きい、つまり距離Ｐ１ｘ及びＰ１ｙを範囲内に含むと判断したとする。この場合、ノード検索部５３ｂは、ノードＲ２を距離Ｐ１ｘ及びＰ１ｙを範囲内に含むノードに決定し、距離Ｐ１ｘ及びＰ１ｙを含むか否かの判断を終了する。つまり、ノード検索部５３ｂは、距離Ｐ１ｘ及びＰ１ｙを範囲内に含むノードを決定した場合、決定したノードよりも上位のノードに係る、距離Ｐ１ｘ及びＰ１ｙを含むか否かの判断を抑止する。
そして、ノード検索部５３ｂは、決定したノードＲ２を、検索開始ノードとしてツリー検索部５３に通知する。通知した検索開始ノードは、ツリー検索部５３によって、後述するボトムアップ検索により位置情報Ｐ１を含む領域を検索するのに用いられる。
【００７４】
このように、ノード検索部５３ｂは、ノード範囲情報４４に基づいて、端末装置６がどのノード配下に位置するかを推定する。また、ノード検索部５３ｂは、ノード範囲４４ｂが小さい順に距離Ｐ１ｘ及びＰ１ｙを範囲内に含むノードを検索するため、推定（決定）されるノードは、ノード範囲４４ｂが移動距離Ｐ１ｘ及びＰ１ｙ以上であり、且つ、最も葉ノードに近いノードとなる。
【００７５】
例えば、図１６に示すように、前回位置Ｐ０から、ノードＲ８までの距離が１ｋｍ、ノードＲ４までの距離が１０ｋｍ、ノードＲ２までの距離が５０ｋｍ、ノードＲ１までの距離が１００ｋｍである場合を想定する。この場合、前回位置Ｐ０と今回位置Ｐ１との間の距離は４５ｋｍであるため、ツリー検索部５４は、前回位置Ｐ０から５０ｋｍの範囲を含むノードＲ２から検索を開始することで、効率的に検索処理を行なうことができる。
【００７６】
上述の如くノード検索部５３ｂは、検索開始ノードとしてノードＲ２を選択するため、ツリー検索部５４は、今回位置Ｐ１を含み且つ最も葉ノードに近いノードであるノードＲ２から、位置情報を含む領域データの検索を開始することができる。
換言すれば、ノード範囲情報４４は、記憶部４に記憶される情報であって複数のノードそれぞれに設定される閾値に関する情報であり、この閾値が、対応するノードのノード範囲４４ｂに相当する。そして、ノード検索部５３ｂは、この閾値に関する情報に基づいて、距離取得部５３ａが取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するのである。
【００７７】
以上のように、ノード検索部５３ｂは、複数の閾値に関する情報であるノード範囲情報４４に基づいて、ノード範囲４４ｂが移動距離Ｐ１ｘ及びＰ１ｙよりも大きく、最も葉ノードに近いノードを検索開始ノードに決定する。従って、ツリー検索部５４は、検索開始ノードを起点に今回位置Ｐ１を含む領域データを検索することにより、ルートノードＲ１から検索を開始するよりも検索に係る処理時間を短縮することができる。また、ノード検索部５３ｂは、次元軸ごとに取得された移動距離と、次元軸ごとのノード範囲４４ｂとを比較するため、ノードの矩形領域の形状も加味して、より高精度に検索開始ノードを推定することができる。
【００７８】
なお、ノード検索部５３ｂは、前回位置Ｐ０を含む葉ノードのノード範囲情報４４に設定された全てのノード情報４４ａについて、距離Ｐ１ｘ及びＰ１ｙを含まないと判断した場合には、後述するトップダウン検索により、当該位置情報Ｐ１を含む領域をツリー検索部５４に検索させる。
図１の説明に戻り、ツリー検索部（領域検索部）５４は、領域インデックス４１を用いて、所定の位置情報を含む領域を検索する。以下、ツリー検索部によるトップダウン検索及びボトムアップ検索について説明する。
【００７９】
〔１−４−１〕ツリー検索部によるトップダウン検索の説明
ツリー検索部５４は、領域検索要求に含まれる位置情報を含む領域を検索するため、領域インデックス４１を用いて、ルートノードから子ノードへトップダウン検索を行なう。なお、トップダウン検索は、前回領域比較部５２により、前回位置情報４３に領域検索要求から取り出したセンサーＩＤの前回検索領域が記憶されていないと判断された場合、又は、ノード検索部５３ｂにより、ノード範囲情報４４に前回位置からの移動距離が範囲内に含まれるノードがないと判断された場合に実行される。
【００８０】
例えば、ツリー検索部５４は、リクエスト受付部５１によって受け付けられた領域検索要求の中から位置情報を取り出す。そして、ツリー検索部５４は、ルートノードから子ノードへトップダウンに辿り順番にノードを選択し、選択したノードの子ノードに、取り出した位置情報を含むものがあるか否かを、領域インデックス４１を用いて判定する。一例として、ツリー検索部５４は、領域インデックス４１を用いて、選択したノードの子ノードリストを読み出し、さらに、読み出した子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出す。そして、ツリー検索部５４は、読み出したそれぞれの子ノードの矩形領域に、取り出した位置情報を含むものがあるか否かを判定する。
【００８１】
また、ツリー検索部５４は、取り出した位置情報を含む子ノードを示す情報を、選択候補ノードとして例えばメモリ４ｂ等の記憶領域に追加する。そして、ツリー検索部５４は、選択候補ノードとして追加されたノードを１つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データのうち、取り出した位置情報を含むものがあるか否かを、領域インデックス４１を用いて判定する。一例として、ツリー検索部５４は、領域インデックス４１を用いて、葉ノードであるノードのデータリストを読み出し、読み出したデータリストに含まれる領域データへのポインタを取り出す。ここでは、領域データを領域ＩＤ４１ａとすると、ツリー検索部５４は、領域データ情報４２に記憶された領域情報４２ｃを用いて、領域ＩＤ４１ａに対応する領域情報４２ｃに、取り出した位置情報を含むものがあるか否かを判定する。
【００８２】
そして、ツリー検索部５４は、領域ＩＤ４１ａに対応する領域情報４２ｃに、取り出した位置情報を含むものが１つでもあれば、いずれか１つの領域情報４２ｃの領域ＩＤ４１ａを、結果リストとして例えばメモリ４ｂ等の記憶領域に追加し、領域インデックス４１を用いた検索を終了する。
なお、ツリー検索部５４は、位置情報を含む領域データが複数ある場合には、重複領域の数が最も小さい領域データを選択することが望ましい。これは、後述する重複領域検索部５５が、さらに位置情報を含む領域データを、選択した領域データの重複領域から検索することとなるので、検索対象となる重複領域の数を減らすためである。
【００８３】
〔１−４−２〕ツリー検索部によるボトムアップ検索の説明
また、ツリー検索部５４は、領域検索要求に含まれる位置情報を含む領域を検索するため、領域インデックス４１を用いて、ノード検索部５３ｂにより通知された検索開始ノードから子ノード又はルートノードへボトムアップ検索を行なう。
例えば、ツリー検索部５４は、検索開始ノードが持つ子ノードのうち、領域検索要求に含まれる位置情報を含む子ノード又は領域データがあるか否かを、領域インデックス４１を用いて判定する。
【００８４】
ツリー検索部５４は、位置情報を含む子ノードがある場合、上述したトップダウン検索と同様に、位置情報を含む子ノードについて、取り出した位置情報を含む下位のノード又は領域データを再帰的に検索する。なお、検索開始ノードが葉ノードである場合は、上述したトップダウン検索と同様に、当該葉ノードが持つ領域データのうち、領域検索要求に含まれる位置情報を含む領域データを検索する。そして、ツリー検索部５４は、検索できた領域データを検索結果に追加して、領域インデックス４１を用いた検索を終了する。
【００８５】
一方、ツリー検索部５４は、検索開始ノードが持つ子ノード又は領域データのうち、領域検索要求に含まれる位置情報を含む領域データがなければ、検索開始ノードからルートノードへボトムアップにノードを順番に辿り、当該位置情報を含むノードを選択する。そして、ツリー検索部５４は、選択したノードの子ノードに、当該位置情報を含むものがあるか否かを、領域インデックス４１を用いて判定する。
【００８６】
ツリー検索部５４は、位置情報を含む子ノードがある場合、当該位置情報を含む子ノードを選択候補ノードとして追加する。そして、ツリー検索部５４は、選択候補ノードとして追加されたノードを１つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データのうち、当該位置情報を含む領域データがあるか否かを、領域インデックス４１を用いて判定する。
【００８７】
そして、ツリー検索部５４は、領域データ情報４２を用いて、領域ＩＤ４１ａに対応する領域情報４２ｃに、取り出した位置情報を含む領域データが１つでもあれば、いずれか１つの領域情報４２ｃの領域ＩＤ４１ａを結果リストとして追加し、領域インデックス４１を用いた検索を終了する。
なお、ツリー検索部５４は、ボトムアップ検索においても、位置情報を含む領域データが複数ある場合には、重複領域の数が最も小さい領域データを選択することが望ましい。
【００８８】
重複領域検索部５５は、前回領域比較部５２又はツリー検索部５４によって位置情報を含む領域データを検索できた場合、領域データ情報４２に記憶された重複領域４２ｄに基づいて、検索できた領域データに対応する重複領域４２ｄの中から位置情報を含む領域データを検索する。そして、重複領域検索部５５は、位置情報を含む重複領域４２ｄの領域ＩＤ４２ａを結果リストに追加する。
【００８９】
例えば、重複領域検索部５５は、前回領域比較部５２又はツリー検索部５４によって追加された結果リストから領域データ（例えば領域ＩＤ４２ａ）を取り出す。そして、重複領域検索部５５は、領域データ情報４２に記憶された重複領域４２ｄに基づいて、取り出した領域データと重複する重複領域４２ｄの領域ＩＤ４２ａを読み出す。
さらに、重複領域検索部５５は、該当する重複領域の領域ＩＤ４２ａを１つずつ選択し、選択した領域ＩＤ４２ａの領域情報４２ｃが位置情報を含むか否かを判定し、位置情報を含む重複領域４２ｄの領域データの領域ＩＤ４２ａを結果リストに追加する。
【００９０】
前回領域設定部５７は、領域検索要求があった要求元のセンサーＩＤ４３ａに対応付けて、結果リストに含まれる領域ＩＤ４２ａを前回検索領域４３ｂとして前回位置情報４３に設定する。
ここで、結果リストに検索できた領域ＩＤ４２ａが複数ある場合には、前回領域設定部５７は、複数ある領域ＩＤ４２ａのうち、重複領域の数が最小の領域ＩＤ４２ａを選択し、選択した領域ＩＤ４２ａを前回位置情報４３に設定すれば良い。これにより、次回の領域検索要求の位置情報が前回設定された領域ＩＤ４２ａの領域に含まれていれば、続いて行なわれる当該領域データと重複する重複領域に係る検索回数を減らすことができる。
【００９１】
このように、領域データ情報４２に重複領域４２ｄが設定されることで、前回領域比較部５２やツリー検索部５４により一つでも問合せのあった位置情報を含む領域データが検出されれば、重複領域検索部５５は、重複領域４２ｄを用いて他の領域データを絞り込むことができる。従って、残りの木の検索を打ち切ることができ、ツリー検索部５４は、従来のＲツリーによる領域検索のように、問合せ位置を含む全中間ノードの検索を行なわずに済み、領域検索の検索時間を短縮することができる。
【００９２】
ノード範囲設定部５８は、葉ノードごとに、ノード情報４４ａ及びノード範囲４４ｂの組をノード範囲情報４４に設定する。
例えば、ノード範囲設定部５８は、インデックスが構築される際に、ルートノードから中間ノードを経由して葉ノードに向けてそれぞれのノード範囲４４ｂを計算し、計算したノード範囲４４ｂを伝搬することでノード範囲情報４４を生成する。
【００９３】
また、ノード範囲設定部５８は、新たな領域データが追加され、インデックスが更新される際に、ノード領域が更新されたノードのうち、最もルートノードに近いノードから下位のノードに向けてそれぞれのノード範囲を計算し、計算したノード範囲４４ｂを伝搬することでノード範囲情報４４を生成する。
〔１−５〕領域検索サーバの動作例
次に、上述の如く構成された本実施形態に係る領域検索サーバ２（領域検索システム１）における動作例を図１７〜図２４を参照しながら説明する。
【００９４】
〔１−５−１〕リクエスト受付処理
はじめに、本実施形態に係る領域検索サーバ２（領域検索システム１）のリクエスト受付処理の動作例を、図１７を参照して説明する。図１７は、本実施形態に係るリクエスト受付処理の手順の一例を示すフローチャートである。
まず、リクエスト受付部５１により、端末装置６から領域検索要求を受け付けたか否かが判定される（ステップＳ１）。領域検索要求を受け付けていないと判定された場合（ステップＳ１のＮｏルート）、リクエスト受付部５１により、領域検索要求を受け付けるまで、判定処理が繰り返される。一方、領域検索要求を受け付けたと判定された場合（ステップＳ１のＹｅｓルート）、制御部５により、後述する領域検索処理が実行される（ステップＳ２）。
【００９５】
そして、リクエスト受付部５１により、リクエスト受付処理が終了したか否かが判定される（ステップＳ３）。リクエスト受付処理が終了していないと判定された場合（ステップＳ３のＮｏルート）、ステップＳ１の処理に移行する。一方、リクエスト受付処理が終了したと判定された場合（ステップＳ３のＹｅｓルート）、処理が終了する。
〔１−５−２〕領域検索処理
次に、本実施形態に係る領域検索サーバ２における領域検索処理の動作例を図１８〜図２１を参照しながら説明する。図１８〜図２１は、本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。
【００９６】
まず、図１８に示すように、リクエスト受付部５１により領域検索要求が受け付けられると、前回領域比較部５２により、領域検索要求の発行元（以下、問合せ側という）の端末装置６のセンサーＩＤ４３ａに対応する前回検索領域４３ｂが前回位置情報４３に設定されているか否かが判定される（ステップＳ１１）。設定されていると判定された場合（ステップＳ１１のＹｅｓルート）、前回領域比較部５２により、領域検索要求に含まれる位置情報（以下、検出対象位置という）が前回検索領域４３ｂ内にあるか否かが判定される（ステップＳ１２）。検出対象位置が前回検索領域４３ｂ内にあると判断された場合（ステップＳ１２のＹｅｓルート）、前回検索領域４３ｂにより、当該前回検索領域４３ｂ（領域ＩＤ４２ａ）が領域データとして結果リストに追加される（ステップＳ１３）。
【００９７】
続いて、重複領域検索部５５により、領域データ情報４２の重複領域４２ｄに基づいて、結果リストに追加された領域データに重複領域４２ｄがあるか否かが判定される（ステップＳ１４）。重複領域４２ｄがないと判定された場合（ステップＳ１４のＮｏルート）、ステップＳ１９に移行する。一方、重複領域４２ｄがあると判定された場合（ステップＳ１４のＹｅｓルート）、重複領域検索部５５により、結果リストに追加された領域データの重複領域４２ｄから未判定のものが読み出され、読み出した重複領域４２ｄが１つ選択される（ステップＳ１５）。そして、重複領域検索部５５により、選択した重複領域４２ｄが検出対象位置を含むか否かが判定される（ステップＳ１６）。選択した重複領域４２ｄが検出対象位置を含むと判定された場合（ステップＳ１６のＹｅｓルート）、重複領域検索部５５により、含むと判定した重複領域４２ｄの領域ＩＤ４２ａが結果リストに追加され（ステップＳ１７）、ステップＳ１８に移行する。
【００９８】
また、ステップＳ１６において、選択した重複領域４２ｄが検出対象位置を含まないと判定された場合（ステップＳ１６のＮｏルート）、重複領域検索部５５により、全ての重複領域４２ｄの判定を終えたか否かが判定される（ステップＳ１８）。全ての重複領域４２ｄの判定を終えていない場合（ステップＳ１８のＮｏルート）、次の重複領域４２ｄを判定すべく、ステップＳ１５に移行する。一方、全ての重複領域４２ｄの判定を終えた場合（ステップＳ１８のＹｅｓルート）、重複領域検索部５５により、作成した結果リストを問合せ側へ返答すべく、検索結果（結果リスト）がレスポンス転送部５６に出力される（ステップＳ１９）。なお、レスポンス転送部５６では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置６へ送信される。
【００９９】
そして、前回領域設定部５７により、前回領域比較部５２及び重複領域検索部５５により作成された結果リストのうちの１つの領域ＩＤ４２ａが、問合せ側のセンサーＩＤ４３ａに対応付けて前回位置情報４３に設定され（ステップＳ２０）、検索処理が終了する。
また、ステップＳ１１において、問合せ側のセンサーＩＤ４３ａの前回検索領域４３ｂが前回位置情報４３に設定されていない場合（ステップＳ１１のＮｏルート）、ルートノードからのトップダウン検索を実行すべく、図１９のステップＳ２１に移行する。
【０１００】
図１９に示すように、図１８のステップＳ１１のＮｏルートを経て、ツリー検索部５４により、ルートノードが選択される（ステップＳ２１）。そして、ツリー検索部５４により、選択した選択ノードが葉ノードであるか否かが判定される（ステップＳ２２）。
選択ノードが葉ノードでないと判定された場合（ステップＳ２２のＮｏルート）、ツリー検索部５４により、選択ノードの子ノードに検出対象位置を含むものがあるか否かが、領域インデックス４１を用いて判定される（ステップＳ２３）。
【０１０１】
選択ノードの子ノードに検出対象位置を含むものがあると判定された場合（ステップＳ２３のＹｅｓルート）、ツリー検索部５４により、検出対象位置を含む子ノードが選択候補ノードに追加され（ステップＳ２４）、ステップＳ２５に移行する。一方、選択ノードの子ノードに検出対象位置を含むものがないと判定された場合（ステップＳ２３のＮｏルート）、ステップＳ２５に移行する。
【０１０２】
続いて、ツリー検索部５４により、全ての選択候補ノードの検索を終えたか否かが判定される（ステップＳ２５）。全ての選択候補ノードの検索を終えていないと判定された場合（ステップＳ２５のＮｏルート）、ツリー検索部５４により、選択候補ノード内の１つの未検索ノードが選択され（ステップＳ２６）、ステップＳ２２に移行する。一方、全ての選択候補ノードの検索を終えたと判定された場合（ステップＳ２５のＹｅｓルート）、ツリー検索部５４により、選択ノードに検出対象位置を含むものがないので、結果リスト無しとして問合せ側へ返答すべく、検索結果がレスポンス転送部５６に出力される（ステップＳ２７）。なお、レスポンス転送部５６では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置６へ送信される。
【０１０３】
そして、前回領域設定部５７により、問合せ側のセンサーＩＤ４３ａに対応付けて未検出である旨が前回位置情報４３に設定され（ステップＳ２８）、検索処理が終了する。
また、ステップＳ２２において、選択ノードが葉ノードであると判定された場合（ステップＳ２２のＹｅｓルート）、ツリー検索部５４により、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあるか否かが判定される（ステップＳ２９）。選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがないと判定された場合（ステップＳ２９のＮｏルート）、次の選択候補ノードを検索すべく、ステップＳ２５に移行する。
【０１０４】
一方、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあると判定された場合（ステップＳ２９のＹｅｓルート）、ツリー検索部５４により、該当領域データのうち、重複領域４２ｄの数が最小の領域データが結果リストに追加される（ステップＳ３０）。ここで、ツリー検索部５４による領域インデックス４１を用いた検索が終了する。
【０１０５】
続いて、重複領域検索部５５により、領域データ情報４２の重複領域４２ｄに基づいて、結果リストに追加された領域データの重複領域４２ｄから未判定のものが読み出され、読み出した重複領域４２ｄが１つ選択される（ステップＳ３１）。なお、図示を省略しているが、結果リストに追加された領域データの重複領域４２ｄがない場合には、重複領域検索部５５の処理を終了し、ステップＳ３５に移行しても良い。
【０１０６】
そして、重複領域検索部５５により、選択した重複領域４２ｄが検出対象位置を含むか否かが判定される（ステップＳ３２）。選択した重複領域４２ｄが検出対象位置を含むと判定された場合（ステップＳ３２のＹｅｓルート）、重複領域検索部５５により、含むと判定した重複領域４２ｄの領域ＩＤ４２ａが結果リストに追加され（ステップＳ３３）、ステップＳ３４に移行する。
【０１０７】
一方、選択した重複領域４２ｄが検出対象位置を含まないと判定された場合（ステップＳ３２のＮｏルート）、重複領域検索部５５により、全重複領域の判定を終えたか否かが判定される（ステップＳ３４）。全重複領域の判定を終えていない場合（ステップＳ３４のＮｏルート）、次の重複領域を判定すべく、ステップＳ３１に移行する。一方、全重複領域の判定を終えた場合（ステップＳ３４のＹｅｓルート）、作成した結果リストを問合せ側へ返答すべく、重複領域検索部５５により、検索結果（結果リスト）がレスポンス転送部５６に出力される（ステップＳ３５）。なお、レスポンス転送部５６では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置６へ送信される。
【０１０８】
そして、前回領域設定部５７により、重複領域検索部５５により作成された結果リストのうちの１つの領域ＩＤ４２ａが、問合せ側のセンサーＩＤ４３ａに対応付けて前回位置情報４３に設定され（ステップＳ３６）、検索処理が終了する。
また、図１８のステップＳ１２において、検出対象位置が前回検索領域４３ｂ内にないと判断された場合（ステップＳ１２のＮｏルート）、ノード範囲情報４４を用いた検索開始ノードの決定処理を実行すべく、図２０のステップＳ４１に移行する。
【０１０９】
図２０に示すように、図１８のステップＳ１２のＮｏルートを経て、検索開始ノード決定部５３（距離取得部５３ａ）により、前回領域からの移動距離が計算される（ステップＳ４１）。一例として、距離取得部５３ａは、前回検索領域４３ｂの領域データの基準位置と検出対象位置との間の距離を、領域データの次元軸に沿った方向ごとに算出する。
次いで、検索開始ノード決定部５３（ノード検索部５３ｂ）により、前回検索領域４３ｂを含むインデックスツリーの葉ノードに係るノード範囲情報４４から、当該葉ノードのノード範囲４４ｂが取り出される（ステップＳ４２）。
【０１１０】
そして、ノード検索部５３ｂにより、取り出したノード範囲４４ｂが全次元で算出した移動距離よりも大きいか否かが判定される（ステップＳ４３）。取り出したノード範囲４４ｂが少なくとも１つの次元で算出した移動距離以下であると判定された場合（ステップＳ４３のＮｏルート）、ノード検索部５３ｂにより、前回検索領域４３ｂを含む葉ノードに係るノード範囲情報４４から全てのノードのノード範囲４４ｂを取り出したか否かが判定される（ステップＳ４４）。全てのノードのノード範囲４４ｂを取り出していないと判定された場合（ステップＳ４４のＮｏルート）、ノード検索部５３ｂにより、ノード範囲情報４４から１つ上位のノードのノード範囲４４ｂが取り出され（ステップＳ４５）、ステップＳ４３に移行する。
【０１１１】
一方、ステップＳ４４において、全てのノードのノード範囲４４ｂを取り出したと判定された場合（ステップＳ４４のＹｅｓルート）、ツリー検索部５４によるルートノードからのトップダウン検索を実行すべく、図１９のステップＳ２１に移行する。
また、ステップＳ４３において、取り出したノード範囲４４ｂが全次元で算出した移動距離よりも大きいと判定された場合（ステップＳ４３のＹｅｓルート）、ノード検索部５３ｂにより、取り出したノード範囲４４ｂのノードが検索開始ノードに決定される。そして、ツリー検索部５４による検索開始ノードからのボトムアップ検索を実行すべく、図２１のステップＳ５２に移行する。
【０１１２】
図２１に示すように、図２０のステップＳ４３のＹｅｓルートを経て、ツリー検索部５４により、領域インデックス４１に基づいて、ノード検索部５３ｂから取得した検索開始ノードが選択される。そして、ツリー検索部５４により、選択した選択ノードが検出対象位置を含むか否かが、領域インデックス４１を用いて判定される（ステップＳ５２）。選択ノードが検出対象位置を含まないと判定された場合（ステップＳ５２のＮｏルート）、ツリー検索部５４により、選択ノードがルートノードであるか否かが、領域インデックス４１を用いて判定される（ステップＳ５３）。選択ノードがルートノードでなければ（ステップＳ５３のＮｏルート）、ツリー検索部５４により、選択ノードの親ノードを検索すべく、選択ノードの１つ上位の親ノードが選択され（ステップＳ５１）、ステップＳ５２に移行する。
【０１１３】
一方、ステップＳ５３において、選択ノードがルートノードであれば（ステップＳ５３のＹｅｓルート）、ツリー検索部５４により、結果リスト無しとして問合せ側へ返答すべく、検索結果がレスポンス転送部５６に出力される（ステップＳ５４）。なお、レスポンス転送部５６では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置６へ送信される。
【０１１４】
そして、前回領域設定部５７により、問合せ側のセンサーＩＤ４３ａに対応付けて未検出である旨が前回位置情報４３に設定され（ステップＳ５５）、検索処理が終了する。
また、ステップＳ５２において、選択ノードが検出対象位置を含むと判定された場合（ステップＳ５２のＹｅｓルート）、ツリー検索部５４により、選択した選択ノードが葉ノードであるか否かが、領域インデックス４１を用いて判定される（ステップＳ５６）。選択ノードが葉ノードでないと判定された場合（ステップＳ５６のＮｏルート）、ツリー検索部５４により、選択ノードの子ノードに検出対象位置を含むものがあるか否かが、領域インデックス４１を用いて判定される（ステップＳ５７）。
【０１１５】
選択ノードの子ノードに検索座標を含むものがあると判定された場合（ステップＳ５７のＹｅｓルート）、ツリー検索部５４により、検出対象位置を含む子ノードが選択候補ノードに追加され（ステップＳ５８）、ステップＳ５９に移行する。一方、選択ノードの子ノードに検出対象位置を含むものがないと判定された場合（ステップＳ５７のＮｏルート）、ツリー検索部５４により、全ての選択候補ノードの検索を終えたか否かが判定される（ステップＳ５９）。
【０１１６】
全ての選択候補ノードの検索を終えていないと判定された場合（ステップＳ５９のＮｏルート）、ツリー検索部５４により、選択候補ノード内の１つの未検索ノードが選択され（ステップＳ６０）、ステップＳ５６に移行する。一方、全ての選択候補ノードの検索を終えたと判定された場合（ステップＳ５９のＹｅｓルート）、選択ノードに検出対象位置を含むものがないので、選択ノードのさらに上位の親ノードを検索すべく、ステップＳ５１に移行する。
【０１１７】
また、ステップＳ５６において、選択ノードが葉ノードであると判定された場合（ステップＳ５６のＹｅｓルート）、ツリー検索部５４により、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあるか否かが判定される（ステップＳ６１）。選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがないと判定された場合（ステップＳ６１のＮｏルート）、次の選択候補ノードを検索すべく、ステップＳ５９に移行する。
【０１１８】
一方、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあると判定された場合（ステップＳ６１のＹｅｓルート）、ツリー検索部５４により、該当領域データのうちの１つが該当データとして結果リストに追加される（ステップＳ６２）。ここで、ツリー検索部５４による領域インデックス４１を用いた検索が終了し、図１８のステップＳ１４に移行する。なお、ツリー検索部５４は、該当領域データのうちの１つとして、重複領域４２ｄの数が最小の領域データを結果リストに追加しても良い。これは、図１８のステップＳ１４以降の重複領域検索部５５の処理において、さらに検出対象位置を含む領域を検索する際、検索対象となる重複領域４２ｄの数を減らすためである。
【０１１９】
〔１−５−３〕領域データ追加処理
次に、本実施形態に係る領域検索サーバ２における領域データ追加処理の動作例を図２２及び図２３を参照しながら説明する。図２２及び図２３は、本実施形態に係る領域データ追加処理の手順の一例を示すフローチャートである。
まず、制御部５により、領域インデックス４１に基づいて、ルートノードが選択される（ステップＳ７１）。そして、制御部５により、選択した選択ノードが葉ノードであるか否かが判定される（ステップＳ７２）。
【０１２０】
選択ノードが葉ノードでないと判定された場合（ステップＳ７２のＮｏルート）、制御部５により、領域インデックス４１に基づいて、選択ノードの子ノードに追加する領域（以下、追加領域という）を包含するものがあるか否かが判定される（ステップＳ７３）。一例として、制御部５は、領域インデックス４１に基づいて、選択ノードの子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出し、それぞれの子ノードの矩形領域に、追加領域を包含する矩形領域があるか否かを判定する。
【０１２１】
追加領域を包含するものがあると判定された場合（ステップＳ７３のＹｅｓルート）、制御部５により、追加領域を包含する子ノードのうち、矩形領域の面積が最小のものが選択ノードとして選択され（ステップＳ７４）、ステップＳ７２に移行する。
一方、追加領域を包含するものがないと判定された場合（ステップＳ７３のＮｏルート）、制御部５により、追加領域を含めると拡大量が最小になる子ノードが選択ノードとして選択され（ステップＳ７５）、ステップＳ７２に移行する。
【０１２２】
また、ステップＳ７２において、選択ノードが葉ノードであると判定された場合（ステップＳ７２のＹｅｓルート）、図２３のステップＳ８１に移行する。
続いて、制御部５により、選択した葉ノードに追加領域の領域データが追加され（ステップＳ８１）、ステップＳ８２に移行する。一例として、制御部５は、領域インデックス４１の該当する葉ノードのデータリストに、追加領域の領域データへのポインタ、例えば領域ＩＤ４２ａを追加するとともに、領域データ情報４２に追加領域の領域データを追加する。なお、このとき、制御部５は、領域データ情報４２を用いて、追加領域の領域データと重複する領域データを検索し、互いに重複する領域データの重複領域４２ｄに互いの領域ＩＤ４２ａを設定して、領域データ情報４２を更新することができる。
【０１２３】
ここで、ステップＳ８１の処理により、選択した葉ノードの持つ領域データ数が上限を超える場合がある。つまり、Ｒツリーでは、各ノードの持つ子ノード数の上限と下限とが所定の値に定められる。そして、領域データの追加や削除の際に、この上限と下限とに基づいてノードの分割や統合を行なうことで、全体の木の深さや幅を調節し、領域検索の処理量の最悪値を抑えるのである。なお、ルートノードは、追加や削除を行なう際に子ノードの大規模なノード移動を不要にするため、子ノードの下限が２となる。
【０１２４】
そこで、ステップＳ８１の処理によって、選択した葉ノードの持つ領域データ数が所定の上限を超えるか否かが、制御部５により判定される（ステップＳ８２）。領域データ数が上限を超える場合（ステップＳ８２のＹｅｓルート）、制御部５により、葉ノードの矩形領域を分割する場合に、分割結果の矩形領域の大きさの和が最小となるように葉ノードが２分割され、親ノードに追加される（ステップＳ８３）。一例として、制御部５は、ノードを、ノード内の原点から最も近い領域データを含むノードと、原点から最も遠い領域データを含むノードとの２つのノードに分割する。そして、制御部５は、他の領域データを、２領域のうちの領域データの追加による拡大領域が小さくなる方のノードに追加して、２つに分割したノードを親ノードに追加する。なお、制御部５は、他の領域データが分割した双方のノードに含まれる場合、データ数が少ないノードに加える。
【０１２５】
なお、領域データ数が上限を超えない場合（ステップＳ８２のＮｏルート）、領域データ追加処理が終了する。
また、ステップＳ８３の処理により、追加する親ノードの持つ子ノード数が上限を超える場合がある。
そこで、ステップＳ８３の処理によって、追加する親ノードの持つ子ノード数が上限を超えるか否かが、制御部５により判定される（ステップＳ８４）。追加する親ノードの持つ子ノード数が上限を超えない場合（ステップＳ８４のＮｏルート）、領域データ追加処理が終了する。
【０１２６】
一方、ノードの持つ子ノード数が上限を超える場合（ステップＳ８４のＹｅｓルート）、制御部５により、追加する親ノードがルートノードであるか否かが判定される（ステップＳ８５）。追加する親ノードがルートノードでないと判定された場合（ステップＳ８５のＮｏルート）、制御部５により、分割結果の矩形領域の大きさの和が最小となるようにノードが分割される。そして、制御部５により、分割後の増加したノードが分割元のノードの親ノードに追加され（ステップＳ８６）、ステップＳ８４に移行する。
【０１２７】
一方、追加する親ノードがルートノードであると判定された場合（ステップＳ８５のＹｅｓルート）、制御部５により、現在のルートノードが分割され、現在のルートノードの上位に新たなルートノードが作成され（ステップＳ８７）、領域データ追加処理が終了する。
なお、ステップＳ８３、Ｓ８６又はＳ８７においてノードが分割される際には、制御部５により、領域インデックス４１が更新される。
【０１２８】
〔１−５−４〕ノード範囲設定処理
次に、本実施形態に係る領域検索サーバ２におけるノード範囲設定処理の動作例を図２４を参照しながら説明する。図２４は、本実施形態に係るノード範囲設定処理の手順の一例を示すフローチャートである。
まず、ノード範囲設定部５８により、領域インデックス４１を用いて、ノード領域が生成・更新されたノードのうちの最上位のノードが選択される（ステップＳ９１）。例えば、インデックスが構築される際には、全てのノードのノード領域が生成されるため、ノード範囲設定部５８は、ルートノードを選択する。また、図２２及び図２３を参照して説明したように、領域データの追加（又は削除）等が行なわれる際には、領域データの追加等により、葉ノードのノード領域が更新されたり、ノードの分割又は結合が発生し上位のノードのノード領域が更新される可能性があるため、ノード領域が更新されたノードのうちの最上位のノードを選択する。
【０１２９】
そして、ノード範囲設定部５８により、領域インデックス４１を用いて、選択した選択ノードのノード範囲４４ｂが算出（取得）され、算出したノード範囲４４ｂが選択ノードと対応付けてノード範囲情報４４に追加される（ステップＳ９２）。
なお、領域データの追加又は削除が行なわれる際等、既にノード範囲情報４４が設定されている場合には、ノード範囲設定部５８は、ノード領域が更新されたノードのうちの最上位のノードに係る更新前のノード範囲４４ｂが設定されたノード範囲情報４４を予め削除しても良い。つまり、ノード範囲設定部５８は、当該最上位のノードに含まれる全ての葉ノードに係るノード範囲情報４４を予め削除しても良い。或いは、ノードの分割又は結合が発生していない場合には、ノード範囲設定部５８は、ノード範囲情報４４を削除する代わりに、算出したノード範囲４４ｂを更新前のノード範囲に上書きしても良い。
【０１３０】
次いで、ノード範囲設定部５８により、領域インデックス４１を用いて、選択ノードが子ノードを持つか否かが判定される（ステップＳ９３）。選択ノードが子ノードを持たない場合（ステップＳ９３のＮｏルート）、ノード範囲設定処理が終了する。一方、選択ノードが子ノードを持つ場合（ステップＳ９３のＹｅｓルート）、ノード範囲設定部５８により、全ての子ノードが選択候補ノードとして決定される（ステップＳ９４）。
【０１３１】
続いて、ノード範囲設定部５８により、選択候補ノードからノードのノード範囲４４ｂが未算出のノードが１つ選択される（ステップＳ９５）。そして、ノード範囲設定部５８により、領域インデックス４１を用いて、選択した選択ノードのノード範囲４４ｂが算出され、算出したノード範囲４４ｂが選択ノードと対応付けてノード範囲情報４４に追加される（ステップＳ９６）。
【０１３２】
なお、ステップＳ９６においては、ノード範囲設定部５８は、領域インデックス４１を用いて、選択ノード（子ノード）のノード範囲４４ｂを、当該選択ノードの親ノードのノード範囲４４ｂを追加したノード範囲情報４４に追加する。これにより、選択ノードが葉ノードになったとき、ノード領域が更新されたノードのうちの最上位のノードから葉ノードに向けて、それぞれのノード範囲４４ｂが計算され追加されたノード範囲情報４４が、葉ノードごとに生成される。
【０１３３】
次いで、ノード範囲設定部５８により、全ての選択候補ノードのノード範囲４４ｂの算出が終了したか否かが判定される（ステップＳ９７）。全ての選択候補ノードのノード範囲４４ｂの算出が終了していないと判定された場合（ステップＳ９７のＮｏルート）、ステップＳ９５に移行する。
一方、全ての選択候補ノードのノード範囲４４ｂの算出が終了したと判定された場合（ステップＳ９７のＹｅｓルート）、ノード範囲設定部５８により、子ノードを持つ選択候補ノードがあるか否かが判定される（ステップＳ９８）。ノード範囲設定部５８により、選択候補ノードがいずれも子ノードを持たないと判定された場合（ステップＳ９８のＮｏルート）、ノード範囲設定処理が終了する。一方、少なくとも１つの選択候補ノードが子ノードを持つと判定された場合（ステップＳ９８のＹｅｓルート）、ステップＳ９４に移行する。つまり、ノード範囲設定部５８により、ステップＳ９４において、少なくとも１つの選択候補ノードが持つ子ノードが、新たな選択候補ノードとして決定される。
【０１３４】
〔１−６〕まとめ
上述のように、一実施形態に係る領域検索サーバ２によれば、木構造の空間インデックス（領域インデックス４１）を用いて、与えられた位置情報がどの領域に含まれるかを探索する際に、距離取得部５３ａにより、前回検索領域４３ｂと、位置情報との間の距離が取得される。そして、ノード検索部５３ｂにより、記憶部４に記憶された情報であって複数のノードそれぞれに設定される閾値に関するノード範囲情報４４に基づいて、距離取得部５３ａが取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードが検索される。
【０１３５】
従って、領域を検索する際に、距離取得部５３ａ及びノード検索部５３ｂにより、前回検索できた領域からの移動距離に応じた最適な閾値に対応するノードが、検索開始ノードとして決定される。これにより、ツリー検索部５４は、位置情報が含まれる可能性の高いノードから領域の検索を開始することができるため、位置情報がどの領域に含まれるかを高速に判定することができ、検索時間を短縮することができる。
【０１３６】
また、複数の閾値に関するノード範囲情報４４は、ツリー構造における葉ノードごとに記憶部４に記憶された情報であって、ツリー構造における葉ノードからルートノードまでの複数のノードそれぞれのノード領域のノード範囲４４ｂに関する情報である。そして、ノード検索部５３ｂにより、距離取得部５３ａが取得した距離を範囲内に含むノードが検索される。すなわち、ノード検索部５３ｂにより、前回検索領域４３ｂを含む葉ノードからその上位のノードにおいて、位置情報がどのノードの配下に位置するかが推定される。
【０１３７】
従って、距離取得部５３ａ及びノード検索部５３ｂにより、個々のノードの大きさと移動距離とに基づいて、前回検索できた領域を含むノードの大きさと移動距離とのバランスが最適となる閾値に対応するノードが、検索開始ノードとして決定される。これにより、正確に検索開始ノードを決定することができ、ツリー検索部５４による検索時間を短縮することができる。
【０１３８】
ここで、領域検索サーバ２が、上記〔１−２〕において説明した（１）前回位置情報４３を用いたボトムアップ検索、及び、（２）重複領域４２ｄを含む領域データ情報４２を用いた重複領域データの検索の処理を行なう一方、（３）としての検索開始ノード決定部５３の処理を行なわない場合の領域検索処理について説明する。
図２５は、図２０及び図２１に示すノード範囲情報４４及び検索開始ノード決定部５３を用いた領域検索処理に対する対比例としての領域検索処理の手順の一例を示すフローチャートである。ここで、図２５のステップＳ５１〜Ｓ６２は、図２１のステップＳ５１〜Ｓ６２に相当するものである。
【０１３９】
例えば、図２５では、図１８のステップＳ１２において、検出対象位置が前回検索領域４３ｂ内にないと判断された場合（ステップＳ１２のＮｏルート）、図２０及び図２１に係る処理に代えて、ツリー検索部５４により、図２５のステップＳ５１の処理、つまり、ボトムアップ検索が実行される。なお、ステップＳ５１〜Ｓ６２の処理は、図２１を用いて説明したものと同様であるため、その説明を省略する。
【０１４０】
領域検索サーバ２は、図１８、図１９及び図２５に示す処理を実行する場合、端末装置６の移動距離が前回検索できた領域から比較的近距離である場合は、前回検索領域４３ｂが含まれる葉ノードからボトムアップ検索を行なうことで、ルートノードから検索する従来のＲツリーによる検索に比べて検索処理を高速化することができる。
一方、領域検索サーバ２は、移動距離が比較的長距離（中距離以上）になる場合は、検索対象の位置情報を含む領域データが発見されず、ボトムアップでルートノードまで検索し、さらにルートノードから検索することになる可能性が高い。特に、領域データが一定エリアに集中する（領域データが「密」である）場合には、検索対象の位置情報を含む領域データがボトムアップでルートノードに到達するまで発見されない可能性が高い。これは、上述の如く個々のノードに含まれる領域データやノードの上限が定められているため、個々のノードの大きさが小さくなり、領域データが「疎」の場合と比べて、移動距離が小さくても別のノードに移動している可能性が高いためである。従って、図２５に示す例では、領域検索サーバ２は、移動距離が比較的長距離になる場合は、結果的にツリーのルートノードから検索が行なわれることになり、前回位置情報４３を記憶する利点が得られず、検索処理を高速化することが困難である。また、領域検索サーバ２は、移動距離が比較的長距離の場合に、ボトムアップ検索を行なわずに、ルートノードから検索を開始するように構成することも考えられるが、比較的長距離であると判定するための条件は、端末装置６の位置やノードの範囲によって異なるため、切り分けが難しい。
【０１４１】
以上のように、従来のＲツリーによる領域検索に対して、前回領域比較部５２、ツリー検索部５４及び重複領域検索部５５によるボトムアップ探索や重複領域の検索を追加しただけでは、探索ノードの大きさと移動距離とのバランスが悪い場合に、検索効率が低下してしまう。
そこで、本実施形態に係る領域検索サーバ２によれば、ノード範囲情報４４及び検索開始ノード決定部５３をそなえ、ボトムアップ探索を行なう移動距離の閾値を複数設け、それぞれの閾値を探索ノードの大きさに合わせる。そして、領域検索サーバ２は、検索開始ノード決定部５３により、前回検索できた領域と所定の位置との間の距離（移動距離）を算出し、移動距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索して、ツリー検索部５４により検索したノードから領域の検索を行なうのである。
【０１４２】
図２６は、本実施形態に係るノード範囲情報４４及び検索開始ノード決定部５３を用いた領域検索処理と他の領域検索処理との領域検索時間の比較結果の一例を示す図である。なお、図２６は、領域データ数を１万件とし、１０万回の領域検索を行なった場合の例である。なお、領域データの密接度としては、疎領域の場合、全エリアにランダムにデータを配置する一方、密領域の場合、８割のエリアにランダムにデータを配置しており、移動距離が比較的短距離、又は、比較的長距離（中距離以上）の場合について、領域検索を行なった場合の例である。
【０１４３】
図２６に示すように、ノード範囲情報４４及び検索開始ノード決定部５３を用いた領域検索によれば、特に、領域データの密度が高い場合に、端末装置６（センサーＩＤ４３ａ）が収集する位置情報の移動距離が比較的長距離であっても、検索時間の短縮が可能となる。図２６に示す例では、領域データが「密」であり、移動距離が比較的長距離である場合に、従来のＲツリーによる領域検索を行なう場合や、ボトムアップ探索及び重複領域の検索を行なう場合（ノード範囲情報４４及び検索開始ノード決定部５３を用いない場合）と比べて、２倍以上の性能（検索時間が１／２）が得られることがわかる。また、領域データが「密」であり、移動距離が比較的短距離である場合には、従来のＲツリーによる領域検索を行なう場合と比べて、６．７倍の性能が得られ、ボトムアップ探索及び重複領域の検索を行なう場合と同程度の性能が得られる。なお、領域データが「疎」である場合においても、従来のＲツリーによる領域検索を行なう場合や、ボトムアップ探索及び重複領域の検索を行なう場合と同程度の性能が得られる。
【０１４４】
〔２〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、かかる特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、図１及び図２に示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されなくても良い。例えば、前回領域比較部５２、検索開始ノード決定部５３、ツリー検索部５４、及び、重複領域検索部５５を任意の組み合わせで統合しても良い。一方、ツリー検索部５４を、葉ノードにおける検索処理と葉ノード以外のノードにおける検索処理とに分散しても良い。また、領域インデックス４１、領域データ情報４２、前回位置情報４３又はノード範囲情報４４等の記憶部４を領域検索サーバ２の外部装置としてネットワーク経由で接続するようにしても良い。
【０１４５】
また、本実施形態に係るノード検索部５３ｂは、ノード範囲４４ｂが移動距離よりも大きく、最も葉ノードに近いノードを検索開始ノードとして決定するものとして説明したが、これに限定されるものではない。例えばノード検索部５３ｂは、ノード範囲４４ｂが移動距離以上であり、最も葉ノードに近いノードを検索開始ノードとして決定しても良い。
なお、制御部５は、上述の如く、リクエスト受付部５１、前回領域比較部５２、検索開始ノード決定部５３（距離取得部５３ａ及びノード検索部５３ｂ）、ツリー検索部５４、重複領域検索部５５、レスポンス転送部５６、前回領域設定部５７及びノード範囲設定部５８としての機能をそなえる。この制御部５としての機能を実現するためのプログラム（領域検索プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されても良い。そして、コンピュータは例えば読取装置９によりその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしても良い。
【０１４６】
制御部５としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ４ａ、記憶装置４ｂ、又は、図示しないＲＯＭ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ５ａ）によって実行される。このとき、記録媒体に記録されたプログラムを例えば読取装置９によりコンピュータが読み取って実行するようにしても良い。
【０１４７】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、領域検索サーバ２がコンピュータとしての機能を有しているのである。
【０１４８】
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータが、
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
検索された領域の情報を出力する
ことを特徴とする、領域検索方法。
【０１４９】
（付記２）
前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに前記記憶部に記憶された情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノードを検索する処理において、前記取得した距離を範囲内に含むノードを検索することを特徴とする、付記１記載の領域検索方法。
【０１５０】
（付記３）
前記距離を取得する処理において、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得し、
前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されていることを特徴とする、付記２記載の領域検索方法。
【０１５１】
（付記４）
前記距離を取得する処理において、前記前回検索された領域と前記所定の位置との間の距離を、前記領域の次元軸に沿った方向ごとに取得し、
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、全ての次元軸に沿った方向で前記取得した各方向の距離よりも大きい範囲を持つノードを検索することを特徴とする、付記２または付記３記載の領域検索方法。
【０１５２】
（付記５）
前記ノードを検索する処理において、前記記憶部に記憶された、前記前回検索された領域を含む葉ノードに係る前記情報に基づいて、前記取得した距離を範囲内に含むノードを検索することを特徴とする、付記２〜４のいずれか１項記載の領域検索方法。
（付記６）
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、前記複数のノードのうちの葉ノードから上位のノードに向かって順に、前記取得した距離を範囲内に含むか否かを判断し、
判断の結果、前記取得した距離を範囲内に含む場合、当該ノードを、前記検索されたノードとして決定することを特徴とする、付記２〜５のいずれか１項記載の領域検索方法。
【０１５３】
（付記７）
前記所定の位置を含む領域を検索する処理において、検索されたノードに対応するノード領域に前記所定の位置が含まれない場合、前記インデックス情報を用いて、前記検索されたノードよりもルートノードに近いノードから前記所定の位置を含む領域を検索することを特徴とする、付記１〜６のいずれか１項記載の領域検索方法。
【０１５４】
（付記８）
前記所定の位置を含む領域の問合せ要求を取得すると、該所定の位置が前回検索された領域に含まれるか否かを判定し、
判定の結果、前記所定の位置が前記前回検索された領域に含まれない場合、前記距離を取得する処理を実行することを特徴とする、付記１〜７のいずれか１項記載の領域検索方法。
【０１５５】
（付記９）
判定の結果、前記所定の位置が前記前回検索された領域に含まれる場合、前記前回検索された領域と重複する領域の中から前記所定の位置を含む領域を検索し、
前記前回検索された領域の情報とともに前記重複する領域から検索された領域の情報を出力することを特徴とする、付記８記載の領域検索方法。
【０１５６】
（付記１０）
コンピュータに、
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
検索された領域の情報を出力する、
処理を実行させることを特徴とする、領域検索プログラム。
【０１５７】
（付記１１）
前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに前記記憶部に記憶された情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノードを検索する処理において、前記取得した距離を範囲内に含むノードを検索する処理を前記コンピュータに実行させることを特徴とする、付記１０記載の領域検索プログラム。
【０１５８】
（付記１２）
前記距離を取得する処理において、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得する処理を前記コンピュータに実行させ、
前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されることを特徴とする、付記１１記載の領域検索プログラム。
【０１５９】
（付記１３）
前記距離を取得する処理において、前記前回検索された領域と前記所定の位置との間の距離を、前記領域の次元軸に沿った方向ごとに取得し、
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、全ての次元軸に沿った方向で前記取得した各方向の距離よりも大きい範囲を持つノードを検索する、処理を前記コンピュータに実行させることを特徴とする、付記１１または付記１２記載の領域検索プログラム。
【０１６０】
（付記１４）
前記ノードを検索する処理において、前記記憶部に記憶された、前記前回検索された領域を含む葉ノードに係る前記情報に基づいて、前記取得した距離を範囲内に含むノードを検索する処理を前記コンピュータに実行させることを特徴とする、付記１１〜１３のいずれか１項記載の領域検索プログラム。
【０１６１】
（付記１５）
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、前記複数のノードのうちの葉ノードから上位のノードに向かって順に、前記取得した距離を範囲内に含むか否かを判断し、
判断の結果、前記取得した距離を範囲内に含む場合、当該ノードを、前記検索されたノードとして決定する、処理を前記コンピュータに実行させることを特徴とする、付記１１〜１４のいずれか１項記載の領域検索プログラム。
【０１６２】
（付記１６）
前記所定の位置を含む領域を検索する処理において、検索されたノードに対応するノード領域に前記所定の位置が含まれない場合、前記インデックス情報を用いて、前記検索されたノードよりもルートノードに近いノードから前記所定の位置を含む領域を検索する処理を前記コンピュータに実行させることを特徴とする、付記１０〜１５のいずれか１項記載の領域検索プログラム。
【０１６３】
（付記１７）
前記所定の位置を含む領域の問合せ要求を取得すると、該所定の位置が前回検索された領域に含まれるか否かを判定し、
判定の結果、前記所定の位置が前記前回検索された領域に含まれない場合、前記距離を取得する処理を実行する、処理を前記コンピュータに実行させることを特徴とする、付記１０〜１６のいずれか１項記載の領域検索プログラム。
【０１６４】
（付記１８）
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得する距離取得部と、
複数のノードそれぞれに設定される閾値に関する情報を記憶する記憶部と、
前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するノード検索部と、
前記インデックス情報を用いて、前記ノード検索部により検索されたノードから前記所定の位置を含む領域を検索する領域検索部と、
前記領域検索部により検索された領域の情報を出力する出力部と、をそなえることを特徴とする、情報処理装置。
【０１６５】
（付記１９）
前記記憶部が記憶する前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに記憶される情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノード検索部は、前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離を範囲内に含むノードを検索することを特徴とする、付記１８記載の情報処理装置。
【０１６６】
（付記２０）
前記距離取得部は、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得し、
前記記憶部に記憶された、前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されることを特徴とする、付記１９記載の情報処理装置。
【符号の説明】
【０１６７】
１    領域検索システム
２    領域検索サーバ（情報処理装置）
３    通信インタフェース
４    記憶部
４ａ    記憶装置
４ｂ    メモリ
４１    領域インデックス（インデックス情報）
４２    領域データ情報
４３    前回位置情報
４４    ノード範囲情報
５    制御部
５ａ    ＣＰＵ
５１    リクエスト受付部
５２    前回領域比較部
５３    検索開始ノード決定部
５３ａ    距離取得部
５３ｂ    ノード検索部
５４    ツリー検索部（領域検索部）
５５    重複領域検索部
５６    レスポンス転送部（出力部）
５７    前回領域設定部
５８    ノード範囲設定部
６    端末装置（領域問合せ装置）
７    入力装置
８    出力装置
９    読取装置
【図１】
0005765253.tif 000002
【図２】
0005765253.tif 000003
【図３】
0005765253.tif 000004
【図４】
0005765253.tif 000005
【図５】
0005765253.tif 000006
【図６】
0005765253.tif 000007
【図７】
0005765253.tif 000008
【図８】
0005765253.tif 000009
【図９】
0005765253.tif 000010
【図１０】
0005765253.tif 000011
【図１１】
0005765253.tif 000012
【図１２】
0005765253.tif 000013
【図１３】
0005765253.tif 000014
【図１４】
0005765253.tif 000015
【図１５】
0005765253.tif 000016
【図１６】
0005765253.tif 000017
【図１７】
0005765253.tif 000018
【図１８】
0005765253.tif 000019
【図１９】
0005765253.tif 000020
【図２０】
0005765253.tif 000021
【図２１】
0005765253.tif 000022
【図２２】
0005765253.tif 000023
【図２３】
0005765253.tif 000024
【図２４】
0005765253.tif 000025
【図２５】
0005765253.tif 000026
【図２６】
0005765253.tif 000027
【図２７】
0005765253.tif 000028