Анализ и визуализация объектов с сайта объявлений на карте средствами Python и Leaflet.js
Как лучше представить результаты проведенного анализа? Сегодня мы поделимся своим опытом.
По мере завершения анализа аналогов для арендуемых нами объектов на сайтах объявлений, перед нами стал вопрос - как лучше представить полученные результаты? Отчёты в документе или таблица в excel — выглядят довольно «сухо», так как не могут в полной мере отразить полученный результат и сформировать окончательное мнение. Поэтому используем интерактивную карту.
В результате было принято решение о представлении полученных данных в виде интерактивной карты, на которой будут отображены объекты-аналоги для максимально удобного использования коллегами.
Для реализации такой интерактивности — было принято решение об использовании популярной javascript-библиотеки для работы с геоданными – leaflet.js.
Данные об арендуемых объектах и их аналогах среди объявлений в сети интернет необходимо обработать средствами python. Для предварительной обработки на вход подаётся excel-файл со следующими столбцами:
Далее, на основании полученного файла, средствами python будет формироваться json-объект, хранящий необходимые для работы библиотеки leaflet данные. Предварительно соберём информацию обо всех объектах, используя метод searchObjects:
Теперь, когда информация о необходимых объектах заполнена, необходимо произвести поиск объектов-аналогов для каждого из арендуемых объектов. Для этого предназначен метод searchNeighbors:
Метод, который объединяет в себе поиск информации об объектах и их аналогах и формирует файл, который в дальнейшем будет использован для визуализации:
В результате данных манипуляций, получим js-файл, в котором будет находится json-объект данного формата:
Теперь можно приступить к дальнейшей разработке. Переходим на страницу библиотеки leaflet на вкладку Download и скачиваем актуальную версию библиотеки:
После этого создаём html страницу нашего итогового приложения и подключаем в нем эту библиотеку и js-файл с json – объектом, хранящим наши объекты в head – разделе:
После этого в теле нашего html-файла создадим объект, в котором будет отображаться наша итоговая карта:
Для этого объекта указываем css – свойства: высоту и ширину окна
Далее в коде, после нашего объекта, хранящего карту — разместим блок, в котором будем писать код на javascript для взаимодействия с картой:
Теперь в данном блоке напишем код, который будет отображать нашу карту:
Метод setView в качестве параметров принимает в себя значение долготы и широты места, на котором будет центрироваться наша карта, а также величину зума, а с помощью L.tileLayer мы добавляем на нашу карту слой OpenStreetMap. Уже теперь можно посмотреть на первые результаты! Для этого запустим наш html-файл в браузере:
Теперь необходимо задать иконки, с помощью которых на нашей карте будут отображаться исследуемые объекты и создать слой, на котором будут отображаться объекты-аналоги:
Можно приступить к размещению на карте арендуемых объектов. Для этого из созданного и подключенного к нашему html файлу json-объекта будем собирать необходимую информацию с помощью следующего кода:
Строка marker.on(«click, object_popup_click) является обработчиком события и при нажатии на размещенный маркер будет запускать метод object_popup_click, который будет отображать объекты-аналоги, для этого добавим код этого метода в наш html-файл:
Запускаем итоговое приложение и выбираем один из интересующих объектов:
Пробуем нажать на один из появившихся маркеров:
В итоге мы получили практические навыки по обработке данных на языке python и их дальнейшее отображение на карте с помощью javascript-библиотеки leaflet.js.