- Categorias:
ST_CONTAINS¶
Retorna TRUE se um objeto GEOGRAPHY ou GEOMETRY estiver completamente dentro de outro objeto do mesmo tipo.
Mais estritamente, o objeto g1 contém o objeto g2 se e somente se nenhum ponto de g2 estiver no exterior de g1, e pelo menos um ponto do interior de B estiver no interior de A. Há certas sutilezas nesta definição que não são imediatamente óbvias. Para obter mais detalhes sobre o que significa “contém”, 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:
Sintaxe¶
ST_CONTAINS( <geography_expression_1> , <geography_expression_2> )
ST_CONTAINS( <geometry_expression_1> , <geometry_expression_2> )
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_CONTAINS:
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))');SELECT ST_CONTAINS(g1, g2) FROM geospatial_table_01; +---------------------+ | ST_CONTAINS(G1, G2) | |---------------------| | True | +---------------------+
Exemplos GEOMETRY¶
A consulta abaixo mostra vários exemplos de utilização do ST_CONTAINS. Observe como ST_CONTAINS determina isso:
O polígono se contém a si mesmo.
O polígono não contém o LineString que está em sua borda.
SELECT ST_CONTAINS(poly, poly_inside), ST_CONTAINS(poly, poly), ST_CONTAINS(poly, line_on_boundary), ST_CONTAINS(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);
+--------------------------------+------------------------+------------------------------------+-------------------------------+ | ST_CONTAINS(POLY, POLY_INSIDE) | ST_CONTAINS(POLY,POLY) | ST_CONTAINS(POLY,LINE_ON_BOUNDARY) | ST_CONTAINS(POLY,LINE_INSIDE) | |--------------------------------+------------------------+------------------------------------+-------------------------------| | True | True | False | True | +--------------------------------+------------------------+------------------------------------+-------------------------------+