название: | Получение названий районов городов и станций метро |
---|
Часто для сайта нужны списки районов городов, станций метро или общественного транспорта. Тут нам помогает благодатный api 2gis
Как обычно, все просто! Нужен только ключ (он легко берется в on-line версии на официальном сайте):
>>> from data_parser_2gis import Parser2gis >>> parser = Parser2gis(u'some2giskey') >>> city=parser.get_city(u'Новосибирск') >>> print city.get('name') Новосибирск
Чтобы получить список районов есть предусмотрено 2 способа..
Поиск по запросу вида "район <первая буква названия района>", всего получается 29 запросов к api для каждого города:
>>> districts=parser.find_district_by_alphabet(u'Новосибирск', delay=0.1) >>> for d in districts: ... print d ... Центральный Кировский Калининский Заельцовский Первомайский Октябрьский Ленинский Дзержинский Железнодорожный Советский
Аргумент delay задет интервал времени между запросами, это способ экономичного использования api.
Можно его не указывать.
- Создание сетки координат и поиск района по точке.
Если перый способ не вернул всех районов, можно наложить на область города сетку,
пересечение вертикальных и горизонтальных прямых даст точки, котороые будут использоваться как параметры поиска:
>>> districts=parser.find_district_by_grid(u'Новосибирск', grid_step=0.1, delay=0.05) >>> for d in districts: ... print d ... Ленинский Заельцовский Кировский Железнодорожный Центральный Октябрьский Калининский Первомайский Дзержинский Советский
Аргумент grid_step нужен для указания размера ячеек относительно размера области поиска на карте. Если указано 0,1 (10%) то область будет поделена на 100 ячеек, получаем 100 точек для поиска.
Станции метро можно получить так:
>>> metro_all=parser.find_metro_station(u'Москва') >>> len(metro_all) 131 >>> metro_all=parser.find_metro_station(u'Екатеринбург') >>> for m in metro_all: ... print m ... Уралмаш Динамо Метрология Матросская