1

我目前正在使用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 中,但它也存储了根本没有地理位置的推文。即对于坐标属性,空白的也被存储。

对我来说,当前脚本应该只将指定范围内的推文保存到我的 mongoDb,但这并没有发生。

谁能建议如何修改我的脚本以捕获仅将我指定的地理标记推文发送extent到 mongoDb?

4

1 回答 1

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

您需要确定您是否对位置级别准确性推文感兴趣。如果是,您可以将它们的坐标存储为多边形,或计算质心。

于 2012-11-03T14:57:51.937 回答