Zum Inhalt springen

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.

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

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.

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.

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

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.

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