- Categorias:
ST_DIFFERENCE¶
Ao receber dois objetos de entrada GEOGRAPHY, retorna um objeto GEOGRAPHY que representa os pontos no primeiro objeto que não estão no segundo objeto (ou seja, a diferença entre os dois objetos).
- Consulte também:
Sintaxe¶
ST_DIFFERENCE( <geography_expression_1> , <geography_expression_2> )
Argumentos¶
geography_expression_1
Um objeto GEOGRAPHY.
geography_expression_2
Um objeto GEOGRAPHY.
Retornos¶
A função retorna um valor do tipo GEOGRAPHY.
Se todos os pontos de geography_expression_1
estiverem em geography_expression_2
(ou seja, a diferença é um conjunto vazio de pontos), a função retornará NULL.
Notas de uso¶
Se qualquer vértice de um objeto de entrada estiver no limite do outro objeto de entrada (excluindo os vértices), a saída pode não ser precisa.
Não há garantia de que a função produzirá resultados normalizados e/ou mínimos. Por exemplo, uma saída poderia consistir de um LineString contendo vários pontos que na verdade formam apenas um segmento reto.
Exemplos¶
O exemplo a seguir retorna um objeto GEOGRAPHY que representa a diferença entre dois objetos de entrada GEOGRAPHY:
ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT'; SELECT ST_DIFFERENCE( TO_GEOGRAPHY('POLYGON((0 0, 1 0, 2 1, 1 2, 2 3, 1 4, 0 4, 0 0))'), TO_GEOGRAPHY('POLYGON((3 0, 3 4, 2 4, 1 3, 2 2, 1 1, 2 0, 3 0))')) AS difference_between_objects;
Esse exemplo produz a seguinte saída:
+-------------------------------------------------------------------------------------------------------------+ | DIFFERENCE_BETWEEN_OBJECTS | |-------------------------------------------------------------------------------------------------------------| | POLYGON((1 1,1.5 1.500171359,1 2,1.5 2.500285599,1 3,1.5 3.500399839,1 4,0 4,0 0,1 0,1.5 0.5000571198,1 1)) | +-------------------------------------------------------------------------------------------------------------+
As imagens a seguir ilustram as diferenças nas áreas que representam os objetos de entrada e saída:
Entrada |
Saída |
---|---|