You are on page 1of 6

Лабораторна робота №3 «Використання API для отримання даних з Google

Maps та їх візуалізація»

Хід роботи.
3.1. Отримання ключа API для доступу до сервісу Google Maps.
3.2. Використання Python-бібліотеки для зв'язку з API та отримання
даних. Найбільш популярною бібліотекою для цього є googlemaps.
3.3. Отримання даних з Google Maps API, наприклад, координати місць,
маршрути, транспортні розклади тощо.
3.4. Візуалізація даних з використанням зручних інструментів
візуалізації даних, таких як matplotlib або folium.
3.5. Аналіз даних та візуалізація результатів.

Ось приклад використання googlemaps для отримання геокодерів


(координат) міста та його пам'яток:

import googlemaps
import pandas as pd

# Отримання ключа API


gmaps = googlemaps.Client(key='YOUR_API_KEY')

# Отримання геокодера (координат) міста


city = 'Paris, France'
geocode_result = gmaps.geocode(city)[0]
lat = geocode_result['geometry']['location']['lat']
lng = geocode_result['geometry']['location']['lng']

# Отримання геокодерів (координат) пам'яток міста


places = ['Eiffel Tower', 'Notre-Dame Cathedral', 'The Louvre']
locations = []
for place in places:
geocode_result = gmaps.geocode(place + ', ' + city)[0]
lat = geocode_result['geometry']['location']['lat']
lng = geocode_result['geometry']['location']['lng']
locations.append((place, lat, lng))

# Збереження результатів в DataFrame та виведення на екран


df = pd.DataFrame(locations, columns=['Place', 'Latitude', 'Longitude'])
print(df)
Отримані дані можна візуалізувати з використанням folium, що дає
змогу створювати інтерактивні карти з можливістю збільшення/зменшення
масштабу, переходу до певного місця тощо:

import folium

# Створення карти та додавання маркерів на неї


m = folium.Map(location=[lat, lng], zoom_start=13)
for row in df.itertuples():
folium.Marker(location=[row.Latitude, row.Longitude],
popup=row.Place).add_to(m)

Для візуалізації даних на карті з folium, спочатку потрібно створити


об'єкт карти з відповідними координатами та масштабом:

import folium

# координати центру карти та масштаб


lat, lon = 49.8419526, 24.0315927
zoom_start = 13
# створення об'єкту карти
map = folium.Map(location=[lat, lon], zoom_start=zoom_start)
Потім можна додати на карту маркери з відповідними координатами та
інформацією для відображення:

# додавання маркера з підписом на карту


folium.Marker(location=[lat, lon], popup='Центр міста').add_to(map)
Також можна додавати на карту геооб'єкти, наприклад, полігони або
лінії:

# додавання полігону на карту


polygon_coords = [(49.837956, 24.016793), (49.843755, 24.008604),
(49.845223, 24.030408), (49.837952, 24.030409)]
folium.Polygon(locations=polygon_coords, color='red',
fill_opacity=0.3).add_to(map)
Після додавання всіх маркерів та геооб'єктів, карту можна відобразити в
браузері:

# відображення карти в браузері


map.save('map.html')

Завантажте відповідні модулі Python та встановіть необхідні бібліотеки


(googlemaps, gmplot).
Отримайте API ключ для Google Maps API та додайте його до свого
проекту.
За допомогою модуля googlemaps створіть клієнта та використайте його
для отримання даних з Google Maps API. Наприклад, для отримання
інформації про геолокацію місцезнаходження за назвою місця,
використовуйте метод geocode():
import googlemaps
from datetime import datetime

gmaps = googlemaps.Client(key='YOUR_API_KEY')

# Geocoding an address
geocode_result = gmaps.geocode('1600 Amphitheatre Parkway, Mountain
View, CA')

# Extracting latitude and longitude from the result


lat = geocode_result[0]['geometry']['location']['lat']
lng = geocode_result[0]['geometry']['location']['lng']
Збережіть отриману інформацію від Google Maps у змінну та
використайте бібліотеку gmplot для відображення геолокації на мапі:

import gmplot

gmap = gmplot.GoogleMapPlotter(lat, lng, 13)

# Marking the location on the map


gmap.marker(lat, lng)

# Drawing the map


gmap.draw("map.html")
Відкрийте файл map.html у веб-браузері, щоб переглянути мапу з
відміченою геолокацією.
Додайте додаткову функціональність до свого проекту, використовуючи
Google Maps API та бібліотеку gmplot. Наприклад, відображення маршруту
між двома точками, додавання багатьох маркерів на мапу тощо.

Напишіть функції, які дозволяють знаходити місця поблизу певної


геолокації за допомогою Google Maps API. Наприклад, функція
find_places_nearby():

def find_places_nearby(location, radius, type):


"""
Finds places of a given type near a given location within a given radius.
"""
gmaps = googlemaps.Client(key='YOUR_API_KEY')

places_result = gmaps.places_nearby(location=location, radius=radius,


type=type)

return places_result
Відобразіть знайдені місця на мапі за допомогою бібліотеки gmplot.
Наприклад, за допомогою функції draw_places():

def draw_places(places_result, map_file):


"""
Draws places on a map and saves it to a file.
"""
gmap =
gmplot.GoogleMapPlotter(places_result['results'][0]['geometry']['location']['lat'],
places_result['results'][0]['geometry']['location']['lng'],
13)
for place in places_result['results']:
lat = place['geometry']['location']['lat']
lng = place['geometry']['location']['lng']
gmap.marker(lat, lng)

gmap.draw(map_file)
Запустіть свій проект та перевірте, чи відображається мапа з
відміченими місцями поблизу вказаної геолокації.
Напишіть скрипт, який використовує ваші функції та Google Maps API
для пошуку місць поблизу вказаної геолокації та їх відображення на мапі.
Розширте функціональність вашого проекту, використовуючи Google
Maps API та бібліотеку gmplot. Наприклад, додайте можливість знаходити
найкоротший маршрут між декількома точками на мапі, побудувати графіки
розподілу відстаней між місцями тощо.

Контрольні запитання:
1. Що таке API Google Maps і як його використовувати?
2. Які типи даних можна отримати з Google Maps API?
3. Які є особливості використання Google Maps API, що стосуються
безпеки та обмежень використання?
4. Які є особливості візуалізації даних з Google Maps API з
використанням бібліотеки folium?
5. Які інструменти можна використовувати для аналізу даних,
отриманих з Google Maps API?

You might also like