Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
ST_ DistanceSphere
ST_ DistanceSphere renvoie la distance entre deux géométries ponctuelles situées sur une sphère.
Syntaxe
ST_DistanceSphere(geom1, geom2)
ST_DistanceSphere(geom1, geom2, radius)
Arguments
- geom1
-
Valeur de point en degrés d’un type de données
GEOMETRY
se trouvant sur une sphère. La première coordonnée du point est la valeur de la longitude. La deuxième coordonnée du point est la valeur de la latitude. Pour les géométries 3DZ, 3DM ou 4D, seules les deux premières coordonnées sont utilisées. - geom2
-
Valeur de point en degrés d’un type de données
GEOMETRY
se trouvant sur une sphère. La première coordonnée du point est la valeur de la longitude. La deuxième coordonnée du point est la valeur de la latitude. Pour les géométries 3DZ, 3DM ou 4D, seules les deux premières coordonnées sont utilisées. - rayon
-
Rayon d’une sphère du type de données
DOUBLE PRECISION
. Si aucun rayon n’est fourni, la sphère utilisée par défaut est la Terre et le rayon est calculé à partir de la représentation World Geodetic System (WGS) 84 de l’ellipsoïde.
Type de retour
DOUBLE PRECISION
dans les mêmes unités que le rayon. Si aucun rayon n’est indiqué, la distance est exprimée en mètres.
Si geom1 ou geom2 est null ou vide, null est renvoyé.
Si aucun rayon n’est fourni, le résultat est en mètres le long de la surface de la Terre.
Si le rayon est un nombre négatif, une erreur est renvoyée.
Si geom1 et geom2 n’ont pas la même valeur pour l’identifiant de système de référence spatiale (SRID), une erreur est renvoyée.
Si geom1 ou geom2 n’est pas un point, une erreur est renvoyée.
Exemples
L’exemple SQL suivant calcule la distance en kilomètres entre deux points sur Terre.
SELECT ROUND(ST_DistanceSphere(ST_Point(-122, 47), ST_Point(-122.1, 47.1))/ 1000, 0);
round
-----------
13
L’exemple de SQL suivant calcule les distances en kilomètres entre trois sites d’aéroport en Allemagne : Berlin Tegel (TXL), Munich International (MUC) et Frankfurt International (FRA).
WITH airports_raw(code,lon,lat) AS ( (SELECT 'MUC', 11.786111, 48.353889) UNION (SELECT 'FRA', 8.570556, 50.033333) UNION (SELECT 'TXL', 13.287778, 52.559722)), airports1(code,location) AS (SELECT code, ST_Point(lon, lat) FROM airports_raw), airports2(code,location) AS (SELECT * from airports1) SELECT (airports1.code || ' <-> ' || airports2.code) AS airports, round(ST_DistanceSphere(airports1.location, airports2.location) / 1000, 0) AS distance_in_km FROM airports1, airports2 WHERE airports1.code < airports2.code ORDER BY 1;
airports | distance_in_km
-------------+----------------
FRA <-> MUC | 299
FRA <-> TXL | 432
MUC <-> TXL | 480