真的很困惑我的作业中的一部分,没有评分或其他任何东西,但我仍然希望能够完成并理解它。
我正在尝试“近似”与其时区相对应的区域(不是真实数据)。东方( 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%这个部分是必要的..但我只是对长期的拉特业务感到困惑。
答案 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))