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
    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
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
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
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
 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
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)
    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)
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
    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
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'