
Неформальная постановка задачи
Требования к приложению:
Приложение должно отображать планы этажей корпусов кампуса, позволять масштабировать их и прокручивать.
Приложение должно уметь строить кратчайший путь от одной аудитории до другой, включая такие пары аудиторий, которые находятся в разных корпусах и/или этажах.
Приложение должно определять ориентацию пользователя при помощи компаса.
Приложение должно функционировать при отсутствии интернет соединения.
Обзор существующих методов решения
Рассмотрим существующие сервисы:
sailstech.com - Распространяется: бесплатно (Если планы зданий будут выложены в общий доступ), платно - $29 в месяц. Движок использует не только WiFi сигнала точки доступа, но и инерционные датчики, такие как акселерометр, компас, и гироскоп. Это помогает обеспечить плавное и наиболее точное позиционирование крытой местности с 10 метров до 2 метров. На вход принимает данные, сгенерированные программой JOSM(Возможен импорт из PDF [1]), в понятном, простом формате. Данные 2 видов: карта этажа, проходимый путь. Таким образом, приложение будет иметь список зданий и этажей в них. Имеет настройки визуального отображения объектов на карте. Имеется гайд по созданию простого приложения[2], документация, SDK под Android.
Indoor Google Maps [3] – Распространяется: бесплатно. Изображение загружается поверх карты Google.Maps. Есть навигация по этажам, нету маршрутизации. Не подходит по функционалу.
indoo.rs - Распространяется: бесплатно, платно.
Видно, что нужный нам вариант стоит $500.
Имеет SDK под android, IOS. Имеет редактор и загрузчик планов этажей, проходимых маршрутов. Доступны функции позиционирования, нахождения кротчайшего пути по проходимому маршруту (сквозь этажи в том числе, для Lite версии).
micello.com - Распространяется: бесплатно (Если планы зданий будут выложены в общий доступ), платно - $49 в месяц.
Есть SDK под android,
есть фреймверк для JS.
Карту можно импортировать практически
из любого формата
.
Доступны функции позиционирования,
нахождения кротчайшего пути по проходимому
маршруту сквозь этажи в том числе. [4]
.
Чтобы загрузить свою карту в систему, достаточно отправить заявку[5], приложив файлы со схемами зданий. Т.е. проблема генерации маршрутов и понятного формата карт для SDK перекладывается на плечи поддержки micello.
OSMDroid [6] - Распространяется: бесплатно. MapView компонент для платформы Android, позволяет отрисовывать тайлы(в режиме offline), сгенерированные программой Mobile Atlas Creator на основе Open Street Maps [7], позволяет двигать, зумить крату. Есть возможность добавления меток, полигонов. Можно загружать карту в устройство и не использовать подключение интернет для работы приложения.
Минус – ошибки в отображении путей, нанесенных на карту при большом масштабировании. В 2011 году был открыт вопрос к разработчикам по этому поводу, по сей день ошибка так и не была исправлена[8]. Поддерживаются карты только в растровом формате, в виде набора тайлов.
Mapsforge [9] - Аналог osmdroid, карта подгружается в векторном формате, отсутствуют визуальные ошибки при накладывании путей на карту. Существует сервис, поддерживающий в актуальном состоянии подробные OpenStreetMap карты приморского края. [10] Преобразовать данные карты в формат, понятный mapsforge можно при помощи программы osmosis. [11].
Вывод:
Беря во внимание существующие решения, предполагается два плана разработки приложения:
Создать вручную, с помощью редактора карт JOSM, схемы всех этажей и зданий, а также проходимый пусть, либо сгенерировать, используя готовые схемы в формате dwg. Написать парсер *.osm формата. Запрограммировать алгоритм поиска кротчайших путей. На основе компонента MapView mapforg’a отображать созданные схемы этажей и кротчайшие пути на них.
Отправить dwg схемы помещений в тех. поддержку micello. Уже почти полностью готовое решение, которое предоставляет их SDK, усовершенствовать так, чтобы оно отвечало всем заявленным требованиям. Возможно, появятся «подводные камни».
В связи с политикой о нераспространении схем корпусов ДВФУ было принято решение разрабатывать приложение, придерживаясь первого плана.
Требования к аппаратному обеспечению
Смартфон, планшет, либо другое устройство, работающее на android v7 и выше, имеющее акселерометр и измеритель магнитного поля земли. Рекомендуется процессор с тактовой частотой не ниже 500 МГц, не менее 128 МБ оперативной памяти. Разрешение экрана не менее 320 x 480.
Требования к программному обеспечению
OS Android v7 и выше.
Требования к пользователям
Пользователь должен уметь пользоваться устройством, на котором установит приложение.
2Спецификация данных
Описание формата
Гис формат *.osm, созданный разработчиками OpenStreetMap. Представляет из себя xml файл с данными. Используется приложением для описания схем этажей, объектов, находящихся на этажах, а также проходимых путей.
Файлы в этом формате размещаться по каталогам, специальным образом, образуя структуру, необходимую для определения назначения каждого из файлов.
Например. Файл assets/D/3.xml – обозначат схему 3го этажа корпуса D. Другой пример. assets/D/route/3.xml – обозначает проходимый путь на схеме из предыдущего примера.
Так внутри файла описывается 314 аудитория:
<node id='-1021' lat='43.02571706980208' lon='131.8906029433263'>
<tag k='aud' v='314' />
</node>
Так описывается одна из стенок:
<way id='-872' >
<nd ref='-869' />
<nd ref='-871' />
</way>
В качестве визуального редактора используется ПО под названием JOSM. Так же, курсовая работа Кольцова Филиппа реализует возможность генерации схем и проходимых путей корпусов ДВФУ, опираясь на существующие CAD описания схем.