Geometry in SQL (krok)
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.
Przenośne funkcje geometrii
Dział zatytułowany „Przenośne funkcje geometrii”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 |
Tworzenie punktów
Dział zatytułowany „Tworzenie punktów”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ść między dwoma punktami
Dział zatytułowany „Odległość między dwoma punktami”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.
Lakehouse v2
Dział zatytułowany „Lakehouse v2”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 |
Lakehouse v1
Dział zatytułowany „Lakehouse v1”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.
Kiedy zamiast tego użyć kroku
Dział zatytułowany „Kiedy zamiast tego użyć kroku”| 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 |
Powiązane
Dział zatytułowany „Powiązane”- Kroki geoprzestrzenne
- Funkcje geometrii (Lakehouse v1)
- Funkcje geografii (Lakehouse v1) — indeksowanie H3 i geohash
- Funkcje przestrzenne (Lakehouse v2)