仅限制地理标记的推文流入mongodb

时间:2012-11-03 13:04:06

标签: python mongodb twitter pymongo tweetstream

我目前正在使用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吗?

1 个答案:

答案 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]}

您需要决定是否对地方级准确性推文感兴趣。如果是,您可以将其坐标存储为多边形,或计算质心。