Геоданные
Работаем с адресами
Когда мы собираем информацию с сайтов, зачастую бывает, что адреса компаний или объектов написаны в свободной форме или в одном контейнере. В таких случаях разбитие адреса на составляющие: номер дома, улица, квартира, город, область, почтовый индекс и страна может оказаться сложной задачей. Для упрощения работы с адресами мы внедрили поддержку известной библиотеки libPostal. Эта библиотека написана на C и использует для разбора и нормализации адресов статистический NLP вместе с открытыми наборами данных от OSM и OpenAddresses.
Для разбора адресов используется команда address_parse, которая использует следующие параметры:
Параметр | Описание |
---|---|
address | Почтовый адрес, который необходимо разобрать. |
Пример разбора адреса.
# ПЕРЕХОДИМ В ГЕО КОНТЕКСТ
- geo:
do:
# Парсим адрес
- address_parse:
address: 350033, Краснодарский край, Краснодар, ул.Привокзальная Площадь,5
do:
Time | Level | Message |
---|---|---|
2018-07-11 21:05:25:806 | info | Scrape is done |
2018-07-11 21:05:25:792 | debug | Page content: ... |
2018-07-11 21:05:24:760 | info | Retrieving page (POST/JSON): https://geo.diggernaut.net/parse |
2018-07-11 21:05:24:752 | debug | Address: 350033, Краснодарский край, Краснодар, ул.Привокзальная Площадь,5 |
2018-07-11 21:05:24:739 | debug | Parsing address |
2018-07-11 21:05:24:728 | info | Starting scrape |
2018-07-11 21:05:24:690 | debug | Setting up surf |
2018-07-11 21:05:24:657 | info | Starting digger: OSM test [2794] |
<html>
<head></head>
<body>
<body_safe>
<body_safe>
<components>
<label>postcode</label>
<value>350033</value>
</components>
<components>
<label>state</label>
<value>краснодарский край</value>
</components>
<components>
<label>city</label>
<value>краснодар</value>
</components>
<components>
<label>road</label>
<value>ул.привокзальная площадь</value>
</components>
<components>
<label>house_number</label>
<value>5</value>
</components>
<status>success</status>
</body_safe>
</body_safe>
</body>
</html>
Пример нормализации адреса.
# ПЕРЕХОДИМ В ГЕО КОНТЕКСТ
- geo:
provider: osm
do:
# Нормализуем адрес
- address_expand:
address: One-hundred twenty E 96th St
do:
Time | Level | Message |
---|---|---|
2018-07-12 01:58:42:548 | info | Scrape is done |
2018-07-12 01:58:42:530 | debug | Page content: ... |
2018-07-12 01:58:41:317 | info | Retrieving page (POST/JSON): https://geo.diggernaut.net/expand |
2018-07-12 01:58:41:309 | debug | Address: One-hundred twenty E 96th St |
2018-07-12 01:58:41:301 | debug | Normalizing address |
2018-07-12 01:58:41:293 | info | Starting scrape |
2018-07-12 01:58:41:253 | debug | Setting up surf |
2018-07-12 01:58:41:221 | info | Starting digger: OSM test [2794] |
<html>
<head></head>
<body>
<body_safe>
<body_safe>
<expansions>120 east 96th saint</expansions>
<expansions>120 east 96th street</expansions>
<expansions>120 e 96th saint</expansions>
<expansions>120 e 96th street</expansions>
<expansions>120 east 96 saint</expansions>
<expansions>120 east 96 street</expansions>
<expansions>120 e 96 saint</expansions>
<expansions>120 e 96 street</expansions>
<status>success</status>
</body_safe>
</body_safe>
</body>
</html>
Далее мы рассмотрим ряд вспомогательных команд, которые могут быть полезны в различных ситуациях.