Catégories :

Fonctions géospatiales

ST_AZIMUTH

Given two Points that are GEOGRAPHY objects, returns the azimuth (in radians) of the line segment formed by the two 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

geography_expression_1

Un objet GEOGRAPHY qui est un point.

geography_expression_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 |
+---------------------------------+
Revenir au début