Categorias:

Funções geospaciais

ST_DISTANCE

Retorna a distância mínima do grande círculo entre dois GEOGRAPHY ou a distância euclidiana mínima entre dois objetos GEOMETRY.

Sintaxe

ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> ) 
Copy

Argumentos

geography_or_geometry_expression_1

O argumento deve ser do tipo GEOGRAPHY ou GEOMETRY.

geography_or_geometry_expression_2

O argumento deve ser do tipo GEOGRAPHY ou GEOMETRY.

Retornos

Retorna um valor FLOAT, que representa a distância, ou NULL:

  • Para valores de entrada GEOGRAPHY, a distância é em metros.

  • Para valores de entrada GEOMETRY, a distância é computada com as mesmas unidades usadas para definir as coordenadas de entrada.

  • Retorna NULL se um ou mais pontos de entrada forem NULL.

Notas de uso

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

Exemplos

Os exemplos a seguir usam a função ST_DISTANCE.

Exemplos GEOGRAPHY

Mostre a distância em metros entre dois pontos separados por 1 grau ao longo do equador (aproximadamente 111 quilômetros ou 69 milhas).

WITH d AS ( ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(1, 0)) ) SELECT d / 1000 AS kilometers, d / 1609 AS miles; 
Copy
+---------------+--------------+ | KILOMETERS | MILES | |---------------+--------------| | 111.195101177 | 69.108204585 | +---------------+--------------+ 

Mostre a saída da função ST_DISTANCE quando um ou mais valores de entrada forem NULL:

SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) AS null_input; 
Copy
+------------+ | NULL_INPUT | |------------| | NULL | +------------+ 

Exemplos GEOMETRY

O exemplo a seguir compara a distância calculada para objetos de entrada GEOGRAPHY e GEOMETRY.

SELECT ST_DISTANCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) AS geometry_distance, ST_DISTANCE(TO_GEOGRAPHY('POINT(0 0)'), TO_GEOGRAPHY('POINT(1 1)')) AS geography_distance; 
Copy
+-------------------+--------------------+ | GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE | |-------------------+--------------------| | 1.414213562 | 157249.628092508 | +-------------------+--------------------+ 

Para exemplos adicionais, consulte Exemplos comparando os tipos de dados GEOGRAPHY e GEOMETRY.