Categorias:

Funções geoespaciais

ST_AZIMUTH

Dado um ponto que representa a origem (a localização do observador) e um ponto especificado, retorna o azimute em radianos. Ambos os pontos devem ser objetos GEOGRAPHY ou GEOMETRY.

O azimute é o ângulo entre os dois pontos quando o observador na origem está voltado para o norte (para objetos GEOGRAPHY) ou para o eixo Y (para objetos GEOMETRY). 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.

Para objetos GEOGRAPHY, 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_for_origin> , <geography_expression_for_target> )
ST_AZIMUTH( <geometry_expression_for_origin> , <geometry_expression_for_target> )
Copy

Argumentos

geography_expression_for_origin

Um objeto GEOGRAPHY que é um ponto representando a origem (onde o observador está localizado).

geography_expression_for_target

Um objeto GEOGRAPHY que é um ponto para o qual se deseja calcular o azimute.

geometry_expression_for_origin

Um objeto GEOMETRY que é um ponto representando a origem (onde o observador está localizado).

geometry_expression_for_target

Um objeto GEOMETRY que é um ponto para o qual se deseja calcular o azimute.

Retornos

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

Notas de uso

  • Se um dos objetos geoespaciais de entrada não for um ponto, a função relatará um erro.

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

Exemplos

Exemplos GEOGRAPHY

O seguinte exemplo retorna o azimute em radianos para um ponto de origem (0, 1) e um ponto de destino (0, 0):

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 |
+---------------------------------+
Copy

O seguinte exemplo retorna o azimute em graus para um ponto de origem (0, 1) e um ponto de destino (1, 2):

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 |
+---------------------------------+
Copy

Exemplos GEOMETRY

O seguinte exemplo retorna o azimute em radianos para um ponto de origem (0, 1) e um ponto de destino (0, 0):

SELECT ST_AZIMUTH(
    TO_GEOMETRY('POINT(0 1)', TO_GEOMETRY('POINT(0 0)')
);

+------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 1)'), TO_GEOMETRY('POINT(0 0)')) |
|------------------------------------------------------------------|
| 3.141592654                                                      |
+------------------------------------------------------------------+
Copy

O seguinte exemplo retorna o azimute em graus para um ponto de origem (0, 1) e um ponto de destino (0.707, 0.707):

SELECT ST_AZIMUTH(
    TO_GEOMETRY('POINT(0 0)', TO_GEOMETRY(0.707 0.707')
);

+-------------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(0.707 0.707')) |
|-------------------------------------------------------------------------|
| 0.7853981634                                                            |
+-------------------------------------------------------------------------+
Copy