Catégories :

Fonctions géospatiales

ST_AZIMUTH

Étant donné un point qui représente l’origine (l’emplacement de l’observateur) et un point spécifié, renvoie l’azimut en radians. Les deux points doivent être des objets GEOGRAPHY ou GEOMETRY.

L”azimut est l’angle entre les deux points lorsque l’observateur à l’origine fait face au nord (pour les objets GEOGRAPHY) ou à l’axe Y (pour les objets GEOMETRY). 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.

Pour les objets GEOGRAPHY, 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_for_origin> , <geography_expression_for_target> )
ST_AZIMUTH( <geometry_expression_for_origin> , <geometry_expression_for_target> )
Copy

Arguments

geography_expression_for_origin

Un objet GEOGRAPHY qui est un point représentant l’origine (où se trouve l’observateur).

geography_expression_for_target

Un objet GEOGRAPHY qui est un point pour lequel vous souhaitez calculer l’azimut.

geometry_expression_for_origin

Un objet GEOMETRY qui est un point représentant l’origine (où se trouve l’observateur).

geometry_expression_for_target

Un objet GEOMETRY qui est un point pour lequel vous souhaitez calculer l’azimut.

Renvoie

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

Notes sur l’utilisation

  • Si l’un des objets géospatiaux en entrée n’est pas un point, la fonction signale une erreur.

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

Exemples

Exemples GEOGRAPHY

L’exemple suivant renvoie l’azimut en radians pour un point d’origine (0, 1) et un point cible (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

L’exemple suivant renvoie l’azimut en degrés pour un point d’origine (0, 1) et un point cible (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

Exemples GEOMETRY

L’exemple suivant renvoie l’azimut en radians pour un point d’origine (0, 1) et un point cible (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

L’exemple suivant renvoie l’azimut en degrés pour un point d’origine (0, 1) et un point cible (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