Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from io import BytesIO
- # Этот класс поможет нам сделать картинку из потока байт
- import requests
- from PIL import Image
- # Пусть наше приложение предполагает запуск:
- # python search.py Москва, ул. Ак. Королева, 12
- # Тогда запрос к геокодеру формируется следующим образом:
- toponym_to_find = " ".join(sys.argv[1:])
- geocoder_api_server = "http://geocode-maps.yandex.ru/1.x/"
- geocoder_params = {
- "apikey": "40d1649f-0493-4b70-98ba-98533de7710b",
- "geocode": toponym_to_find,
- "format": "json"}
- response = requests.get(geocoder_api_server, params=geocoder_params)
- if not response:
- # обработка ошибочной ситуации
- pass
- # Преобразуем ответ в json-объект
- json_response = response.json()
- # Получаем первый топоним из ответа геокодера.
- toponym = json_response["response"]["GeoObjectCollection"][
- "featureMember"][0]["GeoObject"]
- # Координаты центра топонима:
- toponym_coodrinates = toponym["Point"]["pos"]
- # Долгота и широта:
- toponym_longitude, toponym_lattitude = toponym_coodrinates.split(" ")
- delta = "0.005"
- # Собираем параметры для запроса к StaticMapsAPI:
- map_params = {
- "ll": ",".join([toponym_longitude, toponym_lattitude]),
- "spn": ",".join([delta, delta]),
- "l": "map"
- }
- map_api_server = "http://static-maps.yandex.ru/1.x/"
- # Ближайшая аптека
- search_api_server = "https://search-maps.yandex.ru/v1/"
- api_key = "dda3ddba-c9ea-4ead-9010-f43fbc15c6e3"
- address_ll = "37.588392,55.734036"
- address_ll = ",".join(toponym["Point"]["pos"].split())
- search_params = {
- "apikey": api_key,
- "text": "аптека",
- "lang": "ru_RU",
- "ll": address_ll,
- "type": "biz"
- }
- response = requests.get(search_api_server, params=search_params)
- if not response:
- #...
- pass
- json_response = response.json()
- # Получаем первую найденную организацию.
- organization = json_response["features"][0]
- # Название организации.
- org_name = organization["properties"]["CompanyMetaData"]["name"]
- # Адрес организации.
- org_address = organization["properties"]["CompanyMetaData"]["address"]
- # Получаем координаты ответа.
- point = organization["geometry"]["coordinates"]
- org_point = "{0},{1}".format(point[0], point[1])
- delta = "0.003"
- # Собираем параметры для запроса к StaticMapsAPI:
- map_params = {
- # позиционируем карту центром на наш исходный адрес
- "ll": address_ll,
- "spn": ",".join([delta, delta]),
- "l": "map",
- # добавим точку, чтобы указать найденную аптеку
- "pt": "{0},pm2dgl".format(org_point)
- }
- map_api_server = "http://static-maps.yandex.ru/1.x/"
- # ... и выполняем запрос
- response = requests.get(map_api_server, params=map_params)
- print(address_ll)
- print(org_point)
- print(org_name)
- Image.open(BytesIO(
- response.content)).show()
- # Создадим картинку
- # и тут же ее покажем встроенным просмотрщиком операционной системы
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement