以下の説明は、当業者が本開示を作成し、使用することを可能にするために、特定の用途及びその要件下で提供するものである。開示される実施形態に対する様々な修正は、当業者には容易に自明であり、本明細書で定義された一般的な原理は、本開示の精神及び範囲から逸脱することなく、他の実施形態及び用途に適用してもよい。したがって、本開示は、示された実施形態に限定されるものではなく、特許請求の範囲と一致する最も広い範囲が与えられるものである。
本明細書で用いられる用語は、具体的な例示的な実施形態を記述することのみを目的とするものであり、限定を意図するものではない。本明細書において、「a」、「an」の単数形及び「the」は、文脈上明確に別途示されない限り、複数形も包含することを意図するものとする。「comprises(備える)」、「comprising」、「includes(含む)」、及び/又は「including」という用語は、本開示において用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないことがさらに理解できるであろう。
本明細書で用いられる「システム」、「モジュール」、及び/又は「ブロック」という用語は、異なるレベルの異なるコンポーネント、要素、部品、セクション又はアセンブリを昇順で区別する1つの方法であることが理解できるであろう。しかし、それらの用語は、同じ目的を達成すれば、別の表現に書き換えてよい。
本明細書において、「モジュール」又は「ブロック」という用語は、ハードウェア又はファームウェアに組み込まれた論理、又はソフトウェア命令の集合を指す。本明細書に記載されたモジュール又はブロックは、ソフトウェア及び/又はハードウェアとして実装してもよく、任意のタイプの非一時的コンピュータ可読媒体又は別の記憶装置に記憶してもよい。いくつかの実施形態では、ソフトウェアモジュール/ユニット/ブロックは、コンパイルされ、実行可能なプログラムにリンクされてもよい。ソフトウェアモジュールは、他のモジュール/ユニット/ブロックから、又はそれら自体から呼び出してもよく、及び/又は検出されたイベント又は割り込みに応じて呼び出してもよいことを理解されたい。コンピューティング装置(例えば、図3に示すようなプロセッサ320)上で実行するように構成されるソフトウェアモジュール/ユニット/ブロックは、コンパクトディスク、デジタルビデオディスク、フラッシュドライブ、磁気ディスク、又は任意の他の有形の媒体などのコンピュータ可読媒体上に提供されるか、又は、デジタルダウンロードとされてもよい(元々、実行前にインストール、解凍、又は復号を必要とする圧縮済み又はインストール可能なフォーマットで記憶してもよい)。そのようなソフトウェアコードは、コンピューティング装置による実行のために、実行中のコンピューティング装置の記憶装置に部分的に又は完全に記憶されてもよい。ソフトウェア命令は、電気的プログラマブル読取り専用メモリ(EPROM)などのファームウェアに組み込まれてもよい。ハードウェアモジュール/ユニット/ブロックは、ゲート及びフリップフロップなどの接続された論理コンポーネントに含まれてもよく、及び/又はプログラマブルゲートアレイ又はプロセッサなどのプログラマブルユニットに含まれてもよいことがさらに理解されたい。本明細書に記載されたモジュール/ユニット/ブロック又はコンピューティング装置機能は、ソフトウェアモジュール/ユニット/ブロックとして実装できるが、ハードウェア又はファームウェアにおいて表されてもよい。一般的に、本明細書に記載されたモジュール/ユニット/ブロックは、それらの物理的編成又は保存にもかかわらず、他のモジュール/ユニット/ブロックと組み合わせられてもよいか又はサブモジュール/サブユニット/サブブロックに分割されてもよい論理モジュール/ユニット/ブロックを指す。説明は、システム、エンジン、又はそれらの一部に適用してもよい。
モジュール又はブロックが別のモジュール又はブロックに「接続されている」か又は「結合されている」ものとして言及される場合、文脈上明確に別途示されない限り、他のモジュール又はブロックと直接的に接続又は結合されているか、又は通信する可能性があるが、介在するユニット、エンジン、モジュール又はブロックが存在してもよいことが理解できるであろう。本明細書において、「及び/又は」という用語は、関連する列挙された項目の1つ以上のいずれかの及び全ての組み合わせを含む。
本開示のこれらの及び他の特徴及び特性、動作方法、構造の関連要素の機能、部品の組み合わせ、及び製造の経済性は、全体が本明細書の一部を構成する添付の図面を参照しながら以下の説明を検討することによって、より明らかになる。しかしながら、図面は、例示及び説明のみを目的とするものであり、本開示の範囲を限定するものではないことは、明確に理解されるべきである。図面は縮尺通りではないことが理解される。
本開示で用いられるフローチャートは、本開示のいくつかの実施形態に従ってシステムが実装する動作を示す。フローチャートの動作は、順番に実装されなくてもよいことが明確に理解されるべきである。逆に、動作は、逆の順序で又は同時に実装されてもよい。また、1つ以上の他の動作をフローチャートに追加してもよい。1つ以上の動作をフローチャートから除去してもよい。
さらに、本開示のシステム又は方法は、任意の他の種類のオンラインオンデマンドサービスに適用してもよい。例えば、本開示のシステム又は方法は、陸地、海、航空宇宙など、又はそれらの任意の組み合わせを含む異なる輸送システムに適用してもよい。輸送システムの車両は、タクシー、自家用車、ヒッチ、バス、電車、超特急列車、高速鉄道、地下鉄、船舶、航空機、宇宙船、熱気球、無人車両、自転車、三輪車、自動二輪車など、又はそれらの任意の組み合わせを含んでもよい。本開示のシステム又は方法は、タクシーヘイリング、運転代行サービス、配送サービス、カープール、バスサービス、テイクアウトサービス、運転者雇用、車両賃借、自転車シェアリングサービス、列車サービス、地下鉄サービス、シャトルサービス、位置情報サービスなどに適用してもよい。別の例として、本開示のシステム又は方法は、ショッピングサービス、学習サービス、フィットネスサービス、金融サービス、ソーシャルサービスなどに適用してもよい。本開示のシステム又は方法の適用シナリオは、ウェブページ、ブラウザのプラグイン、クライアント端末、カスタムシステム、内部分析システム、人工知能ロボットなど、又はそれらの任意の組み合わせを含んでもよい。
オンデマンドサービスの対象は、任意の製品であってもよい。いくつかの実施形態では、製品は、有形の製品又は無形の製品であってよい。有形の製品は、食品、医薬品、商品、化学製品、電気器具、衣類、自動車、住宅、高級品など、又はそれらの任意の組み合わせを含んでもよい。無形の製品は、サービス製品、金融製品、知識製品、インターネット製品など、又はそれらの任意の組み合わせを含んでもよい。インターネット製品は、個人ホスト製品、ウェブ製品、モバイルインターネット製品、商業ホスト製品、組み込み製品など、又はそれらの任意の組み合わせを含んでもよい。モバイルインターネット製品は、モバイル端末のソフトウェア、プログラム、システムなど、又はそれらの任意の組み合わせで使用されてもよい。モバイル端末は、タブレットコンピュータ、ラップトップコンピュータ、携帯電話、携帯情報端末(PDA)、スマートウォッチ、販売時点管理(POS)装置、車載コンピュータ、車載テレビ、ウェアラブル装置など、又はそれらの任意の組み合わせを含んでもよい。例えば、製品は、コンピュータ又は携帯電話で使用される任意のソフトウェア及び/又はアプリケーションであってもよい。ソフトウェア及び/又はアプリケーションは、社交、ショッピング、輸送、娯楽、学習、投資など、又はそれらの任意の組み合わせに関連してもよい。いくつかの実施形態では、輸送に関連するソフトウェア及び/又はアプリケーションは、走行ソフトウェア及び/又はアプリケーション、車両スケジューリングソフトウェア及び/又はアプリケーション、地図ソフトウェア及び/又はアプリケーションなどを含んでもよい。車両スケジューリングソフトウェア及び/又はアプリケーションでは、車両は、馬、馬車、人力車(例えば、手押し一輪車、自転車、三輪車など)、自動車(例えば、タクシー、バス、自家用車など)、電車、地下鉄、船舶、航空機(例えば、飛行機、ヘリコプタ、スペースシャトル、ロケット、熱気球など)など、又はそれらの任意の組み合わせを含んでもよい。
本開示における「ユーザ」という用語は、サービスを要求する、サービスを注文する、サービスを提供するか、又はサービスの提供を促進することができる個人、エンティティ又はツールを指してもよい。本開示では、「ユーザ」及び「ユーザ端末」という用語は互換的に使用されてもよい。
一態様では、本開示は、対象がターゲットジオフェンスに属するか否かを効率的に決定するシステム及び方法に関する。例えば、システムは、地球の表面をモデリングするための離散グローバルグリッドシステム(DGGS)を構築してもよい。DGGSで、地球の表面は、複数のグリッドに分割してもよい。システムは、対象の地理的座標に対応するグリッドの識別子(本明細書ではグリッドIDとも呼ばれる)を決定してもよい。いくつかの実施形態では、システムは、第1のグリッドデータベースにおいてグリッドIDをインデックス付けしてもよい。グリッドIDが第1のグリッドデータベースにおいてインデックス付けされない場合、対象はターゲットジオフェンスに属さないとし得る。グリッドIDが第1のグリッドデータベースにおいてインデックス付けされる場合、システムは、第2のグリッドデータベースにおいてグリッドIDをさらにインデックス付けしてもよい。グリッドIDが第2のグリッドデータベースにおいてインデックス付けされない場合、対象はターゲットジオフェンスに属するとしてもよい。グリッドIDが第2のグリッドデータベースにおいてインデックス付けされる場合、システムはさらに、対象とローカルジオフェンスとの関係に基づいて対象がターゲットジオフェンスに属するか否かを決定する必要があり得る。例えば、システムは、レイキャスティングアルゴリズムに基づいて対象とローカルジオフェンスとの関係を決定してもよい。本開示は、対象がターゲットジオフェンスに属するか否かを決定するときに、計算量を削減することにより、従来の計算、例えばレイキャスティングアルゴリズムの効率を向上させる。例えば、ターゲットジオフェンスは、1つ以上の内部グリッドと1つ以上の境界グリッドに分割される。ターゲットジオフェンスは、n多角形の形状を有し、かつm個の境界グリッドを含むと仮定する。いくつかの実施形態では、対象が1つの内部グリッド内にある場合、計算複雑性は、ο(1)に等しくてもよい。いくつかの実施形態では、対象が1つの境界グリッド内にある場合、計算複雑性は、ο(n/m)に等しくてもよい。いくつかの実施形態では、対象がターゲットジオフェンスになく、すなわち、対象が内部グリッドにも境界グリッドにもない場合、計算複雑性は、ο(1)に等しくてもよい。いくつかの実施形態では、従来のレイキャスティングアルゴリズムの計算複雑性は、ο(n)に等しくてもよい。
オンデマンド輸送サービス(例えば、自動車ヘイリングサービス)を例とすると、システムは、ある瞬間にサービス要求者及び/又はサービスプロバイダの属するジオフェンスを決定するために使用してもよい。いくつかの実施形態では、システムは、ジオフェンスに対応するマーケティングポリシーを作成してもよい。いくつかの実施形態では、システムは、ジオフェンスに対応するセキュリティポリシーを作成してもよい。いくつかの実施形態では、システムは、ジオフェンスのサービス容量を決定し、かつサービス容量に基づいてスケジューリングポリシーを作成してもよい。
図1は、いくつかの実施形態に係る例示的なオンデマンドサービスシステムを示す概略図である。例えば、オンデマンドサービスシステム100は、輸送サービス(例えば、タクシーヘイリング、運転代行サービス、配送サービス、カープール、バスサービス、テイクアウトサービス、運転者雇用、車両賃借、列車サービス、地下鉄サービス、シャトルサービス)、ショッピングサービス、フィットネスサービス、学習サービス、金融サービスなどのためのオンラインオンデマンドサービスシステムであってもよい。
オンデマンドサービスシステム100は、サーバ110、ネットワーク120、1つ以上のユーザ端末(例えば、1つ以上の乗客端末130、運転者端末140)、及び記憶装置150を含んでもよい。
サーバ110は、処理エンジン112を含んでもよい。なお、図1に示されるオンデマンドサービスシステム100は、単なる例であり、限定することを意図するものではない。いくつかの実施形態では、オンデマンドサービスシステム100は、乗客端末130又は運転者端末140を含んでもよい。いくつかの実施形態では、オンデマンドサービスシステム100は、対象(例えば、乗客端末130に関連付けられた乗客、運転者端末140に関連付けられた運転者、車両、関心地点(POI)など)の位置を取得し、かつ対象の位置に基づいて対象がターゲットジオフェンスに属するか否かを決定してもよい。いくつかの実施形態では、オンデマンドサービスシステム100は、対象のターゲットジオフェンスに対応するマーケティングポリシー(例えば、価格設定ポリシー、優遇ポリシー)を決定してもよい。いくつかの実施形態では、輸送サービスについて、オンデマンドサービスシステム100は、異なるジオフェンスに対するセキュリティポリシーを決定してもよく、例えば、オンデマンドサービスシステム100は、車両が所定のターゲットジオフェンスを超えたときに乗客に警告してもよい。
いくつかの実施形態では、サーバ110は、単一のサーバ又はサーバグループであってもよい。サーバグループは、集中型又は分散型であってもよい(例えば、サーバ110は分散型システムであってもよい)。いくつかの実施形態では、サーバ110はローカル又はリモートであってもよい。例えば、サーバ110は、ネットワーク120を介して、1つ以上のユーザ端末(例えば、1つ以上の乗客端末130、運転者端末140)及び/又は記憶装置150に記憶された情報及び/又はデータにアクセスしてもよい。別の例として、サーバ110は、1つ以上のユーザ端末(例えば、1つ以上の乗客端末130、運転者端末140)及び/又は記憶装置150に直接的に接続されて、記憶された情報及び/又はデータにアクセスしてもよい。いくつかの実施形態では、サーバ110は、クラウドプラットフォーム上に実装してもよい。単に例として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散型クラウド、インタークラウド、マルチクラウドなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、サーバ110は、本開示の図3に示される1つ以上のコンポーネントを有するコンピューティング装置300上に実装してもよい。
いくつかの実施形態では、サーバ110は、処理エンジン112を含んでもよい。処理エンジン112は、1つ以上の対象に関連する情報及び/又はデータを処理してもよい。いくつかの実施形態では、処理エンジン112は、対象(例えば、乗客端末130に関連付けられた乗客、運転者端末140に関連付けられた運転者、車両、関心地点(POI)など)の位置を取得し、かつ対象の位置に基づいて対象がターゲットジオフェンスに属するか否かを決定してもよい。いくつかの実施形態では、処理エンジン112は、対象のターゲットジオフェンスに対応するマーケティングポリシー(例えば、価格設定ポリシー、優遇ポリシー)を決定してもよい。いくつかの実施形態では、輸送サービスについて、処理エンジン112は、異なるジオフェンスに対するセキュリティポリシーを決定してもよく、例えば、処理エンジン112は、車両が所定のターゲットジオフェンスを超えたときに乗客に警告してもよい。いくつかの実施形態では、処理エンジン112は、1つ以上の処理エンジン(例えば、シングルコア処理エンジン又はマルチコアプロセッサ)を含んでもよい。単に例として、処理エンジン112は、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、グラフィックス処理ユニット(GPU)、物理処理ユニット(PPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理装置(PLD)、コントローラ、マイクロコントローラユニット、縮小命令セットコンピュータ(RISC)、マイクロプロセッサなど、又はそれらの任意の組み合わせを含んでもよい。
ネットワーク120は、情報及び/又はデータの変換を容易にすることができる。いくつかの実施形態では、オンデマンドサービスシステム100における1つ以上のコンポーネント(例えば、サーバ110、1つ以上の乗客端末130、1つ以上の運転者端末140、又は記憶装置150)は、情報及び/又はデータをネットワーク120を介してオンデマンドサービスシステム100における他のコンポーネントに送信してもよい。例えば、サーバ110は、ネットワーク120を介して乗客端末130からサービス要求を取得してもよい。別の例として、サーバ110は、直接的に又はネットワーク120を介してストレージ150から1つ以上の対象に関連する情報を受信してもよい。さらなる例として、サーバ110は、ネットワーク120を介して乗客端末130及び/又は運転者端末140から1つ以上の対象に関連する情報を受信してもよい。いくつかの実施形態では、ネットワーク120は、任意のタイプの有線又は無線ネットワーク、又はそれらの任意の組み合わせであってもよい。単に例として、ネットワーク120は、ケーブルネットワーク、有線ネットワーク、光ファイバネットワーク、電気通信ネットワーク、イントラネット、インターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ローカルエリアネットワーク(WLAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、公衆電話交換網(PTSN)、ブルートゥース(登録商標)ネットワーク、ZigBeeネットワーク、近距離無線通信(NFC)ネットワークなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、ネットワーク120は、1つ以上のネットワークアクセスポイントを含んでもよい。例えば、ネットワーク120は、オンデマンドサービスシステム100の1つ以上のコンポーネントがネットワーク120に接続してデータ及び/又は情報を交換するための基地局及び/又はインターネット交換ポイント120−1、120−2、…などの有線又は無線ネットワークアクセスポイントを含んでもよい。
いくつかの実施形態では、乗客端末130は、モバイル装置130−1、タブレットコンピュータ130−2、ラップトップコンピュータ130−3、自動車両における組み込み装置130−4など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、モバイル装置130−1は、スマートホーム装置、ウェアラブル装置、スマートモバイル装置、仮想現実装置、拡張現実装置など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、スマートホーム装置は、スマート照明装置、インテリジェント電気機器の制御装置、スマートモニタリング装置、スマートテレビ、スマートビデオカメラ、インターフォンなど、又はそれらの組み合わせを含んでもよい。いくつかの実施形態では、ウェアラブル装置は、スマートブレスレット、スマートフットギア、スマートグラス、スマートヘルメット、スマートウォッチ、スマート衣類、スマートバックパック、スマートアクセサリなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、スマートモバイル装置は、スマートフォン、携帯情報端末(PDA)、ゲーム装置、ナビゲーション装置、販売時点管理(POS)装置など、又は任意の組み合わせを含んでもよい。いくつかの実施形態では、仮想現実装置及び/又は拡張現実装置は、仮想現実ヘルメット、仮想現実グラス、仮想現実パッチ、拡張現実ヘルメット、拡張現実グラス、拡張現実パッチなど、又はそれらの任意の組み合わせを含んでもよい。例えば、仮想現実装置及び/又は拡張現実装置は、Google Glass、Oculus Rift、Hololens、Gear VRなどを含んでもよい。いくつかの実施形態では、自動車両における組み込み装置130−4は、車載コンピュータ、車載テレビなどを含んでもよい。いくつかの実施形態では、乗客端末130は、サービス要求者及び/又は乗客端末130の位置を突き止めるための測位技術を有する装置であってもよい。
いくつかの実施形態では、運転者端末140は、乗客端末130と類似するか又は同じ装置であってもよい。いくつかの実施形態では、運転者端末140は、運転者及び/又は運転者端末140の位置を突き止めるための測位技術を有する装置であってもよい。いくつかの実施形態では、乗客端末130及び/又は運転者端末140は、他の測位装置と通信して、サービス要求者、乗客端末130、運転者、及び/又は運転者端末140の位置を決定してもよい。いくつかの実施形態では、乗客端末130及び/又は運転者端末140は、測位情報をサーバ110に送信してもよい。
記憶装置150は、データ及び/又は命令を記憶してもよい。例えば、データは、対象の測位情報、1つ以上のジオフェンス、地球を1つ以上のグリッドに分割するためのモデル、サービス順序など、又はそれらの組み合わせに関連してもよい。いくつかの実施形態では、記憶装置150は、1つ以上のユーザ端末(例えば、1つ以上の乗客端末130、運転者端末140)から取得されたデータを記憶してもよい。いくつかの実施形態では、記憶装置150は、サーバ110が実行又は使用して、本開示に記載される例示的な方法を実施することができるデータ及び/又は命令を記憶してもよい。いくつかの実施形態では、記憶装置150は、マスストレージ、リムーバブルストレージ、揮発性読み書きメモリ、読取り専用メモリ(ROM)など、又はそれらの任意の組み合わせを含んでもよい。例示的なマスストレージは、磁気ディスク、光ディスク、ソリッドステートドライブなどを含んでもよい。例示的なリムーバブルストレージは、フラッシュドライブ、フロッピー(登録商標)ディスク、光ディスク、メモリカード、Zipディスク、磁気テープなどを含んでもよい。例示的な揮発性読み書きメモリは、ランダムアクセスメモリ(RAM)を含んでもよい。例示的なRAMは、ダイナミックRAM(DRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、スタティックRAM(SRAM)、サイリスタRAM(T−RAM)、ゼロキャパシタRAM(Z−RAM)などを含んでもよい。例示的なROMは、マスクROM(MROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、コンパクトディスクROM(CD−ROM)、及びデジタルバーサタイルディスクROMなどを含んでもよい。いくつかの実施形態では、記憶装置150は、クラウドプラットフォーム上に実装してもよい。単に例として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散型クラウド、インタークラウド、マルチクラウドなど、又はそれらの任意の組み合わせを含んでもよい。
いくつかの実施形態では、記憶装置150は、オンデマンドサービスシステム100の1つ以上のコンポーネント(例えば、サーバ110、1つ以上のユーザ端末など)と通信するためにネットワーク120に接続してもよい。オンデマンドサービスシステム100の1つ以上のコンポーネントは、ネットワーク120を介して、記憶装置150に記憶されたデータ及び/又は命令にアクセスしてもよい。いくつかの実施形態では、記憶装置150は、オンデマンドサービスシステム100の1つ以上のコンポーネント(例えば、サーバ110、1つ以上のユーザ端末など)と直接的に接続又は通信してもよい。いくつかの実施形態では、記憶装置150は、サーバ110の一部であってもよい。
いくつかの実施形態では、オンデマンドサービスシステム100の1つ以上のコンポーネント(例えば、サーバ110、1つ以上のユーザ端末など)は、記憶装置150にアクセスする許可を有してもよい。いくつかの実施形態では、オンデマンドサービスシステム100の1つ以上のコンポーネントは、1つ以上の条件が満たされたときに、サービス要求者、運転者、及び/又は公衆に関する情報を読み取り及び/又は変更してもよい。例えば、サーバ110は、サービス後に1人以上のユーザの情報を読み取り及び/又は変更してもよい。なお、オンデマンドサービスシステム100は、対象がターゲットジオフェンスに属するか否かを決定し、マーケティングポリシーを決定し、及び/又はセキュリティポリシーを決定するための処理エンジン112の適用を例示するための例にすぎない。処理エンジン112は、1つ以上の他のシステム(例えば、地理情報システム(ArcGIS)、輸送管理システム、対象追跡システムなど)上に実装してもよい。処理エンジン112及びオンデマンドサービスシステム100についての上記説明は、例示のために提供されるものであり、本開示の範囲を限定することを意図するものではない。
図2は、本開示で開示される特定のシステムを実装するように構成された例示的なモバイル装置のブロック図である。いくつかの実施形態では、位置に関連する情報を表示し通信するように構成されたユーザ端末装置は、モバイル装置200であってもよい。モバイル装置200は、スマートフォン、タブレットコンピュータ、音楽プレーヤ、携帯ゲーム機、GPS受信機、ウェアラブル計算装置(例えば、グラス、ウォッチなど)などを含んでもよいが、これらに限定されない。モバイル装置200は、1つ以上の中央処理ユニット(CPU)240、1つ以上のグラフィックス処理ユニット(GPU)230、ディスプレイ220、メモリ260、通信ユニット210、記憶ユニット290、及び1つ以上の入出力(I/O)装置250を含んでもよい。さらに、モバイル装置200は、システムバス又はコントローラ(図2には図示せず)を含むがこれらに限定されない任意の他の適切なコンポーネントであってもよい。図2に示すように、モバイルオペレーティングシステム270(例えば、IOS、Android、Windows Phoneなど)及び1つ以上のアプリケーション280は、記憶ユニット290からメモリ260にロードされ、CPU240によって実装してもよい。アプリケーション280は、モバイル装置200においてユーザによって入力されたクエリ(例えば、位置の名称)に関連する情報を受信及び処理するように構成されるブラウザ又は他のモバイルアプリケーションを含んでもよい。乗客/運転者は、システムI/O装置250を介して1つ以上の検索結果に関連する情報を取得し、情報をオンデマンドサービスシステム100のサーバ110及び/又は他のモジュール又はユニット(例えば、ネットワーク120)に提供してもよい。
上記様々なモジュール、ユニット、及びそれらの機能を実装するために、コンピュータハードウェアプラットフォームは、1つ以上の要素(例えば、図1〜16に記載されたオンデマンドサービスシステム100のサーバ110及び/又は他の部分)のハードウェアプラットフォームとして使用してもよい。これらのハードウェア要素、オペレーティングシステム、及びプログラム言語は一般的なものであり、当業者は、これらの技術に精通し、かつ本開示に記載された技術に従ってオンデマンドサービスに必要な情報を提供できると想定することができる。ユーザインタフェースを有するコンピュータは、パーソナルコンピュータ(PC)、又は他のタイプのワークステーション又は端末装置として使用してもよい。適切にプログラムされた後、ユーザインタフェースを有するコンピュータは、サーバとして使用してもよい。当業者がこのタイプのコンピュータ装置のそのような構造、プログラム又は一般的な動作にも精通していると考えられる。したがって、図面についての追加の説明は記載しない。
図3は、本開示のいくつかの実施形態に係る、サーバ110、1つ以上のユーザ端末(例えば、1つ以上の乗客端末130、運転者端末140)が実装できるコンピューティング装置の例示的なハードウェア及びソフトウェアコンポーネントを示すブロック図である。コンピューティング装置300は、本開示で開示されるサーバ110、乗客端末130、及び運転者端末140の1つ以上の機能を実行するように構成してもよい。例えば、処理エンジン112は、コンピューティング装置300上に実装され、かつ本開示で開示される処理エンジン112の機能を実行するように構成してもよい。
コンピューティング装置300は、汎用コンピュータであっても、専用コンピュータであってもよく、両方とも本開示のためのオンデマンドサービスシステム100を実装するために使用してもよい。コンピューティング装置300は、本明細書に記載されたオンデマンドサービスシステム100の任意のコンポーネントを実装するために使用してもよい。例えば、処理エンジン112は、コンピューティング装置300上にそのハードウェア、ソフトウェアプログラム、ファームウェア又はそれらの組み合わせにより実装してもよい。便宜上、1つのみのこのようなコンピュータを示すが、本明細書に記載される検索サービスに関連するコンピュータ機能は、処理負荷を分散させるために、多くの類似するプラットフォーム上に分散して実装してもよい。
コンピューティング装置300は、例えば、データ通信を容易にするために、それに接続されたネットワークとの間に接続されたCOMポート350を含んでもよい。コンピューティング装置300はまた、プログラム命令を実行するための、1つ以上のプロセッサの形態のプロセッサ320を含んでもよい。例示的なコンピュータプラットフォームは、コンピュータによって処理及び/又は送信される様々なデータファイルのための内部通信バス310、ならびにディスク370、読取り専用メモリ(ROM)330又はランダムアクセスメモリ(RAM)340などの異なる形態のプログラムストレージ及びデータストレージを含んでもよい。例示的なコンピュータプラットフォームはまた、プロセッサ320によって実行される、ROM330、RAM340、及び/又は他のタイプの非一時的記憶媒体に記憶されたプログラム命令を含んでもよい。本開示の方法及び/又はプロセスは、プログラム命令として実装してもよい。コンピューティング装置300はまた、コンピュータとその内の他のコンポーネントとの間の入出力をサポートするI/Oコンポーネント360を含んでもよい。コンピューティング装置300はまた、ネットワーク通信を介してプログラミング及びデータを受信してもよい。
コンピューティング装置300はまた、ハードディスクと通信するハードディスクコントローラ、キーパッド/キーボードと通信するキーパッド/キーボードコントローラ、シリアル周辺機器と通信するシリアルインタフェースコントローラ、パラレル周辺機器と通信するパラレルインタフェースコントローラ、ディスプレイと通信するディスプレイコントローラなど、又はそれらの任意の組み合わせを含んでもよい。
単なる例として、コンピューティング装置300内の1つのみのCPU及び/又はプロセッサが記載されている。しかし、なお、本開示におけるコンピューティング装置300はまた、複数のCPU及び/又はプロセッサを含んでもよいため、本開示に記載されるような1つのCPU及び/又はプロセッサによって実行される動作及び/又は方法ステップも、複数のCPU及び/又はプロセッサによって共同で又は別々に実行してもよい。例えば、本開示において、コンピューティング装置300のCPU及び/又はプロセッサが動作Aと動作Bの両方を実行する場合、動作A及び動作Bはまた、コンピューティング装置300において2つの異なるCPU及び/又はプロセッサによって共同で又は別々に実行されてもよい(例えば、第1のプロセッサが動作Aを実行し、第2のプロセッサが動作Bを実行するか、又は第1及び第2のプロセッサが共同で動作A及びBを実行する)ことが理解できるであろう。
図4は、本開示のいくつかの実施形態に係る、例示的な処理エンジン112を示すブロック図である。いくつかの実施形態では、処理エンジン112は、コンピュータ可読ストレージ(例えば、記憶装置150、ユーザ端末(例えば、乗客端末130、運転者端末140など))と通信してもよく、かつコンピュータ可読記憶媒体に記憶された命令を実行してもよい。処理エンジン112は、取得モジュール402、グリッド情報決定モジュール404、インデックスモジュール406、結果決定モジュール408、第1のグリッド決定モジュール410、及び第2のグリッド決定モジュール412を含んでもよい。
取得モジュール402は、対象の地理的位置に対応する地理的座標を取得してもよい。対象は、生命を有するか又は有しない、地球上に存在する有機及び/又は無機物の任意の組成物であってもよい。例えば、対象は、オンデマンドサービスシステム100を使用するサービスプロバイダ(例えば、運転者)又はサービス要求者(例えば、乗客)であってもよい。別の例として、対象は、オンデマンドサービスシステム100を使用することによって輸送サービスを提供するためのツール(例えば、車両、共有自転車)であってもよい。さらに別の例として、対象は建物であってもよい。いくつかの実施形態では、対象の地理的位置に対応する地理的座標は、対象が位置する位置の経度及び緯度座標を含んでもよい。
いくつかの実施形態では、取得モジュール402は、オンデマンドサービスシステム100の1つ以上のコンポーネントから対象の地理的座標を取得してもよい。いくつかの実施形態では、対象は、測位機能を有する装置に関連付けてもよく、取得モジュール402は、装置から地理的座標を取得してもよい。例えば、取得モジュール402は、対象に関連付けられた携帯装置(例えば、乗客端末130、運転者端末140など)に取り付けられたGPS受信機を介して地理的座標を取得してもよい。取得モジュール402は、装置から対象の地理的座標を連続的に又は周期的に取得してもよい。
グリッド情報決定モジュール404は、地理的座標に対応するグリッドの情報を決定してもよい。いくつかの実施形態では、グリッド情報決定モジュール402は、離散グローバルグリッドシステム(DGGS)を使用することによって、地理的座標に対応するグリッドの情報を決定してもよい。グリッドは、DGGSにおける離散グローバルグリッドを指してもよい。グリッドの情報は、グリッドの一意の識別子、グリッドによって表される領域に関連する地理的データなどを含んでもよい。いくつかの実施形態では、グリッド情報決定モジュール404は、DGGSを構成し、DGGSをストレージ(例えば、記憶装置150、又はストレージ290)に記憶してもよい。DGGSに基づいて、グリッド情報決定モジュール404は、対象の地理的座標に対応するグリッドIDを決定してもよい。
インデックスモジュール406は、グリッドの情報に基づいて第1のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。より具体的には、インデックスモジュール406は、グリッドIDに基づいて第1のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。第1のグリッドデータベースは、第1のグリッドデータベース決定モジュール410が確立してもよい。第1のグリッドデータベースは、複数のグリッドに対応するデータを示す第1のデータ構造を含んでもよい。第1のグリッドデータベースでは、複数のグリッドは、ターゲットジオフェンスに関連付けられてもよい。
いくつかの実施形態では、インデックスモジュール406は、第1のグリッドデータベースがインデックス付けされたグリッドIDを含むか否かを決定してもよい。例えば、インデックスモジュール406は、インデックス付けされたグリッドが第1のグリッドデータベースにないことを示す第1の否定的な結果を生成してもよい。別の例として、インデックスモジュール406は、インデックス付けされたグリッドが第1のグリッドデータベースにあることを示す第1の肯定的な結果を生成してもよい。インデックス付けされたグリッドが第1のグリッドデータベースにないという第1の否定的な結果に応じて、インデックスモジュール406は、第1の否定的な結果を結果決定モジュール408に送信してもよい。結果決定モジュール408は、対象がターゲットジオフェンスに属さないと決定してもよい。インデックス付けされたグリッドが第1のグリッドデータベースにあるという第1の肯定的な結果に応じて、インデックスモジュール406は、グリッドの情報に基づいて第2のグリッドデータベースにおいてグリッドをさらにインデックス付けしてもよい。第2のグリッドデータベースは、第2のグリッドデータベース決定モジュール412が確立してもよい。第2のグリッドデータベースは、ターゲットジオフェンスを分割する複数のグリッドのうちの1つ以上の境界グリッドに対応するデータを示す第2のデータ構造を含んでもよい。第2のグリッドデータベースは、境界グリッドIDのような、境界グリッドに関連する情報、ローカルジオフェンスIDなどを記録する。第2のグリッドデータベースの確立についてのより詳細な説明は、本開示の他の箇所(例えば、図10及びその説明)に見られる。
インデックスモジュール406は、グリッドIDに基づいて第2のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。インデックスモジュール406は、第2のグリッドデータベースがインデックス付けされたグリッドIDを含むか否かを決定してもよい。例えば、インデックスモジュール406は、インデックス付けされたグリッドが第2のグリッドデータベースにないことを示す第2の否定的な結果を生成してもよい。別の例として、インデックスモジュール406は、インデックス付けされたグリッドが第2のグリッドデータベースにあることを示す第2の肯定的な結果を生成してもよい。インデックスモジュール406は、第2の否定的な結果及び/又は第2の肯定的な結果を結果決定モジュール408に送信してもよい。インデックス付けされたグリッドが第2のグリッドデータベースにないという第2の否定的な結果に応じて、結果決定モジュール408は、対象がターゲットジオフェンスに属すると決定してもよい。インデックス付けされたグリッドが第2のグリッドデータベースにあるという第2の肯定的な結果に応じて、結果決定モジュール408は、対象とローカルジオフェンスとの関係に基づいて対象がターゲットジオフェンスに属するか否かを決定してもよい。ローカルジオフェンスは、境界グリッドがターゲットジオフェンスと重なる領域であってもよい。
いくつかの実施形態では、結果決定モジュール408は、レイキャスティングアルゴリズムに基づいて対象とローカルジオフェンスとの関係を決定してもよい。例えば、結果決定モジュール408は、対象を端点とするレイを決定してもよい。結果決定モジュール408は、レイがローカルジオフェンスの奇数の境界を横切る場合に、対象がローカルジオフェンスに属すると決定してもよい。結果決定モジュール408は、レイがローカルジオフェンスの偶数の境界を横切る場合に、対象がローカルジオフェンスに属さないと決定してもよい。
いくつかの実施形態では、結果決定モジュール408は、回転数アルゴリズムに基づいて対象とローカルジオフェンスとの関係を決定してもよい。結果決定モジュール408は、対象及びローカルジオフェンスに関連付けられた回転数を決定してもよい。回転数がゼロに等しくない(又は非ゼロである)場合に、結果決定モジュール408は、対象がローカルジオフェンスに属すると決定してもよい。回転数がゼロに等しい場合に、結果決定モジュール408は、対象がローカルジオフェンスに属さないと決定してもよい。
第1のグリッドデータベース決定モジュール410は、第1のグリッドデータベースを確立してもよい。いくつかの実施形態では、図5に示すように、第1のグリッドデータベース決定モジュール410は、ターゲットジオフェンス取得ユニット502、グリッド取得ユニット504、第1の符号化ユニット506、及び第1の書き込みユニット508をさらに含んでもよい。ターゲットジオフェンス取得ユニット502は、ターゲットジオフェンスを取得してもよい。ターゲットジオフェンスは、都市、地区、郡、コミュニティなどのような関心領域(ROI)を示してもよい。グリッド取得ユニット504は、ターゲットジオフェンスに対応する複数のグリッドを取得してもよい。例えば、ターゲットジオフェンスは、DGGSによって複数のグリッドに分割されてもよい。グリッド取得ユニット504は、DGGSから複数のグリッドを取得してもよい。複数のグリッドは、1つ以上の内部グリッド及び1つ以上の境界グリッドを含んでもよい。例えば、図9に示す境界グリッド904及び内部グリッド906のように、内部グリッドは完全にターゲットジオフェンス内にあるのに対し、境界グリッドは完全ではなく部分的にターゲットジオフェンス内にある。第1の符号化ユニット506は、複数のグリッドに対応するデータを第1のデータ構造に符号化してもよい。第1のデータ構造は、複数のグリッドの識別子、グリッドの複数の頂点の座標など、又はそれらの任意の組み合わせを含んでもよい。第1のデータ構造は、B−ツリー構造、B+ツリー構造、ハッシュテーブル、リンクリストなどのような様々なものであってもよい。第1の書き込みユニット508は、第1のグリッドデータベースを確立するために、符号化されたデータを少なくとも1つの非一時的記憶媒体に書き込んでもよい。例えば、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100の記憶装置150及び/又はストレージ290を含んでもよい。別の例として、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100とは別個の外部記憶装置を含んでもよい。第1のグリッドデータベースの確立についてのより詳細な説明は、本開示の他の箇所(例えば、図8及びその説明)に見られる。
第2のグリッドデータベース決定モジュール412は、第2のグリッドデータベースを確立してもよい。いくつかの実施形態では、図6に示されるように、第2のグリッドデータベース決定モジュール412は、境界グリッド取得ユニット602、ローカルジオフェンス決定ユニット604、第2の符号化ユニット606、及び第2の書き込みユニット608をさらに含んでもよい。境界グリッド取得ユニット602は、ターゲットジオフェンスに対応する複数のグリッドから1つ以上の境界グリッドを取得してもよい。例えば、グリッド取得ユニット504は、ターゲットジオフェンスに対応する複数のグリッドを取得してもよい。複数のグリッドは、1つ以上の内部グリッド及び1つ以上の境界グリッドを含んでもよい。境界グリッド取得ユニット602は、さらにグリッド取得ユニット504から1つ以上の境界グリッドを取得してもよい。ローカルジオフェンス決定ユニット604は、1つ以上の境界グリッド及びターゲットジオフェンスに基づいて1つ以上のローカルジオフェンスを決定してもよい。例えば、1つ以上の境界グリッドのそれぞれについて、ローカルジオフェンス決定ユニット604は、境界グリッドに対応する第1のリンクリスト、例えば境界グリッド1202(図12に示す)に対応する第1のリンクリスト1302(図13に示す)を決定してもよい。ローカルジオフェンス決定ユニット604は、ターゲットジオフェンス1204(図12に示す)に対応する第2のリンクリスト1304(図13に示す)を決定してもよい。第1のリンクリスト又は第2のリンクリストのいずれかは、複数のノードを含んでもよい。ノードは、少なくとも1つのデータ要素、例えば、境界グリッド又はターゲットジオフェンスの、番号付けされた頂点を含んでもよい。いくつかの実施形態では、第1のリンクリスト及び第2のリンクリストは、循環二重リンクリストであってもよい。ローカルジオフェンス決定ユニット604は、境界グリッドとターゲットジオフェンスとの1つ以上の交点を決定してもよい。ローカルジオフェンス決定ユニット604は、1つ以上の交点に基づいて第1のリンクリスト及び第2のリンクリストを更新してもよい。ローカルジオフェンス決定ユニット604は、更新された第1のリンクリスト及び更新された第2のリンクリストに基づいて1つ以上のローカルジオフェンスを決定してもよい。1つ以上のローカルジオフェンスの決定についてのより詳細な説明は、本開示の他の箇所(例えば、図11及びその説明)に見られる。
第2の符号化ユニット606は、1つ以上の境界グリッド及び1つ以上のローカルジオフェンスに対応するデータを第2のデータ構造に符号化してもよい。第2のデータ構造は、1つ以上の境界グリッドの識別子、1つ以上のローカルジオフェンスの識別子、1つ以上の境界グリッドのそれぞれの頂点の座標、1つ以上のローカルジオフェンスのそれぞれの頂点の座標など、又はそれらの任意の組み合わせを含んでもよい。第2のデータ構造は、B−ツリー構造、B+ツリー構造、ハッシュテーブル、リンクリストなどのような様々なものであってもよい。
第2の書き込みユニット608は、第2のグリッドデータベースを確立するために、符号化されたデータを少なくとも1つの非一時的記憶媒体に書き込んでもよい。例えば、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100の記憶装置150及び/又はストレージ290を含んでもよい。別の例として、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100とは別個の外部記憶装置を含んでもよい。
なお、処理エンジン112についての上記説明は、例示の目的のために提供されるものであり、本開示の範囲を限定することを意図するものではない。当業者であれば、本開示の教示下で複数の変形及び修正を行うことができる。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。いくつかの実施形態では、処理エンジン112は、1つ以上の他のモジュールを含んでもよい。例えば、処理エンジン112は、処理エンジン112内のモジュールによって生成されたデータを記憶するための記憶モジュールを含んでもよい。いくつかの実施形態では、モジュールのうちのいずれか2つは単一のモジュールとして組み合わせられてもよく、モジュールのうちのいずれか1つは2つ以上のユニットに分割されてもよい。
図7は、本開示のいくつかの実施形態に係る、対象がターゲットジオフェンスに属するか否かを決定するための例示的なプロセスのフローチャートである。いくつかの実施形態では、対象がターゲットジオフェンスに属するか否かを決定するためのプロセス700は、図1に示されるようなオンデマンドサービスシステム100において実装してもよい。例えば、プロセス700は、ユーザ端末(例えば、乗客端末130、運転者端末140)及び/又はサーバ110において実装してもよい。プロセス700はまた、記憶装置150に記憶され、かつ処理エンジン112によって呼び出され及び/又は実行される1つ以上の命令として実装されてもよい。以下に提示される図示のプロセスの動作は、例示を意図するものである。いくつかの実施形態では、プロセス700は、説明されていない1つ以上の追加の動作を用いて、及び/又は論じられている動作のうちの1つ以上を除いて、達成することができる。さらに、図7に示される以下で説明されるプロセス700の動作の順序は、限定を意図するものではない。
702において、プロセッサ(例えば、処理エンジン112の取得モジュール402)は、対象の地理的位置に対応する地理的座標を取得してもよい。対象は、生命を有するか又は有しない、地球上に存在する有機及び/又は無機物の任意の組成物であってもよい。例えば、対象は、オンデマンドサービスシステム100を使用するサービスプロバイダ(例えば、運転者)又はサービス要求者(例えば、乗客)であってもよい。別の例として、対象は、オンデマンドサービスシステム100を使用することによって輸送サービスを提供するためのツール(例えば、車両、共有自転車)であってもよい。さらに別の例として、対象は建物であってもよい。いくつかの実施形態では、対象の地理的位置に対応する地理的座標は、対象が位置する位置の経度及び緯度座標を含んでもよい。
いくつかの実施形態では、プロセッサは、オンデマンドサービスシステム100の1つ以上のコンポーネントから対象の地理的座標を取得してもよい。いくつかの実施形態では、対象は、測位機能を有する装置に関連付けてもよく、プロセッサは、装置から地理的座標を取得してもよい。例えば、取得モジュール402は、対象に関連付けられた携帯装置(例えば、乗客端末130、運転者端末140など)に取り付けられたGPS受信機を介して地理的座標を取得してもよい。プロセッサは、装置から対象の地理的座標を連続的に又は周期的に取得してもよい。追加又は代替として、測位機能を有する装置は、対象の地理的座標を、ネットワーク120を介して連続的に又は周期的にストレージ(例えば、記憶装置150、ストレージ290)に送信してもよい。プロセッサは、ストレージにアクセスし、かつ対象の1つ以上の地理的座標を異なる時点で検索してもよい。
704において、プロセッサ(例えば、処理エンジン112のグリッド情報決定モジュール404)は、地理的座標に対応するグリッドの情報を決定してもよい。
いくつかの実施形態では、プロセッサは、離散グローバルグリッドシステム(DGGS)を使用することによって、地理的座標に対応するグリッドの情報を決定してもよい。いくつかの実施形態では、グリッドは、DGGSにおける離散グローバルグリッドを指してもよい。グリッドの情報は、グリッドの一意の識別子、グリッドによって表される領域に関連する地理的データなどを含んでもよい。DGGSは、地球の表面をモデリングするために使用してもよい。当業者にとって、DGGSは一連の離散グローバルグリッドを含む。各離散グローバルグリッドは、地球の表面のパーティション/領域を表してもよい。離散グローバルグリッドは、地理空間データ構造を構築するための幾何学的基礎として使用してもよい。DGGSでは、離散グローバルグリッドに一意の識別子(ID)を割り当ててもよい。離散グローバルグリッドIDは、グリッドによって表される領域に関連する地理的データを示してもよい。
いくつかの実施形態では、プロセッサは、DGGSを構築し、かつDGGSをストレージ(例えば、記憶装置150、又はストレージ290)に記憶してもよい。例えば、プロセッサは、地球を多面体としてモデリングしてもよい。地球を表す多面体は、四面体、立方体、八面体、二十面体、十二面体などのような任意の形状を有してもよい。いくつかの実施形態では、地球を表す多面体は、実質的に同じサイズ及び形状を有する8つの面を有する八面体であってよい。八面体は、6つの頂点を有する。地理的座標系における6つの頂点の経度及び緯度座標は、(0,90)、(0,−90)、(0,0)、(90,0)、(−90,0)、及び(180,0)であってよい。八面体は、地球の表面の8つの等しい部分に対応する8つの面を有する。8つの面のそれぞれは、地球の表面の8つの等しい部分のうち1つを表してもよい。いくつかの実施形態では、プロセッサは、多面体の各面を複数のグリッド(又はセル)に分割してもよい。各グリッドは、六角形、菱形、正方形、長方形、三角形などのような形状を有する。いくつかの実施形態では、複数のグリッドは、同じサイズ及び形状で構成されてよい。いくつかの実施形態では、複数のグリッドは、異なるサイズ及び形状で構成されてもよい。好ましい実施形態では、複数のグリッドのうち、各グリッドは同じ正六角形の形状を有してもよい。
いくつかの実施形態では、プロセッサは、複数のグリッドのためのリファインメント動作を実行してもよい。リファインメント動作は、比較的高い解像度を有する複数のグリッドを提供するために、多面体(例えば、八面体)の1つ以上の面をリファインするために使用してもよい。プロセッサは、複数のグリッドのそれぞれに一意の識別子を割り当ててもよい。DGGSは、グローバルに一意のグリッド/セルインデックスを含んでもよい。DGGSに基づいて、プロセッサは、対象の地理的座標に対応するグリッドIDを決定してもよい。
いくつかの実施形態では、プロセッサは、地理的座標に基づいて多面体の対応する面上の対象の地理的位置の第1の投影座標を決定してもよい。例えば、プロセッサは、地理的座標を球面座標に変換してもよい。プロセッサは、球面座標をデカルト座標に変換してもよい。プロセッサは、デカルト座標を第1の投影座標に変換してもよい。いくつかの実施形態では、プロセッサは、対象の地理的位置の第1の投影座標に最も近い対象中心点を決定してもよい。プロセッサは、多面体の対応する面上の対象中心点の投影座標に基づいて、対象に関連付けられたグリッドIDを決定してもよい。グリッドIDは、OL2F0i1234j5678のような文字列として形成してもよい。グリッドIDは、DGGSにおける対象に関連する情報を示してもよい。グリッドID「OL2F0i1234j5678」を例とすると、「O」は多面体が八面体であることを指し、「L2」はリファインメントレベルが2であることを指し、「F0」は八面体の対応する面の識別子が0であることを指し、「i1234j5678」は対象中心点の投影座標が(12.34,56.78)であることを指す。DGGSの構築及び/又はDGGSにおける対象に関連するグリッドIDの決定に関する実施形態についてのより詳細な説明は、例えば、その内容が参照により本明細書に組み込まれる国際出願PCT/CN2018/090034に見られる。
いくつかの実施形態では、プロセッサは、PYXIS DIGITAL EARTH DGGSのような商業DGGSを使用することによってグリッドIDを決定してもよい。例えば、グリッド情報決定モジュール404は、オンデマンドサービスシステム100及びDGGSに接続されたアプリケーションプログラムインタフェース(API)によってDGGSを呼び出してもよい。地理的座標は、DGGSに入力され、グリッド情報決定モジュール404は、地理的座標に対応するグリッドIDを取得してもよい。
706において、プロセッサ(例えば、処理エンジン112のインデックスモジュール406)は、グリッドの情報に基づいて第1のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。より具体的には、プロセッサは、グリッドIDに基づいて第1のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。プロセッサは、第1のグリッドデータベースがインデックス付けされたグリッドIDを含むか否かを決定してもよい。例えば、インデックスモジュール406は、インデックス付けされたグリッドが第1のグリッドデータベースにないことを示す第1の否定的な結果を生成してもよい。別の例として、インデックスモジュール406は、インデックス付けされたグリッドが第1のグリッドデータベースにあることを示す第1の肯定的な結果を生成してもよい。
いくつかの実施形態では、第1のグリッドデータベースは、オンデマンドサービスシステム100のストレージ(例えば、記憶装置150、又はストレージ290)に記憶してもよい。いくつかの実施形態では、第1のグリッドデータベースは、オンデマンドサービスシステム100とは別個の外部ストレージに記憶してもよい。インデックスモジュール406は、第1のグリッドデータベースにアクセスして、グリッドをインデックス付けしてもよい。
第1のグリッドデータベースは、複数のグリッドに対応するデータを示す第1のデータ構造を含んでもよい。第1のグリッドデータベースでは、複数のグリッドは、ターゲットジオフェンスに関連付けてもよい。当業者にとって、ジオフェンスは、実世界の地理的エリアについての仮想境界であってもよい。ジオフェンスは、特定の地理的エリアに対応してもよい。ジオフェンスは、動的に生成してもよい。例えば、ジオフェンスは、点位置を中心とする半径内にある領域である。別の例として、ジオフェンスは、(スクールゾーン又は近隣境界などの)予め定義された境界の集合である。いくつかの実施形態では、ターゲットジオフェンスは、都市、地区、郡、コミュニティなどのような関心領域(ROI)を示してもよい。DGGSでは、ターゲットジオフェンスは、複数の正六角形グリッドに分割してもよい。複数の正六角形グリッドは、1つ以上の内部グリッド及び1つ以上の境界グリッドを含んでもよい。内部グリッドは完全にターゲットジオフェンス内にあるのに対し、境界グリッドは完全ではなく部分的にターゲットジオフェンス内にある。図9に示すように、多角形領域をターゲットジオフェンス902とすると、ターゲットジオフェンス902は、1つの内部グリッド906及び複数の境界グリッド904を含む複数のグリッドに分割してもよい。第1のグリッドデータベースの確立についてのより詳細な説明は、本開示の他の箇所(例えば、図8及びその説明)に見られる。
インデックス付けされたグリッドが第1のグリッドデータベースにないという第1の否定的な結果に応じて、プロセッサは、動作712に進んでもよい。プロセッサ(例えば、処理エンジン112の結果決定モジュール408)は、対象がターゲットジオフェンスに属さないと決定してもよい。
インデックス付けされたグリッドが第1のグリッドデータベースにあるという第1の肯定的な結果に応じて、プロセッサは、動作708に進んでもよい。708において、プロセッサ(例えば、処理エンジン112のインデックスモジュール406)は、グリッドの情報に基づいて第2のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。より具体的には、プロセッサは、グリッドIDに基づいて第2のグリッドデータベースにおいてグリッドをインデックス付けしてもよい。プロセッサは、第2のグリッドデータベースがインデックス付けされたグリッドIDを含むか否かを決定してもよい。例えば、インデックスモジュール406は、インデックス付けされたグリッドが第2のグリッドデータベースにないことを示す第2の否定的な結果を生成してもよい。別の例として、インデックスモジュール406は、インデックス付けされたグリッドが第2のグリッドデータベースにあることを示す第2の肯定的な結果を生成してもよい。
いくつかの実施形態では、第2のグリッドデータベースは、オンデマンドサービスシステム100のストレージ(例えば、記憶装置150、又はストレージ290)に記憶してもよい。いくつかの実施形態では、第2のグリッドデータベースは、オンデマンドサービスシステム100とは別個の外部ストレージに記憶してもよい。インデックスモジュール406は、第2のグリッドデータベースにアクセスして、グリッドをインデックス付けしてもよい。
第2のグリッドデータベースは、ターゲットジオフェンスを分割する複数のグリッドのうちの1つ以上の境界グリッドに対応するデータを示す第2のデータ構造を含んでもよい。図9に示すように、ターゲットジオフェンス902は、1つの内部グリッド906及び複数の境界グリッド904を含む複数のグリッドに分割してもよい。第2のグリッドデータベースは、境界グリッドIDのような、境界グリッドに関連する情報、ローカルジオフェンスIDなどを記録する。第2のグリッドデータベースの確立についてのより詳細な説明は、本開示の他の箇所(例えば、図10及びその説明)に見られる。
インデックス付けされたグリッドが第2のグリッドデータベースにないという第2の否定的な結果に応じて、プロセッサは、動作714に進んでもよい。プロセッサ(例えば、処理エンジン112の結果決定モジュール408)は、対象がターゲットジオフェンスに属すると決定してもよい。言い換えると、対象は、ターゲットジオフェンスの1つの内部グリッドに対応する領域にあるとしてもよい。
インデックス付けされたグリッドが第2のグリッドデータベースにあるという第2の肯定的な結果に応じて、プロセッサは、動作710に進んでもよい。710において、プロセッサ(例えば、処理エンジン112の結果決定モジュール408)は、対象とローカルジオフェンスとの関係に基づいて対象がターゲットジオフェンスに属するか否かを決定してもよい。ローカルジオフェンスは、境界グリッドがターゲットジオフェンスと重なる領域を指してもよい。例えば、図12に示すように、三角形ABCを境界グリッド1202とし、正方形1234をターゲットジオフェンス1204とすると、多角形領域NABMは、境界グリッド1202がターゲットジオフェンス1204と重なるローカルジオフェンスとして指定してもよい。別の例として、図14に示すように、境界グリッド1402がターゲットジオフェンス1404と重なって、ローカルジオフェンス1406及び1408(すなわち、図14のcに示される暗いエリア)を形成する。
対象は、特定の境界グリッド内、例えば、第2のグリッドデータベースにおける対象に対応するグリッドIDにあるが、対象は必ずしも該特定の境界グリッドを含むターゲットジオフェンスに属するとは限らない。境界グリッドの少なくとも一部分はターゲットジオフェンス内にあるのに対し、境界グリッドの他の部分はターゲットジオフェンス内にないことが理解できるであろう。ターゲットジオフェンス内にある境界グリッドの少なくとも一部分は、少なくとも1つのローカルジオフェンスとして指定される。対象がローカルジオフェンス内にある場合、対象はターゲットジオフェンスに属するとしてもよい。そうではなく、対象がローカルジオフェンス内にない場合、対象はターゲットジオフェンスに属さないとしてもよい。したがって、対象がターゲットジオフェンスに属するか否かを決定するために、プロセッサは、対象とローカルジオフェンスとの関係を決定する必要がある場合がある。
いくつかの実施形態では、第2のグリッドデータベースは、ローカルジオフェンスID、ローカルジオフェンスの頂点の座標などのような、1つ以上のローカルジオフェンスに関連する情報を含んでもよい。プロセッサは、第2のグリッドデータベースを検索することにより、対象に関連付けられた境界グリッドに含まれる1つ以上のローカルジオフェンスを決定してもよい。プロセッサは、対象と、1つ以上のローカルジオフェンスのそれぞれとの関係を決定してもよい。例えば、対象が境界グリッドA内にあると仮定すると、結果決定モジュール408は、第2のグリッドデータベースに基づいて、境界グリッドAが2つのローカルジオフェンスL1、L2を含むと決定してもよい。2つのローカルジオフェンスのそれぞれについて、プロセッサは、対象とローカルジオフェンスとの関係を決定してもよい。
いくつかの実施形態では、プロセッサは、レイキャスティングアルゴリズムに基づいて対象とローカルジオフェンスとの関係を決定してもよい。より具体的には、対象を所与の点に抽象化してもよい。結果決定モジュール408は、対象を端点とするレイを決定してもよい。レイの方向は、多角形の形状を有するローカルジオフェンスの境界を指し示してもよい。例えば、レイの方向は、多角形ローカルジオフェンスの境界(例えば、レイの端点から最も近い境界)に垂直であってもよい。いくつかの実施形態では、プロセッサは、レイがローカルジオフェンスの3、5、7などのような奇数の境界を横切る場合に、対象がローカルジオフェンスに属すると決定してもよい。プロセッサは、レイがローカルジオフェンスの2、4、6などのような偶数の境界を横切る場合に、対象がローカルジオフェンスに属さないと決定してもよい。
単なる例として、図15は、対象がローカルジオフェンスに属さないという関係を示す概略図であり、図16は、対象がローカルジオフェンスに属するという関係を示す概略図である。図15に示すように、多角形領域1502はローカルジオフェンスを表し、点1504は対象を表し、レイ1506は点1504を端点とするレイである。対象は、ローカルジオフェンスの領域の外側にある。この場合、レイ1506は、ローカルジオフェンス1502の4つの境界を横切り、それに応じて、交点1508のような、レイ1506と境界との4つの交点が生成される。対象を端点とするレイがローカルジオフェンスの偶数の境界を横切る場合に対象がローカルジオフェンスに属さないことが示される。図16に示すように、多角形領域1602はローカルジオフェンスを表し、点1604は対象を表し、レイ1606は点1604を端点とするレイである。対象は、ローカルジオフェンスの領域内にある。この場合、レイ1606は、ローカルジオフェンス1602の5つの境界を横切り、それに応じて、交点1608のような、レイ1606と境界との5つの交点が生成される。対象を端点とするレイがローカルジオフェンスの奇数の境界を横切る場合に対象がローカルジオフェンスに属することが示される。いくつかの実施形態では、対象を端点とするレイがローカルジオフェンスの1つの境界を横切る場合、対象はローカルジオフェンスの境界にあり、すなわち、対象がローカルジオフェンスに属する場合がある。
いくつかの実施形態では、プロセッサは、回転数アルゴリズムに基づいて対象とローカルジオフェンスとの関係を決定してもよい。多角形では、回転数とは、多角形境界が所与の点の周りを周った回数を指す。回転数は、多角形境界が所与の点を周る方向に依存する。例えば、方向が反時計回りである場合、回転数は正である。方向が時計回りである場合、回転数は負である。回転数アルゴリズムに基づいて、プロセッサは、対象及びローカルジオフェンスに関連付けられた回転数を決定してもよい。例えば、対象は所与の点に抽象化され、ローカルジオフェンスは多角形であり、結果決定モジュール408は、連続する多角形の頂点と所与の点とで形成される全ての角度を決定し、多角形の各境界(又はエッジ)によって定められる全ての角度を合計することによって回転数を決定してもよい。回転数がゼロに等しくない(又は非ゼロである)場合に、プロセッサは、対象がローカルジオフェンスに属すると決定してもよい。回転数がゼロに等しい場合に、プロセッサは、対象がローカルジオフェンスに属さないと決定してもよい。
いくつかの実施形態では、対象がターゲットジオフェンスに属するという決定に応じて、プロセッサは、対象(例えば、サービス要求者又はサービスプロバイダ)のためにマーケティングポリシーをカスタマイズしてもよい。例えば、プロセッサはサービスプロバイダ及び/又はサービス要求者がDGGSによって予め定義されたターゲットジオフェンス内にいることが監視され、例えば予め定義されたターゲットジオフェンスは北京市の海淀区に対応する場合、プロセッサは、サービス要求者端末及び/又はサービスプロバイダ端末上に広告情報を表示するための命令を送信してもよい。広告情報は、メッセージ、画像、ビデオ、又はオーディオなどの様々な形態で表示してもよい。いくつかの実施形態では、広告情報は、オンデマンドサービスに関連付けられた価格設定ポリシー及び/又は優遇ポリシーを含んでもよい。例えば、ターゲットジオフェンスに対応する領域に大量のサービス要求がある場合、オンデマンドサービスのためのサービス賞がより高く調整し、より多くのサービスプロバイダにオンデマンドサービスを提供するように促すことができる。プロセッサは、サービス賞を含む広告情報をターゲットジオフェンス内のサービスプロバイダに送信してもよい。別の例として、サードパーティビジネスは特定の領域内のサービス要求者又はサービスプロバイダに対象広告を送信することを望んでいると仮定すると、特定の領域をターゲットジオフェンスとして予め定義してもよく、プロセッサは、ターゲットジオフェンスの領域内のサービス要求者又はサービスプロバイダを監視してもよい。ターゲットジオフェンスの領域内にサービス要求者又はサービスプロバイダが出現すると、プロセッサは、サードパーティビジネスの広告情報をサービス要求者又はサービスプロバイダに送信してもよい。
いくつかの実施形態では、対象がターゲットジオフェンスに属するという決定に応じて、プロセッサは、対象(例えば、サービス要求者又はサービスプロバイダ)のためにセキュリティポリシーをカスタマイズしてもよい。自動車ヘイリングサービスなどの輸送サービスの場合、乗車位置及び降車位置がオンデマンドサービスシステム100によって取得してもよく、降車位置を含むターゲットジオフェンスを予め定義してもよい。到着予定時刻(ETA)の後に、プロセッサはサービスプロバイダがターゲットジオフェンスの領域内にいないか又はターゲットジオフェンスの領域から離れることを監視する場合、プロセッサは、サービス要求者にセキュリティ警告を送信してもよい。
いくつかの実施形態では、プロセッサは、プロセス700に関連してオンデマンドサービスプラットフォームのサービス容量を決定してもよい。単なる例として、プロセッサは、複数のサービスプロバイダの地理的座標を取得してもよい。プロセッサは、DGGSを使用することにより、地理的座標に対応するグリッドの情報(例えば、グリッドID)を決定してもよい。グリッドIDのそれぞれについて、プロセッサは、第1のグリッドデータベースにおいてグリッドIDをインデックス付けしてもよい。第1のデータベースは、ターゲットジオフェンスを分割する全てのグリッドを記録してもよい。プロセッサは、第1のグリッドデータベースに含まれる第1のグリッドIDを識別してもよい。プロセッサは、第2のグリッドデータベースにおいて各第1のグリッドIDをインデックス付けしてもよい。第2のグリッドデータベースは、ターゲットジオフェンスを分割する全てのグリッドの1つ以上の境界グリッドを記録してもよい。プロセッサは、第2のグリッドデータベースに含まれない第2のグリッドIDを決定してもよい。第2のグリッドIDに対応するサービスプロバイダの数を計数してもよい。プロセッサは、第2のグリッドデータベースに含まれる第3のグリッドIDを決定してもよい。第3のグリッドIDのそれぞれに関連付けられた少なくとも1つのローカルジオフェンスに対して、プロセッサは、少なくとも1つのローカルジオフェンスに属するサービスプロバイダを決定してもよい。プロセッサは、第2のグリッドIDに対応するサービスプロバイダの数と少なくとも1つのローカルジオフェンスに属するサービスプロバイダの数に基づいてターゲットジオフェンスの領域内のサービスプロバイダの総数を決定してもよい。プロセッサは、決定された総数に基づいて、ターゲットジオフェンスの領域におけるサービス容量をさらに決定してもよい。いくつかの実施形態では、プロセッサは、サービス容量を地図上に表示してもよい。いくつかの実施形態では、プロセッサは、サービス容量に基づいてスケジューリングポリシーを決定してもよい。例えば、サービス容量がターゲットジオフェンスの領域における閾値よりも低い場合、プロセッサは、ターゲットジオフェンスの領域へより多くのサービスプロバイダをスケジュールしてもよい。
なお、上記説明は、例示の目的のために提供されるものに過ぎず、本開示の範囲を限定することを意図するものではない。当業者であれば、本開示の教示下で複数の変形及び修正を行うことができる。例えば、第1のグリッドデータベースと第2のグリッドデータベースは、それぞれ異なるストレージに記憶してもよい。別の例として、第1のグリッドデータベースと第2のグリッドデータベースは、同じストレージ(例えば、記憶装置150又はストレージ290)に記憶されてもよい。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。
図8は、本開示のいくつかの実施形態に係る、第1のグリッドデータベースを確立するための例示的なプロセスのフローチャートである。いくつかの実施形態では、第1のグリッドデータベースを決定するためのプロセス800は、図1に示されるようなオンデマンドサービスシステム100において実装してもよい。例えば、プロセス800は、ユーザ端末(例えば、乗客端末130、運転者端末140)及び/又はサーバ110において実装してもよい。プロセス800はまた、記憶装置150に記憶され、かつ処理エンジン112によって呼び出され及び/又は実行される1つ以上の命令として実装されてもよい。以下に提示される図示のプロセスの動作は、例示を意図するものである。いくつかの実施形態では、プロセス800は、説明されていない1つ以上の追加の動作を用いて、及び/又は論じられている動作のうちの1つ以上を除いて、達成してもよい。さらに、図8に示され、以下で説明されるプロセス800の動作の順序は、限定を意図するものではない。
802において、プロセッサ(例えば、第1のグリッド決定モジュール410のターゲットジオフェンス取得ユニット502)は、ターゲットジオフェンスを取得してもよい。ターゲットジオフェンスは、都市、地区、郡、コミュニティなどのような関心領域(ROI)を示してもよい。
いくつかの実施形態では、ターゲットジオフェンスは、オンデマンドサービスシステム100により構築してもよい。例えば、オンデマンドサービスシステム100のユーザは、特定の地理的エリア(例えば、北京市の海淀区)をROIとして指定し、かつROIに対応するターゲットジオフェンスを構築してもよい。一般的に、地理的エリアは多角形などの不規則な形状を有するため、ターゲットジオフェンスはそれに応じて不規則な形状を有してもよい。なお、ターゲットジオフェンスの形状は、対応するROIの形状に応じて、不規則な形状又は規則的な形状などの様々なものであってもよい。
804において、プロセッサ(例えば、第1のグリッド決定モジュール410のグリッド取得ユニット504)は、ターゲットジオフェンスに対応する複数のグリッドを取得してもよい。例えば、グリッド取得ユニット504は、オンデマンドサービスプラットフォーム上に実装されたDGGSから複数のグリッドを取得してもよい。
いくつかの実施形態では、ターゲットジオフェンスは、DGGSによって複数のグリッドに分割されてもよい。複数のグリッドのそれぞれは、離散グローバルグリッド(又はセル)であってもよい。複数のグリッドのそれぞれは、複数の頂点を有する多角形を含んでもよい。本明細書において、図9に示されるグリッド904及び906又は図14に示されるグリッド1402のように、各グリッドは、正六角形の同じ形状を有してもよい。しかしながら、いくつかの実施形態では、グリッドの形状は、三角形、正方形、長方形などのような様々なものであってよい。複数のグリッドは、同じサイズ及び形状で構成してもよい。複数のグリッドはまた、異なるサイズ及び形状で構成されてもよい。
いくつかの実施形態では、複数のグリッドは、1つ以上の内部グリッド及び1つ以上の境界グリッドを含んでもよい。図9に示される内部グリッド906のように、内部グリッドの全体がターゲットジオフェンスに含まれてもよい。図9に示される境界グリッド904のように、境界グリッドの少なくとも一部分がターゲットジオフェンスに含まれてもよい。本明細書において、ターゲットジオフェンスに含まれる境界グリッドの少なくとも一部分は、ローカルジオフェンスを構成するために使用してもよい。
単なる例として、図9は、本開示のいくつかの実施形態に係る、ターゲットジオフェンスと1つ以上のグリッドとの関係を示す概略図である。図9に示すように、プロセッサは、ROI(すなわち、太線多角形)をターゲットジオフェンス902として指定してもよい。DGGSによれば、ターゲットジオフェンス902は、7つの境界グリッド及び1つの内部グリッド906を含む8つの六角形グリッドに分割される。境界グリッド904は、7つの境界グリッドのうちの1つを表す。
806において、プロセッサ(例えば、第1のグリッド決定モジュール410の第1の符号化ユニット506)は、複数のグリッドに対応するデータを第1のデータ構造に符号化してもよい。第1のデータ構造は、複数のグリッドの識別子、複数の頂点の座標など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、第1のデータ構造は、キー値の形であってよい。キーは、グリッドIDを示してもよい。キーは1つ以上の値を指し示してもよい。値は、グリッドIDに対応するグリッドの頂点の座標を示してもよい。いくつかの実施形態では、座標は、複数の頂点のそれぞれの緯度及び経度座標を示してもよい。単なる例として、第1の符号化ユニット506は、MD5メッセージダイジェストアルゴリズムに基づいて、複数のグリッドのそれぞれについて一意の識別子(又はID)を生成してもよい。グリッドIDは、グリッドIDに対応するグリッドの座標を指し示してもよい。第1のデータ構造は、B−ツリー構造、B+ツリー構造、ハッシュテーブル、リンクリストなどのような様々なものであってもよいことが理解できるであろう。そのような変形は、本開示の範囲内にあり得る。
808において、プロセッサ(例えば、第1のグリッド決定モジュール410の第1の書き込みユニット508)は、第1のグリッドデータベースを確立するために、符号化されたデータを少なくとも1つの非一時的記憶媒体に書き込んでもよい。例えば、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100の記憶装置150及び/又はストレージ290を含んでもよい。別の例として、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100とは別個の外部記憶装置を含んでもよい。
なお、上記説明は、例示の目的のために提供されるものに過ぎず、本開示の範囲を限定することを意図するものではない。当業者であれば、本開示の教示下で複数の変形及び修正を行うことができる。例えば、第1のグリッドデータベースは、さらに、オンデマンドサービスシステム100とは別個の外部記憶媒体に記憶されてもよい。別の例として、第1のグリッドデータベースは、異なるDGGSにおけるターゲットジオフェンスに従って更新してもよい。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。
図10は、本開示のいくつかの実施形態に係る、第2のグリッドデータベースを確立するための例示的なプロセスのフローチャートである。いくつかの実施形態では、第2のグリッドデータベースを決定するためのプロセス1000は、図1に示されるようなオンデマンドサービスシステム100において実装してもよい。例えば、プロセス1000は、ユーザ端末(例えば、乗客端末130、運転者端末140)及び/又はサーバ110において実装してもよい。プロセス1000はまた、記憶装置150に記憶され、かつ処理エンジン112によって呼び出され及び/又は実行される1つ以上の命令として実装されてもよい。以下に提示される図示のプロセスの動作は、例示を意図するものである。いくつかの実施形態では、プロセス1000は、説明されていない1つ以上の追加の動作を用いて、及び/又は論じられている動作のうちの1つ以上を除いて、達成することができる。さらに、図10に示され、以下で説明されるプロセス1000の動作の順序は、限定を意図するものではない。
1002において、プロセッサ(例えば、第2のグリッド決定モジュール412の境界グリッド取得ユニット602)は、ターゲットジオフェンスに対応する複数のグリッドから1つ以上の境界グリッドを取得してもよい。いくつかの実施形態では、グリッド取得ユニット504は、図8における804に示されるように、ターゲットジオフェンスに対応する複数のグリッドを取得してもよい。複数のグリッドは、1つ以上の内部グリッド及び1つ以上の境界グリッドを含んでもよい。境界グリッド取得ユニット602は、グリッド取得ユニット504から1つ以上の境界グリッドを取得してもよい。
1004において、プロセッサ(例えば、第2のグリッド決定モジュール412のローカルジオフェンス決定ユニット604)は、1つ以上の境界グリッド及びターゲットジオフェンスに基づいて1つ以上のローカルジオフェンスを決定してもよい。ローカルジオフェンスは、境界グリッドがターゲットジオフェンスと重なる領域であってもよい。
いくつかの実施形態では、1つ以上の境界グリッドのそれぞれについて、プロセッサは、境界グリッドに対応する第1のリンクリスト、例えば境界グリッド1202(図12に示す)に対応する第1のリンクリスト1302(図13に示す)を決定してもよい。プロセッサは、ターゲットジオフェンス1204(図12に示す)に対応する第2のリンクリスト1304(図13に示す)を決定してもよい。第1のリンクリストでは、図13に示される長方形ボックスによって表される各ノードは、境界グリッドの1つの頂点に対応してもよい。第1のリンクリストと同様に、第2のリンクリストでは、各ノードはまたターゲットジオフェンスの1つの頂点に対応してもよい。プロセッサは、図12に示すような点A(1)、点B、点M及び点Nのような、境界グリッドとターゲットジオフェンスとの1つ以上の交点を決定してもよい。プロセッサは、例えば図13に示すような更新された第1のリンクリスト1306及び更新された第2のリンクリスト1308を得るために1つ以上の交点に基づいて第1のリンクリスト及び第2のリンクリストを更新してもよい。プロセッサは、更新された第1のリンクリスト及び更新された第2のリンクリストに基づいて1つ以上のローカルジオフェンスを決定してもよい。1つ以上のローカルジオフェンスの決定についてのより詳細な説明は、本開示の他の箇所(例えば、図11〜14及びそれらの説明)に見られる。
1006において、プロセッサ(例えば、第2のグリッド決定モジュール412の第2の符号化ユニット606)は、1つ以上の境界グリッド及び1つ以上のローカルジオフェンスに対応するデータを第2のデータ構造に符号化してもよい。第2のデータ構造は、1つ以上の境界グリッドの識別子、1つ以上のローカルジオフェンスの識別子、1つ以上の境界グリッドのそれぞれの頂点の座標、1つ以上のローカルジオフェンスのそれぞれの頂点の座標など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、第2のデータ構造は、キー値の形であってよい。キーは1つ以上の値を指し示してもよい。例えば、キーは境界グリッドIDを示し、キーは、境界グリッドIDに対応する境界グリッドの頂点の座標及び1つ以上のローカルジオフェンスの頂点の座標などの複数の値を示してもよい。いくつかの実施形態では、座標は、頂点の緯度及び経度座標を示してもよい。
いくつかの実施形態では、第2の符号化ユニット606は、第1の符号化ユニット506から1つ以上の境界グリッドの識別子を取得してもよい。1つ以上の境界グリッドの識別子は、第1のグリッドデータベースのものと一致してよい。例えば、境界グリッドAの識別子が第1のグリッドデータベースにおいて「OL2F0i1234j5678」であると仮定すると、境界グリッドAの識別子が第2のグリッドデータベースにおいても「OL2F0i1234j5678」であってよい。いくつかの実施形態では、第2の符号化ユニット606は、MD5メッセージダイジェストアルゴリズムに基づいて1つ以上のローカルジオフェンスのそれぞれについて一意の識別子を生成してもよい。境界グリッドIDは、対応する境界グリッドの頂点の座標を指し示してもよい。ローカルジオフェンスIDは、対応するローカルジオフェンスの頂点の座標を指し示してもよい。第1のデータ構造と同様に、第2のデータ構造は、B−ツリー構造、B+ツリー構造、ハッシュテーブル、リンクリストなどのような様々なものであってもよい。そのような変形は、本開示の範囲内にあり得る。
1008において、プロセッサ(例えば、第2のグリッド決定モジュール412の第2の書き込みユニット608)は、第2のグリッドデータベースを確立するために、符号化されたデータを少なくとも1つの非一時的記憶媒体に書き込んでもよい。例えば、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100の記憶装置150及び/又はストレージ290を含んでもよい。別の例として、少なくとも1つの非一時的記憶媒体は、オンデマンドサービスシステム100とは別個の外部記憶装置を含んでもよい。いくつかの実施形態では、第1のグリッドデータベース及び第2のグリッドデータベースは、単一の非一時的記憶媒体(例えば、記憶装置150)に統合してもよい。
なお、上記説明は、例示の目的のために提供されるものに過ぎず、本開示の範囲を限定することを意図するものではない。当業者であれば、本開示の教示下で複数の変形及び修正を行うことができる。例えば、第2のグリッドデータベースは、さらにオンデマンドサービスシステム100とは別個の外部記憶媒体に記憶されてもよい。別の例として、第2のグリッドデータベースは、異なるDGGSにおけるターゲットジオフェンスに従って更新してもよい。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。
図11は、本開示のいくつかの実施形態に係る、1つ以上のローカルジオフェンスを決定するための例示的なプロセスのフローチャートである。いくつかの実施形態では、1つ以上のローカルジオフェンスを決定するためのプロセス1100は、図1に示されるようなオンデマンドサービスシステム100において実装してもよい。例えば、プロセス1100は、ユーザ端末(例えば、乗客端末130、運転者端末140)及び/又はサーバ110において実装してもよい。プロセス1100はまた、記憶装置150に記憶され、かつ処理エンジン112によって呼び出され及び/又は実行される1つ以上の命令として実装されてもよい。以下に提示される図示のプロセスの動作は、例示を意図するものである。いくつかの実施形態では、プロセス1100は、説明されていない1つ以上の追加の動作を用いて、及び/又は論じられている動作のうちの1つ以上を除いて、達成してもよい。さらに、図11に示され、以下で説明されるプロセス1100の動作の順序は、限定を意図するものではない。
1102において、プロセッサ(例えば、第2のグリッド決定モジュール412のローカルジオフェンス決定ユニット604)は、境界グリッドに対応する第1のリンクリストとターゲットジオフェンスに対応する第2のリンクリストをそれぞれ決定してもよい。第1のリンクリスト又は第2のリンクリストのいずれかは、複数のノードを含んでもよい。ノードは、少なくとも1つのデータ要素、例えば、境界グリッド又はターゲットジオフェンスの、番号付けされた頂点を含んでもよい。要素は次のノードを指し示してもよい。単なる例として、図12及び図13に示すように、三角形領域が境界グリッド1202を示すと仮定すると、正方形領域はターゲットジオフェンス1204を示す。境界グリッド1202の各頂点は、A、B、Cなどの一意の文字と番号付けしてもよい。ターゲットジオフェンス1204の各頂点は、1、2、3及び4などの一意の文字と番号付けしてもよい。番号付けされた1とAは同じ頂点である。ローカルジオフェンス決定ユニット604は、境界グリッド1202に対応する第1のリンクリスト1302とターゲットジオフェンス1204に対応する第2のリンクリスト1304を決定してもよい。ノードは、長方形ボックスで表してもよく、かつ1つの頂点に対応してもよい。第1のリンクリスト1302及び第2のリンクリスト1304において、ノードのシーケンスは同じであってもよい。例えば、第1のリンクリスト1302又は第2のリンクリスト1304のいずれか一方のノードは、反時計回りにソートされる。いくつかの実施形態では、対応する頂点の座標は、ノードをインデックス付けすることによって取得してもよい。
いくつかの実施形態では、第1のリンクリスト又は第2のリンクリストのタイプは、単一リンクリスト、二重リンクリスト、循環リンクリスト、循環二重リンクリストなど、又はそれらの任意の組み合わせを含んでもよい。本明細書において、第1のリンクリスト及び第2のリンクリストは、循環二重リンクリストである。循環二重リンクリスト内の各ノードは、リスト内の次のノード及び前のノードを指し示してもよい。循環二重リンクリストでは、プロセッサは、リストの始まり又は終わり、さらにリストの真ん中でノードを容易に追加又は削除してもよい。
1104において、プロセッサ(例えば、第2のグリッド決定モジュール412のローカルジオフェンス決定ユニット604)は、境界グリッドとターゲットジオフェンスとの1つ以上の交点を決定してもよい。
いくつかの実施形態では、プロセッサは、境界グリッドとターゲットジオフェンスの各境界(又はエッジ)をそれぞれトラバースしてもよい。数学的には、各境界は、複数の離散データ点によって表されてもよいことが理解できるであろう。各データ点は、境界内の地点の座標を示してもよい。境界グリッドとターゲットジオフェンスの境界に同じデータ点がある場合、プロセッサは、該同じデータ点を交点として指定してもよい。図12に示すように、点A(又は1)、点M及び点Nは、境界グリッド1202とターゲットジオフェンス1204との交点である。同様に、プロセッサは、境界グリッドとターゲットジオフェンスの全ての境界の1つ以上の交点を決定してもよい。
1106において、プロセッサ(例えば、第2のグリッド決定モジュール412のローカルジオフェンス決定ユニット604)は、1つ以上の交点に基づいて第1のリンクリスト及び第2のリンクリストを更新してもよい。
いくつかの実施形態では、第1のリンクリスト1302及び第2のリンクリスト1304は循環二重リンクリストであるため、プロセッサは、更新のために元のリストに1つ以上の交点を容易に追加してもよい。例えば、ローカルジオフェンス決定ユニット604は、更新された第1のリンクリスト1306と更新された第2のリンクリスト1308を決定してもよい。
単なる例として、表1は、第1のリンクリスト及び第2のリンクリストを更新するための例示的な動作を示す。
表1から分かるように、境界グリッド1202とターゲットジオフェンス1204の境界の交点は、元のリンクリスト(例えば、第1のリンクリスト1302及び第2のリンクリスト1304)に追加してもよい。例えば、表1における番号2について、境界ABと境界12とは、点B、点A及び点1である3つの交点がある。実際に、点Aと点1は、同じ点であり、1(A)又はA(1)で示してもよい。交点は、第1のリンクリスト1302、すなわち、A−>B−>B−>C−>1(A)に追加してもよい。交点は、第2のリンクリスト1304、すなわち、1−>B−>2−>3−>4−>1(A)に追加してもよい。表1における番号2について、境界ABと41との交点は、以前に更新された第1のリンクリストと以前に更新されたリンクリストに追加してもよい。このように類推すると、プロセッサは、境界グリッド及びターゲットジオフェンスに関連付けられた交差した各境界をトラバースし、かつ対応するリンクリストに交点を追加してもよい。ターゲット第1のリンクリスト及びターゲット第2のリンクリスト、例えば、更新された第1のリンクリスト1302及び更新されたリンクリスト1304を決定してもよい。いくつかの実施形態では、頂点とは異なるように使用される、第1のリンクリスト又は第2のリンクリストに追加された交点を、ラベル付けてもよい。例えば、リンクリストA−>B−>B−>C−>1(A)について、1番目のBは交点であり、2番目のBは頂点である。プロセッサは、リンクリストの交点を自動的に識別してもよい。
1108において、プロセッサ(例えば、第2のグリッド決定モジュール412のローカルジオフェンス決定ユニット604)は、更新された第1のリンクリスト及び更新された第2のリンクリストに基づいて1つ以上のローカルジオフェンスを決定してもよい。
いくつかの実施形態では、1つ以上のローカルジオフェンスのそれぞれを決定するために、プロセッサは、所定のトラバースルールに基づいて、更新された第1のリンクリスト及び更新された第2のリンクリストをトラバースしてもよい。プロセッサは、境界グリッドとターゲットジオフェンスの交点セットを決定してもよい。交点セットは、境界グリッドとターゲットジオフェンスとの1つ以上の交点を含んでもよい。プロセッサは、交点セットに基づいてローカルジオフェンスを決定してもよい。
いくつかの実施形態では、所定のトラバースルールは、トラバースの開始点、トラバースシーケンス又はトラバース切り替え順序に関連付けてもよい。トラバースの開始点は、ターゲットジオフェンスの外側にある境界グリッドの頂点又は境界グリッドの外側にあるターゲットジオフェンスの頂点を含んでもよい。例えば、図12に示すように、境界グリッド1202の頂点Cがターゲットジオフェンス1204の外側にあるため、頂点Cは、トラバースの開始点として指定してもよい。別の例として、図12に示すように、ターゲットジオフェンス1204のこれらの頂点が境界グリッド1202の外側にあるため、頂点2、3又は4を、トラバースの開始点として指定してもよい。トラバースシーケンスは、時計回り又は反時計回りを含んでもよい。トラバース切り替え順序は、遭遇した第1の交点以外に交点に遭遇するたびに、更新された第1のリンクリストと更新された第2のリンクリストをトラバースすることを交替することを含んでもよい。
単なる例として、ローカルジオフェンス決定ユニット604は、所定のトラバースルールに基づいて、更新された第1のリンクリスト1302及び更新された第2のリンクリスト1304をトラバースする。頂点Cをトラバースの開始点とする。まず、ローカルジオフェンス決定ユニット604は、リンクリスト1302を反時計回りにトラバースする。ローカルジオフェンス決定ユニット604は、第1の交点Nに遭遇し、それを交点セットに入れてもよい。ローカルジオフェンス決定ユニット604は、更新された第1のリンクリスト1302を反時計回りにトラバースし続け、第2の交点1(A)に遭遇する。第2の交点1(A)を交点セットに入れてもよい。次に、スキップしてリンクリスト1304を反時計回りにトラバースすると、ローカルジオフェンス決定ユニット604は、第3の交点1(A)に遭遇してもよい。第3の交点は第2の交点と同じであるため、第3の交点1(A)は、繰り返して交点セットに入れなくてもよい。スキップしてリンクリスト1302を反時計回りにトラバースすると、ローカルジオフェンス決定ユニット604は、第4の交点1(A)に遭遇してもよい。第4の交点は第2の交点と同じであるため、第4の交点1(A)は、繰り返して交点セットに入れなくてもよい。キップしてリンクリスト1304を反時計回りにトラバースすると、ローカルジオフェンス決定ユニット604は、第5の交点1(A)に遭遇してもよい。第5の交点は第2の交点と同じであるため、第5の交点1(A)は、繰り返して交点セットに入れなくてもよい。スキップして、更新された第1のリンクリスト1302を反時計回りにトラバースすると、ローカルジオフェンス決定ユニット604は、第6の点、すなわち、頂点Aに遭遇してもよい。第6の点は交点ではないため、ローカルジオフェンス決定ユニット604は、リンクリスト1302をトラバースし続けてもよい。ローカルジオフェンス決定ユニット604は、第7の交点Bに遭遇してもよい。第7の交点Bを交点セットに入れてもよい。スキップしてリンクリスト1304をトラバースすると、ローカルジオフェンス決定ユニット604は、第8の交点Bに遭遇してもよい。第8の交点Bは第7の交点Bと同じであるため、第8の交点Bは繰り返して交点セットに入れなくてもよい。スキップしてリンクリスト1302をトラバースすると、ローカルジオフェンス決定ユニット604は、第9の点、すなわち頂点Bに遭遇してもよい。第9の点は交点ではないため、ローカルジオフェンス決定ユニット604は、リンクリスト1302をトラバースし続けてもよい。ローカルジオフェンス決定ユニット604は、第10の交点Mに遭遇し、かつ第10の交点を交点セットに入れてもよい。スキップしてリンクリスト1304をトラバースすると、ローカルジオフェンス決定ユニット604は、第11の交点Nに遭遇してもよい。第11の交点はトラバースの開始点(すなわち、第1の交点N)と同じであるため、ローカルジオフェンス決定ユニット604は、トラバースを終了してもよい。なお、トラバースのプロセスにおいて、ローカルジオフェンス決定ユニット604がトラバースの開始点に遭遇すると、トラバースを終了してもよい。最後に、交点セットを決定してもよい。交点セットは、交点N、1A、B及びM、すなわち、{N、1A、B、M}を含んでもよい。境界グリッド1302とターゲットジオフェンス1304との多角形ローカルジオフェンスNABMは、交点セットに基づいて構築してもよい。
単なる例として、図14は、本開示のいくつかの実施形態に係る、ローカルフェンスを決定するための例示的な動作を示す概略図である。ローカルジオフェンス決定ユニット604は、図14のaに示すように、境界グリッド1402とターゲットジオフェンス1404の頂点をそれぞれ番号付けしてもよい。ローカルジオフェンス決定ユニット604は、境界グリッド1402の頂点を含む第1のリンクリストを決定し、かつターゲットジオフェンス1404の頂点を含む第2のリンクリストを決定してもよい。図14のbに示すように、ローカルジオフェンス決定ユニット604は、ターゲットジオフェンス1402と境界グリッド1404との交点を決定し、かつ交点を番号付けしてもよい。ローカルジオフェンス決定ユニット604は、番号付けされた交点に基づいて第1のリンクリスト及び第2のリンクリストを更新してもよい。上記トラバースプロセスを参照すると、図14のcに示すように、ローカルジオフェンス決定ユニット604は、ターゲットジオフェンス1402と境界グリッド1404とのローカルジオフェンス、すなわちローカルジオフェンス1406及び1408を決定してもよい。
以上のように基本概念を説明してきたが、この詳細な開示を読んだ当業者には、上記の詳細な開示が単なる例として提示されているに過ぎず、限定的ではないことは明らかである。本明細書には明示的に述べられていないが、様々な変更、改良、及び修正が想起され、それらは当業者に意図される。これらの変更、改良及び修正は、本開示によって示唆されることが意図されており、本開示の例示的な実施形態の精神及び範囲内にある。
さらに、所定の用語が、本開示の実施形態を説明するために使用されている。例えば、「一実施形態」、「実施形態」及び/又は「いくつかの実施形態」という用語は、この実施形態に関連して説明される特定の特徴、構造又は特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の様々な部分における「実施形態」又は「一実施形態」又は「代替実施形態」の2つ以上の言及は、必ずしも全てが同一の実施形態を指しているわけではないことを強調し、それを理解するものとする。さらに、特定の特徴、構造又は特性は、本開示の1つ以上の実施形態において適切に組み合わせることができる。
さらに、当業者には理解されるように、本開示の態様は、本明細書において、任意の新規で有用なプロセス、機械、製造、又は組成物、又はそれらの新規で有用な改良を含む、多くの特許性のある種類又は文脈のいずれかで例示及び説明することができる。したがって、本開示の態様は、完全にハードウェア、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェアとハードウェアとの組み合わせによる実装により実施されてもよく、実装は、本明細書では、一般的に、「ユニット」、「モジュール」、又は「システム」と総称することができる。さらに、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する1つ以上のコンピュータ可読媒体に具現化されたコンピュータプログラム製品の形態をとることができる。
コンピュータ可読信号媒体は、例えば、ベースバンドに、又は搬送波の一部として、コンピュータ可読プログラムコードを具現化した伝搬データ信号を含んでもよい。このような伝搬信号は、電磁気、光学など、又はそれらの任意の適切な組み合わせを含む様々な形態のいずれかを用いることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、機器若しくは装置によって使用されるか又はそれらと関連して使用されるためのプログラムを通信、伝搬又は伝送できる任意のコンピュータ可読媒体であってもよい。コンピュータ可読信号媒体に具現化されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、又はこれらの任意の適切な組み合わせを含む任意の適切な媒体を使用して送信することができる。
本開示の態様の動作を実行するコンピュータプログラムコードは、Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET、Pythonなどのオブジェクト指向プログラミング言語、「C」プログラミング言語、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAPなどの従来の手続き型プログラミング言語、Python、Ruby及びGroovyなどの動的プログラミング言語、又は他のプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書き込んでもよい。プログラムコードは、完全にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、又は完全にリモートコンピュータ若しくはサーバ上で実行してもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又は接続は、外部コンピュータ(例えば、インターネットサービスプロバイダを使用してインターネットを介して)若しくはクラウドコンピューティング環境で行われるか、又はサービスとしてのソフトウェア(SaaS)などのサービスとして提供することができる。
さらに、処理要素若しくはシーケンス、又はそれに対する数、文字、若しくは他の名称の使用の、列挙された順序は、特許請求の範囲に特定されてもよいものを除き、特許請求されたプロセス及び方法を任意の順序に限定することを意図するものではない。上記開示は、本開示の様々な有用な実施形態であると現在考えられる様々な実施例を通して論じているが、そのような詳細は説明を目的としてなされていることに過ぎず、添付の特許請求の範囲は、開示される実施形態に限定されず、むしろ、開示される実施形態の精神及び範囲内にある修正及び等価な構成を包含するように意図されることが理解できるであろう。例えば、上記様々なコンポーントの実装は、ハードウェア装置で具現化されてもよいが、ソフトウェアのみの解決策として、例えば、既存のサーバ又はモバイル装置上にインストールとして実装することができる。
同様に、本開示の実施形態の前述の説明では、様々な実施形態の1つ以上の理解に役立つ開示を簡素化する目的で、様々な特徴が一緒に単一の実施形態、図、又はその説明にまとめられることがあることが理解されるべきである。しかしながら、この開示方法は、特許請求された主題が、各請求項に明示的に記載されたものよりも多くの特徴を必要とするという意図を反映するものと解釈されるべきではない。むしろ、特許請求された主題は、上記開示された単一の実施形態の全ての特徴よりも少ない特徴に依拠することができる。