A função ST_DWITHIN verifica se a menor distância entre dois objetos geográficos está dentro de uma distância especificada.
Sintaxe
BOOLEAN ST_DWITHIN(GEOGRAPHY <value1>, GEOGRAPHY <value2>, DOUBLE <distance>)
Parâmetros
value1, value2: Obrigatórios. Valores do tipo GEOGRAPHY data type. Construa objetos GEOGRAPHY com funções como ST_GEOGPOINT, ST_GEOGFROMWKB, ST_GEOGFROMTEXT, ST_MAKELINE e ST_MAKEPOLYGON.
distance: Obrigatório. Tipo DOUBLE. Limiar de distância em metros.
Valor de retorno
Retorna um valor BOOLEAN conforme as regras a seguir:
TRUE se a menor distância entre value1 e value2 for menor ou igual a distance; caso contrário, FALSE.
FALSE se value1 ou value2 for um objeto geográfico vazio.
Exemplos
-
Exemplo 1: Verifique se a menor distância entre dois pontos está dentro de um limiar especificado.
-- Returns FALSE. The distance between the two points is approximately 157249.63 meters, which is greater than the specified threshold of 157249.0. SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT(1 1)'), 157249.0); -- Returns TRUE. The distance between the two points is less than the specified threshold of 157249.7. SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT(1 1)'), 157249.7); -
Exemplo 2: Trate objetos geográficos vazios.
-- Returns FALSE because one of the geographic objects is empty. SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT EMPTY'), 157249.7); -
Exemplo 3: Verifique se um ponto está dentro de um polígono usando distância zero.
-- Returns TRUE because POINT(0 0) is inside the POLYGON, and the shortest distance is 0. SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1))'), 0.0);