コード例 #1
0
def get_latlong_address(address):
    geocoder = OpenCageGeocode(key)
    results = geocoder.geocode(address)
    return results

# 21.023783719336993,105.84760665893556
# print(get_district_coordinates(21.023783719336993,105.84760665893556))


# geocoder = OpenCageGeocode(key)
#
# results = geocoder.reverse_geocode(21.047324, 105.779932)
# pprint(results)


# geocoder = OpenCageGeocode(key)


# results = geocoder.reverse_geocode(44.8303087, -0.5761911)
#
# query = u'Hoàng Quốc Việt, Cầu Giấy, Hanoi'
# results = geocoder.geocode(query)
# print(u'%f,%f;%s;%s' % (results[0]['geometry']['lat'],
#                         results[0]['geometry']['lng'],
#                         results[0]['components']['country_code'],
#                         results[0]['annotations']['timezone']['name']))
コード例 #2
0
def get_coordinates(location, df):
    '''
    gets specific geometric location given a fuzzy address using OpenCage Geocoder.
    accepts a string address
    outputs latitude and longitude
    '''

    # print(location, df)
    postal_code = [int(s) for s in location.split() if s.isdigit()]
    # place_name = [str(s) for s in location.split() if not s.isdiget()]
    numbers = str(postal_code[-1])

    geocoder = OpenCageGeocode(OpenCageKey)

    locate = geocoder.geocode(location)

    geometry = locate[0]['geometry']
    lat_long = list(geometry.values())
    lat = lat_long[0]
    long = lat_long[1]
    # appends 1 reading for every hour in the day
    for i in range(96):
        #             results['Latitude [deg]'].append(lat)
        #             results['Longitude [deg]'].append(long)
        df['Latitude [deg]'] = lat
        df['Longitude [deg]'] = long
    lat = str(lat)
    long = str(long)
    return df, lat, long
コード例 #3
0
    def save(self, *args, **kwargs):
        initial_start = self.start
        self.slug = slugify(self.name)
        super().save(*args, **kwargs)

        # Check if the start location has changed
        start_location_changed = False

        if not self.start:
            self.start = self.calculate_walk_start()
            start_location_changed = True

        if self.start != initial_start:
            start_location_changed = True

        # check if the cache_has expired
        if self.reverse_geocode_cache_time is None:
            cache_expired = True
        else:
            cache_expired = self.reverse_geocode_cache_time < (
                now() - timedelta(days=180)
            )

        # update the location details if we need to
        if start_location_changed or cache_expired:
            if settings.OPENCAGE_API_KEY:
                geocoder = OpenCageGeocode(settings.OPENCAGE_API_KEY)

                try:
                    results = geocoder.reverse_geocode(
                        round(self.start[1], 6),
                        round(self.start[0], 6),
                        language="en",
                        limit=1,
                    )

                    if results and len(results):
                        self.what3words = (
                            results[0].get("annotations").get("what3words").get("words")
                        )
                        self.geohash = results[0].get("annotations").get("geohash")
                        self.continent = results[0].get("components").get("continent")
                        self.country = results[0].get("components").get("country")
                        self.state = results[0].get("components").get("state")
                        self.county = results[0].get("components").get("county")
                        self.city = results[0].get("components").get("city")
                        self.suburb = results[0].get("components").get("suburb")
                        self.road = results[0].get("components").get("road")
                        self.postcode = results[0].get("components").get("postcode")
                        self.formatted = results[0].get("formatted")

                        self.reverse_geocode_cache_time = now()
                        super().save(*args, **kwargs)

                except RateLimitExceededError as e:
                    print(e)

        self.route.transform(3857)
        self.route_length = D(m=self.route.length).mi
        super().save(*args, **kwargs)
コード例 #4
0
 def __init__(self):
     self.point = [0, 0]
     self.range = 100
     ctx = ssl.create_default_context(cafile=certifi.where())
     geopy.geocoders.options.default_ssl_context = ctx
     self.locator = geopy.Nominatim(user_agent="BDS_project")
     self.geocoder = OpenCageGeocode("f3d708b60c224f75959258777933a2ec")
