JP5765253B2 - 領域検索方法,領域検索プログラム,および情報処理装置 - Google Patents

領域検索方法,領域検索プログラム,および情報処理装置 Download PDF

Info

Publication number
JP5765253B2
JP5765253B2 JP2012012147A JP2012012147A JP5765253B2 JP 5765253 B2 JP5765253 B2 JP 5765253B2 JP 2012012147 A JP2012012147 A JP 2012012147A JP 2012012147 A JP2012012147 A JP 2012012147A JP 5765253 B2 JP5765253 B2 JP 5765253B2
Authority
JP
Japan
Prior art keywords
node
area
search
information
region
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012012147A
Other languages
English (en)
Other versions
JP2013152531A (ja
Inventor
佐野 健
健 佐野
佐々木 和雄
和雄 佐々木
茂紀 福田
茂紀 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012012147A priority Critical patent/JP5765253B2/ja
Publication of JP2013152531A publication Critical patent/JP2013152531A/ja
Application granted granted Critical
Publication of JP5765253B2 publication Critical patent/JP5765253B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本件は、領域検索方法,領域検索プログラム,および情報処理装置に関する。
近年、GPS(Global Positioning System)が搭載された携帯電話等の普及により、端末の位置情報を取得及び送信できるようになり、この位置情報を利用した様々なサービスが増加している。位置情報を利用したサービスの例としては、ある店舗の周辺(領域)に端末を保持した使用者が移動したときに、サービス提供者がその端末に対して店舗の情報を通知するサービス等がある。
今後、位置情報を通知する端末やその位置情報を利用するサービスの増加に伴い、サービスを提供するサーバ等の情報処理装置において位置情報を検索する処理量も増加する。従って、情報処理装置には、通知される位置情報がどの領域に含まれるかを高速に判定することが求められる。
空間内に存在する大量のデータから条件に合ったデータを高速に検索するために、情報処理装置では、インデックスを用いたデータ管理方式が利用される。インデックスを用いたデータ管理方式には、例えば、多次元データを検索する場合に用いられるR−Tree(Rツリー)を利用した方式がある。
Rツリーを利用したデータ管理について、図27を参照して説明する。図27は、Rツリーで管理する領域データ及び矩形領域の例を示す図であり、(a)は領域データとノードとの位置関係の一例を示す図、(b)は空間インデックスツリーの一例を示す図である。
図27(a)及び(b)に示すように、R1は、中間ノードである子ノードR2及びR3の矩形領域を全て含む矩形領域であり、R2は、R4及びR5の矩形領域を全て含む矩形領域であり、R3は、R6及びR7の矩形領域をすべて含む矩形領域である。また、最下段のR4〜R7は葉ノードであり、内部に領域データを含む矩形領域である。すなわち、R1はR2のインデックス情報となり、R2はR4のインデックス情報となっている。
例えば情報処理装置において、条件に合ったデータを検索するためにかかるインデックス情報を用いて該当範囲を検索する場合、情報処理装置は、ルートノードであるR1の2つの子ノードR2及びR3から検索範囲が重なるノードを選択する。重なる部分を持つノードは、再帰的に検索範囲が重なるノードを選択し、最終的に葉ノードの中から検索範囲内にある領域データの情報を選択する。情報処理装置は、検索範囲と重なる全ての葉ノードから領域データの情報を選択し終えると、選択した領域データの情報を検索結果として出力し、検索を終了する。このように、情報処理装置は、検索範囲が重なる子ノードに絞って検索を行なうことで、全てのノードのノード領域を確認せずに所望の情報を取得でき、検索を高速化することができる。
なお、関連する技術として、親ノードの矩形の位置に基づいて子ノードの矩形の位置を相対的に表現することで、位置表現コストを削減する技術がある。
また、他の関連する技術として、同一位置に複数の異なる情報提供エリアを定義するために、Rツリーにより候補となるエリアを高速に検索し、検索されたエリアから改良された4分木データを利用してエリアを特定し、特定されたエリアに関連するサービスや情報を提供する技術がある。
さらに、検索処理を高速且つ小容量で実施するために、ルートノードから順に、検索範囲の代表点をスカラ値に写像した検索符号値と、各ノードの空間領域のキー値とを照合することで、検索範囲の代表点が含まれる空間領域と、その空間領域からリンクするオブジェクトとを抽出する技術がある。この技術では、空間データ管理装置は、一巡ごとに検索範囲から辿った空間領域を除外した領域の代表点を新たな検索符号値として更新し繰り返すことで、検索範囲に交わるオブジェクトを検索する。
特開2000−200342号公報 国際公開WO2006/059629号パンフレット 特開2010−160591号公報
しかしながら、インデックスを用いた従来の範囲検索では、検索時間を要してしまうという問題があった。すなわち、Rツリーを利用したデータ管理方式では、情報処理装置は、検索操作を実行する都度、ルートノードから検索を開始するので、検索を常時logNオーダの回数実行することになり、検索時間を要してしまう。
また、上述した関連する各技術においても、検索操作を実行する都度、ルートノードから検索を開始するので、検索時間を要してしまうことには変わりがない。
1つの側面では、本発明は、インデックスを用いた範囲検索の検索時間を短縮することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件の領域検索方法は、コンピュータが、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、検索された領域の情報を出力するものである。
また、本件の領域検索プログラムは、コンピュータに、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、検索された領域の情報を出力する、処理を実行させるものである。
さらに、本件の情報処理装置は、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得する距離取得部と、複数のノードそれぞれに設定される閾値に関する情報を記憶する記憶部と、前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するノード検索部と、前記インデックス情報を用いて、前記ノード検索部により検索されたノードから前記所定の位置を含む領域を検索する領域検索部と、前記領域検索部により検索された領域の情報を出力する出力部と、をそなえるものである。
一実施形態によれば、インデックスを用いた範囲検索の検索時間を短縮することができる。
一実施形態としての領域検索システムの構成例を示す図である。 本実施形態に係る領域検索サーバのハードウェア構成例を示す図である。 本実施形態に係る領域インデックスで管理する領域データ及び矩形領域の一例を示す図であり、(a)は領域データとノードとの位置関係の一例を示す図、(b)は空間インデックスツリーの一例を示す図である。 本実施形態に係る領域インデックスにおけるルートノードの情報の一例を示す図である。 本実施形態に係る領域インデックスにおける中間ノードの情報の一例を示す図である。 本実施形態に係る領域インデックスにおける葉ノードの情報の一例を示す図である。 本実施形態に係る領域データ情報のデータ構造の一例を示す図である。 本実施形態に係る前回位置情報のデータ構造の一例を示す図である。 本実施形態に係るノード範囲情報を説明する図であり、(a)はノードの位置関係の一例を示す図、(b)は空間インデックスツリーの一例を示す図である。 本実施形態に係るノード範囲情報のデータ構造の一例を示す図であり、(a)はノード範囲情報の一例を示す図、(b)は各ノードのノード範囲の一例を示す図である。 本実施形態に係るノード範囲情報のデータ構造の一例を示す図であり、(a)はノード範囲情報のデータ構造の一例を示す図、(b)は各ノードのノード範囲の一例を示す図である。 本実施形態に係る領域検索要求の内容の一例を示す図である。 本実施形態に係る領域検索応答の内容の一例を示す図である。 本実施形態に係る検索開始ノード決定部の説明における前回位置と今回位置との位置関係の一例を示す図である。 本実施形態に係る移動距離とノード範囲との位置関係の一例を示す図である。 本実施形態に係る移動距離及び空間インデックスツリーの一例を示す図である。 本実施形態に係るリクエスト受付処理の手順の一例を示すフローチャートである。 本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。 本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。 本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。 本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。 本実施形態に係る領域データ追加処理の手順の一例を示すフローチャートである。 本実施形態に係る領域データ追加処理の手順の一例を示すフローチャートである。 本実施形態に係るノード範囲設定処理の手順の一例を示すフローチャートである。 図20及び図21に示すノード範囲情報及び検索開始ノード決定部を用いた領域検索処理に対する対比例としての領域検索処理の手順の一例を示すフローチャートである。 本実施形態に係るノード範囲情報及び検索開始ノード決定部を用いた領域検索処理と他の領域検索処理との領域検索時間の比較結果の一例を示す図である。 Rツリーで管理する領域データ及び矩形領域の一例を示す図であり、(a)は領域データとノードとの位置関係の一例を示す図、(b)は空間インデックスツリーの一例を示す図である。
以下、図面を参照して実施の形態を説明する。
〔1〕一実施形態
〔1−1〕領域検索システムの構成例
図1は、一実施形態としての領域検索システム1の構成例を示す図であり、図2は、領域検索システム1のハードウェア構成例を示す図である。図1に例示するように、領域検索システム1は、少なくとも1つ(図1では1つ)の端末装置6と、各端末装置6と通信可能な領域検索サーバ2と、をそなえる。
端末装置(領域問合せ装置)6は、領域検索サーバ2に対して領域検索要求を送信して、領域検索サーバ2から領域検索応答を受信することで、所定の位置が含まれる領域の情報を領域検索サーバ2に問合せるものである。端末装置6としては、携帯電話やPDA(Personal Digital Assistant)等の情報端末であっても良いし、PC等のコンピュータであっても良く、少なくとも位置情報を取得可能であり、領域検索サーバ2と通信可能な装置であれば良い。
ここで、領域検索要求は、端末装置6の位置情報がいずれの領域に含まれるかを領域検索サーバ2に問合せる要求である。なお、位置情報は、例えば端末装置6が存在する緯度、経度の情報であるが、空間内の範囲を示す情報であっても良い。
また、領域検索要求には、端末装置6の位置情報とともに、例えば端末装置6が持つGPS受信機等のセンサーのID(IDentification)(以下、センサーIDという)等の識別IDが含まれる。なお、識別IDは、センサーIDに限定されるものではなく、領域検索を要求する端末装置6の装置IDであっても良いし、端末装置6を利用するユーザやグループ等の固有のIDや、携帯電話の携帯電話番号等の情報であっても良い。
領域検索応答は、領域検索要求に対応する応答であり、領域の検索結果である結果リストを含む。
領域検索サーバ(情報処理装置)2は、図1に例示するように、通信インタフェース3、記憶部4、及び、制御部5をそなえる。また、領域検索サーバ2は、図2に例示するように、ハードウェア構成として、記憶装置4a、メモリ4b、CPU(Central Processing Unit)5a、入力装置7、出力装置8、及び、読取装置9をそなえる。なお、領域検索サーバ2としては、PCやサーバ等のコンピュータが挙げられる。
通信インタフェース3は、各端末装置6との間で通信を確立して、各端末装置6から領域検索要求を受信したり、各端末装置6に対して領域検索応答を送信したりするインタフェースである。なお、通信インタフェース3は、例えば、LAN(Local Area Network)やインターネット等と接続するネットワークインタフェースカードや、無線アンテナを有する無線通信部等である。すなわち、本実施形態に係る領域検索サーバ2は、有線又は無線ネットワークを介して各端末装置6と通信可能に構成される。
記憶装置4aは、例えばHDD(Hard Disk Drive)等の磁気ディスク装置やSSD(Solid State Drive)等の半導体ドライブ装置等の各種デバイスであり、種々のデータやプログラム等を格納するハードウェアである。
メモリ4bは、種々のデータやプログラムを一時的に格納する記憶装置であって、CPU5aがプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。なお、メモリ4bとしては、例えばRAM(Random Access Memory)等の揮発性メモリが挙げられる。本実施形態においては、記憶装置4a及びメモリ4bの少なくとも一方は、領域検索サーバ2において用いられる種々の情報を記憶する記憶部4を構成する。
CPU5aは、種々の制御や演算を行なう処理装置であり、記憶装置4a、メモリ4b又は図示しないROM(Read Only Memory)等に格納されたプログラムや、後述する読取装置9により記録媒体から読み取られたプログラムを実行することにより、種々の機能を実現する。本実施形態においては、領域検索サーバ2における種々の処理を行なう後述する制御部5としての機能が、CPU5aにより実現される。なお、CPU5aに限らず、制御部5としての機能は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路、MPU(Micro Processing Unit)等の電子回路により実現されても良い。
入力装置7及び出力装置8は、それぞれユーザインタフェースであり、管理者等により、領域検索サーバ2の種々の制御を行なうために用いられる。例えば、領域検索サーバ2では、入力装置7から入力された情報に基づいて、プログラムの動作等の制御が行なわれ、制御結果や種々のメッセージ等の情報が出力装置8に提示される。なお、入力装置7としてはキーボードやマウス等が挙げられ、出力装置8としてはモニタやプリンタ等が挙げられる。
読取装置9は、制御部5からの制御に応じて、光ディスク(記録媒体)に記録されたデータやプログラム等の情報の読み取りを行なう装置である。
〔1−2〕領域検索サーバの説明
次に、簡単に、本実施形態に係る領域検索サーバ2について説明する。
従来のRツリーを用いた領域の検索では、領域検索サーバにより、領域検索を行なうたびに、毎回ツリーの最上位ノードから検索が実行されるため、ノードの深さに比例する比較処理が発生する。例えば、領域検索サーバでは、領域検索の際に、検索対象の位置情報を含む非葉ノードの子ノード数の総和に等しい回数の子ノードの範囲の重なり判定を行なうための計算量が発生する。さらに、領域検索サーバでは、検索対象の位置情報が重なる葉ノードが持つ領域データの情報の総和に等しい回数の、領域データが検索対象の位置情報を含むか否かの判定を行なうための計算量が発生する。
領域検索サーバが検索を行なう際に、あるエリアに領域データがまばらな(領域データが「疎」である)場合については、比較的短時間に、位置情報を含む領域データが無いと判断でき、検索を終了することができる。
一方、領域検索サーバは、あるエリアに領域データが多い(領域データが「密」である)場合については、領域データや中間ノードが重なり合っているため、多くの領域データ及びノードに係る検索が発生する。例えば、検索しようとする領域が集まるエリアとは、繁華街や交通機関等、人や物が集中するエリアであり、領域検索要求として領域検索サーバに与えられる位置情報も、このようなエリアに位置することが多い。従って、従来のRツリーを用いた領域の検索では、検索時間を効率的に削減することが困難であった。
そこで、本実施形態に係る領域検索サーバ2(制御部5)は、空間インデックスツリーを用いてある地点(所定の位置)がどの領域データに含まれるかを判定する際に、以下の(1)〜(3)の処理を行なうことで、領域検索の検索時間を短縮するものである。
(1)端末装置6(センサーID)ごとに前回検索できた領域を、後述する前回位置情報43として記憶部4に記憶しておき、次回検索を行なう際には、前回検索できた領域の近傍のノードをボトムアップ的に探索する。
(2)領域が重複する領域データについて、重複する互いの領域IDを重複領域として、記憶部4の後述する領域データ情報42に記憶することで、重複する領域データが異なる葉ノードに含まれる場合であっても、ツリーの全解探索が実行されることを防ぐ。
ここで、上記(1)及び(2)を実行する場合、前回検索できた領域からの端末装置6の移動距離が比較的短距離である場合には、領域検索サーバ2は、重複領域の探索や前回検索できた領域の近傍のノードの探索によって、検索時間の短縮を図ることができる。
一方、移動距離が比較的長距離(中距離以上)である場合には、検索対象の位置情報が、前回検索できた領域に含まれず、且つ、比較的遠くのノードの領域データに含まれる可能性が高い。従って、領域検索サーバ2は、上記(1)において前回検索できた領域からボトムアップ的に探索を行なっても、位置情報を含む領域データを発見しないままツリーのルートノードに到達してしまい、ルートノードからトップダウンに探索を行なうことになる。このため、移動距離が比較的長距離である場合、領域検索サーバ2は、上記(1)及び(2)を実行しても、従来のRツリーによる検索と同程度の性能しか得られない。
そこで、領域検索サーバ2(制御部5)は、次の(3)の処理を行なう。
(3)ツリーの葉ノードごとに、葉ノード及びその上位のノードとそれぞれのノードの範囲とを、後述するノード範囲情報44として記憶部4に記憶する。位置情報が与えられると、前回検索できた領域からの移動距離を算出し、前回検索できた領域を含む葉ノードからその上位のノードに向けて順に、移動距離がどのノードの配下に位置するかを推定し、推定したノードから探索を行なう。
上記(3)の処理により、領域検索サーバ2は、個々のノードの大きさと移動距離とに基づいて、前回検索できた領域を含むノードの大きさと移動距離とのバランスが最適となるノードを、検索を開始するノードとして決定することができる。これにより、移動距離が比較的長距離である場合でも、領域検索サーバ2は、移動距離に応じた最適なノードから領域検索を行なうことができ、検索時間を短縮することができる。
以下、上述の如き領域検索サーバ2の詳細を説明する。
〔1−3〕記憶部の説明
次に、図1に例示する記憶部4が記憶する情報について説明する。
記憶部4は、制御部5が実行するプログラム等を記憶するとともに、領域インデックス41と、領域データ情報42と、前回位置情報43と、ノード範囲情報44とを記憶する。
領域インデックス(インデックス情報)41は、空間内に存在する大量の領域から条件に合った領域を高速に検索するための索引情報であり、どの領域がどこにあるのかを示したインデックスをRツリーで保持する情報である。つまり、領域インデックス41は、ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造でこの複数の領域を管理する情報である。
なお、Rツリーでは、相互に重なり合う矩形領域(ノード領域)を持つノードにより木が構成され、各ノードは、子ノードの最小外接矩形、つまり子ノードのノード領域を全て含む最小の矩形領域である。ここで、矩形領域は、多次元に対応する超矩形を示し、二次元の場合は長方形、三次元の場合は直方体となる。四次元以上の場合も、次元数に合わせて拡張した領域を示す。以下、本実施形態に係る領域インデックス41は、二次元の空間における矩形領域を管理するものとする。
ここで、領域インデックス41に記憶される情報の例を、図3〜図6を参照して説明する。図3は、本実施形態に係る領域インデックス41で管理する領域データ及び矩形領域の一例を示す図であり、(a)は領域データとノードとの位置関係の一例を示す図、(b)は空間インデックスツリーの一例を示す図である。図4〜図6は、本実施形態に係る領域インデックス41におけるノード種別ごとの情報の一例を示す図であり、図4はルートノード、図5は中間ノード、図6は葉ノードの情報の一例を示す図である。
図3(a)及び(b)に例示するように、領域インデックス41は、ルートノード、中間ノード及び葉ノードのいずれかを示すノードで形成されるRツリーを記憶する。ルートノードは、Rツリーに1つ存在する頂点のノードである。また、葉ノードは、Rツリーの最底辺のノードであり、自らは子ノードを含まず、検索対象となる多次元(例えば二次元)のノードを1つ以上持つ。それ以外の木の中間に存在するノードは、中間ノードであり、それぞれ子ノードを1つ以上持つ。
図3(a)及び(b)に示す例では、ノードR1はルートノードであり、ノードR10及びR11は、それぞれR1の子ノード且つ中間ノードである。なお、ノードR1はノードR10及びR11の矩形領域(ノード領域)を全て含む矩形領域(最小外接矩形)である。
また、ノードR100及びR101は、それぞれ中間ノードR10の子ノード且つ葉ノードであり、ノードR110及びR111は、それぞれ中間ノードR11の子ノード且つ葉ノードである。なお、ノードR10はノードR100及びR101の矩形領域を全て含む矩形領域であり、ノードR11はノードR110及びR111の矩形領域を全て含む矩形領域である。
さらに、葉ノードであるノードR100は検索対象となる領域データ1、2及び3を持ち、葉ノードであるノードR101は検索対象となる領域データ4及び5を持つ。また、葉ノードであるノードR110は検索対象となる領域データ6及び7を持ち、葉ノードであるノードR111は検索対象となる領域データ8及び9を持つ。これらの葉ノードは、それぞれ内部に持つ領域データ(座標データ)の最小外接矩形である。なお、領域データ1〜9は、例えば領域データを識別可能な領域IDとすることができる。
領域インデックス41には、Rツリーの実体としてルート、中間、葉の各ノードの情報が含まれる。
図4に例示するように、領域インデックス41には、ルートノードの情報として、「ノード種別」、「矩形領域」及び「子ノードリスト」が含まれる。「ノード種別」は、ノードがルート、中間、葉のいずれであるかを示す情報である。「矩形領域」は、子ノードの担当領域(ノード領域)を全て含む最小外接矩形の情報である。「子ノードリスト」は、自身のノード(ここではルートノード)の子ノードへのリンクポインタのリストである。
図4の例では、ルートノードR1は、x,yの二次元データを管理する。なお、「x1=35.5、y1=139.0」はノードR1の担当領域の最小点であり、「x2=35.9、y2=139.5」はノードR1の担当領域の最大点を示す。すなわち、ノードR1が担当する領域つまりノードR1のノード領域は、両点を頂点として各次元軸に直交した4直線で作られる領域である。また、ノードR1の情報には、子ノード「R10」及び「R11」へのポインタのリストが含まれる。
また、図5に例示するように、領域インデックス41には、中間ノードの情報として、「ノード種別」、「矩形領域」及び「子ノードリスト」が含まれる。なお、中間ノードの情報である「ノード種別」、「矩形領域」及び「子ノードリスト」は、図4に示すものと同様であるので詳細な説明は省略する。領域インデックス41には、中間ノードR10及びR11について、図5に例示する情報が含まれる。
図5の例では、中間ノードR10は、x,yの二次元データを管理する。なお、「x1=35.5、y1=139.2」はノードR10の担当領域の最小点であり、「x2=35.7、y2=139.3」はノードR10の担当領域の最大点を示す。すなわち、中間ノードR10が担当する領域つまりノードR10のノード領域は、両点を頂点として各次元軸に直交した4直線で作られる領域である。また、ノードR10の情報には、子ノード「R100」及び「R101」へのポインタのリストが含まれる。
さらに、図6に例示するように、領域インデックス41には、葉ノードの情報として、「ノード種別」、「矩形領域」及び「データリスト」が含まれる。なお、葉ノードの情報である「ノード種別」及び「矩形領域」は、図4に示すものと同様であるので詳細な説明は省略する。「データリスト」は、自身のノード(葉ノード)が管理する多次元(例えば二次元)の領域データである。領域インデックス41には、葉ノードR100、R101、R110及びR111について、図6に例示する情報が含まれる。
図6の例では、葉ノードR100は、x,yの二次元データを管理する。なお、「x1=35.5、y1=139.2」はノードR100の担当領域の最小点であり、「x2=35.6、y2=139.3」はノードR100の担当領域の最大点を示す。すなわち、葉ノードR100が担当する領域つまり葉ノードR100のノード領域は、両点を頂点として各次元軸に直交した4直線で作られる領域である。また、ノードR100の情報には、領域データ「D1」、「D2」及び「D3」へのポインタのリストが含まれる。領域データへのポインタの一例として、領域データを識別する領域IDが用いられる。各領域データの実体は、領域データ情報42に格納されている。
図1の説明に戻って、領域データ情報42は、複数の領域データを管理するとともに、複数の領域データのそれぞれについて、領域データの領域と重複する他の領域の領域データを管理する情報である。
ここで、領域データ情報42のデータ構造の一例を、図7を参照して説明する。図7は、本実施形態に係る領域データ情報42のデータ構造の一例を示す図である。
図7に例示するように、領域データ情報42は、領域ID42aごとに、データ名42b、領域情報42cおよび重複領域42dを対応付けた情報である。領域ID42aは、領域データを一意に識別可能なIDを示す。データ名42bは、領域IDで示される領域データのデータ名を示す。領域情報42cは、領域IDで示される領域データの実体である具体的な領域つまり位置及び範囲を示す。重複領域42dは、領域IDで示される領域データと重複する他の領域データの領域IDを示す。
例えば、領域データ情報42には、領域ID42aが「00001」である場合、データ名42bとして「A商店X店舗近辺」、領域情報42cとして「円領域:緯度35.491、経度139.650、半径100m」が含まれる。そして、領域データ情報42には、領域ID42aが「00001」である場合の重複領域42dとして「00034」の領域IDが含まれる。
図1の説明に戻り、前回位置情報43は、前回領域検索要求があったときに検索できた位置情報を当該要求元に対応付けて管理する情報である。
ここで、前回位置情報43のデータ構造の一例を、図8を参照して説明する。図8は、本実施形態に係る前回位置情報43のデータ構造の一例を示す図である。
図8に例示するように、前回位置情報43は、センサーID43aごとに、前回検索領域43bを対応付けた情報である。センサーID43aは、領域検索要求の要求元のセンサーの識別IDを示す。なお、前回位置情報43には、センサーID43aの代わりに、センサーID以外の他の識別IDが含まれても良い。前回検索領域43bは、前回領域検索要求があったときに検索できた領域情報を示す。例えば前回検索領域43bには、検索できた場合に当該領域の領域データ(領域ID)が設定され、検索できなかった場合に「未検出」が設定される。
例えば、センサーID43aが「Sensor0001」である場合、前回検索領域43bには「未検出」が設定されている。また、センサーID43aが「Sensor0002」である場合、前回検索領域43bには「領域ID00034」が設定されている。
ノード範囲情報44は、領域インデックス41のツリー構造における葉ノードごとに記憶部4に記憶された情報であって、ツリー構造における葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報である。つまり、ノード範囲情報44には、葉ノード及び葉ノードを自身のノード領域に含むノードそれぞれのノード領域の範囲に関する情報が設定される。
ここで、ノード範囲情報44のデータ構造の一例を、図9〜図11を参照して説明する。図9は、本実施形態に係るノード範囲情報44を説明する図であり、(a)はノードの位置関係の一例を示す図、(b)は空間インデックスツリーの一例を示す図である。図10及び図11は、それぞれ本実施形態に係るノード範囲情報44のデータ構造の一例を示す図であり、図10(a)及び図11(a)はノード範囲情報44の一例を示す図、図10(b)及び図11(b)は各ノードのノード範囲の一例を示す図である。
以下、ノード範囲情報44の説明においては、領域インデックス41が、図9(a)に示すノード領域の位置関係であり、図9(b)に示すツリー構造のRツリーであるものとする。なお、図9〜図11の例では、ノード範囲情報44は、x,yの二次元データを管理する。
図10(a)及び図11(a)に例示するように、ノード範囲情報44には、ツリー構造における葉ノードからルートノードまでの複数のノードのノード情報44aとノード範囲44bとが対応付けられる。ノード情報44aは、例えばノード(図9(b)に示す例ではノードR1〜R15)へのポインタであり、図10(a)及び図11(a)においては、そのノードを一意に識別可能なIDとして示す。ノード範囲44bは、複数のノードそれぞれのノード領域の範囲に関する情報である。
図10(a)の例では、ノードR8におけるノード範囲情報44には、ノード情報44aとして、ツリー構造における葉ノード「R8」からルートノード「R1」までの複数のノードである、葉ノード「R8」、中間ノード「R4」及び「R2」、並びに、ルートノード「R1」が設定されている。また、ノードR8におけるノード範囲情報44には、ノード範囲44bとして、葉ノードR8は「x=50,y=100」、中間ノードR4は「x=200,y=1000」、中間ノードR2は「x=1500,y=2000」、ルートノードR1は「x=10000,y=20000」がそれぞれ設定されている。
また、図11(a)の例では、ノードR10におけるノード範囲情報44には、ノード情報44aとして、ツリー構造における葉ノード「R10」からルートノード「R1」までの複数のノードである、葉ノード「R10」、中間ノード「R5」及び「R2」、並びに、ルートノード「R1」が設定されている。また、ノードR10におけるノード範囲情報44には、ノード範囲44bとして、葉ノードR10は「x=30,y=50」、中間ノードR5は「x=100,y=500」がそれぞれ設定され、中間ノードR2及びルートノードR1のノード範囲44bは、それぞれノードR8におけるノード範囲情報44と同じ値である。
ここで、ノード範囲44bは、複数のノードに対応するノード領域の基準位置を一致させた状態で規定される。例えば、図10(b)に示すように、葉ノードR8におけるノード範囲情報44は、葉ノードR8からルートノードR1までの複数のノードそれぞれのノード範囲44bとして、ノードR8、R4、R2及びR1の基準位置(例えば中心位置)を一致させた状態で管理する。また、図11(b)に示すように、葉ノードR10におけるノード範囲情報44は、葉ノードR10からルートノードR1までの複数のノードそれぞれのノード範囲44bとして、ノードR10、R5、R2及びR1の基準位置(例えば中心位置)を一致させた状態で管理する。
すなわち、ノード範囲44bは、ノード領域を示す領域情報42c(座標及び範囲)から座標(位置)の情報を除いた範囲情報であり、全ての次元軸に沿った方向ごとにそのノードが有する範囲(距離)を規定する情報である。
さらに、ノード範囲44bに設定される範囲は、ノードの基準位置が中心位置である場合、図10(b)及び図11(b)の破線で囲われた範囲における各ノードの範囲であっても良い。すなわち、ノード範囲情報44bには、各ノードの基準位置を原点とした場合における次元軸成分ごとの絶対値が設定されても良い。ノード範囲44bに次元軸成分ごとの絶対値が設定されることにより、後述するノード検索部53bによる計算量を減少させることができ、領域の検索時間を短縮(処理を高速化)することができる。以下、ノード範囲44bには、次元軸成分ごとの絶対値が設定されるものとして説明する。
なお、上述した領域インデックス41及び領域データ情報42は、インデックスを構築する際や、領域データの追加や削除が行なわれる場合に、例えば制御部5により作成・更新される。また、前回位置情報43は、端末装置6からの領域検索要求に応じた領域データの検索処理において、後述する前回領域設定部57により作成・更新される。さらに、ノード範囲情報44は、インデックスを構築する際や、領域データの追加や削除が行なわれ領域インデックス41が変更される場合に、後述するノード範囲設定部58により作成・更新される。
〔1−4〕制御部の説明
次に、図1に例示する領域検索サーバ2における、制御部5の機能について説明する。
制御部5は、リクエスト受付部51と、前回領域比較部52と、検索開始ノード決定部53と、ツリー検索部54と、重複領域検索部55と、レスポンス転送部56と、前回領域設定部57と、ノード範囲設定部58とをそなえる。
リクエスト受付部51は、通信インタフェース3によって受信された検索リクエストを受け付ける。レスポンス転送部(出力部)56は、検索リクエストに対応する領域検索応答を通信インタフェース3に転送するものであり、検索できた領域の情報を例えばリストとして通信インタフェース3に出力する。
ここで、リクエスト受付部51が通信インタフェース3を介して受け付ける領域検索要求の内容、及び、レスポンス転送部56が通信インタフェース3を介して出力する領域検索応答の内容について、図12及び図13を参照して説明する。図12は、本実施形態に係る領域検索要求の内容の一例を示す図であり、図13は、領域検索応答の内容の一例を示す図である。
図12に示すように、領域検索要求は、センサーを識別するセンサーID43aと、位置情報の一例としての緯度及び経度とを含む。図12の例では、領域検索要求には、センサーID43aとして「Sensor000X」、緯度として「35.4134」、経度として「139.6252」が設定されている。なお、領域検索要求にはセンサーID43aが含まれるものとしたが、センサーID43a以外の識別IDが含まれても良い。
また、図13に示すように、領域検索応答は、領域検索要求による問合せ位置(位置情報)を含む領域の情報のリスト(結果リスト)であり、領域の情報に対応する領域ID42aとデータ名42bとを含む。図13の例では、領域検索応答には、領域ID42aとして「00001」、データ名42bとして「A商店X店舗周辺」が設定されているとともに、領域ID42aとして「00034」、データ名42bとして「レストランC周辺」が設定されている。なお、領域の情報のリストには領域ID42aとデータ名42bとが含まれるものとしたが、少なくとも領域を特定できる情報(例えば領域ID42a)が含まれれば良く、また、例えば領域の位置、大きさや形状等が含まれるものとしても良い。
図1の説明に戻り、前回領域比較部52は、前回領域検索した際に検索できた領域を用いて、所定の位置情報を含む領域を検索する。例えば、前回領域比較部52は、リクエスト受付部51によって受け付けられた領域検索要求の中からセンサーID43aおよび位置情報を取り出す。そして、前回領域比較部52は、取り出したセンサーID43aに対応する前回検索領域43bが前回位置情報43に設定されているか否かを判定する。
前回領域比較部52は、取り出したセンサーID43aの前回検索領域43bが前回位置情報43に設定されていない場合、後述するトップダウン検索により、当該位置情報を含む領域をツリー検索部54に検索させる。
一方、前回領域比較部52は、取り出したセンサーID43aの前回検索領域43bが前回位置情報43に設定されている場合、領域検索要求の中から取り出した位置情報が前回検索領域43bに含まれるか否かを判定する。例えば、前回領域比較部52は、前回検索領域43bに領域ID42aが設定される場合、領域データ情報42を参照して、取り出した位置情報が前回検索領域43bに設定された領域ID42aの領域情報42cに含まれるか否かを判定する。
そして、前回領域比較部52は、取り出した位置情報が前回検索領域43bに含まれる場合、当該前回検索領域43b(領域ID42a)を結果リストに追加し、前回領域比較部52の検索処理を終了し、重複領域検索部55に重複領域を検索させる。一方、前回領域比較部52は、取り出した位置情報が前回検索領域43bに含まれない場合、検索開始ノード決定部53に、ツリー検索部54が検索を開始するノードを決定させる。
検索開始ノード決定部53は、前回検索領域43bと、領域検索要求に含まれる位置情報(所定の位置)とに基づいて、ツリー検索部54が領域の検索を開始する検索開始ノードを決定するものであり、距離取得部53aと、ノード検索部53bとをそなえる。なお、検索開始ノード決定部53は、前回領域比較部52において、領域検索要求から取り出した位置情報が前回検索領域43bに含まれないと判定された場合に動作する。
距離取得部53aは、領域インデックス41を用いた領域の検索により前回検索できた領域と、位置情報との間の距離(移動距離)を取得する。
ノード検索部53bは、ノード範囲情報44に基づいて、距離取得部53aが取得した距離を範囲内に含むノードを検索し、検索できたノードをツリー検索部54に通知して、当該検索できたノードから位置情報を含む領域を検索させる。
ここで、距離取得部53a及びノード検索部53bについて、図14〜図16を参照して説明する。図14は、本実施形態に係る検索開始ノード決定部53の説明における前回位置と今回位置との位置関係の一例を示す図であり、図15は、移動距離とノード範囲44bとの位置関係の一例を示す図である。また、図16は、移動距離及び空間インデックスツリーの一例を示す図である。
以下、図14に例示するように、今回、端末装置6から送信された領域検索要求に含まれる所定の位置(以下、今回位置という)をP1とする。また、前回位置情報43において、今回位置P1を問い合わせた端末装置6(センサーID43a)に対応する前回検索領域43bに設定された領域データを前回位置P0とする。なお、前回位置P0は葉ノードR8に含まれ、今回位置P1は葉ノードR10に含まれるものとし、前回位置P0から今回位置P1までは45km離れているものとする。ここで、前回位置P0は、例えば、前回検索領域43bに設定された領域データの基準位置(例えば中心位置)とすることができる。
距離取得部53aは、前回位置情報43から取得した、前回検索できた領域(前回検索領域43b)の基準位置と、今回位置P1との間の距離を取得(算出)する。
具体的には、距離取得部53aは、前回検索領域43bの基準位置と今回位置P1との間の距離を、領域の次元軸に沿った方向ごとに取得する。
図14の例では、距離取得部53aは、前回位置P0から今回位置P1までの移動距離のx軸成分として、前回位置P0を含む領域データXの基準位置(中心位置)と今回位置P1のx軸上の位置との間の距離P1xを算出(取得)する。同様に、距離取得部53aは、前回位置P0から今回位置P1までの移動距離のy軸成分として、領域データXの基準位置(中心位置)と今回位置P1のy軸上の位置との間の距離P1yを算出(取得)する。一例として、距離取得部53aは、今回位置P1のx軸上の座標から前回位置P0のx軸上の座標を減算し、距離P1xを算出するとともに、今回位置P1のy軸上の座標から前回位置P0のy軸上の座標を減算し、距離P1yを算出する。
ノード検索部53bは、ノード範囲情報44に基づいて、前回検索領域43bを含むインデックスツリーの葉ノードが持つノード範囲44bの中から、領域検索要求に含まれる位置情報と前回検索領域43bとの距離が範囲内に含まれるノードを検索する。すなわち、ノード検索部53bは、記憶部4に記憶された、前回位置P0を含む葉ノードに係るノード範囲44に基づいて、距離取得部53aから取得した距離を範囲内に含むノードを検索するのである。
具体的には、ノード検索部53bは、ノード範囲情報44に基づいて、全ての次元軸に沿った方向で取得した各方向の距離以上の範囲を持つノードを検索する。このとき、ノード検索部53bは、前回位置P0を領域に含む葉ノードの基準位置(例えば中心位置)P0′を前回位置として、上記検索を行なう。
例えば、図15に示すように、ノード検索部53bは、前回位置P0を含む葉ノードR8に係るノード範囲情報44に基づき、前回位置P0を含む葉ノードR8の基準位置P0′を原点として、距離取得部53aが取得した各方向の距離(P1x及びP1y)よりも大きい範囲を持つノードを検索する。
より具体的に、ノード検索部53bは、葉ノードR8に係るノード範囲情報44に基づいて、複数のノードのうちの葉ノードR8から上位のノードに向かって順にノード情報44aを選択する。そして、ノード検索部53bは、選択したノード情報44aに対応するノード範囲44bが、距離取得部53aから取得した各方向の距離P1x及びP1yを範囲内に含むか否かを判断し、各距離を範囲内に含むノードを決定する。なお、上述の如く、本実施形態においては、ノードの基準位置が中心位置であり、ノード範囲44bには、次元軸成分ごとの絶対値が設定されているものとする。
図10(a)及び図15の例では、ノード検索部53bは、取得した距離P1xと、ノードR8のノード範囲44bのx軸方向の距離「50」とを比較するとともに、取得した距離P1yとノードR8のノード範囲44bのy軸方向の距離「100」とを比較する。図15に示すように、距離P1x及びP1yはいずれもノードR8の各方向の距離よりも大きいため、ノード検索部53bは、ノードR8は距離P1x及びP1yを範囲内に含まないと判断し、次の上位ノードについて同様に判断する。このように、ノード検索部53bは、ノードR8、R4、R2、R1と順に、距離P1x及びP1yを含むか否かの判断を行なう。
ここで、ノード検索部53bは、ノードR4に係る判断において、ノードR4のノード範囲44bのy軸方向の距離「1000」が取得した距離P1yよりも大きいと判断する一方、x軸方向の距離「200」が取得した距離P1x以下であると判断したとする。この場合、ノード検索部53bは、ノードR4のx軸方向の距離は取得した距離P1xを含まないため、ノードR4は距離P1xを範囲内に含まないと判断し、次の上位ノードについて同様に判断する。
また、ノード検索部53bは、ノードR2に係る判断において、ノードR2のノード範囲44bのx軸方向の距離「1500」と、y軸方向の距離「2000」とがいずれも取得した距離P1x及びP1yよりも大きい、つまり距離P1x及びP1yを範囲内に含むと判断したとする。この場合、ノード検索部53bは、ノードR2を距離P1x及びP1yを範囲内に含むノードに決定し、距離P1x及びP1yを含むか否かの判断を終了する。つまり、ノード検索部53bは、距離P1x及びP1yを範囲内に含むノードを決定した場合、決定したノードよりも上位のノードに係る、距離P1x及びP1yを含むか否かの判断を抑止する。
そして、ノード検索部53bは、決定したノードR2を、検索開始ノードとしてツリー検索部53に通知する。通知した検索開始ノードは、ツリー検索部53によって、後述するボトムアップ検索により位置情報P1を含む領域を検索するのに用いられる。
このように、ノード検索部53bは、ノード範囲情報44に基づいて、端末装置6がどのノード配下に位置するかを推定する。また、ノード検索部53bは、ノード範囲44bが小さい順に距離P1x及びP1yを範囲内に含むノードを検索するため、推定(決定)されるノードは、ノード範囲44bが移動距離P1x及びP1y以上であり、且つ、最も葉ノードに近いノードとなる。
例えば、図16に示すように、前回位置P0から、ノードR8までの距離が1km、ノードR4までの距離が10km、ノードR2までの距離が50km、ノードR1までの距離が100kmである場合を想定する。この場合、前回位置P0と今回位置P1との間の距離は45kmであるため、ツリー検索部54は、前回位置P0から50kmの範囲を含むノードR2から検索を開始することで、効率的に検索処理を行なうことができる。
上述の如くノード検索部53bは、検索開始ノードとしてノードR2を選択するため、ツリー検索部54は、今回位置P1を含み且つ最も葉ノードに近いノードであるノードR2から、位置情報を含む領域データの検索を開始することができる。
換言すれば、ノード範囲情報44は、記憶部4に記憶される情報であって複数のノードそれぞれに設定される閾値に関する情報であり、この閾値が、対応するノードのノード範囲44bに相当する。そして、ノード検索部53bは、この閾値に関する情報に基づいて、距離取得部53aが取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するのである。
以上のように、ノード検索部53bは、複数の閾値に関する情報であるノード範囲情報44に基づいて、ノード範囲44bが移動距離P1x及びP1yよりも大きく、最も葉ノードに近いノードを検索開始ノードに決定する。従って、ツリー検索部54は、検索開始ノードを起点に今回位置P1を含む領域データを検索することにより、ルートノードR1から検索を開始するよりも検索に係る処理時間を短縮することができる。また、ノード検索部53bは、次元軸ごとに取得された移動距離と、次元軸ごとのノード範囲44bとを比較するため、ノードの矩形領域の形状も加味して、より高精度に検索開始ノードを推定することができる。
なお、ノード検索部53bは、前回位置P0を含む葉ノードのノード範囲情報44に設定された全てのノード情報44aについて、距離P1x及びP1yを含まないと判断した場合には、後述するトップダウン検索により、当該位置情報P1を含む領域をツリー検索部54に検索させる。
図1の説明に戻り、ツリー検索部(領域検索部)54は、領域インデックス41を用いて、所定の位置情報を含む領域を検索する。以下、ツリー検索部によるトップダウン検索及びボトムアップ検索について説明する。
〔1−4−1〕ツリー検索部によるトップダウン検索の説明
ツリー検索部54は、領域検索要求に含まれる位置情報を含む領域を検索するため、領域インデックス41を用いて、ルートノードから子ノードへトップダウン検索を行なう。なお、トップダウン検索は、前回領域比較部52により、前回位置情報43に領域検索要求から取り出したセンサーIDの前回検索領域が記憶されていないと判断された場合、又は、ノード検索部53bにより、ノード範囲情報44に前回位置からの移動距離が範囲内に含まれるノードがないと判断された場合に実行される。
例えば、ツリー検索部54は、リクエスト受付部51によって受け付けられた領域検索要求の中から位置情報を取り出す。そして、ツリー検索部54は、ルートノードから子ノードへトップダウンに辿り順番にノードを選択し、選択したノードの子ノードに、取り出した位置情報を含むものがあるか否かを、領域インデックス41を用いて判定する。一例として、ツリー検索部54は、領域インデックス41を用いて、選択したノードの子ノードリストを読み出し、さらに、読み出した子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出す。そして、ツリー検索部54は、読み出したそれぞれの子ノードの矩形領域に、取り出した位置情報を含むものがあるか否かを判定する。
また、ツリー検索部54は、取り出した位置情報を含む子ノードを示す情報を、選択候補ノードとして例えばメモリ4b等の記憶領域に追加する。そして、ツリー検索部54は、選択候補ノードとして追加されたノードを1つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データのうち、取り出した位置情報を含むものがあるか否かを、領域インデックス41を用いて判定する。一例として、ツリー検索部54は、領域インデックス41を用いて、葉ノードであるノードのデータリストを読み出し、読み出したデータリストに含まれる領域データへのポインタを取り出す。ここでは、領域データを領域ID41aとすると、ツリー検索部54は、領域データ情報42に記憶された領域情報42cを用いて、領域ID41aに対応する領域情報42cに、取り出した位置情報を含むものがあるか否かを判定する。
そして、ツリー検索部54は、領域ID41aに対応する領域情報42cに、取り出した位置情報を含むものが1つでもあれば、いずれか1つの領域情報42cの領域ID41aを、結果リストとして例えばメモリ4b等の記憶領域に追加し、領域インデックス41を用いた検索を終了する。
なお、ツリー検索部54は、位置情報を含む領域データが複数ある場合には、重複領域の数が最も小さい領域データを選択することが望ましい。これは、後述する重複領域検索部55が、さらに位置情報を含む領域データを、選択した領域データの重複領域から検索することとなるので、検索対象となる重複領域の数を減らすためである。
〔1−4−2〕ツリー検索部によるボトムアップ検索の説明
また、ツリー検索部54は、領域検索要求に含まれる位置情報を含む領域を検索するため、領域インデックス41を用いて、ノード検索部53bにより通知された検索開始ノードから子ノード又はルートノードへボトムアップ検索を行なう。
例えば、ツリー検索部54は、検索開始ノードが持つ子ノードのうち、領域検索要求に含まれる位置情報を含む子ノード又は領域データがあるか否かを、領域インデックス41を用いて判定する。
ツリー検索部54は、位置情報を含む子ノードがある場合、上述したトップダウン検索と同様に、位置情報を含む子ノードについて、取り出した位置情報を含む下位のノード又は領域データを再帰的に検索する。なお、検索開始ノードが葉ノードである場合は、上述したトップダウン検索と同様に、当該葉ノードが持つ領域データのうち、領域検索要求に含まれる位置情報を含む領域データを検索する。そして、ツリー検索部54は、検索できた領域データを検索結果に追加して、領域インデックス41を用いた検索を終了する。
一方、ツリー検索部54は、検索開始ノードが持つ子ノード又は領域データのうち、領域検索要求に含まれる位置情報を含む領域データがなければ、検索開始ノードからルートノードへボトムアップにノードを順番に辿り、当該位置情報を含むノードを選択する。そして、ツリー検索部54は、選択したノードの子ノードに、当該位置情報を含むものがあるか否かを、領域インデックス41を用いて判定する。
ツリー検索部54は、位置情報を含む子ノードがある場合、当該位置情報を含む子ノードを選択候補ノードとして追加する。そして、ツリー検索部54は、選択候補ノードとして追加されたノードを1つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データのうち、当該位置情報を含む領域データがあるか否かを、領域インデックス41を用いて判定する。
そして、ツリー検索部54は、領域データ情報42を用いて、領域ID41aに対応する領域情報42cに、取り出した位置情報を含む領域データが1つでもあれば、いずれか1つの領域情報42cの領域ID41aを結果リストとして追加し、領域インデックス41を用いた検索を終了する。
なお、ツリー検索部54は、ボトムアップ検索においても、位置情報を含む領域データが複数ある場合には、重複領域の数が最も小さい領域データを選択することが望ましい。
重複領域検索部55は、前回領域比較部52又はツリー検索部54によって位置情報を含む領域データを検索できた場合、領域データ情報42に記憶された重複領域42dに基づいて、検索できた領域データに対応する重複領域42dの中から位置情報を含む領域データを検索する。そして、重複領域検索部55は、位置情報を含む重複領域42dの領域ID42aを結果リストに追加する。
例えば、重複領域検索部55は、前回領域比較部52又はツリー検索部54によって追加された結果リストから領域データ(例えば領域ID42a)を取り出す。そして、重複領域検索部55は、領域データ情報42に記憶された重複領域42dに基づいて、取り出した領域データと重複する重複領域42dの領域ID42aを読み出す。
さらに、重複領域検索部55は、該当する重複領域の領域ID42aを1つずつ選択し、選択した領域ID42aの領域情報42cが位置情報を含むか否かを判定し、位置情報を含む重複領域42dの領域データの領域ID42aを結果リストに追加する。
前回領域設定部57は、領域検索要求があった要求元のセンサーID43aに対応付けて、結果リストに含まれる領域ID42aを前回検索領域43bとして前回位置情報43に設定する。
ここで、結果リストに検索できた領域ID42aが複数ある場合には、前回領域設定部57は、複数ある領域ID42aのうち、重複領域の数が最小の領域ID42aを選択し、選択した領域ID42aを前回位置情報43に設定すれば良い。これにより、次回の領域検索要求の位置情報が前回設定された領域ID42aの領域に含まれていれば、続いて行なわれる当該領域データと重複する重複領域に係る検索回数を減らすことができる。
このように、領域データ情報42に重複領域42dが設定されることで、前回領域比較部52やツリー検索部54により一つでも問合せのあった位置情報を含む領域データが検出されれば、重複領域検索部55は、重複領域42dを用いて他の領域データを絞り込むことができる。従って、残りの木の検索を打ち切ることができ、ツリー検索部54は、従来のRツリーによる領域検索のように、問合せ位置を含む全中間ノードの検索を行なわずに済み、領域検索の検索時間を短縮することができる。
ノード範囲設定部58は、葉ノードごとに、ノード情報44a及びノード範囲44bの組をノード範囲情報44に設定する。
例えば、ノード範囲設定部58は、インデックスが構築される際に、ルートノードから中間ノードを経由して葉ノードに向けてそれぞれのノード範囲44bを計算し、計算したノード範囲44bを伝搬することでノード範囲情報44を生成する。
また、ノード範囲設定部58は、新たな領域データが追加され、インデックスが更新される際に、ノード領域が更新されたノードのうち、最もルートノードに近いノードから下位のノードに向けてそれぞれのノード範囲を計算し、計算したノード範囲44bを伝搬することでノード範囲情報44を生成する。
〔1−5〕領域検索サーバの動作例
次に、上述の如く構成された本実施形態に係る領域検索サーバ2(領域検索システム1)における動作例を図17〜図24を参照しながら説明する。
〔1−5−1〕リクエスト受付処理
はじめに、本実施形態に係る領域検索サーバ2(領域検索システム1)のリクエスト受付処理の動作例を、図17を参照して説明する。図17は、本実施形態に係るリクエスト受付処理の手順の一例を示すフローチャートである。
まず、リクエスト受付部51により、端末装置6から領域検索要求を受け付けたか否かが判定される(ステップS1)。領域検索要求を受け付けていないと判定された場合(ステップS1のNoルート)、リクエスト受付部51により、領域検索要求を受け付けるまで、判定処理が繰り返される。一方、領域検索要求を受け付けたと判定された場合(ステップS1のYesルート)、制御部5により、後述する領域検索処理が実行される(ステップS2)。
そして、リクエスト受付部51により、リクエスト受付処理が終了したか否かが判定される(ステップS3)。リクエスト受付処理が終了していないと判定された場合(ステップS3のNoルート)、ステップS1の処理に移行する。一方、リクエスト受付処理が終了したと判定された場合(ステップS3のYesルート)、処理が終了する。
〔1−5−2〕領域検索処理
次に、本実施形態に係る領域検索サーバ2における領域検索処理の動作例を図18〜図21を参照しながら説明する。図18〜図21は、本実施形態に係る領域検索処理の手順の一例を示すフローチャートである。
まず、図18に示すように、リクエスト受付部51により領域検索要求が受け付けられると、前回領域比較部52により、領域検索要求の発行元(以下、問合せ側という)の端末装置6のセンサーID43aに対応する前回検索領域43bが前回位置情報43に設定されているか否かが判定される(ステップS11)。設定されていると判定された場合(ステップS11のYesルート)、前回領域比較部52により、領域検索要求に含まれる位置情報(以下、検出対象位置という)が前回検索領域43b内にあるか否かが判定される(ステップS12)。検出対象位置が前回検索領域43b内にあると判断された場合(ステップS12のYesルート)、前回検索領域43bにより、当該前回検索領域43b(領域ID42a)が領域データとして結果リストに追加される(ステップS13)。
続いて、重複領域検索部55により、領域データ情報42の重複領域42dに基づいて、結果リストに追加された領域データに重複領域42dがあるか否かが判定される(ステップS14)。重複領域42dがないと判定された場合(ステップS14のNoルート)、ステップS19に移行する。一方、重複領域42dがあると判定された場合(ステップS14のYesルート)、重複領域検索部55により、結果リストに追加された領域データの重複領域42dから未判定のものが読み出され、読み出した重複領域42dが1つ選択される(ステップS15)。そして、重複領域検索部55により、選択した重複領域42dが検出対象位置を含むか否かが判定される(ステップS16)。選択した重複領域42dが検出対象位置を含むと判定された場合(ステップS16のYesルート)、重複領域検索部55により、含むと判定した重複領域42dの領域ID42aが結果リストに追加され(ステップS17)、ステップS18に移行する。
また、ステップS16において、選択した重複領域42dが検出対象位置を含まないと判定された場合(ステップS16のNoルート)、重複領域検索部55により、全ての重複領域42dの判定を終えたか否かが判定される(ステップS18)。全ての重複領域42dの判定を終えていない場合(ステップS18のNoルート)、次の重複領域42dを判定すべく、ステップS15に移行する。一方、全ての重複領域42dの判定を終えた場合(ステップS18のYesルート)、重複領域検索部55により、作成した結果リストを問合せ側へ返答すべく、検索結果(結果リスト)がレスポンス転送部56に出力される(ステップS19)。なお、レスポンス転送部56では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置6へ送信される。
そして、前回領域設定部57により、前回領域比較部52及び重複領域検索部55により作成された結果リストのうちの1つの領域ID42aが、問合せ側のセンサーID43aに対応付けて前回位置情報43に設定され(ステップS20)、検索処理が終了する。
また、ステップS11において、問合せ側のセンサーID43aの前回検索領域43bが前回位置情報43に設定されていない場合(ステップS11のNoルート)、ルートノードからのトップダウン検索を実行すべく、図19のステップS21に移行する。
図19に示すように、図18のステップS11のNoルートを経て、ツリー検索部54により、ルートノードが選択される(ステップS21)。そして、ツリー検索部54により、選択した選択ノードが葉ノードであるか否かが判定される(ステップS22)。
選択ノードが葉ノードでないと判定された場合(ステップS22のNoルート)、ツリー検索部54により、選択ノードの子ノードに検出対象位置を含むものがあるか否かが、領域インデックス41を用いて判定される(ステップS23)。
選択ノードの子ノードに検出対象位置を含むものがあると判定された場合(ステップS23のYesルート)、ツリー検索部54により、検出対象位置を含む子ノードが選択候補ノードに追加され(ステップS24)、ステップS25に移行する。一方、選択ノードの子ノードに検出対象位置を含むものがないと判定された場合(ステップS23のNoルート)、ステップS25に移行する。
続いて、ツリー検索部54により、全ての選択候補ノードの検索を終えたか否かが判定される(ステップS25)。全ての選択候補ノードの検索を終えていないと判定された場合(ステップS25のNoルート)、ツリー検索部54により、選択候補ノード内の1つの未検索ノードが選択され(ステップS26)、ステップS22に移行する。一方、全ての選択候補ノードの検索を終えたと判定された場合(ステップS25のYesルート)、ツリー検索部54により、選択ノードに検出対象位置を含むものがないので、結果リスト無しとして問合せ側へ返答すべく、検索結果がレスポンス転送部56に出力される(ステップS27)。なお、レスポンス転送部56では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置6へ送信される。
そして、前回領域設定部57により、問合せ側のセンサーID43aに対応付けて未検出である旨が前回位置情報43に設定され(ステップS28)、検索処理が終了する。
また、ステップS22において、選択ノードが葉ノードであると判定された場合(ステップS22のYesルート)、ツリー検索部54により、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあるか否かが判定される(ステップS29)。選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがないと判定された場合(ステップS29のNoルート)、次の選択候補ノードを検索すべく、ステップS25に移行する。
一方、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあると判定された場合(ステップS29のYesルート)、ツリー検索部54により、該当領域データのうち、重複領域42dの数が最小の領域データが結果リストに追加される(ステップS30)。ここで、ツリー検索部54による領域インデックス41を用いた検索が終了する。
続いて、重複領域検索部55により、領域データ情報42の重複領域42dに基づいて、結果リストに追加された領域データの重複領域42dから未判定のものが読み出され、読み出した重複領域42dが1つ選択される(ステップS31)。なお、図示を省略しているが、結果リストに追加された領域データの重複領域42dがない場合には、重複領域検索部55の処理を終了し、ステップS35に移行しても良い。
そして、重複領域検索部55により、選択した重複領域42dが検出対象位置を含むか否かが判定される(ステップS32)。選択した重複領域42dが検出対象位置を含むと判定された場合(ステップS32のYesルート)、重複領域検索部55により、含むと判定した重複領域42dの領域ID42aが結果リストに追加され(ステップS33)、ステップS34に移行する。
一方、選択した重複領域42dが検出対象位置を含まないと判定された場合(ステップS32のNoルート)、重複領域検索部55により、全重複領域の判定を終えたか否かが判定される(ステップS34)。全重複領域の判定を終えていない場合(ステップS34のNoルート)、次の重複領域を判定すべく、ステップS31に移行する。一方、全重複領域の判定を終えた場合(ステップS34のYesルート)、作成した結果リストを問合せ側へ返答すべく、重複領域検索部55により、検索結果(結果リスト)がレスポンス転送部56に出力される(ステップS35)。なお、レスポンス転送部56では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置6へ送信される。
そして、前回領域設定部57により、重複領域検索部55により作成された結果リストのうちの1つの領域ID42aが、問合せ側のセンサーID43aに対応付けて前回位置情報43に設定され(ステップS36)、検索処理が終了する。
また、図18のステップS12において、検出対象位置が前回検索領域43b内にないと判断された場合(ステップS12のNoルート)、ノード範囲情報44を用いた検索開始ノードの決定処理を実行すべく、図20のステップS41に移行する。
図20に示すように、図18のステップS12のNoルートを経て、検索開始ノード決定部53(距離取得部53a)により、前回領域からの移動距離が計算される(ステップS41)。一例として、距離取得部53aは、前回検索領域43bの領域データの基準位置と検出対象位置との間の距離を、領域データの次元軸に沿った方向ごとに算出する。
次いで、検索開始ノード決定部53(ノード検索部53b)により、前回検索領域43bを含むインデックスツリーの葉ノードに係るノード範囲情報44から、当該葉ノードのノード範囲44bが取り出される(ステップS42)。
そして、ノード検索部53bにより、取り出したノード範囲44bが全次元で算出した移動距離よりも大きいか否かが判定される(ステップS43)。取り出したノード範囲44bが少なくとも1つの次元で算出した移動距離以下であると判定された場合(ステップS43のNoルート)、ノード検索部53bにより、前回検索領域43bを含む葉ノードに係るノード範囲情報44から全てのノードのノード範囲44bを取り出したか否かが判定される(ステップS44)。全てのノードのノード範囲44bを取り出していないと判定された場合(ステップS44のNoルート)、ノード検索部53bにより、ノード範囲情報44から1つ上位のノードのノード範囲44bが取り出され(ステップS45)、ステップS43に移行する。
一方、ステップS44において、全てのノードのノード範囲44bを取り出したと判定された場合(ステップS44のYesルート)、ツリー検索部54によるルートノードからのトップダウン検索を実行すべく、図19のステップS21に移行する。
また、ステップS43において、取り出したノード範囲44bが全次元で算出した移動距離よりも大きいと判定された場合(ステップS43のYesルート)、ノード検索部53bにより、取り出したノード範囲44bのノードが検索開始ノードに決定される。そして、ツリー検索部54による検索開始ノードからのボトムアップ検索を実行すべく、図21のステップS52に移行する。
図21に示すように、図20のステップS43のYesルートを経て、ツリー検索部54により、領域インデックス41に基づいて、ノード検索部53bから取得した検索開始ノードが選択される。そして、ツリー検索部54により、選択した選択ノードが検出対象位置を含むか否かが、領域インデックス41を用いて判定される(ステップS52)。選択ノードが検出対象位置を含まないと判定された場合(ステップS52のNoルート)、ツリー検索部54により、選択ノードがルートノードであるか否かが、領域インデックス41を用いて判定される(ステップS53)。選択ノードがルートノードでなければ(ステップS53のNoルート)、ツリー検索部54により、選択ノードの親ノードを検索すべく、選択ノードの1つ上位の親ノードが選択され(ステップS51)、ステップS52に移行する。
一方、ステップS53において、選択ノードがルートノードであれば(ステップS53のYesルート)、ツリー検索部54により、結果リスト無しとして問合せ側へ返答すべく、検索結果がレスポンス転送部56に出力される(ステップS54)。なお、レスポンス転送部56では、検索結果が領域検索応答として領域検索要求の問合せ側の端末装置6へ送信される。
そして、前回領域設定部57により、問合せ側のセンサーID43aに対応付けて未検出である旨が前回位置情報43に設定され(ステップS55)、検索処理が終了する。
また、ステップS52において、選択ノードが検出対象位置を含むと判定された場合(ステップS52のYesルート)、ツリー検索部54により、選択した選択ノードが葉ノードであるか否かが、領域インデックス41を用いて判定される(ステップS56)。選択ノードが葉ノードでないと判定された場合(ステップS56のNoルート)、ツリー検索部54により、選択ノードの子ノードに検出対象位置を含むものがあるか否かが、領域インデックス41を用いて判定される(ステップS57)。
選択ノードの子ノードに検索座標を含むものがあると判定された場合(ステップS57のYesルート)、ツリー検索部54により、検出対象位置を含む子ノードが選択候補ノードに追加され(ステップS58)、ステップS59に移行する。一方、選択ノードの子ノードに検出対象位置を含むものがないと判定された場合(ステップS57のNoルート)、ツリー検索部54により、全ての選択候補ノードの検索を終えたか否かが判定される(ステップS59)。
全ての選択候補ノードの検索を終えていないと判定された場合(ステップS59のNoルート)、ツリー検索部54により、選択候補ノード内の1つの未検索ノードが選択され(ステップS60)、ステップS56に移行する。一方、全ての選択候補ノードの検索を終えたと判定された場合(ステップS59のYesルート)、選択ノードに検出対象位置を含むものがないので、選択ノードのさらに上位の親ノードを検索すべく、ステップS51に移行する。
また、ステップS56において、選択ノードが葉ノードであると判定された場合(ステップS56のYesルート)、ツリー検索部54により、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあるか否かが判定される(ステップS61)。選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがないと判定された場合(ステップS61のNoルート)、次の選択候補ノードを検索すべく、ステップS59に移行する。
一方、選択した葉ノードが持つ領域データのうち、検出対象位置を含むものがあると判定された場合(ステップS61のYesルート)、ツリー検索部54により、該当領域データのうちの1つが該当データとして結果リストに追加される(ステップS62)。ここで、ツリー検索部54による領域インデックス41を用いた検索が終了し、図18のステップS14に移行する。なお、ツリー検索部54は、該当領域データのうちの1つとして、重複領域42dの数が最小の領域データを結果リストに追加しても良い。これは、図18のステップS14以降の重複領域検索部55の処理において、さらに検出対象位置を含む領域を検索する際、検索対象となる重複領域42dの数を減らすためである。
〔1−5−3〕領域データ追加処理
次に、本実施形態に係る領域検索サーバ2における領域データ追加処理の動作例を図22及び図23を参照しながら説明する。図22及び図23は、本実施形態に係る領域データ追加処理の手順の一例を示すフローチャートである。
まず、制御部5により、領域インデックス41に基づいて、ルートノードが選択される(ステップS71)。そして、制御部5により、選択した選択ノードが葉ノードであるか否かが判定される(ステップS72)。
選択ノードが葉ノードでないと判定された場合(ステップS72のNoルート)、制御部5により、領域インデックス41に基づいて、選択ノードの子ノードに追加する領域(以下、追加領域という)を包含するものがあるか否かが判定される(ステップS73)。一例として、制御部5は、領域インデックス41に基づいて、選択ノードの子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出し、それぞれの子ノードの矩形領域に、追加領域を包含する矩形領域があるか否かを判定する。
追加領域を包含するものがあると判定された場合(ステップS73のYesルート)、制御部5により、追加領域を包含する子ノードのうち、矩形領域の面積が最小のものが選択ノードとして選択され(ステップS74)、ステップS72に移行する。
一方、追加領域を包含するものがないと判定された場合(ステップS73のNoルート)、制御部5により、追加領域を含めると拡大量が最小になる子ノードが選択ノードとして選択され(ステップS75)、ステップS72に移行する。
また、ステップS72において、選択ノードが葉ノードであると判定された場合(ステップS72のYesルート)、図23のステップS81に移行する。
続いて、制御部5により、選択した葉ノードに追加領域の領域データが追加され(ステップS81)、ステップS82に移行する。一例として、制御部5は、領域インデックス41の該当する葉ノードのデータリストに、追加領域の領域データへのポインタ、例えば領域ID42aを追加するとともに、領域データ情報42に追加領域の領域データを追加する。なお、このとき、制御部5は、領域データ情報42を用いて、追加領域の領域データと重複する領域データを検索し、互いに重複する領域データの重複領域42dに互いの領域ID42aを設定して、領域データ情報42を更新することができる。
ここで、ステップS81の処理により、選択した葉ノードの持つ領域データ数が上限を超える場合がある。つまり、Rツリーでは、各ノードの持つ子ノード数の上限と下限とが所定の値に定められる。そして、領域データの追加や削除の際に、この上限と下限とに基づいてノードの分割や統合を行なうことで、全体の木の深さや幅を調節し、領域検索の処理量の最悪値を抑えるのである。なお、ルートノードは、追加や削除を行なう際に子ノードの大規模なノード移動を不要にするため、子ノードの下限が2となる。
そこで、ステップS81の処理によって、選択した葉ノードの持つ領域データ数が所定の上限を超えるか否かが、制御部5により判定される(ステップS82)。領域データ数が上限を超える場合(ステップS82のYesルート)、制御部5により、葉ノードの矩形領域を分割する場合に、分割結果の矩形領域の大きさの和が最小となるように葉ノードが2分割され、親ノードに追加される(ステップS83)。一例として、制御部5は、ノードを、ノード内の原点から最も近い領域データを含むノードと、原点から最も遠い領域データを含むノードとの2つのノードに分割する。そして、制御部5は、他の領域データを、2領域のうちの領域データの追加による拡大領域が小さくなる方のノードに追加して、2つに分割したノードを親ノードに追加する。なお、制御部5は、他の領域データが分割した双方のノードに含まれる場合、データ数が少ないノードに加える。
なお、領域データ数が上限を超えない場合(ステップS82のNoルート)、領域データ追加処理が終了する。
また、ステップS83の処理により、追加する親ノードの持つ子ノード数が上限を超える場合がある。
そこで、ステップS83の処理によって、追加する親ノードの持つ子ノード数が上限を超えるか否かが、制御部5により判定される(ステップS84)。追加する親ノードの持つ子ノード数が上限を超えない場合(ステップS84のNoルート)、領域データ追加処理が終了する。
一方、ノードの持つ子ノード数が上限を超える場合(ステップS84のYesルート)、制御部5により、追加する親ノードがルートノードであるか否かが判定される(ステップS85)。追加する親ノードがルートノードでないと判定された場合(ステップS85のNoルート)、制御部5により、分割結果の矩形領域の大きさの和が最小となるようにノードが分割される。そして、制御部5により、分割後の増加したノードが分割元のノードの親ノードに追加され(ステップS86)、ステップS84に移行する。
一方、追加する親ノードがルートノードであると判定された場合(ステップS85のYesルート)、制御部5により、現在のルートノードが分割され、現在のルートノードの上位に新たなルートノードが作成され(ステップS87)、領域データ追加処理が終了する。
なお、ステップS83、S86又はS87においてノードが分割される際には、制御部5により、領域インデックス41が更新される。
〔1−5−4〕ノード範囲設定処理
次に、本実施形態に係る領域検索サーバ2におけるノード範囲設定処理の動作例を図24を参照しながら説明する。図24は、本実施形態に係るノード範囲設定処理の手順の一例を示すフローチャートである。
まず、ノード範囲設定部58により、領域インデックス41を用いて、ノード領域が生成・更新されたノードのうちの最上位のノードが選択される(ステップS91)。例えば、インデックスが構築される際には、全てのノードのノード領域が生成されるため、ノード範囲設定部58は、ルートノードを選択する。また、図22及び図23を参照して説明したように、領域データの追加(又は削除)等が行なわれる際には、領域データの追加等により、葉ノードのノード領域が更新されたり、ノードの分割又は結合が発生し上位のノードのノード領域が更新される可能性があるため、ノード領域が更新されたノードのうちの最上位のノードを選択する。
そして、ノード範囲設定部58により、領域インデックス41を用いて、選択した選択ノードのノード範囲44bが算出(取得)され、算出したノード範囲44bが選択ノードと対応付けてノード範囲情報44に追加される(ステップS92)。
なお、領域データの追加又は削除が行なわれる際等、既にノード範囲情報44が設定されている場合には、ノード範囲設定部58は、ノード領域が更新されたノードのうちの最上位のノードに係る更新前のノード範囲44bが設定されたノード範囲情報44を予め削除しても良い。つまり、ノード範囲設定部58は、当該最上位のノードに含まれる全ての葉ノードに係るノード範囲情報44を予め削除しても良い。或いは、ノードの分割又は結合が発生していない場合には、ノード範囲設定部58は、ノード範囲情報44を削除する代わりに、算出したノード範囲44bを更新前のノード範囲に上書きしても良い。
次いで、ノード範囲設定部58により、領域インデックス41を用いて、選択ノードが子ノードを持つか否かが判定される(ステップS93)。選択ノードが子ノードを持たない場合(ステップS93のNoルート)、ノード範囲設定処理が終了する。一方、選択ノードが子ノードを持つ場合(ステップS93のYesルート)、ノード範囲設定部58により、全ての子ノードが選択候補ノードとして決定される(ステップS94)。
続いて、ノード範囲設定部58により、選択候補ノードからノードのノード範囲44bが未算出のノードが1つ選択される(ステップS95)。そして、ノード範囲設定部58により、領域インデックス41を用いて、選択した選択ノードのノード範囲44bが算出され、算出したノード範囲44bが選択ノードと対応付けてノード範囲情報44に追加される(ステップS96)。
なお、ステップS96においては、ノード範囲設定部58は、領域インデックス41を用いて、選択ノード(子ノード)のノード範囲44bを、当該選択ノードの親ノードのノード範囲44bを追加したノード範囲情報44に追加する。これにより、選択ノードが葉ノードになったとき、ノード領域が更新されたノードのうちの最上位のノードから葉ノードに向けて、それぞれのノード範囲44bが計算され追加されたノード範囲情報44が、葉ノードごとに生成される。
次いで、ノード範囲設定部58により、全ての選択候補ノードのノード範囲44bの算出が終了したか否かが判定される(ステップS97)。全ての選択候補ノードのノード範囲44bの算出が終了していないと判定された場合(ステップS97のNoルート)、ステップS95に移行する。
一方、全ての選択候補ノードのノード範囲44bの算出が終了したと判定された場合(ステップS97のYesルート)、ノード範囲設定部58により、子ノードを持つ選択候補ノードがあるか否かが判定される(ステップS98)。ノード範囲設定部58により、選択候補ノードがいずれも子ノードを持たないと判定された場合(ステップS98のNoルート)、ノード範囲設定処理が終了する。一方、少なくとも1つの選択候補ノードが子ノードを持つと判定された場合(ステップS98のYesルート)、ステップS94に移行する。つまり、ノード範囲設定部58により、ステップS94において、少なくとも1つの選択候補ノードが持つ子ノードが、新たな選択候補ノードとして決定される。
〔1−6〕まとめ
上述のように、一実施形態に係る領域検索サーバ2によれば、木構造の空間インデックス(領域インデックス41)を用いて、与えられた位置情報がどの領域に含まれるかを探索する際に、距離取得部53aにより、前回検索領域43bと、位置情報との間の距離が取得される。そして、ノード検索部53bにより、記憶部4に記憶された情報であって複数のノードそれぞれに設定される閾値に関するノード範囲情報44に基づいて、距離取得部53aが取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードが検索される。
従って、領域を検索する際に、距離取得部53a及びノード検索部53bにより、前回検索できた領域からの移動距離に応じた最適な閾値に対応するノードが、検索開始ノードとして決定される。これにより、ツリー検索部54は、位置情報が含まれる可能性の高いノードから領域の検索を開始することができるため、位置情報がどの領域に含まれるかを高速に判定することができ、検索時間を短縮することができる。
また、複数の閾値に関するノード範囲情報44は、ツリー構造における葉ノードごとに記憶部4に記憶された情報であって、ツリー構造における葉ノードからルートノードまでの複数のノードそれぞれのノード領域のノード範囲44bに関する情報である。そして、ノード検索部53bにより、距離取得部53aが取得した距離を範囲内に含むノードが検索される。すなわち、ノード検索部53bにより、前回検索領域43bを含む葉ノードからその上位のノードにおいて、位置情報がどのノードの配下に位置するかが推定される。
従って、距離取得部53a及びノード検索部53bにより、個々のノードの大きさと移動距離とに基づいて、前回検索できた領域を含むノードの大きさと移動距離とのバランスが最適となる閾値に対応するノードが、検索開始ノードとして決定される。これにより、正確に検索開始ノードを決定することができ、ツリー検索部54による検索時間を短縮することができる。
ここで、領域検索サーバ2が、上記〔1−2〕において説明した(1)前回位置情報43を用いたボトムアップ検索、及び、(2)重複領域42dを含む領域データ情報42を用いた重複領域データの検索の処理を行なう一方、(3)としての検索開始ノード決定部53の処理を行なわない場合の領域検索処理について説明する。
図25は、図20及び図21に示すノード範囲情報44及び検索開始ノード決定部53を用いた領域検索処理に対する対比例としての領域検索処理の手順の一例を示すフローチャートである。ここで、図25のステップS51〜S62は、図21のステップS51〜S62に相当するものである。
例えば、図25では、図18のステップS12において、検出対象位置が前回検索領域43b内にないと判断された場合(ステップS12のNoルート)、図20及び図21に係る処理に代えて、ツリー検索部54により、図25のステップS51の処理、つまり、ボトムアップ検索が実行される。なお、ステップS51〜S62の処理は、図21を用いて説明したものと同様であるため、その説明を省略する。
領域検索サーバ2は、図18、図19及び図25に示す処理を実行する場合、端末装置6の移動距離が前回検索できた領域から比較的近距離である場合は、前回検索領域43bが含まれる葉ノードからボトムアップ検索を行なうことで、ルートノードから検索する従来のRツリーによる検索に比べて検索処理を高速化することができる。
一方、領域検索サーバ2は、移動距離が比較的長距離(中距離以上)になる場合は、検索対象の位置情報を含む領域データが発見されず、ボトムアップでルートノードまで検索し、さらにルートノードから検索することになる可能性が高い。特に、領域データが一定エリアに集中する(領域データが「密」である)場合には、検索対象の位置情報を含む領域データがボトムアップでルートノードに到達するまで発見されない可能性が高い。これは、上述の如く個々のノードに含まれる領域データやノードの上限が定められているため、個々のノードの大きさが小さくなり、領域データが「疎」の場合と比べて、移動距離が小さくても別のノードに移動している可能性が高いためである。従って、図25に示す例では、領域検索サーバ2は、移動距離が比較的長距離になる場合は、結果的にツリーのルートノードから検索が行なわれることになり、前回位置情報43を記憶する利点が得られず、検索処理を高速化することが困難である。また、領域検索サーバ2は、移動距離が比較的長距離の場合に、ボトムアップ検索を行なわずに、ルートノードから検索を開始するように構成することも考えられるが、比較的長距離であると判定するための条件は、端末装置6の位置やノードの範囲によって異なるため、切り分けが難しい。
以上のように、従来のRツリーによる領域検索に対して、前回領域比較部52、ツリー検索部54及び重複領域検索部55によるボトムアップ探索や重複領域の検索を追加しただけでは、探索ノードの大きさと移動距離とのバランスが悪い場合に、検索効率が低下してしまう。
そこで、本実施形態に係る領域検索サーバ2によれば、ノード範囲情報44及び検索開始ノード決定部53をそなえ、ボトムアップ探索を行なう移動距離の閾値を複数設け、それぞれの閾値を探索ノードの大きさに合わせる。そして、領域検索サーバ2は、検索開始ノード決定部53により、前回検索できた領域と所定の位置との間の距離(移動距離)を算出し、移動距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索して、ツリー検索部54により検索したノードから領域の検索を行なうのである。
図26は、本実施形態に係るノード範囲情報44及び検索開始ノード決定部53を用いた領域検索処理と他の領域検索処理との領域検索時間の比較結果の一例を示す図である。なお、図26は、領域データ数を1万件とし、10万回の領域検索を行なった場合の例である。なお、領域データの密接度としては、疎領域の場合、全エリアにランダムにデータを配置する一方、密領域の場合、8割のエリアにランダムにデータを配置しており、移動距離が比較的短距離、又は、比較的長距離(中距離以上)の場合について、領域検索を行なった場合の例である。
図26に示すように、ノード範囲情報44及び検索開始ノード決定部53を用いた領域検索によれば、特に、領域データの密度が高い場合に、端末装置6(センサーID43a)が収集する位置情報の移動距離が比較的長距離であっても、検索時間の短縮が可能となる。図26に示す例では、領域データが「密」であり、移動距離が比較的長距離である場合に、従来のRツリーによる領域検索を行なう場合や、ボトムアップ探索及び重複領域の検索を行なう場合(ノード範囲情報44及び検索開始ノード決定部53を用いない場合)と比べて、2倍以上の性能(検索時間が1/2)が得られることがわかる。また、領域データが「密」であり、移動距離が比較的短距離である場合には、従来のRツリーによる領域検索を行なう場合と比べて、6.7倍の性能が得られ、ボトムアップ探索及び重複領域の検索を行なう場合と同程度の性能が得られる。なお、領域データが「疎」である場合においても、従来のRツリーによる領域検索を行なう場合や、ボトムアップ探索及び重複領域の検索を行なう場合と同程度の性能が得られる。
〔2〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、かかる特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、図1及び図2に示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されなくても良い。例えば、前回領域比較部52、検索開始ノード決定部53、ツリー検索部54、及び、重複領域検索部55を任意の組み合わせで統合しても良い。一方、ツリー検索部54を、葉ノードにおける検索処理と葉ノード以外のノードにおける検索処理とに分散しても良い。また、領域インデックス41、領域データ情報42、前回位置情報43又はノード範囲情報44等の記憶部4を領域検索サーバ2の外部装置としてネットワーク経由で接続するようにしても良い。
また、本実施形態に係るノード検索部53bは、ノード範囲44bが移動距離よりも大きく、最も葉ノードに近いノードを検索開始ノードとして決定するものとして説明したが、これに限定されるものではない。例えばノード検索部53bは、ノード範囲44bが移動距離以上であり、最も葉ノードに近いノードを検索開始ノードとして決定しても良い。
なお、制御部5は、上述の如く、リクエスト受付部51、前回領域比較部52、検索開始ノード決定部53(距離取得部53a及びノード検索部53b)、ツリー検索部54、重複領域検索部55、レスポンス転送部56、前回領域設定部57及びノード範囲設定部58としての機能をそなえる。この制御部5としての機能を実現するためのプログラム(領域検索プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されても良い。そして、コンピュータは例えば読取装置9によりその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしても良い。
制御部5としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ4a、記憶装置4b、又は、図示しないROM)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU5a)によって実行される。このとき、記録媒体に記録されたプログラムを例えば読取装置9によりコンピュータが読み取って実行するようにしても良い。
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、領域検索サーバ2がコンピュータとしての機能を有しているのである。
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータが、
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
検索された領域の情報を出力する
ことを特徴とする、領域検索方法。
(付記2)
前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに前記記憶部に記憶された情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノードを検索する処理において、前記取得した距離を範囲内に含むノードを検索することを特徴とする、付記1記載の領域検索方法。
(付記3)
前記距離を取得する処理において、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得し、
前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されていることを特徴とする、付記2記載の領域検索方法。
(付記4)
前記距離を取得する処理において、前記前回検索された領域と前記所定の位置との間の距離を、前記領域の次元軸に沿った方向ごとに取得し、
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、全ての次元軸に沿った方向で前記取得した各方向の距離よりも大きい範囲を持つノードを検索することを特徴とする、付記2または付記3記載の領域検索方法。
(付記5)
前記ノードを検索する処理において、前記記憶部に記憶された、前記前回検索された領域を含む葉ノードに係る前記情報に基づいて、前記取得した距離を範囲内に含むノードを検索することを特徴とする、付記2〜4のいずれか1項記載の領域検索方法。
(付記6)
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、前記複数のノードのうちの葉ノードから上位のノードに向かって順に、前記取得した距離を範囲内に含むか否かを判断し、
判断の結果、前記取得した距離を範囲内に含む場合、当該ノードを、前記検索されたノードとして決定することを特徴とする、付記2〜5のいずれか1項記載の領域検索方法。
(付記7)
前記所定の位置を含む領域を検索する処理において、検索されたノードに対応するノード領域に前記所定の位置が含まれない場合、前記インデックス情報を用いて、前記検索されたノードよりもルートノードに近いノードから前記所定の位置を含む領域を検索することを特徴とする、付記1〜6のいずれか1項記載の領域検索方法。
(付記8)
前記所定の位置を含む領域の問合せ要求を取得すると、該所定の位置が前回検索された領域に含まれるか否かを判定し、
判定の結果、前記所定の位置が前記前回検索された領域に含まれない場合、前記距離を取得する処理を実行することを特徴とする、付記1〜7のいずれか1項記載の領域検索方法。
(付記9)
判定の結果、前記所定の位置が前記前回検索された領域に含まれる場合、前記前回検索された領域と重複する領域の中から前記所定の位置を含む領域を検索し、
前記前回検索された領域の情報とともに前記重複する領域から検索された領域の情報を出力することを特徴とする、付記8記載の領域検索方法。
(付記10)
コンピュータに、
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
検索された領域の情報を出力する、
処理を実行させることを特徴とする、領域検索プログラム。
(付記11)
前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに前記記憶部に記憶された情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノードを検索する処理において、前記取得した距離を範囲内に含むノードを検索する処理を前記コンピュータに実行させることを特徴とする、付記10記載の領域検索プログラム。
(付記12)
前記距離を取得する処理において、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得する処理を前記コンピュータに実行させ、
前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されることを特徴とする、付記11記載の領域検索プログラム。
(付記13)
前記距離を取得する処理において、前記前回検索された領域と前記所定の位置との間の距離を、前記領域の次元軸に沿った方向ごとに取得し、
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、全ての次元軸に沿った方向で前記取得した各方向の距離よりも大きい範囲を持つノードを検索する、処理を前記コンピュータに実行させることを特徴とする、付記11または付記12記載の領域検索プログラム。
(付記14)
前記ノードを検索する処理において、前記記憶部に記憶された、前記前回検索された領域を含む葉ノードに係る前記情報に基づいて、前記取得した距離を範囲内に含むノードを検索する処理を前記コンピュータに実行させることを特徴とする、付記11〜13のいずれか1項記載の領域検索プログラム。
(付記15)
前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、前記複数のノードのうちの葉ノードから上位のノードに向かって順に、前記取得した距離を範囲内に含むか否かを判断し、
判断の結果、前記取得した距離を範囲内に含む場合、当該ノードを、前記検索されたノードとして決定する、処理を前記コンピュータに実行させることを特徴とする、付記11〜14のいずれか1項記載の領域検索プログラム。
(付記16)
前記所定の位置を含む領域を検索する処理において、検索されたノードに対応するノード領域に前記所定の位置が含まれない場合、前記インデックス情報を用いて、前記検索されたノードよりもルートノードに近いノードから前記所定の位置を含む領域を検索する処理を前記コンピュータに実行させることを特徴とする、付記10〜15のいずれか1項記載の領域検索プログラム。
(付記17)
前記所定の位置を含む領域の問合せ要求を取得すると、該所定の位置が前回検索された領域に含まれるか否かを判定し、
判定の結果、前記所定の位置が前記前回検索された領域に含まれない場合、前記距離を取得する処理を実行する、処理を前記コンピュータに実行させることを特徴とする、付記10〜16のいずれか1項記載の領域検索プログラム。
(付記18)
ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得する距離取得部と、
複数のノードそれぞれに設定される閾値に関する情報を記憶する記憶部と、
前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するノード検索部と、
前記インデックス情報を用いて、前記ノード検索部により検索されたノードから前記所定の位置を含む領域を検索する領域検索部と、
前記領域検索部により検索された領域の情報を出力する出力部と、をそなえることを特徴とする、情報処理装置。
(付記19)
前記記憶部が記憶する前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに記憶される情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
前記ノード検索部は、前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離を範囲内に含むノードを検索することを特徴とする、付記18記載の情報処理装置。
(付記20)
前記距離取得部は、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得し、
前記記憶部に記憶された、前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されることを特徴とする、付記19記載の情報処理装置。
1 領域検索システム
2 領域検索サーバ(情報処理装置)
3 通信インタフェース
4 記憶部
4a 記憶装置
4b メモリ
41 領域インデックス(インデックス情報)
42 領域データ情報
43 前回位置情報
44 ノード範囲情報
5 制御部
5a CPU
51 リクエスト受付部
52 前回領域比較部
53 検索開始ノード決定部
53a 距離取得部
53b ノード検索部
54 ツリー検索部(領域検索部)
55 重複領域検索部
56 レスポンス転送部(出力部)
57 前回領域設定部
58 ノード範囲設定部
6 端末装置(領域問合せ装置)
7 入力装置
8 出力装置
9 読取装置

