Categorias:

Funções geoespaciais

ST_COVERS

Retorna TRUE se nenhum ponto em um objeto geoespacial estiver fora de outro objeto geoespacial. Em outras palavras:

  • O objeto GEOGRAPHY g2 está fora do objeto GEOGRAPHY g1.

  • O objeto GEOMETRY g2 está fora do objeto GEOMETRY g1.

ST_COVERS é semelhante a, mas sutilmente diferente de, ST_CONTAINS. Para obter mais detalhes sobre as diferenças entre “contém” e “abrange”, consulte o Dimensionally Extended 9-Intersection Model (DE-9IM).

Embora ST_COVERS e ST_CONTAINS possam parecer semelhantes, as duas funções têm diferenças sutis. Para obter mais detalhes sobre as diferenças entre “covers” e “contains”, consulte o Dimensionally Extended 9-Intersection Model (DE-9IM).

Nota

Esta função não oferece suporte ao uso de um GeometryCollection ou FeatureCollection como valores de entrada.

Dica

Você pode usar o serviço de otimização de pesquisa para melhorar o desempenho de consultas que chamam essa função. Para obter mais detalhes, consulte Serviço de otimização de pesquisa.

Consulte também:

ST_CONTAINS, ST_COVEREDBY

Sintaxe

ST_COVERS( <geography_expression_1> , <geography_expression_2> )

ST_COVERS( <geometry_expression_1> , <geometry_expression_2> )
Copy

Argumentos

geography_expression_1

Um objeto GEOGRAPHY que não é um GeometryCollection ou FeatureCollection.

geography_expression_2

Um objeto GEOGRAPHY que não é um GeometryCollection ou FeatureCollection.

geometry_expression_1

Um objeto GEOMETRY que não é um GeometryCollection ou FeatureCollection.

geometry_expression_2

Um objeto GEOMETRY que não é um GeometryCollection ou FeatureCollection.

Retornos

BOOLEAN.

Notas de uso

  • Para objetos GEOMETRY, a função reporta um erro se os dois objetos GEOMETRY de entrada tiverem SRIDs diferentes.

Exemplos

Exemplos GEOGRAPHY

Isto mostra uma simples utilização da função ST_COVERS:

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
Copy
SELECT ST_COVERS(g1, g2) 
    FROM geospatial_table_01;
+-------------------+
| ST_COVERS(G1, G2) |
|-------------------|
| True              |
+-------------------+
Copy

Exemplos GEOMETRY

A consulta abaixo mostra vários exemplos de utilização do ST_COVERS. Observe como o polígono cobre (mas não contém) um LineString em sua borda.

SELECT ST_COVERS(poly, poly_inside),
       ST_COVERS(poly, poly),
       ST_COVERS(poly, line_on_boundary),
       ST_COVERS(poly, line_inside)
  FROM (SELECT TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))') AS poly,
               TO_GEOMETRY('POLYGON((-1 0, 0 1, 1 0, -1 0))') AS poly_inside,
               TO_GEOMETRY('LINESTRING(-1 1, 0 2, 1 1)') AS line_on_boundary,
               TO_GEOMETRY('LINESTRING(-2 0, 0 0, 0 1)') AS line_inside);
Copy
+------------------------------+----------------------+----------------------------------+-----------------------------+
| ST_COVERS(POLY, POLY_INSIDE) | ST_COVERS(POLY,POLY) | ST_COVERS(POLY,LINE_ON_BOUNDARY) | ST_COVERS(POLY,LINE_INSIDE) |
|------------------------------+----------------------+----------------------------------+-----------------------------|
| True                         | True                 | True                             | True                        |
+------------------------------+----------------------+----------------------------------+-----------------------------+
Copy