コード例 #5
0
 def getLatituteAndLongitute(place):
     try:
         key = '6c81f22653b6405cb3e5db02b048dbcb'  # get api key from:  https://opencagedata.com
         geocoder = OpenCageGeocode(key)
         results = geocoder.geocode(place)
         if results:
             lat, lng = results[0]['geometry']['lat'], results[0][
                 'geometry']['lng']
         else:
             results = geocoder.geocode(place.split(' ', 1)[1])
             if results:
                 lat, lng = results[0]['geometry']['lat'], results[0][
                     'geometry']['lng']
             else:
                 results = geocoder.geocode(place.rsplit(' ', 1)[1])
                 if results:
                     lat, lng = results[0]['geometry']['lat'], results[
                         0]['geometry']['lng']
                 else:
                     results = geocoder.geocode(place.rsplit(' ', 2)[1])
                     lat, lng = results[0]['geometry']['lat'], results[
                         0]['geometry']['lng']
         return lat, lng
     except RateLimitExceededError:
         return "Your rate limit has expired"
コード例 #6
0
ファイル: geocode.py プロジェクト: nst-guide/data
    def __init__(self):
        super(Geocode, self).__init__()

        load_dotenv()
        self.api_key = os.getenv('OPENCAGEDATA_API_KEY')
        assert self.api_key is not None, 'Opencagedata api key missing'
        self.geocoder = OpenCageGeocode(self.api_key)
コード例 #7
0
ファイル: get_vt_int.py プロジェクト: kartone/sodinokibiTA
    def __init__(self, parser):
        args = parser.parse_args()
        self.vt_api_key = args.vt_api_key
        self.oc_api_key = args.oc_api_key
        self.samples_path = args.spath
        self.reports_path = args.rpath

        if not self.vt_api_key:
            self.vt_api_key = os.environ.get("VT_API_KEY")
            if not self.vt_api_key:
                parser.print_help()
                print('[-] No VirusTotal Enterprise API key supplied')

        if not self.oc_api_key:
            self.oc_api_key = os.environ.get("OC_API_KEY")
            if not self.oc_api_key:
                parser.print_help()
                print('[-] No OpenCage API key supplied')

        gc = OpenCageGeocode(self.oc_api_key)
        sl = get_filename(self.samples_path)
        # Comment this line if you do want to query VirusTotal
        query_vt(sl, self.reports_path, self.vt_api_key)
        rl = get_filename(self.reports_path)
        attacks = parse_vt_report(rl, self.reports_path, self.samples_path, gc)
        dump_data(attacks, pd)
コード例 #8
0
    def _get_data():
        response = client.Transactions.get(access_token,
                                           start_date= enddate(),
                                           end_date= startdate())
        transactions = response['transactions']
        
        # Manipulate the count and offset parameters to paginate
        # transactions and retrieve all available data
        while len(transactions) < response['total_transactions']:
                response = client.Transactions.get(access_token,
                                               start_date=enddate(),
                                               end_date=startdate(),
                                               offset=len(transactions)
                                              )
                transactions.extend(response['transactions'])
        key = 'Enter Geocoder Key'
        geocoder = OpenCageGeocode(key)
        for i in range(len(transactions)):
            query = transactions[i]['location']['address']
            results = geocoder.geocode(query)
            transactions[i]['lat'] = results[0]['geometry']['lat']
            transactions[i]['lng'] = results[0]['geometry']['lng']
            
        myList = []

        return jsonify({'data': transactions})
コード例 #9
0
    def weather_forecast(city):
        """
        Get weather forecast. Here used Open Cage Geocoder (link on README.md). It's for getting lat and lon of city
        because free type of API OpenWeather cannot send you result on just city name.

        :param city: str, name of city
        :return: dict, with key (category) and value from result of API for displaying on the page
        """
        geocoder = OpenCageGeocode(GEOCODE_TOKEN)

        results = geocoder.geocode(city)

        weather_url = requests.get(
            'https://api.openweathermap.org/data/2.5/onecall?lat={}&lon={}&exclude=current,minutely,hourly,alerts&units=metric&appid={}'
            .format(results[0]['geometry']['lat'],
                    results[0]['geometry']['lng'], OPEN_WEATHER_TOKEN))

        weather_data = weather_url.json()

        forecast = []

        for day in weather_data['daily'][:5]:
            timestamp = datetime.datetime.fromtimestamp(day['dt'])

            forecast.append({
                'date': timestamp.strftime('%Y-%m-%d'),
                'weather': day['weather'][0]['description'].lower(),
                'temp': round(day['temp']['day']),
                'humidity': day['humidity'],
                'wind_speed': round(day['wind_speed']),
                'wind_degree': round(day['wind_deg'])
            })

        return forecast
