【发布时间】:2021-10-26 14:58:27
【问题描述】:
我有一个包含venue_id(大约1,500 个)、物理地址、纬度和经度的数据集。
-
我想创建一个名为“overlap”的列,它会计算重叠的venue_id 的数量(如果有)。
-
例如,对于venue_id == 1,如果在2km 半径内有任何其他venue_ids 在2km 半径范围内重叠,则将其计数并保存在“重叠”列中。如果有 2 个场所 ID 与场所 ID == 1 重叠,则“重叠”将等于 2。
到目前为止,我首先尝试使用“folium”对其进行可视化
import pandas as pd
import folium
m = folium.Map(location=[37.553975551114476, 126.97545224493899],
zoom_start=10)
locations = df['lat'], df['lng']
df = df.dropna(how='any')
print(df.isna().sum())
for _, row in df.iterrows():
folium.Circle(location=[row['lat'], row['lng']],
radius=2000).add_to(m)
m.save("index.html")
问题是,如果我理解正确,folium 的 Circle 会在“像素”中绘制一个圆圈,并且它固定为我选择创建基本地图的基本“缩放级别”。
- 我最好的猜测是使用“haversine”包,但如果有更好的方法来完成这项工作,你们中的任何人都可以提供一些建议吗?
附言只要正确计算了 2 公里半径测量值,就不需要实际可视化结果,我只尝试通过 folium 可视化它,看看我是否可以“手动”计算重叠的圆圈......
提前致谢。
【问题讨论】:
-
所以你不需要这些区域?仅在有重叠的情况下?
-
如果我正确阅读了Documentation,
folium.Circle以米为单位绘制,并将其绘制为矢量,因此它应该独立于缩放级别。对我的机器的快速测试功能与文档中提到的完全一样(folium 0.12.1)。 folium.CircleMarker 使用像素作为半径 -
@AlfredRodenboog 我再次阅读了文档,是的,它独立于缩放功能,但我真的不确定半径 = 2000 的圆圈是否精确地表示 2 公里。
-
@UlisesBussi 听起来像!会尽快试一试。非常感谢!
-
@UlisesBussi 是的,我只需要计算每个场地 ID 的重叠次数