ST_ DistanceSphere - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

ST_ DistanceSphere

ST_ DistanceSphere restituisce la distanza tra due geometrie di punti che si trovano su una sfera.

Sintassi

ST_DistanceSphere(geom1, geom2)
ST_DistanceSphere(geom1, geom2, radius)

Argomenti

geom1

Un valore puntuale in gradi di tipo di dati GEOMETRY disposti su una sfera. La prima coordinata del punto è il valore della longitudine. La seconda coordinata del punto è il valore della latitudine. Per le geometrie 3DZ, 3DM o 4D, vengono utilizzate solo le prime due coordinate.

geom2

Un valore puntuale in gradi di tipo di dati GEOMETRY disposti su una sfera. La prima coordinata del punto è il valore della longitudine. La seconda coordinata del punto è il valore della latitudine. Per le geometrie 3DZ, 3DM o 4D, vengono utilizzate solo le prime due coordinate.

raggio

Il raggio di una sfera di tipo di dato DOUBLE PRECISION. Se non è indicato un raggio, la sfera considerata per impostazione predefinita è la Terra e il raggio è calcolato in base alla rappresentazione World Geodetic System (WGS) 84 dell'ellissoide.

Tipo restituito

DOUBLE PRECISION nelle stesse unità del raggio. Se non viene fornito alcun raggio, la distanza è in metri.

Se geom1 o geom2 sono nulli, allora viene restituito il valore nullo.

Se non viene indicato un raggio, allora il risultato è in metri misurati sulla superficie della Terra.

Se il raggio è un numero negativo, viene restituito un errore.

Se geom1 e geom2 non presentano lo stesso valore di identificatore del sistema di riferimento spaziale (SRID), allora viene restituito il valore nullo.

Se geom1 o geom2 non sono dei punti, allora viene restituito un errore.

Esempi

La seguente istruzione SQL di esempio calcola la distanza in chilometri tra due punti sulla Terra.

SELECT ROUND(ST_DistanceSphere(ST_Point(-122, 47), ST_Point(-122.1, 47.1))/ 1000, 0);
round ----------- 13

Il seguente comando SQL di esempio calcola le distanze in chilometri tra tre località aeroportuali in Germania: Berlin Tegel (TXL), Munich International (MUC) e 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