全部产品
Search
文档中心

表格存储:地理位置查询

更新时间:Jul 02, 2024

地理位置查询包括地理距离查询(GeoDistanceQuery)、地理长方形范围查询(GeoBoundingBoxQuery)和地理多边形范围查询(GeoPolygonQuery)三种方式。

前提条件

  • 已初始化OTSClient。具体操作,请参见初始化OTSClient
  • 已创建数据表并写入数据。
  • 已在数据表上创建多元索引。具体操作,请参见创建多元索引

地理距离查询(GeoDistanceQuery)

GeoDistanceQuery根据一个中心点和距离条件查询表中的数据,当一个地理位置点到指定的中心点的距离不超过指定的值时,满足查询条件。

  • 参数

    参数

    说明

    field_name

    列名,类型为Geopoint。

    center_point

    中心地理坐标点,是一个经纬度值。

    格式为纬度,经度,纬度在前,经度在后,且纬度范围为[-90,+90],经度范围[-180,+180]。例如35.8,-45.91

    distance

    距离中心点的距离,类型为Double。单位为米。

    query

    多元索引的查询语句。设置查询类型为GeoDistanceQuery。

    table_name

    数据表名称。

    index_name

    多元索引名称。

  • 示例

    以下示例用于查询表中Col_GeoPoint列的值距离中心点'32.5,116.5'不超过300000米的数据。

    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()

地理长方形范围查询(GeoBoundingBoxQuery)

GeoBoundingBoxQuery根据一个长方形范围的地理位置边界条件查询表中的数据,当一个地理位置点落在给出的长方形范围内时,满足查询条件。

  • 参数

    参数

    说明

    field_name

    列名,类型为Geopoint。

    top_left

    长方形框的左上角的坐标。

    bottom_right

    长方形框的右下角的坐标,通过左上角和右下角可以确定一个唯一的长方形。

    格式为纬度,经度,纬度在前,经度在后,且纬度范围为[-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()

地理多边形范围查询(GeoPolygonQuery)

GeoPolygonQuery根据一个多边形范围的地理位置边界条件查询表中的数据,当一个地理位置点落在指定的多边形范围内时,满足查询条件。

  • 参数

    参数

    说明

    field_name

    列名,类型为Geopoint。

    points

    组成多边形范围的坐标,通过多个坐标可以确定一个唯一的多边形。

    格式为纬度,经度,纬度在前,经度在后,且纬度范围为[-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()

常见问题

相关文档