コード例 #10
0
def f():
    global root, lat, lon
    city_name = s.get()
    complete_url = base_url + "appid=" + api_key + "&q=" + city_name
    response = requests.get(complete_url)
    x = response.json()
    if x['cod'] != "404":
        y = x["main"]

        current_temperature = y["temp"]
        l3['text'] = '%.2f' % (current_temperature - 273.15)

        current_pressure = y["pressure"]
        l5['text'] = current_pressure

        current_humidity = y["humidity"]
        l7['text'] = current_humidity

        z = x["weather"]
        weather_description = z[0]["description"]
        l9['text'] = weather_description
        llkey = 'd39bcd9700844b8290f3e10ce6272965'
        geocoder = OpenCageGeocode(llkey)
        query = city_name
        results = geocoder.geocode(query)
        lat = results[0]['geometry']['lat']
        lng = results[0]['geometry']['lng']
        #print (lat, lng)
    else:
        messagebox.showinfo("OOPS", "Invalid City Name")
        s.set('')
コード例 #11
0
def update_location_dictionary(data):
    '''
    Identify cities that are not in the location data dictionary
    Use OpenCageGeocode to find location info
    Append location data dictionary
    '''
    data.city = data.city.apply(lambda x: x[9:] if type(x) != float else x)
    new = data[-data.city.isna()]
    cities = new.city.unique().tolist()
    still_need = []
    locations = list(location_dict)
    for each in cities:
        if each not in locations:
            still_need.append(each)
    key = "94b38715f5b64f4db83c6313faf5893e"
    geocoder = OpenCageGeocode(key)
    location_cache = {}
    for each in still_need:
        try:
            location_cache[each] = geocoder.geocode(each)[0]['geometry']
            location_cache[each]['country'] = geocoder.geocode(
                each)[0]['components']['country']
            if location_cache[each]['country'] == "United States of America":
                location_cache[each]['state'] = geocoder.geocode(
                    each)[each][0]['components']['state']
        except:
            pass
    with open("loc_data.json", "r+") as file:
        info = json.load(file)
        info.update(location_cache)
        file.seek(0)
        json.dump(info, file)
コード例 #12
0
ファイル: zipcode_locator.py プロジェクト: Alsaheem/pepper
def get_zipcode_location(zipcode):
    geocoder = OpenCageGeocode(key)
    query = str(zipcode)
    results = geocoder.geocode(query)
    address = results[0]['formatted']
    latitude = results[0]['geometry']['lat']
    longitude = results[0]['geometry']['lng']
    return [address, longitude, latitude]


# from geopy.geocoders import Nominatim
# geolocator = Nominatim(user_agent="geoapiExercises")

# def get_zip_code_location(zipcode):
#     location = geolocator.geocode({"postalcode": zipcode})
#     if location is None:
#         print('location not available')
#         print('input another zipcode')
#         return None
#     else:
#         print(location.address)
#         print(location.longitude)
#         print(location.latitude)
#         return location.point
# print(get_zip_code_location(81929))
コード例 #13
0
 def result(self):
     """
     Returns a list of geocoded data
     """
     result = []
     if isinstance(self.title, list):
         place = ' '.join(self.title)
     else:
         place = self.title
     if place is not None:
         if Geolocation.api_count < 0:
             raise ValueError('Negative api count')
         elif Geolocation.api_count <= Geolocation.api_limit:
             result = OpenCageGeocode(GEOCODE_KEY).geocode(place)
             self.api_count_inc()
             self.geocode_attempted = True
             if len(result) == 0:
                 self.geocode_array = None
                 return self.geocode_array
             else:
                 self.geocode_array = result
                 self.location()
                 return self.geocode_array
         elif Geolocation.api_count >= Geolocation.api_limit:
             raise ValueError('Api limit reached')
     self.geocode_array = None
     return self.geocode_array
