Платформа Navixy по умолчанию поддерживает все наиболее популярные в мире сервисы Web-картографии: Google, Яндекс, Bing, Openstreetmap, Wikimapia и еще более десятка других. Тем не менее, бывают ситуации, когда нужно подключить дополнительную карту, например, с высокой детализацией конкретного региона или специализированную для служебной ГИС. О том, как это сделать в системе Navixy, мы и расскажем в этом посте.
Когда нужные дополнительные карты
По нашей практике потребность в добавлении новых карт возникает у клиентов чаще всего в двух случаях:
Недостаточно подробные карты для нужного региона. Порой ни одна из имеющихся публичных карт не предоставляет необходимого уровня детализации. Как правило, это относится к малонаселенным местностям. Например, на карте могут быть различимы только улицы и кварталы, но не указаны номера домов, или сеть дорог прорисована не вполне четко. При этом у клиента (или оператора сервиса GPS-мониторинга) имеется лицензированная карта с хорошей детализацией этого региона, которую можно добавить в систему.
На карте нужна дополнительная тематическая информация. Для специализированных ГИС, часто – для производственных и научных целей, на существующей карте необходимо отобразить дополнительную информацию. Это могут быть объекты инфраструктуры (часто используется ресурсодобывающими компаниями для указания мест добычи и маршрутов транспортировки) или статистическая информация о территории, к примеру, относящаяся к типу почв или проживающему населению.
В платформе Navixy отобразить совершенно новую карту или нанести на существующую карту собственную информацию можно за счёт наложения дополнительного картографического слоя.
Такой слой может быть добавлен для любого интересующего участка местности – от небольшого района до территории целой страны. При этом он может быть подключен как для конкретных учетных записей (ограниченное использование), так и открыт для всех пользователей сервиса (публичный доступ).
Добавляем новые карты в Navixy
В общем виде добавление нового картографического слоя включает 3 этапа:
- Подготовить картографические данные в формат тайлов
- Загрузить данные в тайловый сервер (сторонний или собственный)
- Подключить новый слой в системe Navixy
Первые два этапа – подготовительные. По большей части они выполняются заказчиком, с использованием рекомендаций наших консультантов. На третьем этапе, когда сервер работает и отдает тайлы с картографической информацией, мы помогаем добавить новый слой в систему мониторинга, и при необходимости ограничить доступ к нему для нужного круга пользователей.
1. Готовим карты и тайлы
Имеющийся картографический материал потребуется преобразовать в тайловую графику – равномерные участки с привязкой к географическим координатам для каждого масштабного уровня.
Чаще всего наши клиенты для этого используют формат MBTiles компании Mapbox, хотя можно готовить файлы и с другим расширением, например, MBTiles компании Mapbox, хотя можно готовить файлы и с другим расширением, например, GeoTIFF. Важно, что вне зависимости от выбранного формата файлов тайлы должны быть представлены в проекции Меркатора.
Это обеспечит корректное наложение пользовательского слоя на карты, доступные в программном обеспечении Navixy, так как карты также выполнены в проекции Меркатора. Размер тайлов может быть любым, однако при отображении в платформе Navixy он будет автоматически подогнан под наиболее распространенный — 256 ppi.
2. Запускаем тайловый сервер
Подготовленные файлы потребуется разместить на тайловом сервере, где для каждого файла будет доступна ссылка вида:
http://tileserver.com/{z}/{y}/{x}
Ссылка должна позволять получать корректный ответ по запросу вида:
//tileserver.com/{z}/{x}/{y}.png
Тайловый сервер может быть развернут самостоятельно, либо через использование внешнего SaaS-сервиса, предлагающего подобные услуги.
Вариант А. Собственный тайловый сервер
Поднять собственный сервис для раздачи тайлов карт – вполне типичная задача, которая под силу каждому хорошему системному администратору. Основная сложность состоит не столько в его настройке, сколько в сравнительно высоких требованиям к вычислительным ресурсам сервера. На сервере будут запущены компоненты для решения следующих задач:
- Передачи тайлов с проверкой возможности их загрузки из кэша;
- Распределения нагрузки и создания очередности запросов;
- Перевода векторных данных в растровые тайлы;
- Загрузки исходных данных в базу данных (не требуется в случаях, когда данные уже есть в БД и требуется передача информации только о объектах, например дорогах, домах и т.п.);
- Управления базами данных (СУБД);
Системным администраторам мы советуем выбрать Unix-подобную операционную систему, поскольку это дешевле и хорошо отработано, а для ряда из них и вовсе имеются готовые решения. Например, можно развернуть тайловый сервер прямо из пакетов для Ubuntu, используя подложку OpenStreetMap. В общем случае для Unix-подобных систем подробно описаны поэтапные алгоритмы для развертывания тайлового сервера.
Вариант Б. Внешний тайловый сервис (SaaS)
Существуют сторонние компании, которые предлагают готовое решение по развертыванию и поддержанию постоянной работы тайлового сервера. В этом случае все необходимые компоненты и вычислительные ресурсы предоставляются провайдером услуги. Из популярных стоит отметить крупный зарубежный сервис Mapbox и российский Квазар.
3. Подключаем новый слой к Navixy
После запуска тайлового сервера с загруженной в него картографической информации, остается подключить его к системе Navixy. Для этого мы добавляем в ней новый “плагин” специального типа “внешняя веб-картография”. В качестве параметров указываем URL тайлового сервера, а также, при необходимости ограничить доступ к информации – ID сервиса или ID конкретных учетных записей.
В интерфейсе пользователя новый слой появляется в списке доступных слоев.
Примечательно, что каждый слой можно включать как отдельно (режим замещения), так и вместе с другим слоем (режим наложения). В последнем случае для управления наложением нужные данные выбираются галочками.
Итак, мы познакомили вас с общим процессом добавления нового картографического слоя в систему Navixy. Если у вас есть конкретная необходимость выполнить такую операцию или появились вопросы, ждем ваших обращений.