kAldown

methods_grabber

Feb 5th, 2016
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.21 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. from geopy.geocoders import Nominatim
  4. from geopy.exc import GeocoderServiceError, GeocoderUnavailable
  5. import requests
  6.  
  7. def get_district(longitude, latitude):
  8.     # district, city, street, house
  9.  
  10.     district = ''
  11.  
  12.     url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
  13.                            &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
  14.     r_h = requests.get(url_to_reverse_house)
  15.     answer_h = r_h.json()
  16.     members_h = (
  17.             answer_h.get('response')
  18.                 .get('GeoObjectCollection')
  19.                 .get('featureMember')
  20.                 )
  21.  
  22.     for member in members_h:
  23.         try:
  24.             district = (member            
  25.                         .get('GeoObject')
  26.                         .get('metaDataProperty')
  27.                         .get('GeocoderMetaData')
  28.                         .get('AddressDetails')
  29.                         .get('Country')
  30.                         .get('AdministrativeArea')
  31.                         .get('SubAdministrativeArea')
  32.                             .get('SubAdministrativeAreaName')
  33.                 )
  34.         except AttributeError:
  35.             continue
  36.         else:
  37.             district = district
  38.             break
  39.  
  40.     if not district:
  41.         url_to_reverse_district = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=district&\
  42.                                    &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
  43.  
  44.         r_d = requests.get(url_to_reverse_district)
  45.         answer_d = r_d.json()
  46.         members_d = (answer_d.get('response')
  47.             .get('GeoObjectCollection')
  48.             .get('featureMember')
  49.             )
  50.         for member in members_d:
  51.             try:
  52.                 district = (member            
  53.                             .get('GeoObject')
  54.                             .get('metaDataProperty')
  55.                             .get('GeocoderMetaData')
  56.                             .get('AddressDetails')
  57.                             .get('Country')
  58.                             .get('AdministrativeArea')
  59.                             .get('Locality')
  60.                                 .get('DependentLocality')
  61.                                     .get('DependentLocality')
  62.                                         .get('DependentLocalityName')
  63.                     )
  64.             except AttributeError:
  65.                 continue
  66.             else:
  67.                 district = district
  68.                 break
  69.  
  70.     return district
  71.  
  72. def get_city(longitude, latitude):
  73.  
  74.     city = ''
  75.  
  76.     url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
  77.                            &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
  78.     r_h = requests.get(url_to_reverse_house)
  79.     answer_h = r_h.json()
  80.     members_h = (
  81.             answer_h.get('response')
  82.                 .get('GeoObjectCollection')
  83.                 .get('featureMember')
  84.                 )
  85.  
  86.     for member in members_h:
  87.         try:
  88.             city = (member
  89.                         .get('GeoObject')
  90.                         .get('metaDataProperty')
  91.                         .get('GeocoderMetaData')
  92.                         .get('AddressDetails')
  93.                         .get('Country')
  94.                         .get('AdministrativeArea')
  95.                         .get('Locality')
  96.                         .get('LocalityName')
  97.                         )
  98.  
  99.         except AttributeError:
  100.             continue
  101.         else:
  102.             city = city
  103.             break
  104.  
  105.     return city
  106.  
  107. def get_street(longitude, latitude):
  108.  
  109.     street = ''
  110.  
  111.     url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
  112.                            &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
  113.     r_h = requests.get(url_to_reverse_house)
  114.     answer_h = r_h.json()
  115.     members_h = (
  116.             answer_h.get('response')
  117.                 .get('GeoObjectCollection')
  118.                 .get('featureMember')
  119.                 )
  120.  
  121.     for member in members_h:
  122.         try:
  123.             street = (member
  124.                         .get('GeoObject')
  125.                         .get('metaDataProperty')
  126.                         .get('GeocoderMetaData')
  127.                         .get('AddressDetails')
  128.                         .get('Country')
  129.                         .get('AdministrativeArea')
  130.                         .get('Locality')
  131.                         .get('Thoroughfare')
  132.                         .get('ThoroughfareName')
  133.                         )
  134.         except AttributeError:
  135.             continue
  136.         else:
  137.             street = street
  138.             break
  139.    
  140.     return street
  141.  
  142. def get_house(longitude, latitude):
  143.  
  144.     house = ''
  145.  
  146.     url_to_reverse_house = "https://geocode-maps.yandex.ru/1.x/?format=json&kind=house&\
  147.                            &geocode={0},{1}&lang=ru-RU".format(longitude, latitude)
  148.     r_h = requests.get(url_to_reverse_house)
  149.     answer_h = r_h.json()
  150.     members_h = (
  151.             answer_h.get('response')
  152.                 .get('GeoObjectCollection')
  153.                 .get('featureMember')
  154.                 )
  155.  
  156.     for member in members_h:
  157.         try:
  158.             house = (member
  159.                         .get('GeoObject')
  160.                         .get('metaDataProperty')
  161.                         .get('GeocoderMetaData')
  162.                         .get('AddressDetails')
  163.                         .get('Country')
  164.                         .get('AdministrativeArea')
  165.                         .get('Locality')
  166.                         .get('Thoroughfare')
  167.                         .get('Premise')
  168.                         .get('PremiseNumber')
  169.                         )
  170.  
  171.         except AttributeError:
  172.             continue
  173.         else:
  174.             house = house
  175.             break
  176.  
  177.     return house
  178.  
  179. def get_postcode(longitude, latitude):
  180.         try:
  181.             geolocator = Nominatim()
  182.             location = geolocator.reverse("{0}, {1}".format(latitude, longitude))
  183.             postal_code = location.raw.get('address', ).get('postcode')
  184.         except (AttributeError, GeocoderServiceError, GeocoderUnavailable):
  185.             postal_code = ''
  186.         else:
  187.             postal_code = postal_code
Advertisement
Add Comment
Please, Sign In to add comment