Przejdź do głównej zawartości

Nie każda operacja geoprzestrzenna wymaga dedykowanego kroku. Wszystko, co jest wyrażeniem kolumny dla pojedynczego wiersza, działa jako komórka wyrażenia w kroku Table Extract (krok), w bazie danych, bez opuszczania hurtowni danych przez wiersze — więc skaluje się z tabelą, a nie z silnikiem przepływu pracy. To jest ścieżka, którą konwersja Alteryx wybiera dla narzędzi Alteryx Create Points i Distance.

Lakehouse v1 i v2 nazywają swoje funkcje geometrii inaczej — ST_MAKEGEOMPOINT kontra ST_POINT, ST_ASWKT kontra ST_ASTEXT. Rodzina geom_* rozwiązuje się do właściwej funkcji dla obszaru roboczego, w którym pracujesz, więc wyrażenie napisane raz działa w obu.

Wyrażenie 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, argumenty zamienione miejscami
func.geom_x(g) ST_X ST_X
func.geom_y(g) ST_Y ST_Y

Zbuduj punkt WKT z kolumny długości geograficznej i kolumny szerokości geograficznej:

func.geom_as_wkt(
func.geom_point(
get_column(table, 'Longitude'),
get_column(table, 'Latitude'),
)
)

geom_as_wkt zapisuje wynik jako WKT, czyli w postaci, którą odczytuje i zapisuje każdy krok przestrzenny PlaidCloud.

Odległość to jedyna operacja tutaj bez przenośnego zapisu — oba lakehouse różnią się zarówno funkcją, jak i jednostką zwracanej wartości, więc wyrażenie zależy od wersji.

ST_DISTANCE_SPHERE przyjmuje cztery współrzędne i zwraca metry:

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,
)
Jednostka Współczynnik z metrów
Mile 0.0006213711922373339
Kilometry 0.001
Metry 1
Stopy 3.280839895013123

geom_distance jest płaska dla dwóch geometrii i zwraca stopnie, więc współczynnik przelicza ze stopni, a nie z metrów:

func.geom_distance(
func.geom_from_wkt(get_column(table, 'Origin')),
func.geom_from_wkt(get_column(table, 'Destination')),
) * 69.1709
Jednostka Współczynnik ze stopni
Mile 69.1709
Kilometry 111.32
Metry 111320.0
Stopy 364566.929

Ponieważ jest płaska, jest to przybliżenie, które pogarsza się w miarę oddalania od równika — wystarczające dla lokalnych odległości typowych dla analizy obszarów oddziaływania, gorsze w skali kontynentu.

Warunek LIKE 'POINT%' w formie v2 ma znaczenie: ST_DISTANCE_SPHERE przyjmuje cztery współrzędne, więc geometria niebędąca punktem po którejkolwiek stronie po cichu zmierzyłaby coś innego. CASE zwraca dla takich wierszy wartość null.

Czego potrzebujesz Użyj
Odległości od każdego wiersza do jego najbliższych wierszy w innej tabeli Spatial Find Nearest (krok)
Odległości jako filtra w złączeniu przestrzennym Dopasowanie przestrzenne
Pola powierzchni, długości, centroidu lub prostokąta ograniczającego Spatial Info (krok)
Czegokolwiek, co zmienia kształt geometrii Kroki geoprzestrzenne