コード例 #14
0
ファイル: full_clean.py プロジェクト: mdhwang/tinderbot
def update_location_dictionary(data):
    '''
    Identify cities that are not in the location data dictionary
    Use OpenCageGeocode to find location info
    Append location data dictionary
    '''
    new = data[-data.city.isna()]
    cities = new.city.unique().tolist()
    still_need = []
    locations = list(location_dict)
    for each in cities:
        if each not in locations:
            still_need.append(each)
    key = "94b38715f5b64f4db83c6313faf5893e"
    geocoder = OpenCageGeocode(key)
    location_cache = {}
    for each in still_need:
        try:
            location_cache[each] = geocoder.geocode(each)[0]['geometry']
        except:
            pass
    with open("loc_data.json", "r+") as file:
        info = json.load(file)
        info.update(location_cache)
        file.seek(0)
        json.dump(info, file)
コード例 #15
0
def geometry():
    geokey = '92244e2e0ea946d3ac6a1024ef5a74dc'
    data = []  # create empty lists

    geocoder = OpenCageGeocode(geokey)
    df = SLDataPreprocess()
    df.drop(['Number', 'Date_Added', 'Date_Announced'], axis=1, inplace=True)

    newDataSet = df['Detected_Prefecture'].value_counts()
    for index, row in newDataSet.items():  # iterate over rows in dataframe
        lat = 0
        long = 0
        location = ''
        try:
            City = str(index)
            query = str(City) + ', Sri Lanka'
            geolocator = Nominatim(user_agent="slcovidprediction")
            location = geolocator.geocode(query)

            if len(location.raw) > 0:
                lat = location.latitude
                long = location.longitude

                data.append({
                    'City': index,
                    'Cases': row,
                    'lat': lat,
                    'long': long
                })
        except AttributeError:
            continue
    df4 = pd.DataFrame(data)
    print('geomatry csv created!!')
    df4.to_csv('geometry.csv')
コード例 #16
0
def geocoding(postal, key, country="Singapore"):
    query = str(postal) + ", " + country
    result = OpenCageGeocode(key).geocode(query, no_annotations=1,
                                          language="en",
                                          proximity='1.29823, 103.85392')

    return result[0]["geometry"]["lat"], result[0]["geometry"]["lng"]
コード例 #17
0
ファイル: readingdata.py プロジェクト: arminalgln/solar
 def __get_address_lat_lng(self):
     geocoder = OpenCageGeocode(self.location_api)
     self.whole_location_info = geocoder.geocode(self.address)[0]
     geo = self.whole_location_info['geometry']
     lat, lng = geo['lat'], geo['lng']
     self.lat = lat
     self.lng = lng
コード例 #18
0
def find_coordinates(city_name):
    key = '85f15821952a4e2d9aa204ba3336b3d2'
    geocoder = OpenCageGeocode(key)
    results = geocoder.geocode(city_name)
    coordinates = (results[0]['geometry']['lat'],
                   results[0]['geometry']['lng'])
    return coordinates
コード例 #19
0
def get_coords(combination, p_results, n_places, geokey):
    geocoder = OpenCageGeocode(geokey)
    print('\nStart searching coordinates for %d new places' % n_places)
    t0 = time()
    t1 = time()
    # Num of allready examined places
    previous = len(p_results)
    count = 0
    # Searh only non examined places
    for place in combination[previous:]:
        if (count % 100 == 0):
            print('\tExamined %d new places in %d sec' %
                  (count, int(time() - t1)))
            t1 = time()
        if (count == n_places):
            break
        if (len(place) > 0):
            result = geocoder.geocode(place)
            # If an actual result is returned
            if (result):
                long = result[0]['geometry']['lng']
                lat = result[0]['geometry']['lat']
                p_results.append([long, lat])
            count += 1
        else:
            p_results.append('')
    print('Total time %d secs' % int(time() - t0))
    return (p_results)
コード例 #20
0
def get_coordinates(place, verbosity=0):
    """
    Get coordinates for the given place
    :param place: Place name
    :param verbosity: Verbosity level
    :return: dictionary with place info
    """
    geocoder = OpenCageGeocode(API_KEY)
    results = geocoder.geocode(place, language='native', limit=1)
    if results and len(results):
        data = {
            "lat":
            results[0]["geometry"]["lat"],
            "lng":
            results[0]["geometry"]["lng"],
            "place":
            results[0]["formatted"],
            "city":
            results[0]['components']['city']
            if 'city' in results[0]['components'] else None,
            "flag":
            results[0]["annotations"]["flag"],
            "timezone":
            results[0]['annotations']['timezone']['name']
        }
        if verbosity > 0:
            print(u"Latitude: %f, Longitude: %f" % (data["lat"], data["lng"]))
            print(u"Detected City: %s %s  - %s" %
                  (data["city"], data["flag"], data["timezone"]))
        return data
    else:
        raise InvalidPlaceError(place)
