家庭作业帮助:Python如何使用long和lat确定推文的来源

时间:2016-11-16 05:57:15

标签: python python-3.x

真的很困惑我的作业中的一部分,没有评分或其他任何东西,但我仍然希望能够完成并理解它。

我正在尝试“近似”与其时区相对应的区域(不是真实数据)。东方( P1。P2.P3,P4 ,太平洋( P7,P8,P9,P10 ),山 ( P5,P6,P7,P8 ),中央( P3,P4,P5,P6 )....

我试图确定推文的来源,通过确定推文的纬度和经度属于哪个区域(我有一个txt文件,所有推文都有一个与之关联的长整数,例如:{{ 1}}。点的值是:(矩形)

[36.970152730000002, -84.090040380000005] 4 2011-09-02 17:40:11 Chicken flatheads at taco bell my life is complete)

例如,如果推文位于p1,p2,p3,p4之间,那么它们来自东方。我该怎么做?

是的,这是家庭作业的一部分,我知道有时你们不喜欢协助做作业,特别是如果没有提供。但是我5小时前给老师发了电子邮件,尽管他答应他会在今晚(早上12点48分)回复,但他仍然没有回复。

答案将得到解释,但即使评论也会有所帮助:)这是一个很长的任务,我完成了95%这个部分是必要的..但​​我只是对长期的拉特业务感到困惑。

1 个答案:

答案 0 :(得分:0)

假设区域是矩形。

只需检查lat的值,长度与“border”值对齐。

所以,对于东方:

if lat >= 24.660845 and lat < 49.189787 and long <= -67.444574 and long > -87.518395:
    return True 

或者,如果区域是您所显示的顺序(并且仅在经度上变化),请检查。

当然,如果这些区域是不规则多边形,那将是一个全新的问题。

修改: 一种方法是使用contains(lat,long)方法创建Region类:

class Region:
    def __init__(self, lat_tuple, long_tuple):
        self.lat_tuple = lat_tuple
        self.long_tuple = long_tuple

    def contains(self, lat, long):
        return self.lat_tuple[0] <= lat and lat < self.lat_tuple[1] and\
               self.long_tuple[0] <= long and long < self.long_tuple[1]

并将其用作:

eastern = Region((24.660845, 49.189787), (-87.518395, -67.444574))
print(eastern.contains(34.0, - 70.10))
print(eastern.contains(14.0, - 70.10))