通过在 Athena 中查询 OpenStreetMap 找到离 GPS 点最近的边缘

问题描述

以前我在 python 中使用 OSMnx 库来获得最接近特定 gps 数据点的驱动方式。为此,我使用了以下代码

places=['Nebraska,USA']
G=ox.graph_from_place(places,network_type='drive')
origin_point = (lat,long) 
nearest_edge = ox.get_nearest_edge(G,origin_point)

现在我想做的是使用 Athena 查询 OpenStreetMap 以获取相同的内容(仍在 python 中)。我想提供一堆 gps 数据点,并为每个数据点获取最近的道路。有谁知道我应该怎么做? 另外,如果您知道任何可以帮助我的文档,我真的很感激。

谢谢

解决方法

Athena 和 Presto 支持 Geo-spatial functions,例如:

SELECT ST_Distance(ST_Point(-71.0882,42.3607),ST_Point(-74.1197,40.6976))

根据您想要关注的数据集及其格式,您可以在 S3 中构建一个数据库,该数据库位于您关心的位置,例如美国内布拉斯加州的道路,并对其进行查询。