ST_ DistanceSphere - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

ST_ DistanceSphere

ST_ DistanceSphere gibt den Abstand zwischen zwei Punktgeometrien zurück, die auf einer Kugel liegen.

Syntax

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

Argumente

geom1

Ein Punktwert in Grad vom Datentyp GEOMETRY auf einer Kugel. Die erste Koordinate des Punktes ist der Längengrad. Die zweite Koordinate des Punktes ist der Breitenwert. Für 3DZ-, 3DM- oder 4D-Geometrien werden nur die ersten beiden Koordinaten verwendet.

geom2

Ein Punktwert in Grad vom Datentyp GEOMETRY auf einer Kugel. Die erste Koordinate des Punktes ist der Längengrad. Die zweite Koordinate des Punktes ist der Breitenwert. Für 3DZ-, 3DM- oder 4D-Geometrien werden nur die ersten beiden Koordinaten verwendet.

radius

Der Radius einer Kugel vom Datentyp DOUBLE PRECISION. Wenn kein Radius angegeben wird, ist die Kugel standardmäßig die Erde und der Radius wird aus der WGS 84-Darstellung (World Geodetic System) des Ellipsoids berechnet.

Rückgabetyp

DOUBLE PRECISION in der gleichen Einheit wie der Radius. Wenn kein Radius vorgegeben ist, wird die Entfernung in Metern angegeben.

Wenn geom1 oder geom2 null oder leer ist, wird null zurückgegeben.

Wenn kein Radius angegeben wird, wird das Ergebnis in Metern entlang der Erdoberfläche angegeben.

Wenn radius eine negative Zahl ist, wird ein Fehler zurückgegeben.

Wenn geom1 und geom2 nicht den gleichen SRID-Wert (Spatial Reference System Identifier) haben, wird ein Fehler zurückgegeben.

Wenn geom1 oder geom2 kein Punkt ist, wird ein Fehler zurückgegeben.

Beispiele

Die folgende Beispiel-SQL berechnet die Entfernung in Kilometern zwischen zwei Punkten auf der Erde.

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

Das folgende Beispiel SQL berechnet die Kilometerabstände zwischen drei Flughafenstandorten in Deutschland: Berlin Tegel (TXL), Munich International (MUC) und 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