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

python folium map markers do not show on map despite data

我有一个代码,我是从实用数据科学食谱中得到的,他们在其中使用 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': u'Point', u'coordinates': [37.27647779, -121.98564579]}, {u'type': u'Point', u'coordinates': [33.64158125, -84.43924375]}, { u'type': u'Point', u'coordinates': [33.81747122, -116.52908589]}, {u'type': u'Point', u'coordinates': [34.01340657, -118.17538228]}, {u' type': u'Point', u'coordinates': [38.7974924, -76.1285375]}, {u'type': u'Point', u'coordinates': [43.579385, -116.198543]}, {u'type' : u'Point', u'coordinates': [51.69102332, -0.41811924]}, {u'type': u'Point', u'coordinates': [40.494286, -74.44376]}, {u'type': u '点',u'坐标':[53.60089695, -113.49052185]}

print status_geo_screen_names

输出: [u'TicaCoffee', u'sekouandrews', u'Kimtuitive', u'isalsa4u', u'ConsWahoo', u'cre8commongood', u'BrookeHRob', u'pedrohernandez', u'khueggen', u'DMCONCREPUMP' , 你'菲利普莱斯利'...]

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

我们应该看到这样的东西: 但是无论我在哪里查看或缩放,我的地图都没有任何标记:

我最近写了一些代码,获取原始 Twitter 数据,并从中创建一个 CSV 文件,其中包含用户名、经度和纬度,可以在 Google earth 中很好地打开。假设您已经拥有原始的 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()    

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

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

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

$ python -m SimpleHTTPServer 8000

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

希望对您有所帮助。