Claims (7)

  1. コンピュータが、
    ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
    記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
    前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
    検索された領域の情報を出力する
    ことを特徴とする、領域検索方法。
  2. 前記複数のノードそれぞれに設定される複数の閾値に関する情報は、前記ツリー構造における葉ノードごとに前記記憶部に記憶された情報であって、前記ツリー構造における該葉ノードからルートノードまでの複数のノードそれぞれのノード領域の範囲に関する情報であり、
    前記ノードを検索する処理において、前記取得した距離を範囲内に含むノードを検索することを特徴とする、請求項1記載の領域検索方法。
  3. 前記距離を取得する処理において、前記前回検索された領域の基準位置と前記所定の位置との間の前記距離を取得し、
    前記複数のノードそれぞれのノード領域の範囲に関する情報は、前記複数のノードに対応する前記ノード領域の基準位置を一致させた状態で規定されていることを特徴とする、請求項2記載の領域検索方法。
  4. 前記距離を取得する処理において、前記前回検索された領域と前記所定の位置との間の距離を、前記領域の次元軸に沿った方向ごとに取得し、
    前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、全ての次元軸に沿った方向で前記取得した各方向の距離よりも大きい範囲を持つノードを検索することを特徴とする、請求項2または請求項3記載の領域検索方法。
  5. 前記ノードを検索する処理において、前記記憶部に記憶された前記情報に基づいて、前記複数のノードのうちの葉ノードから上位のノードに向かって順に、前記取得した距離を範囲内に含むか否かを判断し、
    判断の結果、前記取得した距離を範囲内に含む場合、当該ノードを、前記検索されたノードとして決定することを特徴とする、請求項2〜4のいずれか1項記載の領域検索方法。
  6. コンピュータに、
    ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得し、
    記憶部に記憶された情報であって複数のノードそれぞれに設定される閾値に関する情報に基づいて、前記取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索し、
    前記インデックス情報を用いて、検索されたノードから前記所定の位置を含む領域を検索し、
    検索された領域の情報を出力する、
    処理を実行させることを特徴とする、領域検索プログラム。
  7. ノードを複数の領域のうちの少なくとも一つを含むノード領域に対応付けてツリー構造で前記複数の領域を管理するインデックス情報を用いた領域の検索により前回検索された領域と、所定の位置との間の距離を取得する距離取得部と、
    複数のノードそれぞれに設定される閾値に関する情報を記憶する記憶部と、
    前記記憶部に記憶された前記情報に基づいて、前記距離取得部が取得した距離よりも大きい閾値のうち、最小の閾値に対応するノードを検索するノード検索部と、
    前記インデックス情報を用いて、前記ノード検索部により検索されたノードから前記所定の位置を含む領域を検索する領域検索部と、
    前記領域検索部により検索された領域の情報を出力する出力部と、をそなえることを特徴とする、情報処理装置。
