コード例 #1
0
def main(user_lst, friends_lst, num):
    map_html = folium.Map()
    marker_cluster = MarkerCluster().add_to(map_html)
    geolocator = ArcGIS(timeout=10)
    lst = [
        "Name: ", "Location: ", "Description: ", "url: ", "Followers: ",
        "Friends: ", "Listed: ", "Created: ", "Favourites: ", "Posts: "
    ]

    # Adding User on map

    place = geolocator.geocode(user_lst[1])
    if place == None:
        popup_message = '<img src="{}"/><br>'.format(user_lst[-1])
        for i in range(len(user_lst) - 1):
            popup_message += "{}{}<br>".format(lst[i], user_lst[i])
        marker_cluster.add_child(
            folium.Marker(location=[randint(-90, 90),
                                    randint(-180, 180)],
                          popup=popup_message,
                          icon=folium.Icon(color='green')))
    else:
        popup_message = '<img src="{}"/><br>'.format(user_lst[-1])
        for i in range(len(user_lst) - 1):
            popup_message += "{}{}<br>".format(lst[i], user_lst[i])
        marker_cluster.add_child(
            folium.Marker(location=[place.latitude, place.longitude],
                          popup=popup_message,
                          icon=folium.Icon(color='green')))

    # Adding friends on map

    for i in range(len(friends_lst)):
        place = geolocator.geocode(friends_lst[i][1])
        if place == None:
            popup_message = '<img src="{}"/><br>'.format(friends_lst[i][-1])
            for j in range(len(friends_lst[i]) - 1):
                popup_message += "{}{}<br>".format(lst[j], friends_lst[i][j])
            marker_cluster.add_child(
                folium.Marker(location=[randint(-90, 90),
                                        randint(-180, 180)],
                              popup=popup_message,
                              icon=folium.Icon(color='red')))
        else:
            popup_message = '<img src="{}"/><br>'.format(friends_lst[i][-1])
            for j in range(len(friends_lst[i]) - 1):
                popup_message += "{}{}<br>".format(lst[j], friends_lst[i][j])
            marker_cluster.add_child(
                folium.Marker(location=[place.latitude, place.longitude],
                              popup=popup_message,
                              icon=folium.Icon(color='red')))

    map_html.save("templates/map_html.html")
コード例 #2
0
def process():

  # Load enviroment variables from .env file
  load_dotenv(verbose=True)

  stores = []

  api_key = os.getenv("PLACES_API_KEY")
  gmaps = googlemaps.Client(key=api_key)

  text_search_results = googlemaps.places.places_autocomplete(gmaps, "Aldi in New Jersey")
  pprint.pprint(text_search_results)

  # Connect to ArcGIS 
  username = os.getenv('ARCGIS_USERNAME')
  password = os.getenv('ARCGIS_PASSWORD')
  referer = os.getenv('ARCGIS_REFERER')
  arcgis = ArcGIS(username, password, referer)

  # Retrieve the latitude and longitude for each store
  for store in stores:
    result = arcgis.geocode(store.get_full_address())
    store.longitude = result.longitude
    store.latitude = result.latitude
    time.sleep(0.1)

  # Create a CSV file
  with open(output_path, 'a') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')

    for store in stores:
      writer.writerow([store.latitude, store.longitude, store.streetAddress, store.locality, store.state, store.postal])
コード例 #3
0
def film_layer(contents):
    """
    list -> layer

    Takes a list of lists and returns a layer with marked locations where the movie was set.
    """
    fg = folium.FeatureGroup(name="Pointers")
    count = 0
    # Receive a numbers of films user want to be shown on the map
    film_number = int(
        input("How much films do you want to receive from {} films: ".format(
            len(contents))))
    if film_number > len(contents):
        return "Wrong input"
    for line in contents:
        if count == film_number:
            break
        count += 1
        try:
            # Decoding an address of location
            geolocator = ArcGIS(timeout=10)
            location = geolocator.geocode(line[1])
            fg.add_child(
                folium.Marker(location=[location.latitude, location.longitude],
                              popup=line[0],
                              icon=folium.Icon(color="red")))
        except AttributeError:
            continue
    return fg
