Ir al contenido

No todas las operaciones geoespaciales necesitan un paso dedicado. Cualquier cosa que sea una expresión de columna de una sola fila se ejecuta como una celda de expresión de Table Extract (paso), en la base de datos, sin que ninguna fila salga del almacén de datos, por lo que escala con la tabla y no con el motor de flujos de trabajo. Esta es la ruta que elige la conversión de Alteryx para las herramientas Create Points y Distance de Alteryx.

Lakehouse v1 y v2 escriben sus funciones de geometría de forma distinta: ST_MAKEGEOMPOINT frente a ST_POINT, ST_ASWKT frente a ST_ASTEXT. La familia geom_* se resuelve en la función correcta para el espacio de trabajo en el que se ejecuta, de modo que una expresión escrita una sola vez funciona en ambos.

Expresión 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, con los argumentos intercambiados
func.geom_x(g) ST_X ST_X
func.geom_y(g) ST_Y ST_Y

Construya un punto WKT a partir de una columna de longitud y una columna de latitud:

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

geom_as_wkt escribe el resultado como WKT, el formato que leen y escriben todos los pasos espaciales de PlaidCloud.

La distancia es la única operación de esta página que no tiene una forma portable: los dos lakehouses discrepan tanto en la función como en su unidad de retorno, por lo que la expresión difiere según la versión.

ST_DISTANCE_SPHERE toma cuatro coordenadas y devuelve metros:

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,
)
Unidad Factor a partir de metros
Millas 0.0006213711922373339
Kilómetros 0.001
Metros 1
Pies 3.280839895013123

geom_distance es planar sobre dos geometrías y devuelve grados, por lo que el factor convierte a partir de grados y no de metros:

func.geom_distance(
func.geom_from_wkt(get_column(table, 'Origin')),
func.geom_from_wkt(get_column(table, 'Destination')),
) * 69.1709
Unidad Factor a partir de grados
Millas 69.1709
Kilómetros 111.32
Metros 111320.0
Pies 364566.929

Al ser planar, es una aproximación que se degrada al alejarse del ecuador: es adecuada para las distancias locales típicas del análisis de áreas de influencia, y menos para atravesar un continente.

La protección LIKE 'POINT%' de la forma v2 es importante: ST_DISTANCE_SPHERE toma cuatro coordenadas, de modo que una geometría que no sea un punto en cualquiera de los lados mediría en silencio algo incorrecto. En cambio, CASE devuelve nulo para esas filas.

Lo que desea Use
La distancia de cada fila a sus filas más cercanas en otra tabla Spatial Find Nearest (paso)
La distancia como filtro en una combinación espacial Coincidencia espacial
Área, longitud, centroide o cuadro delimitador Spatial Info (paso)
Cualquier cosa que cambie la forma de una geometría Pasos geoespaciales