- Categorias:
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> )
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 | +---------------------------------+
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 | +---------------------------------+
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 |
+------------------------------------------------------------------+
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 |
+-------------------------------------------------------------------------+