Catégories :

Fonctions géospatiales

ST_AZIMUTH

En tenant compte de deux points, renvoie l’azimut (en radians) du segment de ligne formé par les deux points.

L’azimut est l’angle entre le nord et le segment de ligne. L’angle est positif dans le sens des aiguilles d’une montre et est :

  • 0 pour un segment de ligne pointant vers le nord.

  • π/2 pour un segment de ligne pointant vers l’est.

  • π pour un segment de ligne pointant vers le sud.

  • 3π/2 pour un segment de ligne pointant vers l’ouest.

Si les deux points sont au même emplacement, la fonction renvoie NULL.

Sur une Terre sphérique, la formule décrite ici est utilisée pour déterminer l’azimut.

Prudence

Les systèmes utilisant un modèle elliptique de la Terre utilisent un algorithme plus complexe pour l’azimut, qui donne parfois des résultats significativement différents.

Syntaxe

ST_AZIMUTH( <geography_expression_1> , <geography_expression_2> )

Arguments

expression_géographie_1

Un objet GEOGRAPHY qui est un point.

expression_géographie_2

Un objet GEOGRAPHY qui est un point.

Renvoie

Renvoie une valeur de type REAL qui est l’azimut en radians.

Notes sur l’utilisation

  • Renvoie NULL si un ou les deux points d’entrée sont NULL.

Exemples

L’exemple suivant renvoie l’azimut en radians pour deux points qui forment un segment de ligne pointant vers le sud :

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

L’exemple suivant renvoie l’azimut en degrés pour deux points qui forment un segment de ligne pointant vers le nord-est :

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