def state2stations(state): """ Translate a state identifier (ie DC) into a list of Station tuples from that state """ state = state[:2].upper() for row in rows(): if row[5] == state: yield tuple(row)
def state2stations(state): """ Translate a state identifier (ie DC) into a list of Station tuples from that state """ state = state[:2].upper() for row in rows(): if row[5]==state: yield tuple(row)
def location2station(location): """ Translate full location into Station tuple by closest match Locations can be in any Google friendly form like "State St, Troy, NY", "2nd st & State St, Troy, NY" and "7 State St, Troy, NY" """ # just forget it, use google location = quote(str(location)) geo_url = 'http://maps.google.com/maps/geo?key=%s&q=%s&sensor=false&output=csv'%(API_KEY,location) point = map(float,urlopen(geo_url).readline().split(',')[-2:]) best,result = 99999999,[] for row in rows(): test_point = map(float, (row[2],row[3])) distance = ((test_point[0]-point[0])**2 + (test_point[1]-point[1])**2)**.5 if distance < best: best,result = distance,row return tuple(result)
def location2station(location): """ Translate full location into Station tuple by closest match Locations can be in any Google friendly form like "State St, Troy, NY", "2nd st & State St, Troy, NY" and "7 State St, Troy, NY" """ # just forget it, use google location = quote(str(location)) geo_url = 'http://maps.google.com/maps/geo?key=%s&q=%s&sensor=false&output=csv' % ( API_KEY, location) point = map(float, urlopen(geo_url).readline().split(',')[-2:]) best, result = 99999999, [] for row in rows(): test_point = map(float, (row[2], row[3])) distance = ((test_point[0] - point[0])**2 + (test_point[1] - point[1])**2)**.5 if distance < best: best, result = distance, row return tuple(result)
def update(self, live=False): self.data = {} # csv update keys = ('latitude','longitude','city','state','zipcode') for row in rows(): if self.station == row[0]: UserDict.update(self, dict(zip(keys,row[2:-1]))) break if not self.data: raise AttributeError,'Station %s not found'%self.station # sgmllib update self.reset() if os.path.isfile(ZFILE) and not live: zfile = zipfile.ZipFile(ZFILE,'r') for name in zfile.namelist(): if name.endswith('%s.xml'%self.station): SGMLParser.feed(self, zfile.read(name)) del zfile break else: #Fetch().start() SGMLParser.feed(self, urlopen(WURL%self.station).read()) self.close()
def update(self, live=False): self.data = {} # csv update keys = ('latitude', 'longitude', 'city', 'state', 'zipcode') for row in rows(): if self.station == row[0]: UserDict.update(self, dict(zip(keys, row[2:-1]))) break if not self.data: raise AttributeError, 'Station %s not found' % self.station # sgmllib update self.reset() if os.path.isfile(ZFILE) and not live: zfile = zipfile.ZipFile(ZFILE, 'r') for name in zfile.namelist(): if name.endswith('%s.xml' % self.station): SGMLParser.feed(self, zfile.read(name)) del zfile break else: #Fetch().start() SGMLParser.feed(self, urlopen(WURL % self.station).read()) self.close()
def stations(): """ Returns iterator of station tuples """ for row in rows(): yield tuple(row)
def __init__(self,outlier=1000): self.sequence = [] for x in rows(): d = float(x[-1]) if d > outlier: continue self.sequence.append(d)