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 FLOAT, qui représente la distance ou une valeur NULL :

  • 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.

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

Notes sur l’utilisation

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

Exemples

Les exemples suivants utilisent la fonction ST_DISTANCE.

Exemples GEOGRAPHY

Afficher 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;
Copy
+---------------+--------------+
|    KILOMETERS |        MILES |
|---------------+--------------|
| 111.195101177 | 69.108204585 |
+---------------+--------------+

Afficher la sortie de la fonction ST_DISTANCE lorsqu’une ou plusieurs valeurs d’entrée sont NULL :

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

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

Pour d’autres exemples, voir Exemples comparant les types de données GEOGRAPHY et GEOMETRY.