# Geospatial-Funktionen

# greatCircleDistance

Berechnet die Entfernung zwischen zwei Punkten auf der Erdoberfläche mithilfe der Großkreisformel.

greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

Eingabeparameter

  • lon1Deg — Längengrad des ersten Punktes in Grad. Bereich: [-180°, 180°].
  • lat1Deg — Breitengrad des ersten Punktes in Grad. Bereich: [-90°, 90°].
  • lon2Deg — Längengrad des zweiten Punktes in Grad. Bereich: [-180°, 180°].
  • lat2Deg — Breitengrad des zweiten Punktes in Grad. Bereich: [-90°, 90°].
  • Positive Werte entsprechen dem nördlichen Breitengrad und dem östlichen Längengrad, negative Werte entsprechen dem südlichen Breitengrad und dem westlichen Längengrad.

Rückgabewert

  • Die Entfernung zwischen zwei Punkten auf der Erdoberfläche in Metern.
  • Generiert eine Ausnahme, wenn die Eingabeparameterwerte außerhalb des Bereichs liegen.

Beispiel

SELECT greatCircleDistance(55.755831, 37.617673, 55.755831, 37.617673) AS greatCircleDistance
┌─greatCircleDistance─┐
│                   0 │
└─────────────────────┘

# geoDistance

Ähnlich wie greatCircleDistance, berechnet jedoch die Entfernung auf dem WGS-84-Ellipsoid anstelle einer Kugel. Dies ist eine genauere Annäherung an das Erdgeoid. Die Leistung ist die gleiche wie bei greatCircleDistance (kein Leistungsnachteil). Es wird empfohlen, geoDistance zur Berechnung von Entfernungen auf der Erde zu verwenden.

Technische Anmerkung: Für nahe genug beieinander liegende Punkte berechnen wir die Entfernung unter Verwendung einer planaren Näherung mit der Metrik auf der Tangentialebene in der Mitte der Koordinaten.

geoDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

Eingabeparameter

  • lon1Deg — Längengrad des ersten Punktes in Grad. Bereich: [-180°, 180°].
  • lat1Deg — Breitengrad des ersten Punktes in Grad. Bereich: [-90°, 90°].
  • lon2Deg — Längengrad des zweiten Punktes in Grad. Bereich: [-180°, 180°].
  • lat2Deg — Breitengrad des zweiten Punktes in Grad. Bereich: [-90°, 90°].
  • Positive Werte entsprechen dem nördlichen Breitengrad und dem östlichen Längengrad, negative Werte entsprechen dem südlichen Breitengrad und dem westlichen Längengrad.

Rückgabewert

  • Die Entfernung zwischen zwei Punkten auf der Erdoberfläche in Metern.
  • Generiert eine Ausnahme, wenn die Eingabeparameterwerte außerhalb des Bereichs liegen.

Beispiel

SELECT geoDistance(38.8976, 77.0366, 39.9496, 75.1503) AS geoDistance
┌─geoDistance─┐
│ 212458.73   │
└─────────────┘

# H3

Index abrufen: https://wolf-h3-viewer.glitch.me (opens new window)

  • (8831aa5039fffff)16 = (613363270285262847)10

Überprüfen, ob h3IsValid(h3index) gültig ist

SELECT h3IsValid(613363270285262847) AS h3IsValid;
┌─h3IsValid─┐
│ 1         │
└───────────┘

H3-Index in Längen- und Breitengrad umwandeln h3ToGeo(h3Index)

SELECT h3ToGeo(613363270285262847) AS coordinates;
┌─coordinates───────────────────────────┐
│(116.29523629955709,39.984633235997315)│
└───────────────────────────────────────┘

In Array von Eckpunkten umwandeln h3ToGeoBoundary

SELECT h3ToGeoBoundary(613363270285262847) AS coordinates;
┌─coordinates──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [(39.98791325592796,116.2925333574096),(39.98386803718472,116.29020686993137),(39.98058822646115,116.29290984546513),(39.98135339622932,116.297938782017),(39.98539816328819,116.30026548576008),(39.98867821224181,116.29756303675612)] │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

# h3IsValid

Überprüft, ob die Nummer ein gültiger H3 (opens new window)-Index ist.

h3IsValid(h3index)

Parameter

h3index — Hexagon-Indexnummer. Typ: UInt64.

Rückgabewerte

  • 1 — Die Nummer ist ein gültiger H3-Index.
  • 0 — Die Nummer ist kein gültiger H3-Index.
  • Typ: UInt8.

Beispiel

SELECT h3IsValid(617301318803390464) AS h3IsValid;
┌─h3IsValid─┐
│ 1         │
└───────────┘

# h3ToGeo

Gibt den Zentrums-Längen- und Breitengrad für den angegebenen H3 (opens new window)-Index zurück.

h3ToGeo(h3Index)

Argumente

h3Index — H3-Index. UInt64.

Rückgabewerte

Ein Tupel bestehend aus zwei Werten: tuple(lon,lat). lon — Längengrad. Float64. lat — Breitengrad. Float64.

Beispiel

SELECT h3ToGeo(617301318803390464) AS coordinates;
┌─coordinates───────────────────────────┐
│ (35.537867206326645,54.20746993771632)│
└───────────────────────────────────────┘

# h3ToGeoBoundary

Gibt ein Array von Paaren (lon, lat) zurück, das der Begrenzung des angegebenen H3-Index entspricht.

h3ToGeoBoundary(h3Index)

Argumente

h3Index — H3-Index. Typ: UInt64.

Rückgabewerte

Array von Paaren '(lon, lat)'. Typ: Array(Float64, Float64).

Beispiel

SELECT h3ToGeoBoundary(617301318803390464) AS coordinates;
┌─coordinates───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [(54.20668646205218,35.53529359582246),(54.20566163343774,35.537605905213915),(54.20644505711934,35.54017955058831),(54.208253376128475,35.54044097223983),(54.209278241418595,35.53812853031426),(54.20849475102178,35.535554799273164)] │
└────────────────────────────────────────────────────────────────