Todos os produtos
Search
Central de documentação

Tablestore:Executar uma consulta geoespacial

Última atualização: Jul 03, 2026

As consultas geoespaciais dividem-se nos seguintes tipos: consulta por distância geográfica, consulta por caixa delimitadora geográfica e consulta por polígono geográfico.

Pré-requisitos

Consulta por distância geográfica

Para executar uma consulta por distância geográfica, especifique uma área geográfica circular com um ponto central e um raio. O Tablestore retorna as linhas cujo valor da coluna especificada esteja dentro dessa área circular.

  • Parâmetros

    Parâmetro

    Descrição

    FieldName

    Nome da coluna a consultar. O valor deste parâmetro deve ser do tipo de dados GEOPOINT.

    CenterPoint

    Par de coordenadas do ponto central, composto pelos valores de latitude e longitude.

    O formato do par de coordenadas é latitude,longitude. Valores válidos de latitude: [-90,+90]. Valores válidos de longitude: [-180,+180]. Exemplo: "35.8,-45.91".

    DistanceInMeter

    Raio da área geográfica circular. O valor deste parâmetro é do tipo de dados DOUBLE. Unidade: metro.

    Query

    Instrução de consulta para o índice de busca. Defina o tipo de consulta como GeoDistanceQuery.

    TableName

    Nome da tabela de dados.

    IndexName

    Nome do índice de busca.

    ColumnsToGet

    Define se todas as colunas das linhas correspondentes às condições da consulta serão retornadas. Configure os parâmetros ReturnAll, Columns e ReturnAllFromIndex.

    Por padrão, ReturnAll é false, ou seja, apenas as colunas de chave primária são retornadas. Para retornar colunas adicionais, use uma das seguintes opções:

    • Defina Columns para especificar quais colunas retornar.

    • Defina ReturnAllFromIndex como true para retornar todas as colunas do índice de busca.

    Defina ReturnAll como true para retornar todas as colunas da tabela de dados.

  • Exemplo

    O código de exemplo a seguir mostra como consultar as linhas em que o valor da coluna geo_type_col está dentro de uma área geográfica circular na tabela.

    /// <summary> 
    /// Query the rows in which the value of the geo_type_col column falls within a circular geographical area in a table. 
    /// </summary>
    /// <param name="client"></param>
    public static void GeoDistanceQuery(OTSClient client)
    {
        SearchQuery searchQuery = new SearchQuery();
        GeoDistanceQuery geoDistanceQuery = new GeoDistanceQuery(); // Set the query type to GeoDistanceQuery. 
        geoDistanceQuery.FieldName = Geo_type_col;
        geoDistanceQuery.CenterPoint = "10,11"; // Specify the coordinate pair for a central point. 
        geoDistanceQuery.DistanceInMeter = 10000; // Set the radius of the circular geographical area to 10,000. Unit: meter. 
        searchQuery.Query = geoDistanceQuery;
    
        SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
    
        ColumnsToGet columnsToGet = new ColumnsToGet();
        columnsToGet.Columns = new List<string>() { Geo_type_col }; // Specify that the Geo_type_col column is returned. 
        searchRequest.ColumnsToGet = columnsToGet;
    
        SearchResponse response = client.Search(searchRequest);
        Console.WriteLine(response.TotalCount);
    }
                

Consulta por caixa delimitadora geográfica