JP2012012147A 2012-01-24 2012-01-24 領域検索方法,領域検索プログラム,および情報処理装置 Expired - Fee Related JP5765253B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012012147A JP5765253B2 (ja) 2012-01-24 2012-01-24 領域検索方法,領域検索プログラム,および情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012012147A JP5765253B2 (ja) 2012-01-24 2012-01-24 領域検索方法,領域検索プログラム,および情報処理装置

Publications (2)

Publication Number Publication Date
JP2013152531A JP2013152531A (ja) 2013-08-08
JP5765253B2 true JP5765253B2 (ja) 2015-08-19

Family

ID=49048840

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012012147A Expired - Fee Related JP5765253B2 (ja) 2012-01-24 2012-01-24 領域検索方法,領域検索プログラム,および情報処理装置

Country Status (1)

Country Link
JP (1) JP5765253B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6281287B2 (ja) * 2014-01-08 2018-02-21 日本電気株式会社 情報処理装置、検索方法、及び、プログラム
CN111221813B (zh) 2018-11-27 2023-06-23 阿里巴巴集团控股有限公司 数据库索引以及数据库查询的处理方法、装置及设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3501957B2 (ja) * 1998-08-28 2004-03-02 日本電信電話株式会社 位置関連情報検索方式
JP2001109760A (ja) * 1999-10-06 2001-04-20 Toshiba Corp 地理情報表示装置とそれを実行するプログラムを記憶した記憶媒体
JP2002049622A (ja) * 2000-08-02 2002-02-15 Nec Corp 位置関連情報取得装置及びそのシステム並びにその方法並びにそれに用いるプログラムを記録した記録媒体
US6879980B1 (en) * 2001-06-29 2005-04-12 Oracle International Corporation Nearest neighbor query processing in a linear quadtree spatial index
JP2004198157A (ja) * 2002-12-17 2004-07-15 Pioneer Electronic Corp ナビゲーション装置、周辺施設検索方法、コンピュータプログラム及び情報記憶媒体
JP5333815B2 (ja) * 2008-02-19 2013-11-06 株式会社日立製作所 k最近傍検索方法、k最近傍検索プログラム及びk最近傍検索装置
JP2011179868A (ja) * 2010-02-26 2011-09-15 Sanyo Electric Co Ltd ナビゲーション装置

