Catégories :

Fonctions géospatiales

ST_DISTANCE

Renvoie la distance géodésique minimale entre deux objets GEOGRAPHY ou la distance euclidienne minimale entre deux objets GEOMETRY.

Syntaxe

ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> )
Copy

Arguments

geography_or_geometry_expression_1

L’argument doit être de type GEOGRAPHY ou GEOMETRY.

geography_or_geometry_expression_2

L’argument doit être de type GEOGRAPHY ou GEOMETRY.

Renvoie

Renvoie une valeur REAL, qui représente la distance :

  • Pour les valeurs d’entrée GEOGRAPHY, la distance est en mètres.

  • Pour les valeurs d’entrée GEOMETRY, la distance est calculée avec les mêmes unités que celles utilisées pour définir les coordonnées d’entrée.

Notes sur l’utilisation

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

  • Pour les objets GEOMETRY, la fonction signale une erreur si les deux objets GEOMETRY en entrée ont des SRIDs différents.

Exemples

Exemples GEOGRAPHY

Cela montre la distance en mètres entre deux points distants de 1 degré le long de l’équateur (environ 111 kilomètres ou 69 miles).

WITH d AS
    ( ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(1, 0)) )
SELECT d / 1000 AS kilometers, d / 1609 AS miles;
+---------------+--------------+
|    KILOMETERS |        MILES |
|---------------+--------------|
| 111.195101177 | 69.108204585 |
+---------------+--------------+
Copy

Cela montre l’utilisation de la fonction ST_DISTANCE avec des valeurs NULL :

SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL));
+-----------------------------------------------------------+
| ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) |
|-----------------------------------------------------------|
|                                                      NULL |
+-----------------------------------------------------------+
Copy

Exemples GEOMETRY

L’exemple suivant compare la distance calculée pour les objets d’entrée GEOGRAPHY et GEOMETRY.

SELECT ST_DISTANCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) AS geometry_distance,
       ST_DISTANCE(TO_GEOGRAPHY('POINT(0 0)'), TO_GEOGRAPHY('POINT(1 1)')) AS geography_distance;
Copy
+-------------------+--------------------+
| GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE |
|-------------------+--------------------|
|       1.414213562 |   157249.628092508 |
+-------------------+--------------------+
Copy