コード例 #4
0
ファイル: acme.py プロジェクト: stephencz/imgis-final-project
def process():
    soup = get_soup(data_url)

    entries = [x for x in soup.findAll('a', {'class': 'Directory-listLink'})]

    data_links = []
    for entry in entries:
        if (int(entry['data-count'][1:-1]) > 1):
            sub_soup = get_soup(link_base + str(entry['href']))
            links = [
                x for x in sub_soup.findAll('a', {'class': 'Teaser-titleLink'})
            ]
            for link in links:
                data_links.append(link_base + str(link['href'])[2:])

        else:
            data_links.append(link_base + str(entry['href']))

    for link in data_links:
        print(link)

    stores = []
    for link in data_links:
        print(link)

        soup = get_soup(link)

        streetAddress = soup.find(itemprop='streetAddress').get('content')
        locality = soup.find(itemprop='addressLocality').get('content')
        state = soup.find('abbr', {'class': 'c-address-state'}).text
        postal = soup.find('span', {'class', 'c-address-postal-code'}).text

        stores.append(Store(streetAddress, locality, state, postal))

    # Connect to ArcGIS
    username = os.getenv('ARCGIS_USERNAME')
    password = os.getenv('ARCGIS_PASSWORD')
    referer = os.getenv('ARCGIS_REFERER')
    arcgis = ArcGIS(username, password, referer)

    # Retrieve the latitude and longitude for each store
    for store in stores:
        result = arcgis.geocode(store.get_full_address())
        store.longitude = result.longitude
        store.latitude = result.latitude
        time.sleep(0.1)

    # Create a CSV file
    with open(output_path, 'w') as csvfile:
        writer = csv.writer(csvfile, delimiter=',')

        for store in stores:
            writer.writerow([
                store.latitude, store.longitude, store.streetAddress,
                store.locality, store.state, store.postal
            ])
コード例 #5
0
def get_geo_position_ArcGIS(loc):
    """
    (str) -> tuple

    Function geocode adress and returns it's latitude and
    longitude using ArcGIS API
    """
    locator = ArcGIS(timeout=10)
    place = locator.geocode(loc)
    return (place.latitude, place.longitude)
コード例 #6
0
def process():

    # Load enviroment variables from .env file
    load_dotenv(verbose=True)

    with open(data_path) as file:

        # Create BS4 Object from Data File
        soup = BeautifulSoup(file.read(), 'html.parser')

        # Create a list of the relevant list entries
        entries = [
            x for x in soup.findAll(
                'li', {'itemtype': 'http://schema.org/GroceryStore'})
        ]

        # Iterate over each entry to and create a Store object for it.
        stores = []
        for entry in entries:
            streetAddress = entry.find('span', {
                'itemprop': 'streetAddress'
            }).text
            locality = entry.find('span', {'itemprop': 'addressLocality'}).text
            state = entry.find('span', {'itemprop': 'addressRegion'}).text
            postal = entry.find('span', {'itemprop': 'postalCode'}).text

            stores.append(Store(streetAddress, locality, state, postal))

        # Connect to ArcGIS
        username = os.getenv('ARCGIS_USERNAME')
        password = os.getenv('ARCGIS_PASSWORD')
        referer = os.getenv('ARCGIS_REFERER')
        arcgis = ArcGIS(username, password, referer)

        # Retrieve the latitude and longitude for each store
        for store in stores:
            result = arcgis.geocode(store.get_full_address())
            store.longitude = result.longitude
            store.latitude = result.latitude
            time.sleep(0.1)

        # Create a CSV file
        with open(output_path, 'w') as csvfile:
            writer = csv.writer(csvfile, delimiter=',')

            for store in stores:
                writer.writerow([
                    store.latitude, store.longitude, store.streetAddress,
                    store.locality, store.state, store.postal
                ])
コード例 #7
0
def process():

    # Load enviroment variables from .env file
    load_dotenv(verbose=True)

    with open(data_path) as file:

        # Create BS4 Object from Data File
        soup = BeautifulSoup(file.read(), 'html.parser')

        # Create a list of the relevant list entries
        entries = [x for x in soup.findAll('div', {'class': 'storeAddress'})]

        # Iterate over each entry to and create a Store object for it.
        stores = []
        for entry in entries:
            data = [
                x for x in entry.findAll(
                    'div', {'class': 'w-store-finder-mailing-address'})
            ]
            streetAddress = data[0].text
            locality = data[1].text.split(',')[0]
            state = data[1].text.split(',')[1].strip().split(' ')[0]
            postal = data[1].text.split(',')[1].strip().split(' ')[1]

            stores.append(Store(streetAddress, locality, state, postal))

        # Connect to ArcGIS
        username = os.getenv('ARCGIS_USERNAME')
        password = os.getenv('ARCGIS_PASSWORD')
        referer = os.getenv('ARCGIS_REFERER')
        arcgis = ArcGIS(username, password, referer)

        # Retrieve the latitude and longitude for each store
        for store in stores:
            result = arcgis.geocode(store.get_full_address())
            store.longitude = result.longitude
            store.latitude = result.latitude
            time.sleep(0.1)

        # Create a CSV file
        with open(output_path, 'w') as csvfile:
            writer = csv.writer(csvfile, delimiter=',')

            for store in stores:
                writer.writerow([
                    store.latitude, store.longitude, store.streetAddress,
                    store.locality, store.state, store.postal
                ])
