Beispiel #1
0
    def __init__(self, recreate=False):
        datamodel = Datamodel()
        self.table, self.table_config = datamodel.population()
        self.postgres = Postgresql(user_name='postgres',
                                   password='******',
                                   host='localhost',
                                   port='5432',
                                   db='TestProject')
        self.postgres.initialize_table(self.table,
                                       recreate=False,
                                       **self.table_config)
        self.googlegeo = GoogleGeo()

        # myan: only get major cities data once per request
        self.major_cities_postgres = Postgresql(user_name='postgres',
                                                password='******',
                                                host='localhost',
                                                port='5432',
                                                db='TestProject')
        self.major_cities = self.major_cities_postgres.get(
            "select * from TestMajorCities")
        self.all_states = self.major_cities['state'].values
        self.all_cities = self.major_cities['city'].values
        self.all_lats = self.major_cities['lat'].values
        self.all_lngs = self.major_cities['lng'].values
        self.all_population = self.major_cities['population'].values
def _get_city_info(major_cities):
    place_ids = []
    lats = []
    lngs = []
    states = []

    # base_url = 'http://maps.googleapis.com/maps/api/geocode/json?address='
    progress = 0.0
    google_geo = GoogleGeo()
    for i, city in enumerate(major_cities.city.values):
        sleep(0.5)
        output = dict(place_id=None, state=None, lat=None, lng=None)
        try:
            # response = requests.get(base_url + '{string}'.format(string=city))
            # output = _parse_google_geo_response(response.json())
            output = google_geo.get(city,
                                    fields_to_get=('place_id', 'lat', 'lng',
                                                   'state'))
            if float(i) / len(major_cities) - progress >= 0.1:
                print "Processed {pct}%".format(
                    pct=str(float(i) / len(major_cities) * 100))
                progress = float(i) / len(major_cities)
        except:
            pass

        place_ids.append(output['place_id'])
        states.append(output['state'])
        lats.append(output['lat'])
        lngs.append(output['lng'])

    major_cities['place_id'] = place_ids
    major_cities['state'] = states
    major_cities['lat'] = lats
    major_cities['lng'] = lngs
    major_cities.drop_duplicates(subset='place_id', inplace=True)
    major_cities = major_cities.loc[np.logical_not(
        major_cities.place_id.isnull())]
    return major_cities