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