コード例 #8
0
class ArcGIS(Provider):

    def __init__(self):
        self.geocoder = ArcGIS_geopy()

    def raw_location_keys(self) -> Tuple:
        return tuple(['score'])

    def max_requests(self) -> int:
        return internal_config['max-requests']

    def identifier(self) -> str:
        return 'arcgis'

    def geocode(self, address) -> Location:
        return self.geocoder.geocode(address)
コード例 #9
0
def map_formation(twi):
    js = parser(twi)
    fg = folium.FeatureGroup(name="Pointers")

    for line in js['users']:
        try:
            # Decoding an address of location
            geolocator = ArcGIS(timeout=10)
            location = geolocator.geocode(line['location'])
            fg.add_child(
                folium.Marker(location=[location.latitude, location.longitude],
                              popup=line['name'],
                              icon=folium.Icon(color="red")))
        except AttributeError:
            continue

    return fg
コード例 #10
0
def okean_elzy_layer():
    """
    -> layer
    Returns a layer with marked locations where the Okean Elzy group concerts will take place in 2018
    """
    okean_elzy = folium.FeatureGroup(name="Concerts of Slavko")
    geolocator = ArcGIS(timeout=10)
    # Takes only one address because only one is given on the official site
    location_conc = geolocator.geocode('Velyka Vasylkivska St, 55, Kyiv')
    # Adding image of icon we want to use
    icon_v = folium.features.CustomIcon('vakarchuk.png', icon_size=(40, 40))
    okean_elzy.add_child(
        folium.Marker(
            location=[location_conc.latitude, location_conc.longitude],
            popup="Concerts of Okean Elzy",
            icon=icon_v))
    return okean_elzy
コード例 #11
0
def get_locations(lst, max_locat=50):
    """
    (list, int) -> (list)
    :param lst: list of locations and films
    :param max_locat: a max number of locations function finds
    :return: list of tuples = [(film_name,(location.latitude,
                                           location.longitude)]
    """
    locations = []
    geolocator = ArcGIS(timeout=10)
    for element in lst:
        try:
            location = geolocator.geocode(element[1])
            locations.append((element[0], (location.latitude,
                                           location.longitude)))
            if len(locations) == max_locat:
                break
        except:
            continue
    return locations
コード例 #12
0
def process():

    stores = []
    stores.append(Store("724 Route 202 South", "Bridgewater", "NJ", "08807"))
    stores.append(Store("2100 Route 70 West", "Cherry Hill", "NJ", "08002"))
    stores.append(Store("34 Sylvan Way", "Hanover", "NJ", "07054"))
    stores.append(Store("55 US Highway 9", "Englishtown", "NJ", "07726"))
    stores.append(Store("100 Farm View", "Montvale", "NJ", "07645"))
    stores.append(Store("2 Centerton Road", "Mt. Laurel", "NJ", "08054"))
    stores.append(Store("1104 Highway 35 S", "Ocean", "NJ", "07712"))
    stores.append(Store("240 Nassau Park Blvd", "Princeton", "NJ", "08540"))
    stores.append(
        Store("15 Woodbridge Center Drive", " Woodbridge", "New Jersey",
              "07095"))

    # Connect to ArcGIS
    username = os.getenv('ARCGIS_USERNAME')
    password = os.getenv('ARCGIS_PASSWORD')
    referer = os.getenv('ARCGIS_REFERER')
    arcgis = ArcGIS(username, password, referer)

    # Retrieve the latitude and longitude for each store
    for store in stores:
        result = arcgis.geocode(store.get_full_address())
        store.longitude = result.longitude
        store.latitude = result.latitude
        time.sleep(0.1)

    # Create a CSV file
    with open(output_path, 'w') as csvfile:
        writer = csv.writer(csvfile, delimiter=',')

        for store in stores:
            writer.writerow([
                store.latitude, store.longitude, store.streetAddress,
                store.locality, store.state, store.postal
            ])
コード例 #13
0
ファイル: main.py プロジェクト: vitaliyvorobyov/lab_two
# ------------

print("Creating map...")

map = folium.Map()

# ------------------------
# Setting locations on map
# ------------------------

print("Setting locations...")

i = 0
for key, value in dictionary.items():
    geolocator = ArcGIS(timeout=10)
    place = geolocator.geocode(key)
    films = ""
    for j in range(usr_films):
        if j >= len(value):
            break
        films += "{}. {}<br>".format(j+1, value[j])
    map.add_child(folium.Marker(location=[place.latitude, place.longitude],
                                popup=films, icon=folium.Icon(color='orange')))
    print("{} from {}".format(i+1, usr_num))
    i += 1
    if i >= usr_num:
        break

# -------------------------
# Creating population layer
# -------------------------