ST_ DistanceSphere - Amazon Redshift

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