H3 geospatiale Funktionen
Gilt für: Databricks SQL Databricks Runtime
H3 ist ein globales rasterbasiertes Indizierungssystem. Rastersysteme verwenden eine Form (beispielsweise Rechtecke oder Dreiecke), um eine Oberfläche darzustellen – in diesem Fall die Erdoberfläche. Das H3-System wurde für die Verwendung von Sechsecken (und einigen Fünfecken) entwickelt und bietet 16 Auflösungsstufen innerhalb seiner Hierarchie. Bei höheren Auflösungen sind die einzelnen Formen kleiner.
H3-Ausdrücke werden nur in Clustern mit Photon-Unterstützung und in Databricks SQL-Warehouses der Ebenen Databricks SQL Pro und Databricks SQL Serverless unterstützt.
Weitere Informationen zu H3-Auflösungen finden Sie hier. Informationen zur Entstehung von H3 finden Sie hier.
Weitere Informationen:
- H3-Schnellstart (Databricks SQL)
- Beispiel für H3-Geodatenfunktionen
- Alphabetische Liste der räumlichen H3-Funktionen
H3 für räumliche Analysen
H3 unterstützt ein gängiges Muster für die Verarbeitung und Analyse räumlicher Daten. Beginnen Sie, indem Sie Geodaten aus Standardformaten (Breiten- und Längengrad, Well-Known Text (WKT), Well-Known Binary (WKB) oder GeoJSON in H3-Zellen-IDs indizieren. Mit einem einzelnen Dataset können Sie nach Zellen-ID aggregieren, um standortbasierte Fragen zu beantworten. Mit mehreren indizierten Datasets können Sie diese unter Verwendung der Zellen-IDs kombinieren, um zu sehen, wie ungleiche Datasets miteinander in Beziehung stehen. Diese Verknüpfung von Datasets ist semantisch betrachtet eine räumliche Verknüpfung, bei der allerdings kein räumliches Prädikat erforderlich ist.
Welche Vorteile bietet die Verwendung von H3 in Databricks?
Nutzen Sie Delta Lake-Features für eine effiziente Speicherung und ein effizientes Layout Ihrer H3-indizierten Daten. Der OPTIMIZE-Vorgang von Delta Lake mit Z-Sortierung (auf der Grundlage von H3-Zellen-IDs) ermöglicht es Ihnen, Daten räumlich zusammenzufassen. Darüber hinaus nutzen die Algorithmen zum Überspringen von Daten des Delta Lake die Colocation, um die Menge der zu lesenden Daten intelligent zu reduzieren.
Die Daten können flexibel verwendet werden. Sie können mit H3-Zellen-IDs arbeiten, die als große ganze Zahlen oder als Zeichenfolgen gespeichert sind. Verwenden Sie die Darstellung als große ganze Zahlen, um die bestmögliche Leistung mit H3-Zellen-IDs zu erzielen. Ausführliche Informationen zur Verwendung von H3-Ausdrücken finden Sie im SQL-Referenzhandbuch.
Hinweis
Sie müssen die H3-Bibliothek nicht installieren. Sie ist in Databricks Runtime ab Version 11.2 als sichtbare Abhängigkeit enthalten. (Verwendet wird die Version 3.7.0 der H3-Java-Bibliothek.)
Importieren von Databricks-Funktionen, um H3 zu erhalten (Databricks Runtime)
Für Databricks SQL und Spark SQL ist kein Import erforderlich.
H3-Funktionen für Python oder Scala können mithilfe folgender Befehle in Notebooks importiert werden:
Python
from pyspark.databricks.sql import functions as dbf
Scala
import com.databricks.sql.functions._
Liste der H3-Geodatenfunktionen (Databricks SQL)
Importieren
Funktion | BESCHREIBUNG |
---|---|
h3_coverash3(geographyExpr, resolutionExpr) | Gibt ein ARRAY mit H3-Zellen-IDs (dargestellt als BIGINT) zurück, das der minimalen Menge von Sechsecken oder Fünfecken mit der angegebenen Auflösung entspricht, die die eingegebene lineare oder flächige Geografie vollständig abdecken. |
h3_coverash3string(geographyExpr, resolutionExpr) | Gibt ein ARRAY mit H3-Zellen-IDs (dargestellt als STRING) zurück, das der minimalen Menge von Sechsecken oder Fünfecken mit der angegebenen Auflösung entspricht, die die eingegebene lineare oder flächige Geografie vollständig abdeckt. |
h3_longlatash3(longitudeExpr, latitudeExpr, resolutionExpr) | Gibt die H3-Zellen-ID (als BIGINT) zurück, die dem bereitgestellten Längen- und Breitengrad bei der angegebenen Auflösung entspricht. |
h3_longlatash3string(longitudeExpr, latitudeExpr, resolutionExpr) | Gibt die H3-Zellen-ID (als hexadezimaler STRING) zurück, die dem angegebenen Längen- und Breitengrad bei der angegebenen Auflösung entspricht. |
h3_pointash3(geographyExpr, resolutionExpr) | Gibt die H3-Zellen-ID (als BIGINT) zurück, die dem angegeben Punkt bei der angegebenen Auflösung entspricht. |
h3_pointash3string(geographyExpr, resolutionExpr) | Gibt die H3-Zellen-ID (als STRING) zurück, die dem angegeben Punkt bei der angegebenen Auflösung entspricht. |
h3_polyfillash3(geographyExpr, resolutionExpr) | Gibt ein ARRAY von H3-Zellen-IDs (dargestellt als BIGINT) zurück, die Sechsecken oder Fünfecken der angegebenen Auflösung entsprechen, welche in der eingegebenen geografischen Fläche enthalten sind. |
h3_polyfillash3string(geographyExpr, resolutionExpr) | Gibt ein ARRAY von H3-Zellen-IDs (dargestellt als STRING) zurück, die Sechsecken oder Fünfecken der angegebenen Auflösung entsprechen, die in der Eingabebereichsgeografie enthalten sind. |
h3_tessellateaswkb(geographyExpr, resolutionExpr) | Gibt mithilfe von H3-Zellen eine Tessellation der Eingabegeografie in der angegebenen Auflösung zurück. |
h3_try_polyfillash3(geographyExpr, resolutionExpr) | Gibt ein ARRAY von H3-Zellen-IDs (dargestellt als BIGINT) zurück, die Sechsecken oder Fünfecken der angegebenen Auflösung entsprechen, welche in der eingegebenen geografischen Fläche enthalten sind. |
h3_try_polyfillash3string(geographyExpr, resolutionExpr) | Gibt ein ARRAY von H3-Zellen-IDs (dargestellt als STRING) zurück, die Sechsecken oder Fünfecken der angegebenen Auflösung entsprechen, welche in der eingegebenen geografischen Fläche enthalten sind. |
Export
Funktion | BESCHREIBUNG |
---|---|
h3_boundaryasgeojson(h3CellIdExpr) | Gibt die polygonale Grenze der Eingabe-H3-Zelle im GeoJSON-Format zurück. |
h3_boundaryaswkb(h3CellIdExpr) | Gibt die polygonale Grenze der Eingabe-H3-Zelle im WKB-Format zurück. |
h3_boundaryaswkt(h3CellIdExpr) | Gibt die polygonale Grenze der Eingabe-H3-Zelle im WKT-Format zurück. |
h3_centerasgeojson(h3CellIdExpr) | Gibt den Mittelpunkt der H3-Eingabezelle als Punkt im GeoJSON-Format zurück. |
h3_centeraswkb(h3CellIdExpr) | Gibt den Mittelpunkt der H3-Eingabezelle als Punkt im WKB-Format zurück. |
h3_centeraswkt(h3CellIdExpr) | Gibt den Mittelpunkt der Eingabe-H3-Zelle als Punkt im WKT-Format zurück. |
Konvertierungen
Funktion | BESCHREIBUNG |
---|---|
h3_h3tostring(h3CellIdExpr) | Konvertiert die eingegebene H3-Zellen-ID in die entsprechende hexadezimale String-Darstellung. |
h3_stringtoh3(h3CellIdStringExpr) | Konvertiert die Eingabezeichenfolge (von der erwartet wird, dass es sich um eine hexadezimale Zeichenfolge handelt, die eine H3-Zellen-ID darstellt) in die entsprechende BIGINT-Darstellung der H3-Zellen-ID. |
Prädikate
Funktion | BESCHREIBUNG |
---|---|
h3_ischildof(h3CellId1Expr, h3CellId2Expr) | Gibt „true“ zurück, wenn die erste H3-Zellen-ID der zweiten H3-Zellen-ID entspricht oder ein untergeordnetes Element davon ist. |
h3_ispentagon(h3CellIdExpr) | Gibt wahr zurück, ob die Eingabe BIGINT oder hexadezimaler STRING einer fünfeckigen H3-Zelle entspricht oder nicht. |
Gültigkeitsdauer
Funktion | BESCHREIBUNG |
---|---|
h3_isvalid(expr) | Gibt „true“ zurück, wenn der Eingabe-BIGINT oder STRING eine gültige H3-Zellen-ID ist. |
h3_try_validate(h3CellIdExpr) | Gibt den Eingabewert zurück. Dieser ist vom Typ BIGINT oder STRING, wenn er einer gültigen H3-Zellen-ID entspricht, oder andernfalls NULL. |
h3_validate(h3CellIdExpr) | Gibt den Eingabewert zurück, der vom Typ BIGINT oder STRING ist, wenn er einer gültigen H3-Zellen-ID entspricht, oder gibt andernfalls einen Fehler aus. |
Abstandsbezogen
Funktion | BESCHREIBUNG |
---|---|
h3_distance(h3CellId1Expr, h3CellId2Expr) | Gibt den Rasterabstand der beiden Eingabe-H3-Zellen-IDs zurück. |
h3_hexring(h3CellIdExpr, kExpr) | Gibt ein Array von H3-Zellen-IDs zurück, die einen hohlen sechseckigen Ring mit der H3-Zelle des Ursprungs im Zentrum bilden und sich im Rasterabstand k von der H3-Zelle des Ursprungs befinden. |
h3_kring(h3CellIdExpr, kExpr) | Gibt die H3-Zellen-IDs zurück, die sich innerhalb des (Raster-)Abstands k von der Zellen-ID des Ursprungs befinden. |
h3_kringdistances(h3CellIdExpr, kExpr) | Gibt alle H3-Zellen (dargestellt als lange ganze Zahlen oder als Zeichenfolgen) innerhalb des Rasterabstands k von der H3-Zellen-ID des Ursprungs zusammen mit ihrer Entfernung von der H3-Zelle des Ursprungs zurück. |
h3_try_distance(h3CellId1Expr, h3CellId2Expr) | Gibt den Rasterabstand der beiden Eingabe-H3-Zell-IDs derselben Auflösung oder NULL zurück, wenn der Abstand nicht definiert ist. |
Traversierung
Funktion | BESCHREIBUNG |
---|---|
h3_maxchild(h3CellIdExpr, resolutionExpr) | Gibt das untergeordnete Element des maximalen Werts der eingegebenen H3-Zelle mit der angegebenen Auflösung zurück. |
h3_minchild(h3CellIdExpr, resolutionExpr) | Gibt das untergeordnete Element des minimalen Werts der eingegebenen H3-Zelle mit der angegebenen Auflösung zurück. |
h3_resolution(h3CellIdExpr) | Gibt die Auflösung der eingegebenen H3-Zellen-ID zurück. |
h3_tochildren(h3CellIdExpr, resolutionExpr) | Gibt ein Array der untergeordneten H3-Zellen-IDs der eingegebenen H3-Zellen-ID mit der angegebenen Auflösung zurück. |
h3_toparent(h3CellIdExpr, resolutionExpr) | Gibt die übergeordnete H3-Zellen-ID der eingegebenen H3-Zellen-ID mit der angegebenen Auflösung zurück. |
Komprimierung
Funktion | BESCHREIBUNG |
---|---|
h3_compact(h3CellIdsExpr) | Komprimiert das Eingabeset von H3-Zellen-IDs so gut wie möglich. |
h3_uncompact(h3CellIdsExpr, resolutionExpr) | Dekomprimiert das Eingabeset von H3-Zellen-IDs auf die angegebene Auflösung. |