Also Published As

Publication number Publication date
JP2013152531A (ja) 2013-08-08

Similar Documents

Publication Publication Date Title
US10817484B2 (en) Apparatus, systems, and methods for providing location information
US9860704B2 (en) Venue identification from wireless scan data
JP5925338B2 (ja) 無線ネットワークアクセスポイントの発見
JP2010020490A (ja) 未訪問地の情報提供装置及び未訪問地の情報提供方法
US9453741B2 (en) Navigation system with indexed term searching and method of operation thereof
Duckham et al. Efficient, decentralized computation of the topology of spatial regions
WO2009069882A1 (en) Sensor network managing apparatus and method thereof
JP5678790B2 (ja) インデックス管理方法、インデックス管理プログラムおよびインデックス管理装置
JP5765253B2 (ja) 領域検索方法,領域検索プログラム,および情報処理装置
US20060209717A1 (en) Distributed storing of network position information for nodes
Rahman et al. Hdbscan: Density based clustering over location based services
JP6086021B2 (ja) 検索システムおよび検索方法
CN113108806A (zh) 路径规划方法、装置、设备及介质
JP2014048916A (ja) 周辺情報検索装置、周辺情報検索方法、及び周辺情報検索プログラム
KR101687755B1 (ko) 공간정보의 동적 서비스 제공 방법
JP5776403B2 (ja) 領域検索方法、領域検索プログラムおよび情報処理装置
JP5845818B2 (ja) 領域検索方法、領域検索プログラムおよび情報処理装置
KR20190079353A (ko) 다중 키워드 도메인 기반 공간-키워드 검색 장치 및 방법, 이를 기록한 기록매체
CN116010677B (zh) 空间索引方法、装置及其电子设备
US10210272B1 (en) Window query monitoring for mobile devices and central database servers with a tree-like index
JP2014142803A (ja) 領域検索方法および領域検索装置
KR20220135025A (ko) 공간정보모델링을 위한 객체 군집화 방법 및 그 장치
CN115730023A (zh) 数据处理方法、装置、电子设备及存储介质
Sarkar Geometric Methods of Information Storage and Retrieval in Sensor Networks
Giannoules ProxStor: flexible scalable proximity data storage & analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150601

R150 Certificate of patent or registration of utility model

Ref document number: 5765253

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees