Kategorien:

Geodatenfunktionen

ST_DISTANCE

Gibt den minimalen geodätischen Abstand zwischen zwei Objekten vom Typ GEOGRAPHY oder den minimalen euklidischen Abstand zwischen zwei Objekten vom Typ GEOMETRY zurück.

Syntax

ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> )
Copy

Argumente

geography_or_geometry_expression_1

Das Argument muss vom Datentyp GEOGRAPHY oder GEOMETRY sein.

geography_or_geometry_expression_2

Das Argument muss vom Datentyp GEOGRAPHY oder GEOMETRY sein.

Rückgabewerte

Gibt einen FLOAT-Wert zurück, der die Entfernung darstellt, oder NULL:

  • Bei Eingabewerten vom Typ GEOGRAPHY wird die Entfernung in Meter angegeben.

  • Bei Eingabewerten vom Typ GEOMETRY wird die Entfernung mit den Einheiten berechnet, die zur Definition der Eingabekoordinaten verwendet wurden.

  • Gibt NULL zurück, wenn ein oder mehrere Eingabepunkte NULL sind.

Nutzungshinweise

  • Bei GEOMETRY-Objekten meldet die Funktion einen Fehler, wenn die beiden eingegebenen GEOMETRY-Objekte unterschiedliche SRIDs haben.

Beispiele

Die folgenden Beispiele verwenden die Funktion ST_DISTANCE.

GEOGRAPHY-Beispiele

Zeigt die Entfernung in Metern zwischen zwei Punkten 1 Grad entfernt entlang des Äquators (ungefähr 111 Kilometer).

WITH d AS
  ( ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(1, 0)) )
SELECT d / 1000 AS kilometers, d / 1609 AS miles;
Copy
+---------------+--------------+
|    KILOMETERS |        MILES |
|---------------+--------------|
| 111.195101177 | 69.108204585 |
+---------------+--------------+

Anzeigen der Ausgabe der Funktion ST_DISTANCE, wenn ein oder mehrere Eingabewerte NULL sind:

SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) AS null_input;
Copy
+------------+
| NULL_INPUT |
|------------|
|       NULL |
+------------+

GEOMETRY-Beispiele

Im folgenden Beispiel wird die für die Eingabeobjekte vom Typ GEOGRAPHY und GEOMETRY berechnete Entfernung verglichen.

SELECT ST_DISTANCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) AS geometry_distance,
  ST_DISTANCE(TO_GEOGRAPHY('POINT(0 0)'), TO_GEOGRAPHY('POINT(1 1)')) AS geography_distance;
Copy
+-------------------+--------------------+
| GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE |
|-------------------+--------------------|
|       1.414213562 |   157249.628092508 |
+-------------------+--------------------+

Weitere Beispiele finden Sie unter Beispiele zum Vergleich der Datentypen GEOGRAPHY und GEOMETRY.