Catégories :

Fonctions géospatiales

ST_DISTANCE

Renvoie la grande distance circulaire 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.