Geometry in SQL (Schritt)
Beschreibung
Abschnitt betitelt „Beschreibung“Nicht jede Geodaten-Operation braucht einen eigenen Schritt. Alles, was ein zeilenweiser Spaltenausdruck ist, läuft als Ausdruckszelle in Table Extract (Schritt) in der Datenbank, ohne dass Zeilen das Data Warehouse verlassen — es skaliert also mit der Tabelle und nicht mit der Workflow-Engine. Diesen Weg wählt die Alteryx-Konvertierung für die Alteryx-Tools Create Points und Distance.
Portable Geometriefunktionen
Abschnitt betitelt „Portable Geometriefunktionen“Lakehouse v1 und v2 benennen ihre Geometriefunktionen unterschiedlich — ST_MAKEGEOMPOINT
gegenüber ST_POINT, ST_ASWKT gegenüber ST_ASTEXT. Die Familie geom_* wird auf die
passende Funktion des Workspace aufgelöst, in dem Sie arbeiten, sodass ein einmal geschriebener Ausdruck
auf beiden funktioniert.
| Ausdruck | Lakehouse v1 | Lakehouse v2 |
|---|---|---|
func.geom_from_wkt(x) |
ST_GEOMETRYFROMWKT |
ST_GEOMETRYFROMTEXT |
func.geom_point(lon, lat) |
ST_MAKEGEOMPOINT |
ST_POINT |
func.geom_as_wkt(g) |
ST_ASWKT |
ST_ASTEXT |
func.geom_contains(a, b) |
ST_CONTAINS |
ST_CONTAINS |
func.geom_within(a, b) |
ST_WITHIN |
ST_CONTAINS, Argumente vertauscht |
func.geom_x(g) |
ST_X |
ST_X |
func.geom_y(g) |
ST_Y |
ST_Y |
Create Points
Abschnitt betitelt „Create Points“Erstellen Sie aus einer Längengradspalte und einer Breitengradspalte einen WKT-Punkt:
func.geom_as_wkt( func.geom_point( get_column(table, 'Longitude'), get_column(table, 'Latitude'), ))geom_as_wkt schreibt das Ergebnis als WKT, die Form, die jeder räumliche Schritt von PlaidCloud
liest und schreibt.
Distanz zwischen zwei Punkten
Abschnitt betitelt „Distanz zwischen zwei Punkten“Die Distanz ist die einzige Operation hier ohne portable Schreibweise — die beiden Lakehouses weichen sowohl bei der Funktion als auch bei der Rückgabeeinheit voneinander ab, sodass sich der Ausdruck je nach Version unterscheidet.
Lakehouse v2
Abschnitt betitelt „Lakehouse v2“ST_DISTANCE_SPHERE nimmt vier Koordinaten entgegen und liefert Meter:
case( ( and_( get_column(table, 'Origin').like('POINT%'), get_column(table, 'Destination').like('POINT%'), ), func.st_distance_sphere( func.geom_x(func.geom_from_wkt(get_column(table, 'Origin'))), func.geom_y(func.geom_from_wkt(get_column(table, 'Origin'))), func.geom_x(func.geom_from_wkt(get_column(table, 'Destination'))), func.geom_y(func.geom_from_wkt(get_column(table, 'Destination'))), ) * 0.0006213711922373339, ), else_=null,)| Einheit | Faktor ab Metern |
|---|---|
| Meilen | 0.0006213711922373339 |
| Kilometer | 0.001 |
| Meter | 1 |
| Fuß | 3.280839895013123 |
Lakehouse v1
Abschnitt betitelt „Lakehouse v1“geom_distance ist planar über zwei Geometrien und liefert Grad, daher
rechnet der Faktor von Grad statt von Metern um:
func.geom_distance( func.geom_from_wkt(get_column(table, 'Origin')), func.geom_from_wkt(get_column(table, 'Destination')),) * 69.1709| Einheit | Faktor ab Grad |
|---|---|
| Meilen | 69.1709 |
| Kilometer | 111.32 |
| Meter | 111320.0 |
| Fuß | 364566.929 |
Da sie planar ist, handelt es sich um eine Näherung, die mit wachsendem Abstand vom Äquator ungenauer wird — gut über die lokalen Distanzen, die für Einzugsgebietsanalysen typisch sind, weniger gut über einen Kontinent.
Die Absicherung LIKE 'POINT%' bei der v2-Form ist wichtig: ST_DISTANCE_SPHERE nimmt vier
Koordinaten entgegen, sodass eine Geometrie, die auf einer der beiden Seiten kein Punkt ist, stillschweigend
etwas Falsches messen würde. Das CASE liefert für solche Zeilen stattdessen null.
Wann stattdessen ein Schritt sinnvoll ist
Abschnitt betitelt „Wann stattdessen ein Schritt sinnvoll ist“| Sie möchten | Verwenden Sie |
|---|---|
| Die Distanz von jeder Zeile zu ihren nächstgelegenen Zeilen in einer anderen Tabelle | Spatial Find Nearest (Schritt) |
| Die Distanz als Filter in einem räumlichen Join | Räumlicher Abgleich |
| Fläche, Länge, Schwerpunkt oder Begrenzungsrahmen | Spatial Info (Schritt) |
| Alles, was die Form einer Geometrie verändert | Geodaten-Schritte |
Weiterführende Informationen
Abschnitt betitelt „Weiterführende Informationen“- Geodaten-Schritte
- Geometriefunktionen (Lakehouse v1)
- Geografiefunktionen (Lakehouse v1) — H3- und Geohash-Indizierung
- Räumliche Funktionen (Lakehouse v2)