コード例 #21
0
    def verificarCoordenadas(
        self
    ):  #Verifica se as coordenadas da ocorrência correspondem ao estado indicado.
        key = '5b7a26bfcd904e07a49f085037f6d7ba'
        geocoder = OpenCageGeocode(key)

        if self.data is None:
            self.listdata()
        count = 0
        for linha in self.data:
            try:
                results = geocoder.reverse_geocode(float(linha[29]),
                                                   float(linha[30]),
                                                   no_annotations='1',
                                                   language='pt')
                if results and len(results):
                    count += 1
                    coord = (results[0]['components']['state_code'])
                    #print (coord)
                    #if coord == linha[26]:
                    #   print ("A coordenada corresponde ao estado.")
                if coord != linha[26]:
                    print("A coordenada da ocorrência", count + 1,
                          "não correspode ao estado da ocorrência.")
                    print("Estado indicado: ", linha[26],
                          "|  Estado indicado pela coordenada: ", coord)

            except InvalidInputError as ex:
                print(ex)
コード例 #22
0
def  addressService(request): 
    key = 'deccf3b07191435ab3be48da9c0c883d'
    geocoder = OpenCageGeocode(key)
    #Reading The data from Excel
    getting_current_path = r'%s' % os.getcwd().replace('\\','/')

    df = pd.read_excel(getting_current_path+'/File/Input.xlsx')
    latitude = []
    longitude =  []
    recent_address = []
    try: 
        for single_address in df['Address']:
            address = single_address.strip()
            address_results = geocoder.geocode(address, no_annotations='1')
            if address_results and len(address_results):
                recent_address.append(address)
                latitude.append( address_results[0]['geometry']['lat'])
                longitude.append(address_results[0]['geometry']['lng'])
            else:
                sys.stderr.write("not found: %s\n" % address)
        #Creating Dataframe
        output_df = pd.DataFrame({'Address':recent_address, 'latitude': latitude,'longitude':longitude})
        #Writing DataFrame into Excel
        output_df.to_excel(getting_current_path+'/File/Output.xlsx')
        result_data =  output_df.T.to_dict().values() #Convert Datadrame into List Of Dict
    except IOError:
        print('Error: File %s does not appear to exist.' % df )
    except RateLimitExceededError as ex:
        print(ex)
    return HttpResponse(json.dumps(result_data))
コード例 #23
0
def association_between_oc(key, nameEntity, factList, stack, replaceNameEntity,
                           bounds):
    geocoder = OpenCageGeocode(key)
    top_admin1Code = stack.top().getAdmin1code()
    top_featureValue = stack.top().getFeatureValue()
    query = geocoder.geocode(nameEntity,
                             countrycode='mx',
                             language='es',
                             bounds=bounds,
                             limit=1,
                             no_annotations=1)
    try:
        state_code = query[0]["components"]["state_code"]
    except Exception as e:
        coordinates = Point(query[0]["geometry"]["lng"],
                            query[0]["geometry"]["lat"])
        state_code = getAdmin1.bridge(coordinates)
    if (state_code == top_admin1Code):
        factList.append("(association_between {0} {1} yes)".format(
            replaceNameEntity,
            stack.top().getName()))
    else:
        factList.append("(association_between {0} {1} no)".format(
            replaceNameEntity,
            stack.top().getName()))
コード例 #24
0
def map_countries():
    country_list = {}
    key = 'key'
    geocoder = OpenCageGeocode(key)
    addressfile = 'countries.txt'
    try:
        with open(addressfile, 'r') as f:
            for line in f:
                address = line.strip()
                result = geocoder.geocode(address, no_annotations='1')

                if result and len(result):
                    longitude = result[0]['geometry']['lng']
                    latitude = result[0]['geometry']['lat']
                    print(u'%f;%f;%s' % (latitude, longitude, address))
                    country_list[address] = [latitude, longitude]
                else:
                    #sys.stderr.write("not found: %s\n" % address)
                    print("not found: %s\n" % address)
                    country_list[address] = [0, 0]

    except IOError:
        print('Error: File %s does not appear to exist.' % addressfile)

    filehandler = open(dump_file, 'wb')
    pickle.dump(country_list, filehandler)
