説明

情報処理装置、その処理方法及びプログラム

【課題】地図データ上の所定範囲に内包されるデータを検索する際の処理負荷を軽減するようにした技術を提供する。
【解決手段】地表が階層的にメッシュで区分され、該メッシュ各々の位置を文字列で示す地理コードを持ち、上位メッシュを表現する該コードに文字を追加すると下位メッシュの地理コードが示される体系を有する地図データ保持手段と、前記地図データの検索範囲を取得する検索範囲取得手段と、前記検索範囲を覆うメッシュ群を選定するメッシュ群処理手段と、地点情報が設定された複数のデータから該地点情報を示す地理コードを取得する情報取得手段と、前記情報取得手段により取得された地理コードと前記検索範囲を覆うメッシュ群とにおける地理コードを比較することにより、該メッシュ群に内包されるデータを検索する検索手段と、検索により得られた検索結果を出力する出力手段とを具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、その処理方法及びプログラムに関する。
【背景技術】
【0002】
近年、ストレージや記録メディアの大容量化が進み、比較的小規模な機器においても、大量に蓄積されたデータが扱われており、検索機能が必須となりつつある。
【0003】
例えば、カメラにおいて撮影写真等が格納されるフラッシュメディアでは、現在、容量64GBのSDXC規格のカードが市販されており、1枚1MBの写真が6万枚以上格納されることになる。SDXCの規格上は2TBまで拡張可能である。
【0004】
大量の写真から目的の写真を取得するには、従来のような撮影順の閲覧機能だけでは不十分であり、様々な観点から写真を検索できることが必要となる。例えば、写真を撮影場所に基づいて地図データ上に表示する機能も必要である。
【0005】
近年、写真にGPS情報のような緯度・経度が分かる地点情報が付与されるようになってきている。例えば、緯度・経度情報に基づいて検索範囲に内包される地点を検索する地点情報検索を行なえば、地点情報に基づいた写真を検索できる。
【0006】
地点情報検索には、指定した範囲内に内包される地点のデータを検索する範囲指定検索、指定した位置に空間的に近い地点のデータを近い順にk個検索するk最近傍検索などがあるが、上述したような地点情報検索は、範囲指定検索の適用例となる。
【0007】
このような範囲指定検索は、従来から多くの実現方法が存在している。有名な方法としては、R−treeがある。R−treeは、空間的に近傍にある領域を複数まとめて最小外接矩形(MBR:Minimum Bounding Rectangle)を求め、それをインデクスに保持することによって高速に検索を行なう方法である。領域のまとまりが多数あれば、それらを更に複数まとめたまとまりを作って、インデクスを階層化していく。
【0008】
また、4分木を使用する方法もある(特許文献1参照)。この手法では、予め空間全体をメッシュに4分割し、更に再帰的に4分割を繰り返すことで、階層的なメッシュ群を構成する。各メッシュには対応するインデクスを保持させる。検索対象の領域を登録する際には、領域の外接矩形が他のメッシュを跨ぐことがない最深層のメッシュを求め、領域のIDをそのメッシュに対応するインデクスに格納する。検索時は、指定範囲を完全に覆う最深層の1つのメッシュを求め、対応するインデクスに格納された領域を検索結果候補として取得する。取得した領域が真に指定範囲に内包されるか否かは、詳細チェックにより判定する。
【0009】
また、緯度・経度座標を文字列に符号化する方法も提案されている(特許文献2参照)。この手法では、緯度・経度の座標値(浮動小数点数)から整数、整数から文字列、緯度と経度との両方からそれぞれ変換された文字列を連接して符号化している。また、別の提案では、整数化された緯度及び経度の情報を1ビットずつ交互に組み合わせて文字列に符号化する方式も提案されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2001−14338号公報
【特許文献2】米国特許出願公開第2005/0023524号
【発明の概要】
【発明が解決しようとする課題】
【0011】
R−tree方式は、文字列検索用のインデクスとは異なる専用のインデクス機構を保持し制御する方式であり、特に、処理能力の低い装置(例えば、組み込み機器)にとっては処理負担が大きくなってしまう。
【0012】
また、特許文献1に開示された手法では、全空間を階層的に分割したメッシュの1つ1つに対して対応するインデクスを保持することになるので、あまりメッシュを細かくすることができない。また、メッシュの細分化を細かく行なわなければ、その分、詳細チェックが不可欠となり、上述したような組み込み機器にとっては処理負担が大きくなってしまう。
【0013】
本発明は、上記課題に鑑みてなされたものであり、地図データ上の所定範囲に内包されるデータを検索する際の処理負荷を軽減するようにした技術を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記課題を解決するため、本発明の一態様による情報処理装置は、地表が階層的にメッシュで区分されるとともに、該メッシュ各々の位置を示す地理コードが文字列で表現され、上位メッシュを表現する地理コードに文字を追加することで下位メッシュの地理コードを示す地理コード体系を有する地図データを保持する保持手段と、前記地図データにおける検索範囲を取得する検索範囲取得手段と、前記検索範囲を覆うメッシュ群を選定するメッシュ群処理手段と、地点情報が設定された複数のデータから該地点情報を示す文字列で表現される地理コードを取得する情報取得手段と、前記情報取得手段により取得された前記データと前記検索範囲を覆うメッシュ群とにおける地理コードの文字列をそれぞれ比較することにより、前記検索範囲を覆うメッシュ群に内包されるデータを検索する検索手段と、前記検索手段による検索により得られた検索結果を出力する出力手段とを具備する。
【発明の効果】
【0015】
本発明によれば、地図データ上の所定範囲に内包されるデータを検索する際の処理負荷を軽減することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施の形態に係る情報処理装置10の構成の一例を示す図
【図2】地図データに対して範囲指定検索を行なう場の処理の概要を示す図。
【図3】本実施形態に係る地図データの一例を示す図。
【図4】検索範囲を覆うメッシュを求める際の処理の概要を示す図。
【図5】図1に示す代表位置テーブル41及び写真テーブル42を示す図。
【図6】図1に示す範囲指定テーブル32及び範囲メッシュテーブル33を示す図。
【図7】隣接するメッシュのメッシュコードを取得する際の処理の概要を示す図。
【図8】前方文字列テーブル34、末尾文字テーブル35及び範囲メッシュテーブル33を示す図。
【図9】メッシュを上位階層のメッシュに統合する際の処理の概要を示す図。
【図10】図1に示す情報処理装置10の処理の流れの一例を示すフローチャート。
【図11】図10のS104に示す検索処理の流れの一例を示すフローチャート。
【図12】図11のS202に示すメッシュ群選定処理の流れの一例を示すフローチャート。
【図13】図11のS207に示す偽検索結果の除外処理の流れの一例を示すフローチャート。
【図14】図10のS105に示す写真登録処理の流れの一例を示すフローチャート。
【図15】変形例の一例を示す図。
【発明を実施するための形態】
【0017】
以下、本発明に係る実施の形態について添付図面を参照して詳細に説明する。
【0018】
図1は、本発明の一実施の形態に係る情報処理装置10の構成の一例を示す図である。
【0019】
情報処理装置10は、CPU11と、入力部12と、出力部13と、撮像部14と、通信部15と、バス16と、ROM17と、RAM18と、外部記憶媒体19とが具備して構成される。
【0020】
CPU(Central Processing Unit)11は、例えば、ROM17に格納されたプログラムに従って、情報処理装置10における処理を統括制御する。CPU11においては、例えば、検索処理、写真登録処理、画面制御処理、写真撮影処理等のための演算、論理判断等を行ない、バス16を介してバスに接続された各デバイスを制御する。
【0021】
バス16は、アドレス信号やコントロール信号等を転送する。また、各デバイス間のデータ転送も行なう。
【0022】
入力部12は、例えば、ボタンやタッチパネル等で実現され、ユーザからの各種指示を装置内に入力する。出力部13は、液晶ディスプレイ等で実現され、ユーザに向けて各種情報を出力(表示)する。なお、出力部13による出力は、例えば、印刷により実現されても良いし、音声により実現されても良い。
【0023】
撮像部14は、例えば、撮像センサ等で実現され、映像を読み取って電子データに変換する。通信部15は、例えば、ネットワークコントローラ等で実現され、有線又は無線の通信路を介して外部装置との間でデータ交換を行なう。
【0024】
ROM(Read Only Memory)17は、不揮発性メモリである。CPU11により実行される各種プログラム(ブートプログラム21、システムの制御プログラム22)等の他、末尾文字遷移テーブル23、各種処理で参照される各種初期データ24、地図データ25等が格納される。
【0025】
RAM(Random Access Memory)18は、読み書き可能なメモリである。RAM18は、各デバイスからの各種データの一次記憶に用いられる。RAM18には、各種ワーク領域31の他、範囲指定テーブル32、範囲メッシュテーブル33、前方文字列テーブル34、末尾文字テーブル35等が格納される。詳細については後述するが、範囲指定テーブル32には、指定される検索範囲が保持され、範囲メッシュテーブル33には、検索範囲を覆うメッシュ群が保持される。また、前方文字列テーブル34及び末尾文字テーブル35は、メッシュ統合の際に用いられる。
【0026】
外部記憶媒体19は、例えば、SDカード、CFカード等のフラッシュメディアで実現される。外部記憶媒体19は、ブロック単位で一括消去可能な大容量の不揮発性メモリであり、大量のデータを変更可能に記憶する。なお、外部記憶媒体19は、上述したカード等に限られず、ハードディスク等で代用することもできる。外部記憶媒体19には、代表位置テーブル41や、写真テーブル42等が格納される。
【0027】
ここで、CPU11には、その機能的な構成として、検索対象登録部50と、検索範囲取得部51と、メッシュ群処理部52と、検索対象情報取得部53と、検索部54とが実現される。なお、これら構成は、例えば、CPU11がROM17等に格納されたプログラムを実行することにより実現される。
【0028】
検索対象登録部50は、検索対象となるデータ(写真)の登録を行なう。検索範囲取得部51は、地図データ上における検索範囲を取得する。検索範囲は、例えば、入力部12を介したユーザの指示により指定される。なお、詳細については後述するが、本実施形態に係わる地図データは、地表が階層的にメッシュで区分される。また、メッシュ各々の位置を示す地理コードが文字列で表現される。下位メッシュは、上位メッシュを表現する地理コードに文字が追加されることで表現される。
【0029】
メッシュ群処理部52は、検索範囲を覆うメッシュ群を取得する。メッシュ群処理部52には、精度決定部61と、メッシュ群選定部62と、メッシュ統合部63とが設けられる。
【0030】
検索対象情報取得部53は、検索対象となるデータ(写真)の地点情報(撮影地点)を示す地理コードを取得する。上述した通り、地理コードは、文字列で表現される。
【0031】
検索部54は、検索対象情報取得部53により取得された写真の地理コードと、検索範囲を覆うメッシュ群の地理コードとの文字列を比較する。これにより、検索範囲を覆うメッシュ群に内包される写真を検索する。検索部54には、所定の条件に従って検索結果からいずれかの写真を除外する除外部64が設けられる。
【0032】
以上が、情報処理装置10における機能的な構成についての説明である。なお、本実施形態においては、情報処理装置10が撮像部14を有する撮像装置(例えば、デジタルカメラやデジタルビデオカメラ)等に適用される場合について説明するが、これに限られない。情報処理装置10は、例えば、通信装置や画像表示装置等の種々の装置に組み込み装置として適用されても良い。
【0033】
また、上述した説明では、CPU11がプログラムを実行することで各種処理が実行される場合について説明したが、これに限られず、例えば、CPUと協調して動作するASICなどの制御回路が各種処理を実行しても良い。また、CPUと制御回路との協調動作によって各種処理が実行されてもよい。また、CPUは単一である必要はなく、複数であっても良い。この場合、複数のCPUは分散して処理を実行する。また、複数のCPUは単一のコンピュータに配置されていても良いし、物理的に異なる複数のコンピュータに配置されていても良い。なお、CPUがプログラムを実行することで実現される処理が専用の回路によって実現されても良い。
【0034】
次に、図2(a)及び図2(b)を用いて、地図データに対して範囲指定検索を行なう際の処理の概要について説明する。図2(a)には検索指示前の画面の表示例が示されており、図2(b)には検索実行後の画面の表示例が示されている。
【0035】
図2(a)に示す画面上には、ある地理領域を含む地図データが表示されており、地図データ上の地点201が黒丸印で示されている。矩形202は、地図データ上の検索範囲を示しており、当該検索範囲内に内包される地点の検索が行なわれる。
【0036】
ここで、検索が実行されると、図2(b)に示すように、各地点が検索結果となったか、ならなかったかが画面上に表示される。検索結果となった(検索範囲に内包される)地点は、ヒット203として丸印で表示され、検索結果とならなかった(検索範囲に内包されない)地点は、非ヒット204としてバツ印で表示される。
【0037】
次に、図3(a)及び図3(b)を用いて、本実施形態に係る地図データについて説明する。本実施形態においては、地図データは、地表を階層的なメッシュで区分し、緯度・経度情報に基づいてメッシュの位置を地理コードで表現する地理コード体系を有する。上述した通り、地理コードは文字列で表現される。
【0038】
まず、図3(a)を用いて、緯度・経度情報を地理コードに変換する処理の一例について説明する。
【0039】
緯度・経路情報を地理コードに変換する際には、まず、地表を緯度又は経度の方向に沿って2分割していき、分割の度に当該分割された地表に0又は1のビットを割り当てる。緯度及び経度のそれぞれに対して、そのビットを大分割から順番に並べてビット列を作成し、当該ビット列をメッシュの緯度情報301及び経度情報302とする。このように生成されたビット列に対して、経度、緯度の順番で先頭から交互に1ビットずつ選択していき、ビット列303を生成する。ビット列303を先頭から5ビットずつに分割し、変換表304に従って5ビット単位に当該ビット列を文字コードに変換する。これにより、地理コード305が得られる。
【0040】
各メッシュは、地表の分割回数に応じて階層的に詳細化されたものになる。詳細化されたメッシュほど、緯度・経度情報のビット数が多くなり、変換後の文字列の文字数も多くなる。そのため、文字数がメッシュの精度を表現することになるので、メッシュの精度を文字列の文字数と定義することができる。このようにして生成されたメッシュの地理コードをメッシュコードと呼ぶ。
【0041】
次に、図3(b)を用いて、メッシュが構成する階層構造の一例について説明する。
【0042】
メッシュ306は“e”が表現する精度=1(すなわち、文字数=1)のメッシュを示している。当該メッシュ306内の1文字を“e”に付加することによって、下位メッシュに32分割することができる。
【0043】
次の1文字が“7”の場合は、精度=2のメッシュ307になり、メッシュコードが“e7”となる。メッシュ307を拡大して示したものがメッシュ308になる。この場合にも同様に、次の1文字を付加することによって下位メッシュに32分割することができる。
【0044】
次の1文字が“s”の場合は、精度=3のメッシュ309となり、メッシュコードは“e7s”となる。すなわち、メッシュコードの文字数に応じてメッシュが階層化されていることが分かる。メッシュコードの文字数が同じ階層に属しているか否かを示すことになる。
【0045】
ここで、表310は、このように階層化されたメッシュが表現する地理領域の概略面積の一例を示している。表310によれば、精度=3のメッシュは、156km×156kmの矩形領域を表現することが示されている。また、精度を大きくすれば、より詳細な地理領域が表現されることが分かる。例えば、精度12のメッシュコードであれば、事実上、地図データ上の特定の地点を表現できることになる。本実施形態においては、地点を特定する場合、システム上最も詳細な精度のメッシュコードで表現する。
【0046】
次に、図4(a)〜図4(c)を用いて、検索範囲を覆うメッシュを求める際の処理の概要について説明する。
【0047】
図4(a)に示す検索範囲401に対しては、これを覆うメッシュとして、図4(b)にメッシュが求められる。各メッシュ402は、一旦、全て同じ階層に属すように求められる。ここで、メッシュのうち、検索範囲内に完全に内包されるメッシュ403を完全内包メッシュ(第1のメッシュ)と呼び、検索範囲に部分的に内包されるメッシュ404を部分内包メッシュ(第2のメッシュ)と呼ぶ。
【0048】
完全内包メッシュは、上位階層のメッシュに統合することができる。図4(c)は、上位階層のメッシュに統合した例を示している。統合されたメッシュ405は、4つの下位メッシュが1つの上位メッシュに置換されて統合されている。なお、図3(a)及び図3(b)に示した地理コード変換方式によれば、階層を1段階上げるためには、本来32個のメッシュを統合する必要があるが、ここでは、説明を分かり易くするため、4つのメッシュを1つのメッシュに統合した場合について説明している。
【0049】
次に、図5を用いて、図1に示す代表位置テーブル41及び写真テーブル42について説明する。
【0050】
代表位置テーブル41には、写真の撮影地点(地点情報)に関する情報が保持される。写真は複数枚まとめて撮影されることが多いので、同一地点で撮影された写真群に対して、代表して1つの撮影地点が設定される。代表位置テーブル41には、この代表した1つの撮影地点に対して付与された代表位置IDが保持される。カラム501には、撮影地点のメッシュコードが保持され、カラム502には、当該メッシュコードに対応する代表位置IDが保持される。
【0051】
写真テーブル42には、各写真に対応して、写真に関する他の属性情報が保持される。カラム503には、撮影された個々の写真のIDが保持され、カラム504には、写真が撮影された撮影地点の代表位置IDが保持され、カラム505には、写真に関して記憶すべきそれ以外の情報が保持される。
【0052】
次に、図6を用いて、図1に示す範囲指定テーブル32及び範囲メッシュテーブル33について説明する。これらテーブルは、検索範囲603の管理に用いられる。
【0053】
範囲指定テーブル32には、地図データ上の矩形の検索範囲603を示すメッシュコード保持される。カラム601には、検索範囲603の左上の位置にある地点のメッシュコードが保持され、カラム602には、検索範囲603の右下の位置にある地点のメッシュコードが保持される。
【0054】
ここで、範囲メッシュテーブル33には、検索範囲603を覆うメッシュ群が管理されている。例えば、検索範囲603に対しては、メッシュ604、605、606、607が設定される。カラム608には、各メッシュのメッシュコードが保持される。カラム609には、各メッシュの領域を検索範囲603が完全に内包するか否かを示すフラグ(「完全フラグ」と呼ぶ)が保持される。完全に内包するときには(「完全内包」と呼ぶ)、“1”が保持され、部分的に内包するときには(「部分内包」と呼ぶ)“0”が保持される。この場合、各メッシュには、検索範囲外の領域が存在しているので、全メッシュに対して“0”が保持されている。
【0055】
次に、図7(a)〜(c)を用いて、検索範囲を覆うメッシュ群を求める際に、隣接するメッシュのメッシュコードを取得する際の処理の概要について説明する。
【0056】
図7(a)には、末尾文字遷移テーブル(偶数)23aと末尾文字遷移テーブル(奇数)23bとが示される。末尾文字遷移テーブル(偶数)23aは、精度が偶数(すなわち、メッシュコードの文字数が偶数)のメッシュに対して使用される。各セル内に保持される文字は、メッシュの末尾文字を示しており、上下左右に隣接するセルに保持される文字は、メッシュの上下左右に隣接するメッシュの末尾文字を示す。例えば、セル701(“p”を示している)の右の文字が“r”であることから、メッシュコードの末尾が“p”の偶数精度のメッシュの右隣のメッシュのメッシュコードの末尾は“r”であることが分かる。
【0057】
一方、末尾文字遷移テーブル(奇数)23bは、精度が奇数(すなわち、メッシュコードの文字数が奇数)のメッシュに対して使用される。セル702(“b”を示している)の右の文字が“c”であることから、メッシュコードの末尾が“b”の奇数精度のメッシュの右隣のメッシュのメッシュコードの末尾は“c”であることが分かる。
【0058】
図7(b)には、図7(a)に示す末尾文字遷移テーブル23を用いて、検索範囲のメッシュをスキャンする際の処理の概要が示される。メッシュ707は、例えば、メッシュコードが“4pruyq”であり、末尾文字が“q”である。このとき、1段階上位階層のメッシュ703のメッシュコードは、“4pruy”となる。末尾文字遷移テーブル(奇数)23bを参照すると、その右に隣接するメッシュ704のメッシュコードは、“4pruz”となる。
【0059】
範囲指定テーブル32には、検索範囲705の左上地点と右下地点との位置がメッシュコードで保持される。このとき、精度6で検索範囲を覆うメッシュを求めるには、まず、左上メッシュのメッシュコード(“4pruyk”)を求める。これは左上地点のメッシュコード“4pruykde”を文字数=6にトランケート(精度=6なので)することで実行できる。
【0060】
この後、矢印の方向に沿ってメッシュをスキャンしていく。例えば、“4pruyk”から右にスキャンするときには、まず、図7(a)に示す末尾文字遷移テーブル(偶数)23aを参照して、末尾文字“k”の右隣の文字“s”を取得する。次に、“4pruyk”の末尾文字“k”を“s”に置き換える。これによって、右隣のメッシュのメッシュコード“4pruys”を生成することができる。下にスキャンするときも同様にしてメッシュコードを求めることができる。このようにスキャンしていくことによって、検索範囲705を覆うメッシュ群のリストが、図7(c)に示すように、リストアップされていく。なお、このリストには、メッシュコード以外にも、検索範囲内での相対位置、完全フラグの情報(完全内包か部分内包か)等が保持される。
【0061】
次に、図8(a)及び図8(b)を用いて、前方文字列テーブル34、末尾文字テーブル35及び範囲メッシュテーブル33について説明する。
【0062】
図8(a)には、前方文字列テーブル34及び末尾文字テーブル35が示される。前方文字列テーブル34には、メッシュのスキャンに際して、末尾文字を除く前方文字列がカラム801に保持される。文字列判定によって、同じ前方文字列は1つにまとめて格納される。
【0063】
一方、末尾文字テーブル35には、末尾文字が保持される。より具体的には、カラム802には、末尾文字の文字コードが保持され、カラム803には、完全フラグの値が保持される。すなわち、カラム803には、メッシュが完全内包であるか否かに応じて“1”又は“0”が保持される。
【0064】
このようにして作成された前方文字列テーブル34と末尾文字テーブル35とに基づいて、メッシュコードを合成する。これにより、図8(b)に示す範囲メッシュテーブル33が作成される。このとき、完全内包のメッシュを部分内包より先(上部)にくるようにソートし、更に、完全フラグの値が同じメッシュについては文字コード順にソートする。部分内包のメッシュから得られる検索結果の候補に対しては、当該候補が真に検索範囲に入っているか否かのチェック(詳細チェックと呼ぶ)を行なう必要がある。これに対して、完全内包のメッシュは、検索範囲に完全に内包されるので、完全内包のメッシュから得られる検索結果の候補に対しては、詳細チェックの必要がない。
【0065】
上述した通り、本実施形態においては、完全内包のメッシュを範囲メッシュテーブル33内の上部にソートする。そのため、完全内包のメッシュから優先的に検索結果が得られることになる。組み込み機器の場合、リソースの制限が強いので、大量の検索結果を処理しきることができず、大量の処理がある場合は、処理の打ち切り(終了)が通例行なわれている。本実施形態においては、完全内包のメッシュを優先して処理するので、詳細チェックの処理を少なくできる。そのため、処理を効率的に行なえるとともに、また、処理負荷の軽減を図ることができる。
【0066】
次に、図9(a)及び図9(b)を用いて、メッシュを上位階層のメッシュに統合する際の処理の概要について説明する。この統合処理は、前方文字列テーブル34と末尾文字テーブル35とを用いて行なわれる。
【0067】
図9(a)は、統合前の前方文字列テーブル34と末尾文字テーブル35とを示している。カラム901に保持された文字列は、文字列判定によって重複が除外されている。同一の前方文字列に対応する複数の末尾文字は全てリンクされ、カラム902に末尾文字、カラム903に完全フラグが保持されている。従って、リンクされた末尾文字は、共通の前方文字列を持つことが分かる。例えば、前方文字列“4pruy”に対して、“p”“r”“x”などの末尾文字があれば、範囲メッシュテーブル33の作成に際して、“4pruyp”、“4pruyr”、“4pruyx”などのメッシュコードが合成されることになる。
【0068】
この場合、図9(a)に示す前方文字列“4pruy”においては、完全内包となる末尾文字が32個揃っている。そのため、このメッシュ群は上位に統合可能である。従って、図9(b)に示すように、メッシュの統合が行なわれる。具体的には、前方文字列“4pruy”の末尾文字の32個分が1つに統合されており、ヌル文字列に置換されている。これは、前方文字列“4pruy”から範囲メッシュテーブル33の作成に際して出力される文字列が“4pruy”の1つのみとなることを意味している。
【0069】
ここで、上述した処理についてフローチャートを用いて説明する。図10は、図1に示す情報処理装置10における処理の流れの一例を示す図である。この処理は、例えば、CPU11が、ROM17に格納されたプログラムを読み出し実行することにより実現される。
【0070】
この処理では、情報処理装置10は、CPU11において、まず、システムの初期化処理が行なわれる(S101)。すなわち、各種パラメータの初期化や初期画面の表示等が行なわれる。
【0071】
その後、情報処理装置10は、CPU11において、タッチパネル等の入力部12から何らかのイベントが発生するまで待機する(S102)。イベントが発生すると、情報処理装置10は、CPU11において、このイベントを判別し、イベントの種類に応じて各種の処理に分岐する。
【0072】
ここで、検索処理を示すイベントであれば(S103で検索)、情報処理装置10は、当該イベントに従って検索処理を行なう(S104)。また、写真登録処理を示すイベントであれば(S103で写真登録)、情報処理装置10は、当該イベントに従って写真登録処理を行なう(S105)。それ以外のイベントであれば(S103でその他イベント)、情報処理装置10は、各種イベントに対応した処理を行なう(S106)。
【0073】
その後、情報処理装置10は、出力部13において、各処理の処理結果等をユーザに出力する。例えば、検索結果の表示、エラーがあった場合のエラー表示、正常な処理が行なわれた場合の画面表示等が行なわれる。
【0074】
次に、図11を用いて、図10のS104に示す検索処理の流れの一例について説明する。
【0075】
この処理が開始すると、情報処理装置10は、まず、検索範囲取得部51において、検索範囲の取得を行なう(S201)。検索範囲は、例えば、入力部12を介したユーザの指示により指定される。このとき、検索範囲取得部51においては、当該取得した検索範囲に基づいて、範囲指定テーブル32を作成する。
【0076】
続いて、情報処理装置10は、メッシュ群処理部52において、当該作成された範囲指定テーブル32に基づいて、検索範囲を覆うメッシュ群を選定する(S202)。これにより、範囲メッシュテーブル33を作成する。
【0077】
情報処理装置10は、メッシュ群処理部52において、範囲メッシュテーブル33からメッシュを1つずつ順番に取得する(S203)。範囲メッシュテーブル33では、図8(b)に示すように、各メッシュがソートされ、完全内包メッシュが上部に来ているため、完全内包メッシュが部分内包メッシュよりも優先して取得される。
【0078】
情報処理装置10は、検索部54において、S203の処理で取得されたメッシュのメッシュコードを検索文字列として設定する(S204)。そして、当該設定した検索文字列を用いて検索を行ない、検索結果の候補を取得する(S205)。より具体的には、代表位置テーブル41を検索し、検索文字列の少なくとも一部(前方文字列)が一致するメッシュコードを取得し、それをリストアップする。このリストアップされたメッシュコードが検索結果の候補となる。
【0079】
ここで、情報処理装置10は、検索部54において、検索文字列として使用したメッシュコードが完全内包であるか部分内包であるかを判定する。判定の結果、完全内包であれば(S206でYES)、S208の処理に進む。部分内包であれば(S206でNO)、詳細については後述するが、偽検索結果除外処理を行なった後(S207)、S208の処理に進む。偽検索結果除外処理では、S205の処理により得られた検索結果の候補のうち真の検索範囲に入らない候補を除外する。
【0080】
続いて、情報処理装置10は、検索部54において、これまでに検出された検索結果数が所定数(例えば、100件)を越えたか否かを判定し、越えていれば(S208でYES)、それ以上処理しきれないので処理を打ち切る。一方、越えていなければ(S208でNO)、範囲メッシュテーブル33に未処理のメッシュが未だ存在するか否かを判定する。その結果、未処理のメッシュが存在すれば(S209でYES)、再度、S202の処理に戻り、次のメッシュを範囲指定テーブル32から取得する。未処理のメッシュが存在しなければ(S209でNO)、この処理は終了する。
【0081】
次に、図12を用いて、図11のS202に示すメッシュ群選定処理の流れの一例について説明する。
【0082】
この処理が開始すると、情報処理装置10は、精度決定部61において、まず、検索範囲の面積を求める。具体的には、面積Sは最も詳細な精度(nとする)のメッシュを基準として、縦方向に必要なメッシュ数と、横方向に必要なメッシュ数とを乗算することにより求める(S301)。
【0083】
次に、情報処理装置10は、精度決定部61において、適正な精度の推定を行なう(S302)。適正な精度Nは、次のように求められる。ここでは、検索範囲が正方形に近い形であり、それを覆うメッシュ群のメッシュ数が所定個数以下となる精度、例えば、32以上64未満となる精度が適正であると考えて計算する場合について説明する。このような条件の場合、まず、初期値N=nから処理を開始する。そして、精度が1段階変わるごとにメッシュ数が32倍変化することから、面積Sを32で除算して商が2以上ならばNを1減算し、商(整数)を新たな面積Sとする操作を繰り返していく。
【0084】
情報処理装置10は、メッシュ群選定部62において、このように推定された適正精度Nで、図7(a)〜図7(c)、図8(a)及び図8(b)に示した手法により検索範囲を覆うメッシュ群を求める。これにより、前方文字列テーブル34、末尾文字テーブル35を作成する(S303)。
【0085】
情報処理装置10は、メッシュ統合部63において、前方文字列テーブル34及び末尾文字テーブル35を参照して、文字列判定を行なう。これにより、共通の前方文字列を持つメッシュ群を取得する(S304)。
【0086】
情報処理装置10は、メッシュ統合部63において、それらのメッシュ群のうち完全内包となっているメッシュ数が所定数(この場合、32以上)存在するか否かを判定する。所定数以上でなければ(S305でNO)、S307の処理に進む。所定数以上あれば(S305でYES)、情報処理装置10は、メッシュ統合部63において、S304の処理で取得されたメッシュ群を上位階層のメッシュに統合する。すなわち、図9(b)に示す手法により、末尾文字テーブルを変更する(S306)。
【0087】
続いて、情報処理装置10は、メッシュ統合部63において、前方文字列テーブル34から次の前方文字列を取得するとともに(S307)、全ての前方文字列について処理が終了したか否かを判定する。処理が終了していなければ(S308でNO)、情報処理装置10は、再度、S304の処理に戻る。一方、処理が終了していれば(S308でYES)、情報処理装置10は、メッシュ群処理部52において、完全内包となっているメッシュについて、前方文字列テーブル34と末尾文字テーブル35とを参照してメッシュコードのリストを作成する。そして、文字コード順に範囲メッシュテーブル33に登録する(S309)。また、情報処理装置10は、メッシュ群処理部52において、部分内包となっているメッシュについて、前方文字列テーブルと末尾文字テーブルを参照してメッシュコードのリストを作成する。そして、文字コード順に範囲メッシュテーブル33に追加する(S310)。その後、この処理は終了する。
【0088】
次に、図13を用いて、図11のS207に示す偽検索結果の除外処理の流れの一例について説明する。
【0089】
この処理が開始すると、情報処理装置10は、除外部64において、まず、検索結果の候補を1つ取得する(S401)。候補が取得できなかった場合(S402でNO)、全ての候補について処理が終了しているため、情報処理装置10は、この処理を終了する。一方、候補を取得できた場合(S402でYES)、情報処理装置10は、除外部64において、取得された検索結果の候補が、検索範囲内にあるか否かを判定する。より具体的には、検索結果の候補のメッシュコードが、範囲指定テーブル32に規定される検索範囲に入っているか否かを判定する。この判定は、検索範囲が矩形の場合、左上地点と右下地点のメッシュコードを用いることにより行なう。
【0090】
判定の結果、検索範囲内にあれば(S403でYES)、情報処理装置10は、除外部64において、次の検索結果の候補を取得した後(S405)、再度、S402の処理に戻る。一方、検索範囲内になければ(S403でNO)、情報処理装置10は、除外部64において、該当の検索結果の候補をリストから除外する(S404)。その後、情報処理装置10は、除外部64において、次の検索結果の候補を取得した後(S405)、再度、S402の処理に戻る。
【0091】
次に、図14を用いて、図10のS105に示す写真登録処理の流れの一例について説明する。
【0092】
この処理が開始すると、情報処理装置10は、検索対象登録部50において、登録対象となる写真の撮影地点が既に代表位置テーブル41に登録済みであるか否かを判定する(S501)。判定の結果、登録済みでなければ(S502でNO)、情報処理装置10は、検索対象登録部50において、該当の写真に新規の代表位置IDを付与して代表位置テーブル41に登録する(S505)。その後、この処理は終了する。
【0093】
一方、登録済みであれば(S502でYES)、情報処理装置10は、検索対象登録部50において、登録済みの代表位置IDを取得する(S504)。そして、登録対象となる写真の情報を、当該取得した代表位置IDとともに、写真テーブル42に登録する(S505)。その後、この処理は終了する。
【0094】
以上説明したように本実施形態によれば、通常の文字列検索のインデクス機構を流用して、前方一致検索を行なうことにより、検索範囲内にあるデータを検索する際の処理負荷を軽減できる。
【0095】
また、検索範囲を覆うメッシュ群を求める際に、文字列処理によってメッシュ統合するので、メッシュ数を減らす処理の負荷も軽減できる。更に、完全内包メッシュの処理を部分内包メッシュの処理よりも優先的に処理して検索結果を出力するため、詳細チェック処理を行なう回数を減らすことができ、処理負荷の軽減や検索処理の効率化を図れる。
【0096】
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【0097】
例えば、上述した実施形態においては、検索範囲が矩形である場合を例に挙げて説明したが、これに限られず、検索範囲はそれ以外の形状であっても良い。例えば、検索範囲が円形であっても良い。この場合、範囲指定テーブル32は、図15に示す構成となる。検索範囲が地点104を中心とした半径105の円103となる。範囲指定テーブル32においては、カラム101には、地点104に対応する地点のメッシュコードが保持され、カラム102には、半径105の長さが保持される。
【0098】
ここで、検索範囲を円形にした場合に、相違する処理について説明する。図12で説明したS303〜S306の処理において一部相違する。まず、検索範囲を覆うメッシュ群を求める処理が上述した処理と相違する。より具体的には、円に外接する矩形を求めてメッシュをリストアップする。そして、メッシュが完全内包であるか部分内包であるかの判定は、メッシュの四隅と円の中心との距離を求め、当該距離と円の半径とを比較することで行なう。このとき、完全内包及び部分内包の状態以外に、検索範囲との重なりが無い状態(「非内包」と呼ぶ)のメッシュが出現することになるが、非内包のメッシュは、範囲メッシュテーブル33から除外すれば良い。その後、図9(a)及び図9(b)の手順に従ってメッシュの統合を行なう。
【0099】
また、図13で説明したS403が相違する。検索範囲に入るか否かの判定は、検索範囲の中心から検索結果の候補までの距離を求め、当該距離が円の半径内であるか否かを比較する。このように構成することで、検索範囲が円形の場合にも、上記同様の処理を行なえることになる。
【0100】
また、上述した実施形態においては、撮影地点(地点情報)が設定された写真を検索対象として説明したが、検索対象は、必ずしも写真である必要はなく、地点情報が設定されたデータであればなんでも良い。
【0101】
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施態様を採ることもできる。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0102】
(その他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
地表が階層的にメッシュで区分されるとともに、該メッシュ各々の位置を示す地理コードが文字列で表現され、上位メッシュを表現する地理コードに文字を追加することで下位メッシュの地理コードを示す地理コード体系を有する地図データを保持する保持手段と、
前記地図データにおける検索範囲を取得する検索範囲取得手段と、
前記検索範囲を覆うメッシュ群を選定するメッシュ群処理手段と、
地点情報が設定された複数のデータから該地点情報を示す文字列で表現される地理コードを取得する情報取得手段と、
前記情報取得手段により取得された前記データと前記検索範囲を覆うメッシュ群とにおける地理コードの文字列をそれぞれ比較することにより、前記検索範囲を覆うメッシュ群に内包されるデータを検索する検索手段と、
前記検索手段による検索により得られた検索結果を出力する出力手段と
を具備することを特徴とする情報処理装置。
【請求項2】
前記メッシュ群処理手段は、
前記検索範囲の面積に応じて該検索範囲を覆うメッシュの階層を決定する決定手段
を具備し、
前記決定手段により決定された階層のメッシュを用いて、前記検索範囲を覆うメッシュ群を選定する
ことを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記メッシュ群処理手段は、
前記選定されたメッシュ群の各々の地理コードの文字列を判定することによって前記メッシュ群のうちの少なくとも複数のメッシュを上位メッシュに統合するメッシュ統合手段
を具備することを特徴とする請求項1又は2記載の情報処理装置。
【請求項4】
前記メッシュ統合手段は、
前記選定されたメッシュ群の各々の地理コードに含まれる文字列を判定し、該文字列の一部が共通するメッシュが所定数以上あれば、該文字列の一部が共通する複数のメッシュを上位のメッシュに統合する
ことを特徴とする請求項3記載の情報処理装置。
【請求項5】
前記選定されたメッシュ群には、前記検索範囲内に完全に内包される第1のメッシュと、前記検索範囲に部分的に内包される第2のメッシュとが含まれており、
前記メッシュ統合手段は、
前記第1のメッシュを対象として前記統合を行なう
ことを特徴とする請求項3又は4記載の情報処理装置。
【請求項6】
前記検索手段は、
前記比較により得られた前記検索範囲を覆うメッシュ群に内包されるデータのうち、前記地理コードにより示される前記地図データ上の位置が前記検索範囲外にあるデータを除外する除外手段
を具備し、
前記出力手段は、
前記除外手段による処理が行なわれた後のデータを前記検索結果として出力する
ことを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。
【請求項7】
前記選定されたメッシュ群には、前記検索範囲内に完全に内包される第1のメッシュと、前記検索範囲に部分的に内包される第2のメッシュとが含まれており、
前記除外手段は、
前記第2のメッシュに内包されるデータを対象として前記除外を行なう
ことを特徴とする請求項6記載の情報処理装置。
【請求項8】
前記選定されたメッシュ群には、前記検索範囲内に完全に内包される第1のメッシュと、前記検索範囲の部分的に内包される第2のメッシュとが含まれており、
前記検索手段は、
前記比較に際して、前記第2のメッシュよりも前記第1のメッシュの比較を優先させて行ない、検索結果が所定数を越えたときに前記データの検索を打ち切る
ことを特徴とする請求項1から7のいずれか1項に記載の情報処理装置。
【請求項9】
情報処理装置の処理方法であって、
取得手段が、地表が階層的にメッシュで区分されるとともに、該メッシュ各々の位置を示す地理コードが文字列で表現され、上位メッシュを表現する地理コードに文字を追加することで下位メッシュの地理コードを示す地理コード体系を有する地図データを取得する工程と、
検索範囲取得手段が、前記地図データにおける検索範囲を取得する工程と、
メッシュ群処理手段が、前記検索範囲を覆うメッシュ群を選定する工程と、
情報取得手段が、地点情報が設定された複数のデータから該地点情報を示す文字列で表現される地理コードを取得する工程と、
検索手段が、前記情報取得手段により取得された前記データと前記検索範囲を覆うメッシュ群とにおける地理コードの文字列をそれぞれ比較することにより、前記検索範囲を覆うメッシュ群に内包されるデータを検索する工程と、
出力手段が、前記検索手段による検索により得られた検索結果を出力する工程と
を含むことを特徴とする情報処理装置。
【請求項10】
コンピュータを、
地表が階層的にメッシュで区分されるとともに、該メッシュ各々の位置を示す地理コードが文字列で表現され、上位メッシュを表現する地理コードに文字を追加することで下位メッシュの地理コードを示す地理コード体系を有する地図データを保持する保持手段、
前記地図データにおける検索範囲を取得する検索範囲取得手段、
前記検索範囲を覆うメッシュ群を選定するメッシュ群処理手段、
地点情報が設定された複数のデータから該地点情報を示す文字列で表現される地理コードを取得する情報取得手段、
前記情報取得手段により取得された前記データと前記検索範囲を覆うメッシュ群とにおける地理コードの文字列をそれぞれ比較することにより、前記検索範囲を覆うメッシュ群に内包されるデータを検索する検索手段、
前記検索手段による検索により得られた検索結果を出力する出力手段
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate