Добавление новых карт в систему GPS-мониторинга

    Timofey Temlyakov
    АвторTimofey Temlyakov
    May 19, 2016
    Добавление новых карт в систему GPS-мониторинга

    Платформа Navixy по умолчанию поддерживает все наиболее популярные в мире сервисы Web-картографии: Google, Яндекс, Bing, Openstreetmap, Wikimapia и еще более десятка других. Тем не менее, бывают ситуации, когда нужно подключить дополнительную карту, например, с высокой детализацией конкретного региона или специализированную для служебной ГИС. О том, как это сделать в системе Navixy, мы и расскажем в этом посте.

    Когда нужные дополнительные карты

    По нашей практике потребность в добавлении новых карт возникает у клиентов чаще всего в двух случаях:

    Недостаточно подробные карты для нужного региона. Порой ни одна из имеющихся публичных карт не предоставляет необходимого уровня детализации. Как правило, это относится к малонаселенным местностям. Например, на карте могут быть различимы только улицы и кварталы, но не указаны номера домов, или сеть дорог прорисована не вполне четко. При этом у клиента (или оператора сервиса GPS-мониторинга) имеется лицензированная карта с хорошей детализацией этого региона, которую можно добавить в систему.

    На карте нужна дополнительная тематическая информация. Для специализированных ГИС, часто – для производственных и научных целей, на существующей карте необходимо отобразить дополнительную информацию. Это могут быть объекты инфраструктуры (часто используется ресурсодобывающими компаниями для указания мест добычи и маршрутов транспортировки) или статистическая информация о территории, к примеру, относящаяся к типу почв или проживающему населению.

    В платформе Navixy отобразить совершенно новую карту или нанести на существующую карту собственную информацию можно за счёт наложения дополнительного картографического слоя.

    Такой слой может быть добавлен для любого интересующего участка местности – от небольшого района до территории целой страны. При этом он может быть подключен как для конкретных учетных записей (ограниченное использование), так и открыт для всех пользователей сервиса (публичный доступ).

    Добавляем новые карты в Navixy

    В общем виде добавление нового картографического слоя включает 3 этапа:

    1. Подготовить картографические данные в формат тайлов
    2. Загрузить данные в тайловый сервер (сторонний или собственный)
    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. Если у вас есть конкретная необходимость выполнить такую операцию или появились вопросы, ждем ваших обращений.

    Поделиться