【文献】
勝又 雅史 MASASHI KATSUMATA,Google API Expertが解説する Google Maps APIプログラミングガイド 初版,株式会社インプレスジャパン 土田 米一,2011年12月 1日,第1版,p.278-288
(58)【調査した分野】(Int.Cl.,DB名)
前記ジオコード構造を生成するための前記処理は、前記ジオコード構造において前記サンプルジオコード値の各々へ1以上のサンプルPOIを関連付けることを更に含む、請求項6に記載のシステム。
前記ジオコード構造を生成するための前記処理は、前記ジオコード構造の前記複数のノードに対するハッシュインデックスを決定することを更に含む、請求項6に記載のシステム。
前記ジオコード構造を生成するための前記処理は、前記第2のロジック回路によって、前記ジオコード構造において前記サンプルジオコード値の各々へ1以上のサンプルPOIを関連付けることを更に含む、請求項15に記載の方法。
【発明を実施するための形態】
【0022】
以下の詳細な説明は、本開示を当業者が製造及び使用することを可能にするように提示され、特定の用途及びその要件の文脈で提供される。開示される実施形態に対する様々な変更は、当業者にとって明示的に明らかであり、本明細書に定義される一般概念は、本開示の趣旨及び範囲から逸脱しないで他の実施形態及び用途に適用されてもよい。よって、本開示は、示される実施形態には限定されないが、特許請求の範囲と一致する最も広い範囲を与えられるべきである。
【0023】
本明細書で用いられる専門用語は、特定の例の実施形態のみを説明する目的のためのものであり、限定的には意図されない。本明細書で用いられるように、単数形「一つ」及び「前記」は、文脈が他に明らかに示さない限り、複数形も含むことが意図される。用語「備える」、「備えている」及び/又は「含み」、「含む」及び/又は「含んでいる」は、この詳細な説明で用いられるとき、述べられた特徴、整数、ステップ、動作、要素及び/又は構成要素の存在を特定するが、1以上の他の特徴、整数、ステップ、動作、要素、構成要素及び/又はそのグループの存在又は追加を除外しないことが更に理解されるであろう。
【0024】
これら及び他の特徴、並びに本開示の特徴は、構造の関連要素の動作及び機能の方法並びに部分の組み合わせ及び製造経済と共に、その全てが本開示の一部を形成する添付の図面を参照して以下の詳細な説明を考慮してより明らかとなる。しかし、図面は、単なる図示及び説明のためのものであり、本開示の範囲を限定するように意図されないことが明示的に理解される。図面は寸法通りではないことが理解される。
【0025】
本開示で用いられるフローチャートは、本開示の一部の実施形態に係るシステム実装の動作を示す。フローチャートの動作は、順番に実装されなくても良いことが明示的に理解されるべきである。逆に、動作は、逆の順序又は同時に実装されてもよい。また、1以上の他の動作は、フローチャートに追加されてもよい。1以上の他の動作は、フローチャートから除去されてもよい。
【0026】
また、本開示におけるシステム及び方法は、主に、対象位置に関連付けられたPOIを決定することについて記載されるが、これは、一つの単なる例示的な実施形態であるとも理解されるべきである。本開示のシステム又は方法は、別の種類のオンデマンドサービスに適用されてもよい。例えば、システム又は方法は、ナビゲーションシステムに適用されてもよい。ユーザは、位置(例えば、ユーザの位置、ユーザによって指定された位置)に関連付けられたPOIのためのリクエストを開始してもよい。別の例では、本開示のシステム又は方法は、陸地、海、航空宇宙又は同様のもの又はそれらの任意の組み合わせを含む異なる環境の輸送システムに適用されてもよい。輸送システムの乗り物は、タクシー、自家用車、ヒッチハイク、バス、電車、超特急列車、高速鉄道、地下鉄、船舶、航空機、宇宙船、熱気球、無人車又は同様のもの又はそれらの任意の組み合わせを含んでもよい。輸送システムは、また、管理及び/又は配送のための輸送システム、例えば、速達を送る及び/又は受けるためのシステムを含んでもよい。本開示のシステム又は方法の用途は、ウェブページ、ブラウザのプラグイン、クライアント端末、カスタムシステム、内部分析システム、人工知能ロボット又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0027】
本開示において、用語「ユーザ」は、個人、サービスをリクエストする、サービスをオーダーする、サービスを提供する又はサービスの提供を促進する企業を指す。例えば、ユーザは、乗客、運転手、オペレーター又は同様のもの又はそれらの任意の組み合わせであってもよい。本開示において、用語「ユーザ端末」は、サービスをリクエスト又はオーダーする、若しくはサービスに対応する結果を受け取るためにユーザによって用いられるツールを指す。例えば、ユーザが位置の周囲の一部のPOIに対してリクエストするとき、システムは、結果(例えば、複数のPOI)をユーザ端末へ送信してもよい。一部の実施形態では、ユーザ端末は、乗客端末又は運転手端末を含んでもよい。例えば、乗客が乗り物に対してリクエストするとき、乗客は、開始位置及び行先を含むオーダーを開始してもよい。乗客が乗客端末により開始位置を入力すると、システムは、乗客によって入力された行先を受け取ることなく、開始位置に基づいて行先を決定してもよい。更に、システムは、行先の周囲の複数のPOIを乗客端末により乗客へ提供してもよい。別の例では、運転手がオーダーを終了した、又はある位置でオーダーを待っているとき、システムは、運転手の位置の周囲の複数のPOIを提供し、運転手は、POIに基づいて新たなオーダーを容易に受けるために次の場所へ行くことを決定してもよい。一部の実施形態では、POIは、位置に関する情報を含んでもよい。位置に関する情報は、位置の名称、位置の座標(例えば、経度値又は緯度値)、位置の住所(例えば、州、省、市、区、通り、番地)、位置に関する電話番号、宣伝活動、又は病院、学校、公園、道路、橋、川、湖、山、鉄道駅、空港、企業、住宅地域、ホテル景観、スポット又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0028】
本開示において用語「サービスリクエスト」及び「注文(オーダー)」は、乗客、要求者(リクエスタ)、サービス要求者、消費者、運転手、提供者、サービス提供者、供給者又は同様のもの又はそれらの組み合わせによって開始されるリクエストを指すために区別しないで用いられる。サービスリクエストは、乗客、要求者、サービス要求者、消費者、運転手、提供者、サービス提供者又は供給者のいずれかによって受け付けられてもよい。サービスリクエストは、有料又は無料であってもよい。
【0029】
本開示で用いられる位置決め(ポジショニング)技術は、グローバルポジショニングシステム(GPS)、グローバルナビゲーションサテライトシステム(GLONASS)、コンパスナビゲーションシステム(COMPASS)、ガリレオポジショニングシステム、準天頂衛星システム(quasi−zenith satellite system(QZSS))、wireless fidelity(WiFi)ポジショニングシステム、又は同様のもの又はそれらの任意の組み合わせを含んでもよい。上記の位置決めシステムの1以上は、本開示において区別しないで用いられてもよい。
【0030】
本開示の一態様は、位置に関連付けられるポイントオブインタレストを決定するオンラインシステム及び方法に関する。この目的に向けて、オンラインオンデマンドサービスプラットフォームは、先ず、ユーザに関連付けられた対象位置を取得し、そして、対象位置の周囲のPOIを決定するためにジオコード構造を横断してもよい。ジオコード構造における各ジオコードが、複数のPOIに関連付けられているため、ユーザは、対象位置の周囲のPOIを容易に得ることができる。
【0031】
オンデマンドサービス用の位置情報サービス(Location Based Service(LBS))は、ポストインターネット時代にのみ定着したサービスの新たな形態であることが留意されるべきである。これは、ポストインターネット時代にのみ生じうるユーザへの技術的ソリューションを提供する。インターネット以前の時代では、GPS又はナビゲーション技術は利用できなかった。サービスリクエスタが、位置の周囲のPOIを知ることが必要な場合、サービスリクエスタは、個人的に又は他者へ尋ねて当該位置へ行っている。位置の周囲のPOIは、GPS又はナビゲーション技術なしに、サービスリクエスタを探索することは困難である。しかし、オンラインオンデマンドサービス向けのLBSは、サービスリクエスタがPOIをより容易に探索することを可能にする。したがって、インターネットを介して、オンラインオンデマンドサービス向けのLBSは、サービスリクエスタにとってより効率的なサービスを提供することができ、これは、従来のインターネット以前の時代には決して生じない。
【0032】
図1は、一部の実施形態に係る例示的なオンデマンドサービスシステム100のブロック図である。オンデマンドサービスシステム100は、位置の周囲の1以上のPOIを決定するためのオンラインナビゲーションサービスプラットフォームであってもよい。オンデマンドサービスシステム100は、サーバ110と、ネットワーク120と、ユーザ端末130と、ストレージ140と、を含むオンラインプラットフォームであってもよい。
【0033】
一部の実施形態では、サーバ110は、単一サーバ又はサーバ群であってもよい。サーバ群は、集中型又は分散型であってもよい(例えば、サーバ110は分散型システムであってもよい)。一部の実施形態では、サーバ110は、ローカル又はリモートであってもよい。例えば、サーバ110は、情報及び/又はユーザ端末130に格納されたデータ及び/又はネットワーク120を介したストレージ140にアクセスしてもよい。別の例では、サーバ110は、格納された情報及び/又はデータにアクセスするために、ユーザ端末130及び/又はストレージ140に接続してもよい。一部の実施形態では、サーバ110は、クラウドプラットフォーム上に実装されてもよい。例にすぎないが、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散型クラウド、インタークラウド、マルチクラウド又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、サーバ110は、本開示の
図2に示される1以上の構成要素を有するコンピューティングデバイス200上に実装されてもよい。
【0034】
一部の実施形態では、サーバ110は、プロセッシングエンジン112を含んでもよい。プロセッシングエンジン112は、本開示に記載されたサーバ110の1以上の機能を行うためのサービスリクエストに関する情報及び/又はデータを処理してもよい。例えば、プロセッシングエンジン112は、ジオコード構造を横断する対象位置と関連付けられたPOI(例えば、対象位置の周囲のPOI)を決定してもよい。一部の実施形態では、プロセッシングエンジン112は、1以上のプロセッサ(例えば、シングルコアプロセッサ又はマルチコアプロセッサ)を含んでもよい。例にすぎないが、プロセッシングエンジン112は、中央演算ユニット(CPU)、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、グラフィック演算ユニット(GPU)、物理演算ユニット(PPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、コントローラ、マイクロコントローラユニット、縮小命令セットコンピュータ(RISC)、マイクロプロセッサ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0035】
ネットワーク120は、オンデマンドサービスシステム100の構成要素間で情報及び/又はデータの交換を容易にしてもよい。一部の実施形態では、オンデマンドサービスシステム100(例えば、サーバ110、ユーザ端末130及びストレージ140)において1以上の構成要素は、ネットワーク120を介してオンデマンドサービスシステム100において他の構成要素へ情報及び/又はデータを送信してもよい。例えば、サーバ110は、ネットワーク120を介してユーザ端末130からサービスリクエストを受信してもよい。一部の実施形態では、ネットワーク120は、有線又は無線ネットワーク又はそれらの組み合わせのいずれかの種類であってもよい。例にすぎないが、ネットワーク120は、ケーブルネットワーク、ワイヤラインネットワーク、光ファイバーネットワーク、テレコミュニケーションネットワーク、イントラネット、インターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワイヤレスローカルエリアネットワーク(WLAN)メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、パブリックテレフォンスイッチドネットワーク(PSTN)、ブルートゥース(登録商標)ネットワーク、ZigBeeネットワーク、近距離通信(NFC)ネットワーク又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、ネットワーク120は、1以上のネットワークアクセスポイントを含んでもよい。例えば、ネットワーク120は、それを通じてオンデマンドサービスシステム100の1以上の構成要素がそれらの間でデータ及び/又は情報を交換するためにネットワーク120と接続する基地局及び/又はインターネット交換ポイント120−1,120−2、等のような有線又は無線ネットワークアクセスポイントを含んでもよい。
【0036】
一部の実施形態では、ユーザ端末130は、モバイルデバイス130−1、タブレットコンピュータ130−2、ラップトップコンピュータ130−3、自動車における組み込み装置130−4又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、モバイルデバイス130−1は、スマートホームデバイス、ウェアラブルデバイス、スマートモバイルデバイス、バーチャルリアリティデバイス、拡張現実デバイス又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、スマートホームデバイスは、スマートライティングデバイス、インテリジェント電気機器の制御デバイス、スマートモニタリングデバイス、スマートテレビジョン、スマートビデオカメラ、インターフォン又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、ウェアラブルデバイスは、スマートブレスレット、スマートフットギア、スマートグラス、スマートヘルメット、スマートウォッチ、スマートクロージング、スマートバックパック、スマートアクセサリ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、スマートモバイルデバイスは、スマートフォン、パーソナルデジタルアシスタント(PDA)、ゲーミングデバイス、ナビゲーションデバイス、ポイントオブセール(POS)デバイス又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、バーチャルリアリティデバイス及び/又は拡張現実デバイスは、バーチャルリアリティヘルメット、バーチャルリアリティグラス、バーチャルリアリティパッチ、拡張現実ヘルメット、拡張現実グラス、拡張現実パッチ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。例えば、バーチャルリアリティデバイス及び/拡張現実デバイスは、Google Glass、Oculus Rift、Hololens、Gear VR等を含んでもよい。一部の実施形態では、自動車における組み込み装置130−4は、オンボードコンピュータ、オンボードテレビジョン等を含んでもよい。一部の実施形態では、ユーザ端末130は、サービスリクエスター及び/又はユーザ端末130の位置を見つけるための位置決め技術を有するデバイスであってもよい。
【0037】
ストレージ140は、データ及び/又は命令を格納してもよい。一部の実施形態では、ストレージ140は、ユーザ端末130及び/又はネットワーク120から取得されたデータを格納してもよい。一部の実施形態では、ストレージ140は、サーバ110が本開示に記載の例示的な方法を使用又は実行するデータ及び/又は命令を格納してもよい。一部の実施形態では、ストレージ140は、マスストレージ、リムーバブルストレージ、揮発性リードアンドライトメモリ、リードオンリーメモリ(ROM)又は同様のもの又はそれらの任意の組み合わせを含んでもよい。例示的なマスストレージは、磁気ディスク、光学ディスク、ソリッドステートドライブ等を含んでもよい。例示的なリムーバブルストレージは、フラッシュデバイス、フロッピーディスク、光学ディスク、メモリカード、ジップディスク、磁気テープ等を含んでもよい。例示的な揮発性リードアンドライトメモリは、ランダムアクセスメモリ(RAM)を含んでもよい。例示的なRAMは、ダイナミックRAM(DRAM)、double date rate synchronous dynamic RAM(DDR SDRAM)、スタティックRAM(SRAM)、サイリスタRAM(T−RAM)、及びゼロキャパシタRAM(Z−RAM)等を含んでもよい。例示的なROMは、マスクROM(MROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、コンパクトディスクROM(CD−ROM)、デジタルバーサタイルディスクROM等を含んでもよい。一部の実施形態では、ストレージ140は、クラウドプラットフォームに実装されてもよい。例にすぎないが、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散型クラウド、インタークラウド、マルチクラウド又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0038】
一部の実施形態では、ストレージ140は、オンデマンドサービスシステム100の1以上の構成要素(例えば、サーバ110、ユーザ端末130)と通信するためにネットワーク120と接続してもよい。オンデマンドサービスシステム100の1以上の構成要素は、ネットワーク120を介してストレージ140に格納されたデータ又は命令にアクセスしてもよい。一部の実施形態では、ストレージ140は、オンデマンドサービスシステム100の1以上の構成要素(例えば、サーバ110、ユーザ端末130)と通信又は接続してもよい。一実施形態では、ストレージ140は、サーバ110の一部であってもよい。
【0039】
一部の実施形態では、オンデマンドサービスシステム100の1以上の構成要素(例えば、サーバ110、ユーザ端末130)は、ストレージ140にアクセスするために許諾を有する。一部の実施形態では、オンデマンドサービスシステム100の1以上の構成要素は、ユーザに関する情報を読み出す及び/又は変更してもよい。例えば、サーバ110は、サービス後の1以上のユーザの情報を読み出す及び/又は変更してもよい。
【0040】
一部の実施形態では、オンデマンドサービスシステム100の構成要素間の情報交換は、サービスをリクエストすることにより実現されてもよい。サービスリクエストの対象は、任意の製品であってもよい。一部の実施形態では、製品は、有形製品又は無形製品であってもよい。有形製品は、食品、医薬品、日用品、化学製品、電気製品、衣服、車、家屋、高級品又は同様のもの又はそれらの任意の組み合わせを含んでもよい。無形製品は、サービス製品、金融製品、知識製品、インターネット製品又は同様のもの又はそれらの任意の組み合わせを含んでもよい。インターネット製品は、個人ホスト製品、ウェブ製品、モバイルインターネット製品、コマーシャルホスト製品、埋め込み製品又は同様のもの又はそれらの任意の組み合わせを含んでもよい。モバイルインターネット製品は、モバイル端末のソフトウェア、プログラム、システム又は同様のもの又はそれらの任意の組み合わせで用いられてもよい。モバイル端末は、タブレットコンピュータ、ラップトップコンピュータ、モバイルフォン、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、ポイントオブセール(POS)デバイス、オンボードコンピュータ、オンボードテレビジョン、ウェアラブルデバイス又は同様のもの又はそれらの任意の組み合わせを含んでもよい。例えば、製品は、任意のコンピュータ又はモバイルフォンで用いられるソフトウェア及び/又はアプリケーションであってもよい。ソフトウェア及び/又はアプリケーションは、ソーシャライジング、ショッピング、輸送、エンターテインメント、学習、調査又は同様のもの又はそれらの任意の組み合わせに関連してもよい。一部の実施形態では、輸送に関するソフトウェア及び/又はアプリケーションは、トラベリングソフトウェア及び/又はアプリケーション、乗り物スケジューリングソフトウェア及び/又はアプリケーション、マッピングソフトウェア及び/又はアプリケーション等を含んでもよい。乗り物は、馬、馬車、人力車(例えば、一輪車、二輪車、三輪車)、車(例えば、タクシー、バス、自家用車)、列車、地下鉄、船舶、航空機(例えば、飛行機、ヘリコプタ、スペースシャトル、ロケット、熱気球)又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0041】
図2は、サーバ110、ユーザ端末130及び/ストレージ140が本開示の一部の実施形態に基づいて実装されるコンピューティングデバイス200の例示的なハードウェア及びソフトウェア構成要素を示す概略図である。例えば、プロセッシングエンジン112は、コンピューティングデバイス200に実装され、本開示で開示されるプロセッシングエンジン112の機能を実行するように構成されてもよい。
【0042】
コンピューティングデバイス200は、汎用コンピュータ又は特殊用途コンピュータであってもよく、双方は本開示のためのオンデマンドシステムを実装するために用いられてもよい。コンピューティングデバイス200は、本明細書に記載されるようにオンデマンドサービスの構成要素を実装するために用いられてもよい。例えば、プロセッシングエンジン112は、そのハードウェア、ソフトウェアプログラム、ファームウェア又はそれらの組み合わせを介して、コンピューティングデバイス200で実装されてもよい。便宜上、1つのみのこのようなコンピュータが示されるが、本明細書に記載されるオンデマンドサービスに関するコンピュータ機能は、処理負荷を分散するために、複数の同様のプラットフォーム上で分散型に実装されてもよい。
【0043】
コンピューティングデバイス200は、例えば、データ通信を容易にするために、そこに接続されたネットワークに接続された、又はそこに接続されたネットワークからのCOMポート250を含んでもよい。コンピューティングデバイス200は、また、プログラム命令を実行するために、1以上のプロセッサの形態の、プロセッサ220を含んでもよい。例示的なコンピューティングデバイスは、コンピューティングデバイスにより処理及び/又は送信されるべき各種データファイルに対して、内部通信バス210、例えばディスク270、ROM230又はRAM240を含む異なる形式のプログラムストレージ及びデータストレージを含んでもよい。例示的なコンピューティングデバイスは、また、ROM230、RAM240、及び/又はプロセッサ220によって実行されるべき他の種類の非一時的ストレージ媒体に格納されたプログラム命令を含んでもよい。本開示の方法及び/又は処理は、プログラム命令として実装されてもよい。コンピューティングデバイス200は、また、コンピュータと、ユーザインターフェース要素280等のようなコンピュータ内の他の構成要素との入力/出力をサポートするI/O構成要素260を含む。コンピューティングデバイス200は、また、ネットワーク通信を介してプログラミング及びデータを受信してもよい。
【0044】
コンピューティングデバイス200は、また、ハードディスクと通信されるハードディスクコントローラ、キーパッド/キーボードと通信されるキーパッド/キーボードコントローラ、シリアル周辺機器と通信されるシリアルインターフェースコントローラ、パラレル周辺機器と通信されるパラレルインターフェースコントローラ、ディスプレイと通信されるディスプレイコントローラ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0045】
単に例示のために、1つのみのCPU及び/又はプロセッサが
図2に示される。複数のCPU及び/又はプロセッサも検討される;よって、本開示で説明されるような1つのCPU及び/又はプロセッサによって行われる動作及び/又は方法ステップは、複数のCPU及び/又はプロセッサによって共同で又は別々に行われてもよい。例えば、本開示において、コンピューティングデバイス200のCPU及び/又はプロセッサがステップA及びステップBの両方を実行する場合、ステップA及びステップBは、コンピューティングデバイス200において2つの異なるCPU及び/又はプロセッサによって共同又は別々に行われてもよい(例えば、第1のプロセッサはステップAを実行し、第2のプロセッサはステップBを実行する、又は第1及び第2のプロセッサは共同でステップA及びBを実行する)。
【0046】
図3は、本開示の一部の実施形態に係る例示的なプロセッサのブロック図である。プロセッサ300は、本開示の一部の実施形態に係るサーバ110、ユーザ端末130及び/又はストレージ140に適合されてもよい。一部の実施形態では、プロセッサ300は、位置取得モジュール310と、位置分析モジュール320と、位置エンコーディングモジュール330と、ルックアップモジュール340と、POI決定モジュール350と、POI取得モジュール360と、分類モジュール370と、ソーティングモジュール380と、を含んでもよい。
【0047】
一般的に、本明細書で用いられる文言「モジュール」は、ハードウェア又はソフトウェアに埋め込まれるロジック、又はソフトウェア命令の集合を指す。本明細書で説明されるモジュールは、ソフトウェア及び/又はハードウェアモジュールとして実装されてもよく、いずれかの種類の非一時的なコンピュータ可読媒体又は他のストレージデバイスに格納されてもよい。一部の実施形態では、ソフトウェアモジュールは、実行可能プログラムにコンパイル及びリンクされてもよい。ソフトウェアモジュールは、他のモジュール又はそれ自体から呼び出し可能であることができる、及び/又は検出されたイベント又はインタラプトに応じて呼び出されることができることが理解されるであろう。コンピューティングデバイス(例えば、プロセッサ300)で実行するために構成されるソフトウェアモジュールは、コンパクトディスク、デジタルビデオディスク、フラッシュドライブ、磁気ディスク又は他の有形媒体等のようなコンピュータ可読媒体又はデジタルダウンロードとしてで提供されることができる(及び実行前に、インストレーション、展開又は復号化を必要とする圧縮又はインストール可能なフォーマットで本来格納されることができる)。このようなソフトウェアコードは、コンピューティングデバイスによって実行するために、実行コンピューティングデバイスのメモリデバイスに部分的又は完全に格納されうる。ソフトウェア命令は、EPROM等のようなファームウェアに埋め込まれうる。ハードウェアモジュールは、ゲート及びフリップフロップ等のような接続されたロジックユニットに含まれることができる、及び/又はプログラマブルゲートアレイ又はプロセッサ等のようなプログラマブルユニットに含まれることができることが更に理解されるであろう。本明細書で説明されるモジュール又はコンピューティングデバイス機能は、好ましくはソフトウェアモジュールとして実装されるが、ハードウェア又はファームウェアで表されることができる。一般に、本明細書で説明されるモジュールは、それらの物理組織又はストレージにかかわらず、他のモジュールと組み合わせられうる又はサブモジュールに分割されうる論理的なモジュールを指す。
【0048】
位置取得モジュール310は、ネットワーク120を介してユーザ端末130及び/又はストレージ140から位置を取得してもよい。位置は、ユーザと関連付けられた対象位置を含んでもよい。例えば、位置は、ユーザによって保持又は操作されたユーザ端末130の位置を含んでもよい。位置は、ユーザ端末130を通じてユーザの入力によって指定された位置を含んでもよい。位置は、また、ジオコード構造を構築するために用いられる複数の位置を含んでもよい(本明細書ではサンプル位置とも呼ばれる)。
【0049】
位置分析モジュール320は、位置取得モジュール310から位置を受け付けてもよい。位置分析モジュール320は、位置が、位置の座標情報を含まないとき、位置の経度値及び緯度値を決定してもよい。
【0050】
位置エンコーディングモジュール330は、エンコーディング技術を用いて位置のジオコード値を決定するために、位置の経度値及び緯度値を受け付けてもよい。エンコーディング技術は、ジオハッシュ技術、モートンコード技術、ヒルベルト曲線技術又は同様のもの又はそれらの組み合わせを含んでもよい。
【0051】
ルックアップモジュール340は、少なくとも1つの関連ジオコード値を決定するために、位置のジオコード値に基づいてジオコード構造を横断してもよい。関連ジオコード値は、位置のジオコード値に関する共通プレフィックスを有してもよい。
【0052】
POI決定モジュール350は、位置のジオコード値に基づいて位置に関連付けられる複数のPOIを決定してもよい。複数のPOIは、関連ジオコード値と関連付けられてもよい。
【0053】
POI取得モジュール360は、データソースから複数のサンプルPOIを取得してもよい(例えば、ディスク270、ROM230、RAM240又はストレージ140)。サンプルPOIは、位置の各々と関連付けられてもよい。サンプルPOIは、位置の名称(例えば、サンプル位置、サンプル位置の周囲の位置)、位置の座標(例えば、経度値及び/又は緯度値)、位置の住所(例えば、州、省、市、区、通り、番地)、位置に関する電話番号、宣伝活動、又は病院、学校、公園、道路、橋、川、湖、山、鉄道駅、空港、企業、住宅地域、ホテル景観、スポット又は同様のもの又はそれらの組み合わせのような他の種類の位置の周囲を含んでもよい。データソースは、データベース、ネットワークリソース、リモートサーバ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0054】
分類モジュール370は、複数のサンプル位置の各々の経度値及び緯度値に基づいて、複数のサンプル位置を分類してもよい。サンプル位置は、データソースに格納された地理的位置であってもよい。分類モジュール370は、異なるサーバにおいて複数のサンプル位置を格納してもよく、同一種類のサンプル位置は、同一サーバに格納されてもよい。例えば、分類モジュール370は、第1のサーバにおいて第1の管理領域の複数のサンプル位置を格納し、第2のサーバにおいて第2の管理領域の複数のサンプル位置を格納してもよい。管理領域は、国、省、市、区、国、通り等を表してもよい。
【0055】
ソーティングモジュール380は、POI決定モジュール350から複数のPOIを受け付け、ソートルールに基づいて複数のPOIをソートしてもよい。例えば、ソーティングモジュール380は、対象位置と複数のPOIの各々に対応する位置との間の距離に基づいて、昇順で複数のPOIをソートしてもよい。
【0056】
図4は、本開示の一部の実施形態に係る対象位置と関連付けられたポイントオブインタレスト(POI)を決定するための例示的な処理を示すフローチャートである。一部の実施形態では、処理400は、
図1に示されるようなオンデマンドサービスシステム100で実装されてもよい。例えば、処理400は、1以上の命令のセットとして実装されてもよく、ストレージ140又はプロセッサ300に格納され、プロセッサ300によって呼び出し及び/又は実行されてもよい。
【0057】
410において、プロセッサ300(例えば、位置取得モジュール310)は、ユーザと関連付けられた対象位置を取得してもよい。一部の実施形態では、ユーザは、個人又はサービスを要求又は依頼する企業であってもよい。例えば、ユーザは、乗務員、運転手、オペレーター又は同様のもの又はそれらの任意の組み合わせであってもよい。一部の実施形態では、対象位置は、(例えば、ユーザによって保持又は操作されたユーザ端末130を介して)位置決め技術によって決定された(例えば、ユーザによって保持又は操作された端末を介して)ユーザの現在位置を含んでもよい。位置決め技術は、グローバルポジショニングシステム(GPS)、グローバルナビゲーションサテライトシステム(GLONASS)、コンパスナビゲーションシステム(COMPASS)、ガリレオポジショニングシステム、準天頂衛星システム(quasi−zenith satellite system(QZSS))、wireless fidelity(WiFi)ポジショニングシステム、又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、対象位置は、ユーザ入力によって指定された位置を含んでもよい。例えば、ユーザは、対象位置を決定するために、ユーザ端末130にインストールされたマップ上のポイント選択アイコンをドラッグすることによってユーザの位置を示してもよく、これは、ネットワーク120を介して、位置取得モジュール310へ、ユーザ端末130によって送信されてもよい。対象位置は、テキスト、イメージ、音声、動画又は同様のもの又はそれらの任意の組み合わせの形態であってもよい。
【0058】
420において、プロセッサ300(例えば、位置エンコーディングモジュール330)は、エンコーディング技術を用いることによって、対象位置に関するジオコード値(本明細書で対象位置ジオコード値とも呼ばれる)を決定してもよい。本明細書で用いられるように、用語「ジオコード値」は、一般的に、コードを用いて地理的位置の提示を指し、これは、エンコーディング技術を用いることによって、決定される。一部の実施形態では、対象ジオコード値は、対象位置の経度値(本明細書では対象経度値とも呼ばれる)及び対象位置の緯度値(本明細書では対象緯度値とも呼ばれる)に基づいて生成されてもよい。位置に対応するジオコード値を決定するためのエンコーディング技術は、ジオハッシュ技術、モートンコード(Morton code)技術、ヒルベルト曲線技術、又は同様のもの又はそれらの組み合わせを含んでもよい。ジオハッシュ技術は、二次元位置値(例えば、経度値及び緯度値を含む)を一次元値(例えば、ジオハッシュ値)に変換するエンコーディング方法である。例にすぎないが、対象ジオコード値は、ジオハッシュ値(本明細書では対象ジオハッシュ値としても呼ばれる)であってもよい。対象ジオハッシュ値は、対象経度値及び対象緯度値のビットをインターリーブし、その後、ビット表現をbase−32表現に変換することによって、生成されてもよい。
【0059】
430において、プロセッサ300(例えば、ルックアップモジュール340)は、対象ジオコード値に基づいてジオコード構造を横断してもよい。一部の実施形態では、ジオコード構造は、
図6に示される処理600に基づいて生成される構造であってもよい。ジオコード構造は、複数のジオコード値を格納してもよい。一部の実施形態では、ジオコード構造は、ジオコードツリー構造を含んでもよい。一部の実施形態では、ジオコード構造は、トライツリー(Trie tree)構造を含んでもよい。一部の実施形態では、ジオコード構造を横断するために用いられる技術は、シーケンシャルサーチ、バイナリサーチ、インデックスサーチ、ブロッキングサーチ、ハッシュサーチ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0060】
ジオコード構造を横断した後に、440において、プロセッサ300(例えば、POI決定モジュール350)は、対象位置の対象ジオコード値に基づいて対象位置と関連付けられた少なくとも1つのPOIを決定してもよい。一部の実施形態では、ジオコード値は、複数のPOIと関連付けられてもよい。ジオコード値が決定されたとき、ジオコード値と関連付けられた複数のPOIも決定されてもよい。プロセッサ300(例えば、POI決定モジュール350)は、対象位置のジオコード値に基づいて対象位置の周囲のPOI(複数又は単数)を決定してもよい。対象位置に関するPOIは、位置の名称(例えば、サンプル位置、サンプル位置の周囲の位置)、位置の座標(例えば、経度値及び/又は緯度値)、位置の住所(例えば、州、省、市、区、通り、番地)、位置に関する電話番号、宣伝活動、又は病院、学校、公園、道路、橋、川、湖、山、鉄道駅、空港、企業、住宅地域、ホテル景観、スポット又は同様のもの又はそれらの組み合わせを含んでもよい。
【0061】
一部の実施形態では、POI決定モジュール350は、対象位置の周囲の複数のポインツオブインタレスト(POIs)を決定してもよい。一部の実施形態では、プロセッサ300におけるソーティングモジュール380は、ソートルールに基づいて複数のPOIsをソートしてもよい。例にすぎないが、ソーティングモジュール380は、対象位置と複数のPOIsの各々に対応する位置との間の距離に基づいて昇順で複数のPOIsをソートしてもよい。POI決定モジュール350は、ソート結果に基づいてユーザ端末130を介してユーザへPOI決定モジュール350によってリコール(又は決定)された複数のPOIsの一部のみを提供してもよい。
【0062】
処理400についての上記説明は、単に一例であり、限定的であると意図されないことを留意すべきである。一部の実施形態では、処理400は、他の動作を含んでもよい。例えば、410において、対象位置を取得した後、プロセッサ300(例えば、位置分析モジュール320)は、対象位置が対象位置の座標を含んでいるかを判定してもよい。対象位置が位置座標を含まない場合(例えば、対象位置は、位置のテキスト記述である、又はマップ上のポイントである、又はユーザ端末130でユーザによって入力又は選択されたPOIである場合)、位置分析モジュール320は、対象位置と関連付けられた対象経度値及び対象緯度値を決定してもよい。
【0063】
図5は、本開示の一部の実施形態に係る、POIを決定するための例示的な処理を示すフローチャートである。一部の実施形態では、処理500は、
図1に示されるようなオンデマンドサービスシステム100で実装されてもよい。例えば、処理400は、ストレージ140又はプロセッサ300に格納された、1以上の命令のセットとして実装されてもよい、及びプロセッサ300によって呼び出し及び/又は実行されてもよい。
【0064】
510において、プロセッサ300(例えば、位置取得モジュール310)は、ユーザと関連付けられた対象位置を取得してもよい。対象位置は、テキスト、イメージ、音声、動画又は同様のもの又はそれらの任意の組み合わせの形式であってもよい。一部の実施形態では、対象位置は、二次元位置値(例えば、緯度及び経度対)で位置情報を表してもよい。
【0065】
一部の実施形態では、プロセッサ300(例えば、位置分析モジュール320)は、対象位置が対象位置の座標を含んでいるかを判定してもよい。対象位置が位置座標を含まない場合(例えば、対象位置は、位置のテキスト記述である、又はマップ上のポイントである、又はユーザ端末130でユーザによって入力又は選択されたPOIである場合)、位置分析モジュール320は、520において、対象位置と関連付けられた経度値(本明細書では対象経度値とも呼ばれる)及び緯度値(本明細書では対象緯度値とも呼ばれる)を決定してもよい。一部の実施形態では、処理300がイメージ、音声又は動画の形態の対象位置を受け付けた場合、プロセッサ300は、先ずそれをテキスト記述へ変換し、テキスト記述を位置座標へ変換してもよい。一部の実施形態では、プロセッサ300は、イメージ、音声又は動画の形態の対象位置を位置座標へ変換してもよい。プロセッサ300が、対象位置が対象位置の座標を含むと判定した場合、処理500は、520をスキップし、530へ進む。
【0066】
530において、プロセッサ300(例えば、位置エンコーディングモジュール330)は、エンコーディング技術を用いることによって、対象位置経度値及び対象緯度値に基づいて対象位置に関する対象ジオコード値を決定してもよい。一部の実施形態では、対象ジオコード値は、一次元フォーマットで位置情報を表してもよい。
【0067】
一部の実施形態では、位置エンコーディングモジュール330は、対象経度値及び対象緯度値の各々を二進数へ変換することによって対象ジオコード値を決定し、2つの二進数を組み合わせてもよい。例えば、対象位置は、位置座標対(6,8)として表されてもよい。位置座標対における第1の項は、対象経度値を表し、位置座標対における第2の項は、対象緯度値を表す。プロセッサ300は、対象経度値及び対象緯度値を、二進数、八進数又は十六進数又は同様のものへ変換してもよい。説明の簡素化のために、二進数が一例として以下に用いられる。二進数の長さは、対象経度値及び/又は対象緯度値の実数に基づいて決定されてもよい。上記の例では、対象経度値の二進数は、「0110」であり、対象緯度値の二進数は、「1000」である。そして、位置エンコーディングモジュール330は、2つの二進数を共に組み合わせて、対象ジオコード値を生成してもよい。組み合わせの手法は、任意であってもよい。一部の実施形態では、位置エンコーディングモジュール330は、対象経度値の二進数を超える対象緯度値の二進数を設定してもよい(例えば、この場合、対象ジオコード値は「01101000」)。一部の実施形態では、プロセッサ300は、対象緯度値の二進数を超える対象経度値の二進数を設定してもよい(例えば、対象ジオコード値は「10000110」)。
【0068】
一部の実施形態では、プロセッサ300は、ジオハッシュエンコーディング技術を用いることによって、対象ジオコード値を決定してもよい。対象ジオコード値は、ジオハッシュ値を含んでもよい(本明細書では対象ジオハッシュ値とも呼ばれる)。位置エンコーディングモジュール330は、対象経度値及び対象緯度値のビットをインターリーブすることによって対象ジオハッシュ値を生成し、ビット表現をbase−32表現に変換してもよい。例えば、位置エンコーディングモジュール330は、先ず、対象経度値及び対象緯度値を二進数表現にそれぞれ変換してもよい。位置エンコーディングモジュール330は、また、対象経度値及び対象緯度値の二進数表現をインターリーブしてもよい。位置エンコーディングモジュール330は、インターリーブの結果をbase−32表現へ更に変換してもよい。
【0069】
一部の実施形態では、プロセッサ300は、540において、付加的に、探索半径を取得してもよい。プロセッサ300は、デフォルト設定又は他の要因(例えば、マップのスケール又はユーザの好み)に基づいて探索半径を決定されてもよい。例えば、プロセッサ300は、位置の周囲のPOIのためのリクエストを受け付け、プロセッサ300は、所定の範囲値内の位置の周囲のPOIを自動的に決定してもよい。所定の範囲値は、0から10キロメートル、10.1から20キロメートル、20.1から30キロメートル、30.1から40キロメートル、40.1から50キロメートルの特定の値であってもよい。一部の実施形態では、所定の範囲値は、1から100メートル、101から200メートル、201から300メートル、301から400メートル、401から500メートル、501から600メートル、601から700メートル、701から800メートル、801から900メートル、901から1000メートルであってもよい。一部の実施形態では、所定の範囲値は、0から10メートル、11から20メートル、21から30メートル、31から40メートル、41から50メートル、51から60メートル、61から70メートル、71から80メートル、81から90メートル、91から100メートルであってもよい。
【0070】
それに代えて又は追加して、探索半径は、ユーザ端末130を介してユーザによって設定されてもよい。例えば、ユーザが、ユーザ端末130を介してユーザにより指定された位置の周囲のいくつかのPOIを取得しようとするとき、ユーザ端末130のユーザインターフェース上に探索半径のための選択アイコン又は入力ボックスが存在し、ユーザは、探索半径を選択する又は入力ボックスに探索半径を入力してもよい。そして、プロセッサ300は、ユーザによって指定された探索半径を、例えばネットワーク120を介してユーザ端末130から受け付け、探索半径の範囲によりPOIを決定してもよい。一部の実施形態では、探索半径は、オンデマンドサービスシステム100のデフォルト設定であってもよい。
【0071】
それに代えて又は追加して、プロセッサ300は、異なる位置に対する探索半径の異なる値を決定してもよい。例えば、プロセッサ300は、都市の中心における位置に関する探索半径の相対的に小さい値と関連し、都市の郊外区域における位置に関する探索半径の相対的に大きな値と関連してもよい。
【0072】
探索半径は、0から50キロメートル又は50キロメートルを超える値を含んでもよい。一部の実施形態では、探索半径は、0から10キロメートル、10.1から20キロメートル、20.1から30キロメートル、30.1から40キロメートル、40.1から50キロメートルであってもよい。一部の実施形態では、探索半径は、1から100メートル、101から200メートル、201から300メートル、301から400メートル、401から500メートル、501から600メートル、601から700メートル、701から800メートル、801から900メートル、901から1000メートルであってもよい。一部の実施形態では、探索半径は、0から10メートル、11から20メートル、21から30メートル、31から40メートル、41から50メートル、51から60メートル、61から70メートル、71から80メートル、81から90メートル、91から100メートルであってもよい。
【0073】
探索半径に基づいて、プロセッサ300は、探索半径の範囲内の対象位置と関連付けられた1以上のPOIを決定してもよい。
【0074】
一部の実施形態では、プロセッサ300は、550において、探索半径に基づいてサーチングコーディング長を決定してもよい。サーチングコーディング長は、探索半径に対応するサーチング範囲を反映してもよい。コーディング長が短くなると、サーチング範囲が長くなる。対象ジオコード値を「01101000」、対象ジオコード値の長さを8、及び探索半径と関連付けられた第1のコーディング長を2と仮定し、探索半径が50メートルのとき、プロセッサ300は、第1のコーディング長及び対象ジオコード値の長さに基づいて、サーチングコーディング長を6(つまり、8−2=6)と決定してもよい。
【0075】
560において、プロセッサ300(例えば、ルックアップモジュール340)は、対象ジオコード値及びサーチングコーディング長に基づいてジオコード構造を横断し、少なくとも1つの関連ジオコード値を決定してもよい。関連ジオコード値は、対象位置の範囲(例えば、探索半径)内の位置に対応してもよい。一部の実施形態では、560において用いられるジオコード構造は、
図6に示される処理600に基づいて生成されてもよい。ジオコード構造は、複数のジオコード値を格納してもよい。一部の実施形態では、ジオコード構造は、ジオコードツリー構造を含んでもよい。一部の実施形態では、ジオコード構造は、トライツリー構造を含んでもよい。関連ジオコード値は、対象ジオコード値についての共通プレフィックスを有してもよい。共通プレフィックスは、2以上のジオコード値により共有される1以上の文字を含んでもよい。例えば、第1のジオコード値の少なくとも第1の文字及び第2のジオコード値の第1の文字は、実質的に同一であってもよい。一部の実施形態では、ジオコード値のプレフィックスは、ジオコード値の少なくとも第1の文字を含むジオコード値の一連の連続文字であってもよい。ジオコード値のサフィックスは、プレフィックスとして選択されていない一連の連続文字の残りの部分である(例えば、プレフィックス後の文字)。共通プレフィックスの長さは、探索半径に少なくとも部分的に基づいて決定されてもよい。例えば、対象ジオコード値が「01101000」であり、探索半径が50メートルであり、探索半径と関連付けられた第1のコーディング長が2である場合、共通プレフィックスの長さは、6(すなわち、8−2=6)と決定され、共通プレフィックスは、「011010」である。関連ジオコード値は、プレフィックス「011010」を有する少なくとも1つのジオコード値を含んでもよい。
【0076】
一部の実施形態では、プロセッサ300の構築モジュール(
図3には図示せず)は、ジオコードツリー構造において各コードに対してハッシュインデックスを決定してもよい。ルックアップモジュール340は、ハッシュインデックスに基づいてノードを決定してもよい。ハッシュインデックスは、一般的に、ノードに関連付けられたキーと、ノードの位置とのマップ関係を指す。例えば、対象ジオコード値が「01101000」である場合、サーチングコーディング長は6であり、ルックアップモジュール340は、ハッシュインデックスに基づいて文字列(例えば、「011010」)に関連付けられたノードの位置を決定してもよい。ノードの全ての派生(本明細書では葉ノード又は子ノードとも呼ばれる)は、ノードに関連付けられた文字列の共通プレフィックス(例えば、「011010」)を有する。その後、少なくとも関連するジオコード値は、ノードの派生に関連付けられた文字列であってもよい。
【0077】
570において、プロセッサ300(例えば、POI決定モジュール350)は、少なくとも1つの関連ジオコード値に関連付けられた少なくとも1つのPOIを決定してもよい。プロセッサ300は、対象位置に関連付けられたPOIとして少なくとも1つのPOIを決定してもよい。POIは、特定位置の名称、特定位置の座標(例えば、経度値及び/又は緯度値)、特定位置の住所(例えば、州、省、市、区、通り、番地)、特定位置に関連する電話番号、宣伝活動又は同様のもの又はそれらの任意の組み合わせを含んでもよい。
【0078】
処理500についての上記説明は、単なる一例であり、限定的であることが意図されるものではないことを留意すべきである。一部の実施形態では、処理500は、他の動作を含んでもよい。例えば、対象位置に関する対象ジオコード値の決定後、プロセッサ300(例えば、位置エンコーディングモジュール330)は、530において、対象位置に対応する近傍位置ジオコード値を取得してもよい。近傍位置ジオコード値は、対象位置の周囲の地理的位置に関連してもよい。近傍位置ジオコード値は、1以上のPOIと関連付けられてもよい。近傍位置ジオコードを取得した後、ルックアップモジュール340は、近傍位置ジオコード値、対象ジオコード値及びサーチングコーディング長に基づいて、少なくとも1つのPOIを決定してもよい。一部の実施形態では、対象位置及び近傍位置の周囲の複数のPOIを決定した後、プロセッサ300のソーティングモジュール380は、ソートルールに基づいて複数のPOIをソートしてもよい。例にすぎないが、ソーティングモジュール380は、対象位置と複数のPOIの各々に対応する位置との間の距離に基づいて、昇順で複数のPOIをソートしてもよい。それに代えて又は加えて、POI決定モジュール350は、ユーザ端末130へ複数のPOIを送信してもよく、これは、ユーザ端末130のユーザインターフェースに表示されてもよい(例えば、
図7に示されるポインタとして表示される)。
【0079】
図6は、本開示の一部の実施形態に係るジオコード構造を生成する例示的な処理を示すフローチャートである。処理600に基づいて生成されたジオコード構造は、本開示のいずれかに記載されるようなPOIを決定するために処理400のステップ430及び処理500のステップ560において用いられてもよい。
【0080】
一部の実施形態では、処理600は、
図1に示されるようなオンデマンドサービスシステム100に実装されてもよい。処理600は、サーバ110、ユーザ端末130又はストレージ140に実装されてもよい。例えば、処理600は、1以上の命令のセットとして実装され、ストレージ140又はプロセッサ300に格納され、プロセッサ300によって呼び出される及び/又は実行されてもよい。一部の実施形態では、処理600、処理400及び/又は処理500の全ては、サーバ110においてプロセッサ300によって呼び出される及び/又は実行されてもよい。一部の実施形態では、処理600は、サーバ110又はストレージ140に実装されてもよく、処理400及び/又は処理500は、ユーザ端末130においてプロセッサ300によって呼び出される及び/又は実行されてもよい。
【0081】
610において、プロセッサ300(例えば、位置取得モジュール310)又は異なるプロセッサは、複数の位置(本明細書ではサンプル位置とも呼ばれる)を取得してもよい。一部の実施形態では、サンプル位置は、データソースに格納された地理的位置であってもよい。データソースは、データベース、ネットワークリソース、リモートサーバ又は同様のもの又はそれらの任意の組み合わせを含んでもよい。サンプル位置は、テキスト、画像、音声、動画又は同様のもの又はそれらの任意の組み合わせの形態であってもよい。
【0082】
一部の実施形態では、複数のサンプル位置を取得する前に、分類モジュール370は、複数のサンプル位置の各々の経度値及び緯度値に基づいて複数のサンプル位置を分類してもよい。分類モジュール370は、異なるサーバにおいて複数のサンプル位置を格納してもよく、同一種類のサンプル位置は、同一サーバに格納されてもよい。一部の実施形態では、同一地理的領域におけるサンプル位置は、同一種類であるとみなされてもよい。例えば、分類モジュール370は、第1のサーバにおいて第1の管理領域の複数のサンプル位置を格納し、第2のサーバにおいて第2の管理領域の複数のサンプル位置を格納してもよい。管理領域は、国、省、市、区、国、通り等を表してもよい。
【0083】
一部の実施形態では、610において取得されたサンプル位置は、位置座標値を含んでもよい。一部の実施形態では、610において取得されたサンプル位置は、位置座標値を含まなくてもよく、プロセッサ300は、サンプル位置を位置座標値へ変換してもよい。
【0084】
620において、プロセッサ300(例えば、位置分析モジュール320)又は異なるプロセッサは、複数のサンプル位置の各々に関連する経度値(本明細書ではサンプル経度値とも呼ばれる)及び複数のサンプル位置の各々に関連する緯度値(本明細書ではサンプル緯度値とも呼ばれる)を決定してもよい。
【0085】
630において、プロセッサ300(例えば、位置エンコーディングモジュール330)又は異なるプロセッサは、サンプル経度値及びサンプル緯度値に基づいて複数のサンプル位置の各々に対するサンプルジオコード値を決定してもよい。複数のサンプル位置の各々に対するサンプルジオコード値を決定する処理は、(例えば、処理500のステップ530に関連して前述されたような)例えば、ジオハッシュ技術を用いることによって、対象位置に関連する対象ジオコード値を決定する処理と同様であってもよい。
【0086】
640において、プロセッサ300(例えば、構築モジュール)又は異なるプロセッサは、サンプルジオコード値に基づいてジオコード構造の複数のノードを決定してもよい。一部の実施形態では、ジオコード構造は、ジオコードツリー構造を含んでもよい。一部の実施形態では、ジオコード構造は、トライツリー構造を含んでもよい。ジオコード構造は、複数のサンプルジオコード値を格納する複数のノードを含んでもよい。一部の実施形態では、ジオコードツリー構造のノードは、複数のサンプルジオコード値と関連付けられてもよい。一部の実施形態では、ジオコードツリー構造のノードは、1つのサンプルジオコード値と関連付けられてもよい。
【0087】
650において、プロセッサ300(例えば、構築モジュール)又は異なるプロセッサは、サンプルジオコード値の各々への1以上のサンプルPOIと関連してもよい。POI取得モジュール360は、データソースから複数のサンプルPOIを取得してもよい。POIは、サンプル位置の各々と関連付けられてもよい。サンプルPOIは、位置の名称(例えば、サンプル位置、サンプル位置の周囲の位置)、位置の座標(例えば、経度値及び/又は緯度値)、位置の住所(例えば、州、省、市、区、通り、番地)、位置に関する電話番号、宣伝活動、又は病院、学校、公園、道路、橋、川、湖、山、鉄道駅、空港、企業、住宅地域、ホテル景観、スポット又は同様のもの又はそれらの任意の組み合わせを含んでもよい。一部の実施形態では、サンプルジオコード値は、1以上のサンプルPOIと関連付けられてもよい。ジオコード値が決定された場合、ジオコード値と関連付けられた1以上のPOIも決定されてもよい。
【0088】
一部の実施形態では、処理600は、ジオコード構造の各ノードに対するハッシュインデックスを決定することを更に含んでもよい。660において、プロセッサ300(例えば、構築モジュール)又は異なるプロセッサは、各ノードに対するハッシュインデックスを決定してもよい。ハッシュインデックスは、ノードに関連付けられたキーとノードの位置とのマップ関係であってもよい。一部の実施形態では、プロセッサ300は、ジオコードツリー構造においてノードの各々に対するハッシュ値を演算することによってハッシュインデックスを生成してもよい。ノードのハッシュ値は、ルートノードからノードへの経路を表してもよい。各ノードのハッシュ値は、与えられたサーチキーによりジオコードツリー構造においてノードの位置を素早く位置付けてもよい。
【0089】
基本的な概念が説明されてきたが、前述した詳細な開示が例示によって示されることが意図されており、限定的ではないことがこの詳細な開示を読んだ後の当業者には明らかである。本明細書には明確に述べられていないが、各種変更、改善及び修正が生じてもよく、各種変更、改善及び修正が当業者には意図される。これらの変更、改善及び修正は、本開示によって提案されるように意図され、本開示の例示的な実施形態の趣旨及び範囲内である。
【0090】
また、特定の用語は、本開示の実施形態を説明するために用いられている。例えば、文言「一実施形態」、「実施形態」及び「一部の実施形態」は、実施形態に関して説明された特定の特徴、構造又は特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、この詳細な説明の様々な部分において「実施形態」、「一実施形態」又は「別の実施形態」への2以上の参照は、同一の実施形態に対して全て言及する必要がないことが強調される、及び理解されるべきである。更に、特定の特徴、構造又は特性は、本開示の1以上の実施形態において適切に組み合わせられてもよい。
【0091】
更に、当業者には当然のことながら、本開示の態様は、一切の新規及び有用な工程、機械、製造、若しくは合成物、又はこれらの一切の新規及び有用な改良を含め、多くの特許可能なクラス又はコンテキストのいずれかとして、本明細書中に例示し説明することが可能である。したがって、本開示の態様は、全体をハードウェアで、全体をソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)で、又は、本明細書では全てが一般的に「モジュール」、「ユニット」、「コンポーネント」、「デバイス」、又は「システム」と称される、ソフトウェア及びハードウェア実装の組み合せによって実装することができる。更に、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する、1つ以上のコンピュータ可読媒体中に具現化されたコンピュータプログラム製品の形を取ることもできる。
【0092】
コンピュータ可読信号媒体は、例えば、ベースバンド中に又は搬送波の部分として、具現化されたコンピュータ可読プログラムコードを備える伝搬データ信号を含み得る。このような伝搬信号は、電磁気、光など、又はこれらの任意の適切な組み合せを含め、様々な形の任意の形を取ってよい。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、又はデバイスによって、又はこれらに関連させて使用するためのプログラムを通信、伝搬、又は搬送することが可能な任意のコンピュータ可読媒体であってよい。コンピュータ可読信号媒体上に具現化されたプログラムコードは、ワイヤレス、ワイヤライン、光ファイバケーブル、RF等、又は前述の任意の適切な組み合せを含め、任意の適切な媒体を用いて送信することができる。
【0093】
本開示の態様のオペレーションを実行するためのコンピュータプログラムコードは、Java(登録商標)、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Pythonなどのオブジェクト指向プログラミング言語、「C」プログラミング言語、Visual Basic、Fortran2003、Perl、COBOL2002、PHP、ABAP等の従来式手続き型プログラミング言語、Python、Ruby、及びGroovy等のダイナミックプログラミング言語、又は他のプログラミング言語を含め、1つ以上のプログラミング言語の任意の組み合せで記述することができる。このプログラムコードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部をリモートコンピュータで実行することもでき、あるいは遠隔のコンピュータ又はサーバで専ら実行することもできる。後者のシナリオの場合は、ローカルエリアネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、又は(例えばインターネットサービスプロバイダを使いインターネットを介し)、あるいはクラウドコンピューティング環境中で、又はサービスとしてのソフトウェア(SaaS:Software as a Service)などのサービスとして提供されて、外部のコンピュータへの接続を行うことも可能である。
【0094】
更に、処理要素又はシーケンスの記載された順序、又は数、文字若しくは他の記号の使用は、特許請求の範囲に明示されているものを除き、請求対象のプロセス及び方法をいかなる順序に限定することも意図されていない。前述の開示では、本開示の有用な実施形態の種類と現時点で考えられる様々な例を介して説明をしているが、当然のことながら、このような詳細は単に前述の目的のためであり、添付の特許請求の範囲は、これら開示の実施形態に限定されるものでなく、それとは逆に、開示された実施形態の趣意及び範囲内にある変更及び等価の変形を網羅するように意図されている。例えば、前述の様々なコンポーネントの実装はハードウェアデバイスで具現化できるが、同様に、ソフトウェアだけのソリューション、例えば、既存のサーバ又は携帯デバイスへのインストールとしての実装が可能である。
【0095】
同様に、本開示の実施形態の前述の説明では、当然のことながら、本開示を簡潔にし、1つ以上の様々な実施形態の理解を助力する目的で、様々な特徴が場合によって単一の実施形態、図、又はその説明に一緒にまとめられている。但し、この開示方法が、請求されている主題が各請求項中に明示で記載されているよりも多くの特徴を必要とする、との意図を反映していると解釈されるべきではない。むしろ、請求の主題は、前述で開示された単一の実施形態の全ての特徴よりも少ない特徴の中にある。