コード例 #25
0
ファイル: Utils.py プロジェクト: andysong-dsat/GetUVI
    def GetCoordinatesOfCity(self, city='Saratoga,ca, us'):
        ''' Convert a city to coordinates (latitude, lobgitude)

        input: city {, country} String
        output: return coordinates (latitude, lobgitude)
        '''

        from geopy.geocoders import Nominatim

        self.geolocator = Nominatim(user_agent="Project X Get UVI of a City")

        try:
            self.location = self.geolocator.geocode(city)
        except:
            # if geopy failed, use OpenCageGeocode wensite
            from opencage.geocoder import OpenCageGeocode
            self.geocoder = OpenCageGeocode(OCD_API_KEY)
            self.results = self.geocoder.geocode(city)
            self.coordinates = {
                'latitude': self.results[0]['geometry']['lat'],
                'longitude': self.results[0]['geometry']['lng']
            }
        else:
            self.coordinates = {
                'latitude': self.location.latitude,
                'longitude': self.location.longitude
            }

        return (self.coordinates)
コード例 #26
0
ファイル: sapd.py プロジェクト: frongk/sapd-data
    def geocoder_upsert(self, addresses):

        geocoder = OpenCageGeocode(OPENCAGE_KEY)

        for address in addresses:

            if not self.address_exist_check(address):
                query = address
                result = geocoder.geocode(query)

                try:
                    lat = result[0]['geometry']['lat']
                    lng = result[0]['geometry']['lng']
                except:
                    print(address)
                    print(result)

                    lat = 0
                    lng = 0

                id_ = self.get_max_geo_id() + 1
                row = (id_, address, lat, lng)


                sql_ = "insert into " + self.geocode_table +\
                       "(id, address, lat, long) values" +\
                       "(?,?,?,?)"

                self.cursor.execute(sql_, row)
                self.conn.commit()
コード例 #27
0
def geoencode(city):
    print("\n\n\n\n\n\n\n", city, "\n\n\n\n\n\n\n")
    key = 'd89606c6137941b8a4b6ab98eb1dea4c'
    geocoder = OpenCageGeocode(key)
    results = geocoder.geocode(city)
    print(results[0])
    return results[0]['geometry']['lat'], results[0]['geometry']['lng']
コード例 #28
0
ファイル: time.py プロジェクト: wa9ecj/aprsd
    def command(self, fromcall, message, ack):
        api_key = self.config["services"]["aprs.fi"]["apiKey"]
        try:
            aprs_data = plugin_utils.get_aprs_fi(api_key, fromcall)
        except Exception as ex:
            LOG.error("Failed to fetch aprs.fi data {}".format(ex))
            return "Failed to fetch location"

        # LOG.debug("LocationPlugin: aprs_data = {}".format(aprs_data))
        lat = aprs_data["entries"][0]["lat"]
        lon = aprs_data["entries"][0]["lng"]

        try:
            utils.check_config_option(self.config, "opencagedata", "apiKey")
        except Exception as ex:
            LOG.error("Failed to find config opencage:apiKey {}".format(ex))
            return "No opencage apiKey found"

        try:
            opencage_key = self.config["opencagedata"]["apiKey"]
            geocoder = OpenCageGeocode(opencage_key)
            results = geocoder.reverse_geocode(lat, lon)
        except Exception as ex:
            LOG.error("Couldn't fetch opencagedata api '{}'".format(ex))
            # Default to UTC instead
            localzone = pytz.timezone("UTC")
        else:
            tzone = results[0]["annotations"]["timezone"]["name"]
            localzone = pytz.timezone(tzone)

        return self.build_date_str(localzone)
コード例 #29
0
ファイル: address_locator.py プロジェクト: Alsaheem/pepper
def get_address_location(city):
    geocoder = OpenCageGeocode(key)
    query = str(city)
    results = geocoder.geocode(query)
    address = results[0]['formatted']
    latitude = results[0]['geometry']['lat']
    longitude = results[0]['geometry']['lng']
    return [address, longitude, latitude]
コード例 #30
0
 def __init__(self, debug=False, **kwargs):
     self.__setup_engine(**kwargs)
     self.__id = 0
     self.debug = debug
     key = os.environ['OPENCAGE_KEY']
     self.__geocoder = OpenCageGeocode(key)
     # THIS SHOULD ALREADY EXIST! IN THE DATA. THOMAS, PLEASE UPDATE
     self.city = 'kitchener-waterloo'