Мы постоянно работаем над улучшением функционала нашего парсинг сервиса Diggernaut. В этот раз пакет улучшений коснулся функций для работы с геопространственными данными.
Во-первых, мы хотели бы известить вас что мы полностью переработали функцию по извлечению мультиполигонов по ID OSM отношения. Раньше мы использовали сторонний сервис. Однако, как выяснилось в процессе эксплуатации, далеко не все отношения могут быть сконвертированы в WKT, используя данный сервис. Также этот сервис работает некорректно, если в мультиполигоне присутствуют внутренние полигоны (дыры). Он просто превращает все внутренние полигоны во внешние. Именно поэтому мы написали свой код для извлечения мультиполигонов в формате WKT, он работает корректно с внутренними полигонами и может выдать в WKT любое отношение, имеющее хоть одно замкнутое кольцо (полигон). Для этого вы должны будете использовать как и раньше команду wkt. Просим вас учесть, что изменения коснулись только формата WKT, для формата GeoJSON все осталось по старому.
Вторым большим улучшением стало добавление функций парсинга адресов практически в любой стране мира. Мы подключили библиотеку libpostal как микросервис и ее функционал стал доступен из парсеров в рамках пакета для работы с геопространственными данными. Библиотека написана на C и использует статистический NLP для парсинга и нормализации адресов, используя натренированные модели с данными из OpenStreetMap, OpenAddresses и других источников. Мы добавили 2 функции: address_parse — для парсинга (разбора на составные части) адреса и address_expand — для нормализации адреса. Так как очень часто адреса на сайтах представлены в виде единого блока с текстом, разбить его на части (улица, город, индекс и прочее) бывает крайне проблематично, нам кажется, что данный функционал вместе с командой для геокодинга может вам очень сильно пригодиться для решения ваших задач. Если вы хотите узнать больше о том, как именно работает libpostal, советуем вам ознакомиться со следующей статьей: Статистический NLP на основе данных OpenStreetMap, часть вторая.
Более подробно об этих и других функциях пакета для работы с геопространственными данными можно прочитать в разделах нашей документации: Работаем с адресами и Работаем с геоданными