在Databricks中使用PySpark运行地理空间查询。

3
我有一些PySpark数据框,其中几列之一是GPS位置(以WKT格式表示)。 仅选择在某些多边形内的行的最简单方法是什么? 当存在约10亿行时,它是否可扩展?
我正在使用Azure Databricks,如果解决方案可以使用Python,那就更好了,但Scala和SQL也可以。
编辑:Alex Ott的答案-Mosaic-有效且易于使用。
2个回答

2
Databricks实验室包含一个名为项目Mosaic的库,用于处理地理空间数据,并已针对Databricks进行了大量优化。
该库提供st_containsst_intersects文档)函数,可用于查找位于多边形或其他对象内部的行。这些函数可在所有可用语言中使用 - Scala、SQL、Python、R。例如,在SQL中:
SELECT st_contains("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))", 
                   "POINT (25 15)")

0

OpenAI说:

我认为你可以使用ST_Contains函数。 import pyspark.sql.functions as F

df.withColumn("is_inside", F.expr("ST_Contains(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'), gps)")).where("is_inside").show()


“OpenAI说”是什么意思?你是指Github Copilot的输出吗? :) - Alcibiades
ST_Contains 应该来自某个地方... - Alex Ott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接