+++ /dev/null
-# coding=UTF-8
-"""
-nominatim.openstreetmap.org API
-"""
-
-import urllib2
-from lxml import etree
-
-def GetXMLDescr(lat,lon):
-
- req = urllib2.Request("http://nominatim.openstreetmap.org/reverse?lat=%s&lon=%s&accept-language=ru,en" %(lat,lon), None, {'User-agent': 'Mozilla/5.0'})
- page = urllib2.urlopen(req).read()
-
- return etree.fromstring(page)
-
-def printable_name(addr):
-
- if 'country' in addr:
- if 'state' in addr:
- if addr['country'] == u"Российская Федерация" and addr['state'] == u"Москва":
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- str = addr['state'] + ', ' + addr['country']
- else:
- if 'city' in addr:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['city'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- str = addr['city'] + ', ' + addr['state'] + ', ' + addr['country']
- elif 'town' in addr:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['town'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- str = addr['town'] + ', ' + addr['state'] + ', ' + addr['country']
- elif 'village' in addr:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['village'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- str = addr['village'] + ', ' + addr['state'] + ', ' + addr['country']
- elif 'county' in addr:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['county'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- str = addr['county'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['state'] + ', ' + addr['country']
- else:
- str = addr['state'] + ', ' + addr['country']
- else:
- if 'city' in addr:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['city'] + addr['country']
- else:
- str = addr['city'] + ', ' + addr['country']
- elif 'village' in addr:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['village'] + addr['country']
- else:
- str = addr['village'] + ', ' + addr['country']
- else:
- if 'road' in addr:
- str = addr['road'] + ', ' + addr['country']
- else:
- str = addr['country']
- else:
- str = u"Планета Земля, "
- if addr['lat'] > 0:
- str = str + u"%s с.ш.," % (addr['lat'])
- else:
- str = str + u"%s ю.ш.," % (-addr['lat'])
- if addr['lon'] > 0:
- str = str + u"%s в.д." % (addr['lon'])
- else:
- str = str + u"%s з.д." % (-addr['lon'])
-
- return str
-
-class GeoName:
-
- def __init__(self, lat, lon):
-
- for elem in GetXMLDescr(lat,lon):
- self.addr = {'lat':lat,'lon':lon}
- self.road = ''
- self.city = ''
- self.country = ''
-
- if elem.tag == "addressparts":
- for addrpart in elem:
- tag = addrpart.tag
- text = urllib2.unquote(addrpart.text)
- self.addr[tag] = text
- if tag == "road":
- self.road = text
- elif tag == "city":
- self.city = text
- elif tag == "country":
- self.country = text
-
- self.printable = printable_name(self.addr)
-
-
\ No newline at end of file