Разработка сервиса для автоматизированного создания виртуальных панорамных туров по локациям средствами Yandex Maps API
Авторы: Коптенок Елизавета Викторовна, Савенко Арсений Витальевич, Трунников Максим Владиславович, Сухарев Евгений Александрович, Маркелов Константин Дмитриевич, Фомин Илья Игоревич
Рубрика: Информатика и кибернетика
Опубликовано в Техника. Технологии. Инженерия №1 (15) февраль 2020 г.
Дата публикации: 31.01.2020
Статья просмотрена: 80 раз
Библиографическое описание:
Разработка сервиса для автоматизированного создания виртуальных панорамных туров по локациям средствами Yandex Maps API / Е. В. Коптенок, А. В. Савенко, М. В. Трунников [и др.]. — Текст : непосредственный // Техника. Технологии. Инженерия. — 2020. — № 1 (15). — С. 9-13. — URL: https://moluch.ru/th/8/archive/152/4853/ (дата обращения: 17.12.2024).
На сегодняшний день в интернете существуют различные сервисы, предоставляющие возможность просматривать и взаимодействовать с панорамными снимками. Самые распространенные сервисы компаний Яндекс и Google используют эту технологию для отображения панорамных снимков с улиц с возможностью перехода между соседними снимками внутри плеера панорам. Подобное решение достигается с помощью камер, установленных на автомобилях компаний и GPS маяков для размещения снимка. Процесс создания панорам в этих сервисах автоматизирован и не применим для интерьеров, а также мест, куда специальный автомобиль не имеет доступа.
Однако подобные сервисы существуют и для интерьеров, предоставляя возможность посмотреть в формате панорамы интерьер какого-либо здания или помещения. Например, компания Google предоставила доступ к виртуальной экскурсии по МКС. Также существует сервис, позволяющий отправиться в виртуальный тур по автомузеям.
Подобные сервисы имеют большую актуальность, так как позволяют имитировать посещение отснятых мест. Это удобно, например, если человек не имеет физической возможности посетить место, либо место закрыто на реконструкцию, а также частично историческую ценность в будущем.
Таким образом идея сервиса, который бы позволял загружать и управлять собственными панорамами, достаточно актуальна. Проблема заключается в том, что существующие сервисы так или иначе ограничены. Некоторые предоставляют доступ на платной основе, либо позволяют загрузить лишь один несвязанный панорамный снимок, либо связи между снимками нужно корректировать вручную, что увеличивает сложность и время обработки с увеличением количества снимков.
Возникла идея реализовать сервис, который бы на основе исходных снимков и некоторой метаинформации позволял условно в один клик создавать виртуальные туры. Такой сервис мог бы использоваться кроме упомянутых вариантов также и в образовательных целях, например, для организации виртуальных туров для больших групп учащихся.
Для разработки подобного сервиса необходима технология размещения панорамных снимков на сайте. Для проекта был использован Yandex Maps API, который предоставляет возможность на бесплатной основе размещать виджеты карты и плееры панорам, создавать пользовательские объекты внутри них, а также использовать собственные изображения карт и панорам.
Для размещения снимков с помощью данного API требуется предварительная обработка фотографий и изображений карты, а именно нарезка на так называемые тайлы и именование их особым образом. Для этих целей был использован многофункциональный набор инструментов для редактирования мультимедийных изображений ImageMagick.
Для получения и обработки метаинформации панорамных снимков были написаны скрипты на языке Python3, который предоставляет широкий и необходимый функционал для написания как полноценных программ, так и командных файлов.
Серверная часть сервиса реализована на языке PHP. Сервис предоставляет пользователю простой личный кабинет, в котором он может загружать, просматривать уже загруженные и удалять коллекции панорам (рис.1.).
Для корректной работы сервиса пользователь должен упаковать исходные данные особым образом и дождать загрузки на сервер. Если все данные корректны, сервис автоматически расставит переходы между снимками, разрежет и разместит панорамы на сервере.
Выходными данными сервера также является файл данных коллекции панорам, который хранит описание каждого панорамного снимка и связанных с ним переходов и маркеров на языке JavaScript, так как API Яндекса использует именно его. Загруженную коллекцию пользователь может просмотреть по созданной ссылке, которую можно увидеть в личном кабинете. Все панорамы связаны между собой, а на виджете карты отображается пользовательская карта, а также маркер текущей панорамы. Пример панорамы представлен на рис.2.
Рис. 1. Страница «Профиль
Рис. 2. Пример применения для несуществующих в реальности локаций из игры
Структура базы данных для хранения информации о пользователях и панорамах представлена на рис.3. Она довольно проста, что обусловлено тем, что основная информация о панорамах хранится на сервисах Яндекс.
Рис. 3. База данных
Иерархия классов серверной части представлена на рис.4.
Рис. 4. Иерархия файлов
В будущем можно расширять функционал редактирования коллекций, например, реализовать возможность добавлять пользовательские маркеры на панорамы или вручную редактировать переходы между ними. Также можно протестировать иные сервисы для отображения панорамных снимков для нахождения наиболее удобных и оптимизированных вариантов. В качестве другого направления развития сервиса можно реализовать генерацию выходного комплекта файлов для размещения получившейся коллекции панорам на собственном сервере пользователя.
Литература:
- Документация Яндекс API. Справочник JavaScript API — режим доступа: https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/concepts/About-docpage/
- Документация Яндекс API. Карта — режим доступа: https://tech.yandex.ru/maps/jsbox/2.1/
- Документация Яндекс API. Создание своей панорамы — режим доступа: https://tech.yandex.ru/maps/jsbox/2.1/panorama_custom
- Документация Яндекс API. Добавление маркеров — режим доступа: https://tech.yandex.ru/maps/jsbox/2.1/panorama_with_markers
- Документация Яндекс API. Создание переходов — режим доступа: https://tech.yandex.ru/maps/jsbox/2.1/panorama_with_connections
- Документация Яндекс API. Создание ивентов — режим доступа: https://tech.yandex.ru/maps/jsbox/2.1/panorama_events
- API Яндекс.Панорам: как сделать свою виртуальную прогулку или просто довести человека от метро — режим доступа: https://habr.com/ru/company/yandex/blog/305846/