Search:

Search all manuals
Search this manual
Manual
Couchbase Server マニュアル 2.0
Community Wiki and Resources
Couchbase Server 2.0をダウンロード
Couchbase 開発者ガイド 2.0
クライアントライブラリ
Couchbase Server フォーラム
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
9.11 地理空間ビューの作成
Chapter Sections
Chapters

9.11.2. ビューとクエリ

9.11.2. バウンディングボックスのクエリ

GeoCouchの拡張は、バケット内のポイントデータから2次元のインデックスを構築するためにCouchbaseの標準のインデックスシステムを使用しています。インデックス情報のフォーマットはGeoJSON仕様に基づいています。

地理空間インデックスを作成するには、記述している点の座標を含むGeoJSONのPointの値を出力するため、emit()関数を使用してください。 たとえば、次の関数では、以前の空間レコードの例で地理空間インデックスを作成しています。

Javascript
function(doc, meta) 
{
  if (doc.loc) 
  {
     emit(
          {
             type: "Point",
             coordinates: doc.loc,
          },
          [meta.id, doc.loc]);
  }
}

空間ビューインデックスのキーは、points、multipoints、linestrings、polygonsとgeometryコレクション.を含む、任意の有効なGeoJSONジオメトリ値にすることができます。

ビューのmap()関数は、ビュー定義の性質を示すためにspatial接頭辞を使用してデザインドキュメントに配置されるべきです。たとえば、次のようなデザインドキュメントが、pointsビューとして上記関数を含みます。

JSON
{
   "spatial" : {
      "points" : "function(doc, meta) { if (doc.loc) { emit({ type: \"Point\", coordinates: [doc.loc[0], doc.loc[1]]}, [meta.id, doc.loc]);}}",
   }
}

地理空間クエリーを実行するには、埋め込まれた空間インデックスを使用して、デザインドキュメント形式を使用します。たとえば、デザインドキュメントがバケットplaces内でmainと呼ばれている場合、URLはhttp://localhost:8092/places/_design/main/_spatial/pointsとなります。

空間クエリは、ビューへのリクエストのための様々な追加引数のサポートを含みます。完全なリストは次の概要の表に記載されています。

メソッドGET /bucket/_design/[デザインドキュメント]/_spatial/[空間ビュー名]
リクエストデータなし
レスポンスデータビューから返されるドキュメントのJSON
認証情報の要否不要
 クエリ引数
bbox空間クエリのバウンディングボックスを指定します
 パラメータ:文字列、任意
limit指定した数字で返却するドキュメントの数を制限します
 パラメータ:数値、任意
skip結果を返し始める前にこの数のレコードをスキップします
 パラメータ:数値、任意
stalestaleビューからの結果を使用できるようにします
 パラメータ:文字列、任意
 サポートされる値
 false:結果を返す前にビューインデックスを強制的に更新します
 ok:staleビューを許可します
 update_after:staleビューを許可し、アクセス後ビューを更新します

バウンディングボックスのクエリ

バウンディングボックスを指定しない場合は、完全なデータセットが返されます。空間インデックスに問い合わせるとき、指定された値での問い合わせ検索の境界を指定するバウンディングボックスを使用することができます。仕様では、クエリの実行中に使用する座標をカンマで区切ったリストの形式でなければなりません。

これらの座標はGeoJSONフォーマットを使用して指定されているので、最初の2つの数字は左下の座標であり、最後の2つの数値は、右上の座標です。

例えば、上述したデザインドキュメントを使用する場合:

GET http://localhost:8092/places/_design/main/_spatial/points?bbox=0,0,180,90
Content-Type: application/json

次の情報を返します:

JSON
{
   "update_seq" : 3,
   "rows" : [
      {
         "value" : [
            "oakland",
            [
               10.898333,
               48.371667
            ]
         ],
         "bbox" : [
            10.898333,
            48.371667,
            10.898333,
            48.371667
         ],
         "id" : "augsburg"
      }
   ]
}

戻り値のデータには、デザインドキュメントのビュー関数で指定された値と、個々の一致するドキュメントのバウンディングボックスを含むことに注意してください。空間インデックスが仕様の一部としてbboxバウンディングボックスのプロパティを含む場合、この情報は自動で計算されたバージョンの代わりに出力されます。