我目前正在使用Tweetstream在MongoDB中存储推文 我已经设置了一个运行python 2.7的脚本:
extent =["144.715, -38.03", "145.219, -37.541"]
with tweetstream.FilterStream(username, password, locations=extent) as stream:
for tweet in stream:
db.tweets.save(tweet)
这很好用,并且将推文存储到mongoDb中,但它也存储了根本没有地理位置的推文。即对于coordinates property,,也存储了空白的那些。
对我来说,当前脚本应该只保存指定范围内的推文给我的mongoDb,但那不会发生。
有人可以建议如何修改我的脚本,以便只将我指定的extent
内的地理标记推文发送到mongoDb吗?
答案 0 :(得分:1)
Twitter支持两种不同级别的地理定位准确度,允许用户限制他们共享的信息。
http://support.twitter.com/forums/26810/entries/78525
为什么我会看到某些推文的确切位置,但只有一般推文 其他地区(邻里或城市)?
默认显示是地点位置(如街区或城镇),但是 一些第三方应用程序允许您使用您的确切位置或推文 地址。如果您选择要通过的确切位置显示 第三方应用,实际坐标可以公开分享。
tweetstream.FilterStream返回的推文可以是准确的。有些推文只有地方级精度,在这种情况下,'坐标'键将为无。
u'coordinates': None,
u'place': {u'attributes': {},
u'bounding_box': {u'coordinates': [[[-122.51368188,
37.70813196],
[-122.35845384,
37.70813196],
[-122.35845384,
37.83245301],
[-122.51368188,
37.83245301]]],
u'type': u'Polygon'},
u'country': u'United States',
u'country_code': u'US',
u'full_name': u'San Francisco, CA',
u'id': u'5a110d312052166f',
u'name': u'San Francisco',
u'place_type': u'city',
u'url': u'http://api.twitter.com/1/geo/id/5a110d312052166f.json'},
其他推文将有一个确切的位置,在这种情况下将填充'坐标'键:
u'coordinates': {u'type': 'Point', u'coordinates': [-122.51368188, 37.83245301]}
您需要决定是否对地方级准确性推文感兴趣。如果是,您可以将其坐标存储为多边形,或计算质心。