ST_ DistanceSphere - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog.

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)

Arguments (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