我有一个很大的.csv数据集,包含10e7个点,坐标(纬度、经度)表示访客的位置。我有另一个包含10e3点的数据集,这些点的坐标表示商店的位置。
我想用某种测地线公式,把最近的商店与每个访客联系起来。
我想要一些非常快速和高效的东西,我可以在python(比如pandas)或Google BigQuery上运行。
有人能给我个线索吗?
最佳答案
为了补充费利佩的回答:
可以使用SQL UDF与JS UDF
JS UDF有一些LimitsSQL UDF没有
因此,可以与Felipe的其余代码一起使用的等效SQL UDF是
CREATE TEMPORARY FUNCTION distance(lat1 FLOAT64, lon1 FLOAT64, lat2 FLOAT64, lon2 FLOAT64)
RETURNS FLOAT64 AS ((
WITH constants AS (
SELECT 0.017453292519943295 AS p
)
SELECT 12742 * ASIN(SQRT(
0.5 - COS((lat2 - lat1) * p)/2 +
COS(lat1 * p) * COS(lat2 * p) *
(1 - COS((lon2 - lon1) * p))/2))
FROM constants
));
我试图尽可能保留各自JS UDF的布局,以便您可以看到它是如何创建的
关于python - 访客与最近商店之间的测地距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40492187/