我目前正在尝试使用 Python 2.7 中的 Folium 在 Leaflet.js 中生成热图。我想我可能会错误地获取 long/lat 语法以正确呈现它。
csv 文件具有以下布局:名称、经度、纬度
例子:
incident1,-1.44986889,-48.48197937
incident2,-1.37189305,-48.44008189
Run Code Online (Sandbox Code Playgroud)
我写的代码是这样的:
import folium
import csv
from folium import plugins
heatmap_map = folium.Map(location=[51.67109, -1.28278], zoom_start=2)
with open('/tmp/geolocation.csv','rb') as f:
reader = csv.reader(f)
for row in reader:
data = ([row[1]], [row[2]])
hm = plugins.HeatMap(data)
heatmap_map.add_children(hm)
f.close()
heatmap_map.save("/tmp/heatmap.html")
Run Code Online (Sandbox Code Playgroud)
程序运行,保存文件,但当我在浏览器中加载它时,我看不到任何热图。我已经验证我可以创建位置标记,因此它可以按预期加载地图。
恐怕我对 Leaflet.js 的了解不够,无法对生成的 html 文件中的代码进行故障排除。
任何人都可以在这里帮助我并显示数据变量中可能有什么问题,或者可能是遍历我的 csv 文件以生成必要的热图的更好方法吗?
提前致谢
小智 5
我相信您的问题在于数据点的格式。以下应该工作:
with open('/tmp/geolocation.csv','rb') as f:
reader = csv.reader(f)
data = [[row[1], row[2]] for row in reader]
hm = plugins.HeatMap(data)
heatmap_map.add_child(hm)
Run Code Online (Sandbox Code Playgroud)