尽管有数据,但python folium地图标记不会在地图上显示

时间:2015-02-09 03:13:02

标签: python twitter dictionary geolocation maps

我有一个代码,我从实用数据科学食谱书中可以看到,他们使用folium和twitter来绘制Twitter粉丝的地理位置。代码运行良好,最后它输出一个html文件,该文件应该包含你的粉丝所在的标记。但是,尽管有数据,我的地图上没有任何标记。

以下是代码:

status_geo = []
status_geo_screen_names = []
for fp in friends_profiles:
    if ('status' in fp and fp['status']['geo'] is not None and 'screen_name' in fp):
        status_geo.append(fp['status']['geo'])
        status_geo_screen_names.append(fp['screen_name'])

print status_geo

输出: [{u' type&#39 ;: u' Point',u' coordinates':[37.27647779,-121.98564579]},{u' type':u&#39 ;点',你'坐标':[33.64158125,-84.43924375]},{u'类型':你'点',你'坐标' :[33.81747122,-116.52908589]},{u' type&#39 ;: u' Point',u' coordinates':[34.01340657,-118.17538228]},{u'键入':点',你'坐标':[38.7974924,-76.1285375]},{u'键入':你'点',你坐标':[43.579385,-116.198543]},{u'输入':你'点',你'坐标':[51.69102332,-0.41811924 ]},{u'输入':你'点',你'坐标':[40.494286,-74.44376]},{u' type':u& #39;点',u'坐标':[53.60089695,-113.49052185]}

print status_geo_screen_names

输出: [u' TicaCoffee',你' sekouandrews',你' Kimtuitive',你' isalsa4u',u' ConsWahoo',u' cre8commongood',u' BrookeHRob',u' pedrohernandez',u' khueggen',u' DMCONCREPUMP',' PhillipLeslie'。 ..]

import folium
from itertools import izip

#Let Folium determine the scale
map = folium.Map(location=[38, -120],zoom_start=3)

for sg, sn in izip(status_geo, status_geo_screen_names):
    map.simple_marker(sg['coordinates'], popup=str(sn))

map.create_map(path='us_states.html')

我们应该看到这样的事情: enter image description here 但无论我在哪里看或缩放,我的地图都没有任何标记: enter image description here

2 个答案:

答案 0 :(得分:2)

我认为这里的问题是你不应该直接在浏览器中查看生成的html,因为它依赖于在文件:///路径中可能无法正确引用的外部javascript库。

尝试使用简单的python服务器来提供该文件。

首先进入生成的html文件所在的目录。 $ cd / path / to / generated / html / file

$ python -m SimpleHTTPServer 8000

现在转到您的浏览器并输入http://localhost:8000/us_states.html(在您的情况下)

希望有所帮助。

答案 1 :(得分:0)

我最近编写了一些采用原始Twitter数据的代码,并使用用户名,经度和纬度从中创建了一个CSV文件,这在Google地球中很好地打开了。假设您已经拥有原始的Twitter数据,那么您应该能够使用它。

import sys
import csv
import json

in_file = raw_input("File to read ex: 'C:\\Python27\\twitdata.txt': ")
out_file = raw_input("CSV file/location to write: ")
csvfile = file(out_file, "w")
csvwriter = csv.writer(csvfile)
row = [ "user", "latitude", "longitude" ]
csvwriter.writerow(row)
tweets_file = open(in_file, 'r')
for line in tweets_file:
try:
    tweet = json.loads(line)
    user = tweet['user']['screen_name']
    latitude = tweet["geo"]["coordinates"][0]
    longitude = tweet["geo"]["coordinates"][1]
    row = [ user, latitude, longitude ]
    csvwriter.writerow(row)
except:
    continue

print "done "
csvfile.close()