Categorias:

Funções geospaciais

HAVERSINE

Calcula a distância do grande círculo em quilômetros entre dois pontos na superfície da Terra, usando a fórmula de haversine. Os dois pontos são especificados por sua latitude e longitude em graus decimais.

Nota

A Snowflake recomenda o uso da função ST_DISTANCE em vez da função HAVERSINE. A função ST_DISTANCE realiza o cálculo usando valores de tipos geoespaciais, o que permite que você armazene dados geoespaciais e use as funções geoespaciais nos dados. Além disso, os predicados de junção que usam a função ST_DISTANCE têm melhor desempenho do que os predicados de junção que usam a função HAVERSINE.

Sintaxe

HAVERSINE( <lat1>, <lon1>, <lat2>, <lon2> )
Copy

Argumentos

lat1

A latitude do primeiro ponto em graus decimais.

lon1

A longitude do primeiro ponto em graus decimais.

lat2

A latitude do segundo ponto em graus decimais.

lon2

A longitude do segundo ponto em graus decimais.

Returns

Esta função retorna um valor do tipo FLOAT.

Exemplos

O exemplo a seguir retorna a distância geoespacial em quilômetros entre Nova York e Los Angeles:

SELECT HAVERSINE(
    40.7127,
    -74.0059,
    34.0500,
    -118.2500
  ) AS distance_in_kilometers;
Copy
+------------------------+
| DISTANCE_IN_KILOMETERS |
|------------------------|
|         3936.385096389 |
+------------------------+

The following example is the same as the previous example, but it returns the geospatial distance in meters instead of kilometers by multiplying the result by 1000:

SELECT HAVERSINE(
    40.7127,
    -74.0059,
    34.0500,
    -118.2500
  ) * 1000 AS distance_in_meters;
Copy
+--------------------+
| DISTANCE_IN_METERS |
|--------------------|
|   3936385.09638929 |
+--------------------+