Kategorien:

Geodatenfunktionen

HAVERSINE

Berechnet den Großkreisabstand in Kilometern zwischen zwei Punkten auf der Erdoberfläche unter Verwendung der Haversin-Formel. Die beiden Punkte werden durch ihre Breiten- und Längengrade in Dezimalgrad angegeben.

Bemerkung

Snowflake empfiehlt, die Funktion ST_DISTANCE anstelle der Funktion HAVERSINE zu verwenden. Die Funktion ST_DISTANCE führt die Berechnung mit Werten von Geodatentypen durch, sodass Sie Geodaten speichern und die Geodatenfunktionen auf die Daten anwenden können. Darüber hinaus schneiden Verknüpfungsprädikate, die die Funktion ST_DISTANCE verwenden, eine bessere Leistung als Verknüpfungsprädikate, die die Funktion HAVERSINE verwenden.

Syntax

HAVERSINE( <lat1>, <lon1>, <lat2>, <lon2> )
Copy

Argumente

lat1

Der Breitengrad des ersten Punktes in Dezimalgrad.

lon1

Der Längengrad des ersten Punktes in Dezimalgrad.

lat2

Der Breitengrad des zweiten Punktes in Dezimalgrad.

lon2

Der Längengrad des zweiten Punktes in Dezimalgrad.

Rückgabewerte

Gibt einen Wert vom Typ FLOAT zurück.

Beispiele

Im folgenden Beispiel wird die räumliche Entfernung zwischen New York und Los Angeles in Kilometern zurückgegeben:

SELECT HAVERSINE(
    40.7127,
    -74.0059,
    34.0500,
    -118.2500
  ) AS distance_in_kilometers;
Copy
+------------------------+
| DISTANCE_IN_KILOMETERS |
|------------------------|
|         3936.385096389 |
+------------------------+

Das folgende Beispiel ist dasselbe wie das vorherige, aber es gibt die geografische Entfernung in Metern statt in Kilometern zurück, indem das Ergebnis mit 1.000 multipliziert wird:

SELECT HAVERSINE(
    40.7127,
    -74.0059,
    34.0500,
    -118.2500
  ) * 1000 AS distance_in_meters;
Copy
+--------------------+
| DISTANCE_IN_METERS |
|--------------------|
|   3936385.09638929 |
+--------------------+