Na consulta por caixa delimitadora geográfica, especifique uma área geográfica retangular com um canto superior esquerdo e um canto inferior direito. O Tablestore retorna as linhas cujo valor da coluna especificada esteja dentro dessa área retangular.

  • Parâmetros

    Parâmetro

    Descrição

    FieldName

    Nome da coluna a consultar. O valor deste parâmetro deve ser do tipo de dados GEOPOINT.

    TopLeft

    Par de coordenadas do canto superior esquerdo da área geográfica retangular.

    BottomRight

    Par de coordenadas do canto inferior direito da área geográfica retangular. Os pares de coordenadas dos cantos superior esquerdo e inferior direito definem uma área geográfica retangular única.

    O formato do par de coordenadas é latitude,longitude. Valores válidos de latitude: [-90,+90]. Valores válidos de longitude: [-180,+180]. Exemplo: "35.8,-45.91".

    Query

    Instrução de consulta para o índice de busca. Defina o tipo de consulta como GeoBoundingBoxQuery.

    TableName

    Nome da tabela de dados.

    IndexName

    Nome do índice de busca.

    ColumnsToGet

    Define se todas as colunas das linhas correspondentes às condições da consulta serão retornadas. Configure os parâmetros ReturnAll, Columns e ReturnAllFromIndex.

    Por padrão, ReturnAll é false, ou seja, apenas as colunas de chave primária são retornadas. Para retornar colunas adicionais, use uma das seguintes opções:

    • Defina Columns para especificar quais colunas retornar.

    • Defina ReturnAllFromIndex como true para retornar todas as colunas do índice de busca.

    Defina ReturnAll como true para retornar todas as colunas da tabela de dados.

  • Exemplo

    O código de exemplo a seguir demonstra como consultar as linhas em que o valor da coluna geo_type_col está dentro da área geográfica retangular cujo canto superior esquerdo é "10,0" e o canto inferior direito é "0,10".

    /// <summary>
    /// Query the rows in which the value of the geo_type_col column is within a rectangular geographical area in a table. The value of the geo_type_col column is of the GEOPOINT data type. The rectangular geographical area is specified by an upper-left corner whose coordinate pair is "10,0" and a lower-right corner whose coordinate pair is "0,10". 
    /// </summary>
    /// <param name="client"></param>
    public static void GeoBoundingBoxQuery(OTSClient client)
    {
        SearchQuery searchQuery = new SearchQuery();
        GeoBoundingBoxQuery geoBoundingBoxQuery = new GeoBoundingBoxQuery(); // Set the query type to GeoBoundingBoxQuery. 
        geoBoundingBoxQuery.FieldName = Geo_type_col; // Specify the name of the column that you want to query. 
        geoBoundingBoxQuery.TopLeft = "10,0"; // Specify the coordinate pair for the upper-left corner of the rectangular geographical area. 
        geoBoundingBoxQuery.BottomRight = "0,10"; // Specify coordinate pair for the lower-right corner of the rectangular geographical area. 
        searchQuery.Query = geoBoundingBoxQuery;
    
        SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
    
        var columnsToGet = new ColumnsToGet();
        columnsToGet.Columns = new List<string> { Geo_type_col }; // Specify that the Geo_type_col column is returned. 
        searchRequest.ColumnsToGet = columnsToGet;
    
        SearchResponse response = client.Search(searchRequest);
        Console.WriteLine(response.TotalCount);
    }

Consulta por polígono geográfico

Para executar uma consulta por polígono geográfico, especifique uma área geográfica poligonal com os pares de coordenadas de vários pontos. O Tablestore retorna as linhas cujo valor da coluna especificada esteja contido nessa área poligonal.

  • Parâmetros

    Parâmetro

    Descrição

    FieldName

    Nome da coluna a consultar. O valor deste parâmetro deve ser do tipo de dados GEOPOINT.

    Points

    Pares de coordenadas dos pontos que definem uma área geográfica poligonal.

    O formato do par de coordenadas é latitude,longitude. Valores válidos de latitude: [-90,+90]. Valores válidos de longitude: [-180,+180]. Exemplo: "35.8,-45.91".

    Query

    Instrução de consulta para o índice de busca. Defina o tipo de consulta como GeoPolygonQuery.

    TableName

    Nome da tabela de dados.

    IndexName

    Nome do índice de busca.

    ColumnsToGet

    Define se todas as colunas das linhas correspondentes às condições da consulta serão retornadas. Configure os parâmetros ReturnAll, Columns e ReturnAllFromIndex.

    Por padrão, ReturnAll é false, ou seja, apenas as colunas de chave primária são retornadas. Para retornar colunas adicionais, use uma das seguintes opções:

    • Defina Columns para especificar quais colunas retornar.

    • Defina ReturnAllFromIndex como true para retornar todas as colunas do índice de busca.

    Defina ReturnAll como true para retornar todas as colunas da tabela de dados.

  • Exemplo

    O código de exemplo a seguir ilustra como consultar as linhas em que o valor da coluna geo_type_col está dentro de uma área geográfica poligonal na tabela.

    /// <summary>
    /// Query the rows in which the value of the geo_type_col column is within a polygon geographical area in a table. 
    /// </summary>
    /// <param name="client"></param>
    public static void GeoPolygonQuery(OTSClient client)
    {
        SearchQuery searchQuery = new SearchQuery();
        GeoPolygonQuery geoPolygonQuery = new GeoPolygonQuery(); // Set the query type to GeoPolygonQuery. 
        geoPolygonQuery.FieldName = Geo_type_col;
        geoPolygonQuery.Points = new List<string>() { "0,0", "10,0", "10,10" }; // Specify coordinate pairs for vertices of a polygon geographical area. 
        searchQuery.Query = geoPolygonQuery;
    
        SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
    
        ColumnsToGet columnsToGet = new ColumnsToGet();
        columnsToGet.Columns = new List<string>() { Geo_type_col }; // Specify that the Geo_type_col column is returned. 
        searchRequest.ColumnsToGet = columnsToGet;
    
        SearchResponse response = client.Search(searchRequest);
        Console.WriteLine(response.TotalCount);
    }
                

Perguntas frequentes

Referências