すべてのプロダクト
Search
ドキュメントセンター

Tablestore:地理位置情報クエリ

最終更新日:Dec 28, 2024

地理位置情報クエリは、地理的距離クエリ、地理的境界ボックスクエリ、地理的多角形クエリの3つのタイプに分類されます。

前提条件

地理的距離クエリ

地理的距離クエリを実行するには、中心点と半径を使用して円形の地理的エリアを指定します。 Tablestore は、指定された列の値が円形の地理的エリア内にある行を返します。

  • パラメーター

    パラメーター

    説明

    field_name

    クエリ対象の列の名前。このパラメーターの値は GEOPOINT データ型です。

    center_point

    中心点の座標ペア。座標ペアは緯度と経度の値で構成されます。

    座標ペアは latitude,longitude 形式です。緯度の有効な値:[-90,+90]。経度の有効な値:[-180,+180]。例:35.8,-45.91

    distance

    円形地理領域の半径。このパラメーターの値は DOUBLE データ型です。単位:メートル。

    query

    検索インデックスのクエリステートメント。このパラメーターを GeoDistanceQuery に設定します。

    table_name

    データテーブルの名前。

    index_name

    検索インデックスの名前。

  • 次のサンプルコードは、Col_GeoPoint 列の値が中心点が「32.5,116.5」で半径が最大 300,000 メートルの円形地理領域内にある行をクエリする方法の例を示しています。

    query = GeoDistanceQuery('Col_GeoPoint', '32.5,116.5', 300000)
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', 
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
    // Col_GeoPoint 列の値が中心点 '32.5,116.5'、半径 300000 メートル円の地理的範囲内にある行をクエリします。
    

地理的境界ボックスクエリ

地理的境界ボックスクエリを実行するには、左上隅と右下隅を使用して矩形の地理的エリアを指定します。 Tablestore は、指定された列の値が矩形の地理的エリア内にある行を返します。

  • パラメーター

    パラメーター

    説明

    field_name

    クエリ対象の列の名前。このパラメーターの値は GEOPOINT データ型です。

    top_left

    矩形地理領域の左上隅の座標ペア。

    bottom_right

    矩形地理領域の右下隅の座標ペア。矩形地理領域は、左上隅と右下隅を使用して指定できます。

    座標ペアは latitude,longitude 形式です。緯度の有効な値:[-90,+90]。経度の有効な値:[-180,+180]。例:35.8,-45.91

    query

    検索インデックスのクエリステートメント。このパラメーターを GeoBoundingBoxQuery に設定します。

    table_name

    データテーブルの名前。

    index_name

    検索インデックスの名前。

  • 次のサンプルコードは、Col_GeoPoint 列の値が左上隅が「30.9,112.0」で右下隅が「30.2,119.0」の矩形地理領域内にある行をクエリする方法の例を示しています。

    query = GeoBoundingBoxQuery('Col_GeoPoint', '30.9,112.0', '30.2,119.0')
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',  
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
    // Col_GeoPoint 列の値が左上隅 '30.9,112.0'、右下隅 '30.2,119.0' の矩形地理的範囲内にある行をクエリします。
    

地理的多角形クエリ

地理的多角形クエリを実行するには、複数点の座標ペアを使用して多角形の地理的エリアを指定します。 Tablestore は、指定された列の値が多角形の地理的エリア内にある行を返します。

  • パラメーター

    パラメーター

    説明

    field_name

    クエリ対象の列の名前。このパラメーターの値は GEOPOINT データ型です。

    points

    多角形地理領域を定義する点の座標ペア。複数の座標ペアを使用して多角形を指定できます。

    座標ペアは latitude,longitude 形式です。緯度の有効な値:[-90,+90]。経度の有効な値:[-180,+180]。例:35.8,-45.91

    query

    検索インデックスのクエリステートメント。このパラメーターを GeoPolygonQuery に設定します。

    table_name

    データテーブルの名前。

    index_name

    検索インデックスの名前。

  • 次のサンプルコードは、Col_Geopoint 列の値が「30.9,112.0」、「30.5,115.0」、「30.3, 117.0」、および「30.2,119.0」の座標で構成される多角形地理領域内にある行をクエリする方法の例を示しています。

    query = GeoPolygonQuery('Col_GeoPoint', ['30.9,112.0', '30.5,115.0', '30.3, 117.0', '30.2,119.0'])
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', 
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
    // Col_GeoPoint 列の値が座標 '30.9,112.0'、'30.5,115.0'、'30.3, 117.0'、'30.2,119.0' で構成される多角形地理的範囲内にある行をクエリします。
    

FAQ

参考資料