Skip to content

KateVolodko/Geocoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Консольное приложение "Geocoder"

Версия 1.0

Авторы: Володько Екатерина, Моськов Алексей

Описание

Данное консольное приложение является реализацией геокодера (для российских адресов) на базе OSM и осуществляет прямое геокодирование (определяет координаты по заданному адресу) как для орфографически верных, так и ошибочных адресов

Требования

  • Python версии 3

Состав

  • Консольная версия: console.py
  • Создание баз данных: create_db/
  • Результаты профилирования: profilers_data/
  • Тесты: tests/
  • Обработка вводимых адресов: words_parser/

Консольная версия

Справка: ./console --help Пример поиска координат адреса: ./console --address "г Екатеринбург улица Тургенева 4"

Подробности реализации

В ходе реализации геокодера было поставлено ограничение - работа с данными без запроса к сети, поэтому геокодер состоит из 2 смысловых частей: создание баз данных по России с необходимой информацией для геокодирования и, собственно, сам геокодер, который по введенному адресу определяет координаты.

Создание баз данных по регионам России

Так как данные по России довольно объемные (6,3 ГБ в сжатом формате) и их обработка занимает продолжительное время, то предварительно уже составлены базы данных по регионам России, состоящие из 2 таблиц (1-я id и координаты, 2-я сам адрес (регион, населенный пункт, улица, номер дома) и id).Их можно найти в create_db.databases. Также отдельно составлены базы данных с городами по регионам (можно найти в create_db.cities_by_region).

Консольная часть

В данной части реализовано прямое геокодирование как орфографически правильных адресов, так и вывод наиболее близких вариантов к введенным с ошибкой на основе алгоритма Дамерау-Левенштейна.

В основе этой части лежат классы:

  • words_parser.addressparser.Address_parser, который парсит введенный адрес на регион, город, улицу, номер дома
  • words_parser.finder.CoordinatesFinder, реализующий поиск координат в базах данных по распарсенному адресу
  • words_parser.algorithms.LevenshteinDistance, представляющий реализацию алгоритма Дамерау-Левенштейна

Работа с консолью осуществляется через функцию console.input_data(), которая обрабатывает введенный адресс и выводит результат геокодирования в отдельный файл формата JSON.

На модули words_parser.address_parser, words_parser.algorithms, words_parser.finder написаны тесты, их можно найти в tests.test_words_parser.py. Также в tests.test_create_db.py находятся тесты на модуль create_db.csvparser.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages