如何从csv文件生成folium热图?

时间:2016-03-09 11:16:40

标签: python csv folium

我目前正在尝试使用Python 2.7中的Folium在Leaflet.js中生成热图。我想我可能会错误地使用long / lat语法来正确呈现它。

csv文件具有以下布局:名称,经度,纬度

示例:

incident1,-1.44986889,-48.48197937
incident2,-1.37189305,-48.44008189

我写的代码看起来像这样:

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")

程序运行,保存文件但我在浏览器中加载时看不到任何热图。我已经确认我可以创建位置标记,因此它正在加载地图。

我担心我对Leaflet.js的了解不足以解决生成的html文件中的代码问题。

任何人都可以请你帮我看看数据变量可能有什么问题,或者可能是更好地迭代我的csv文件以生成必要的热图?

提前致谢

1 个答案:

答案 0 :(得分:4)

我相信你的问题在于数据点的格式化。以下应该有效:

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_children(hm)