Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from geopy.geocoders import Nominatim
- from geopy.exc import GeocoderServiceError, GeocoderUnavailable
- import requests
- def get_district(longitude, latitude):
- # district, city, street, house
- district = ''
- url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
- &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
- r_h = requests.get(url_to_reverse_house)
- answer_h = r_h.json()
- members_h = (
- answer_h.get('response')
- .get('GeoObjectCollection')
- .get('featureMember')
- )
- for member in members_h:
- try:
- district = (member
- .get('GeoObject')
- .get('metaDataProperty')
- .get('GeocoderMetaData')
- .get('AddressDetails')
- .get('Country')
- .get('AdministrativeArea')
- .get('SubAdministrativeArea')
- .get('SubAdministrativeAreaName')
- )
- except AttributeError:
- continue
- else:
- district = district
- break
- if not district:
- url_to_reverse_district = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=district&\
- &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
- r_d = requests.get(url_to_reverse_district)
- answer_d = r_d.json()
- members_d = (answer_d.get('response')
- .get('GeoObjectCollection')
- .get('featureMember')
- )
- for member in members_d:
- try:
- district = (member
- .get('GeoObject')
- .get('metaDataProperty')
- .get('GeocoderMetaData')
- .get('AddressDetails')
- .get('Country')
- .get('AdministrativeArea')
- .get('Locality')
- .get('DependentLocality')
- .get('DependentLocality')
- .get('DependentLocalityName')
- )
- except AttributeError:
- continue
- else:
- district = district
- break
- return district
- def get_city(longitude, latitude):
- city = ''
- url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
- &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
- r_h = requests.get(url_to_reverse_house)
- answer_h = r_h.json()
- members_h = (
- answer_h.get('response')
- .get('GeoObjectCollection')
- .get('featureMember')
- )
- for member in members_h:
- try:
- city = (member
- .get('GeoObject')
- .get('metaDataProperty')
- .get('GeocoderMetaData')
- .get('AddressDetails')
- .get('Country')
- .get('AdministrativeArea')
- .get('Locality')
- .get('LocalityName')
- )
- except AttributeError:
- continue
- else:
- city = city
- break
- return city
- def get_street(longitude, latitude):
- street = ''
- url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
- &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
- r_h = requests.get(url_to_reverse_house)
- answer_h = r_h.json()
- members_h = (
- answer_h.get('response')
- .get('GeoObjectCollection')
- .get('featureMember')
- )
- for member in members_h:
- try:
- street = (member
- .get('GeoObject')
- .get('metaDataProperty')
- .get('GeocoderMetaData')
- .get('AddressDetails')
- .get('Country')
- .get('AdministrativeArea')
- .get('Locality')
- .get('Thoroughfare')
- .get('ThoroughfareName')
- )
- except AttributeError:
- continue
- else:
- street = street
- break
- return street
- def get_house(longitude, latitude):
- house = ''
- url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
- &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
- r_h = requests.get(url_to_reverse_house)
- answer_h = r_h.json()
- members_h = (
- answer_h.get('response')
- .get('GeoObjectCollection')
- .get('featureMember')
- )
- for member in members_h:
- try:
- house = (member
- .get('GeoObject')
- .get('metaDataProperty')
- .get('GeocoderMetaData')
- .get('AddressDetails')
- .get('Country')
- .get('AdministrativeArea')
- .get('Locality')
- .get('Thoroughfare')
- .get('Premise')
- .get('PremiseNumber')
- )
- except AttributeError:
- continue
- else:
- house = house
- break
- return house
- def get_postcode(longitude, latitude):
- try:
- geolocator = Nominatim()
- location = geolocator.reverse("{0}, {1}".format(latitude, longitude))
- postal_code = location.raw.get('address', ).get('postcode')
- except (AttributeError, GeocoderServiceError, GeocoderUnavailable):
- postal_code = ''
- else:
- postal_code = postal_code
Advertisement
Add Comment
Please, Sign In to add comment