Categorias:

Funções geoespaciais

ST_AZIMUTH

Dado dois pontos que são objetos GEOGRAPHY, retorna o azimute (em radianos) do segmento de linha formado pelos dois pontos.

O azimute é o ângulo do norte ao segmento de linha. O ângulo é positivo no sentido horário e é:

  • 0 para um segmento de linha que aponta para o norte.

  • π/2 para um segmento de linha que aponta para o leste.

  • π para um segmento de linha que aponta para o sul.

  • 3π/2 para um segmento de linha que aponta para o oeste.

Se os dois pontos forem o mesmo local, a função retornará NULL.

Em uma Terra esférica, a fórmula descrita aqui é usada para determinar o azimute.

Cuidado

Sistemas que utilizam um modelo elíptico da Terra utilizam um algoritmo mais complexo para azimute, que ocasionalmente produz resultados significativamente diferentes.

Sintaxe

ST_AZIMUTH( <geography_expression_1> , <geography_expression_2> )

Argumentos

geography_expression_1

Um objeto GEOGRAPHY que é um ponto.

geography_expression_2

Um objeto GEOGRAPHY que é um ponto.

Retornos

Retorna um valor do tipo REAL que é o azimute em radianos.

Notas de uso

  • Retorna NULL se um ou ambos os pontos de entrada forem NULL.

Exemplos

O exemplo a seguir retorna o azimute em radianos para dois pontos que formam um segmento de linha que aponta para o sul:

SELECT ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(0 0)')
);
+---------------------------------+
|                     ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(0 0)') |
|                               ) |
|---------------------------------|
|                     3.141592654 |
+---------------------------------+

O exemplo seguinte retorna o azimute em graus para dois pontos que formam um segmento de linha que aponta para o nordeste:

SELECT DEGREES(ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(1 2)')
));
+---------------------------------+
|             DEGREES(ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(1 2)') |
|                              )) |
|---------------------------------|
|                    44.978182941 |
+---------------------------------+