Как стать автором
Обновить
0

Картографический веб-сервис своими руками. Часть 1: Обзор инструментария

Время на прочтение 3 мин
Количество просмотров 18K
image
Приветствуем!
До определенного момента, задачи отображения данных на карте в интернете можно решить с помощью достаточно мощных инструментов веб-картографии таких как Google Maps API, API Яндекс.Карт, OpenStreetMap API.

Когда объектов много, разработка упирается в производительность клиента, поскольку на отрисовку тратиться вычислительная мощность компьютера человека который картой пользуется. Кроме того “художественные” возможности таких сервисов не всегда являются достаточными для расположения нужной информации на карте.

Для решения этих проблем привлекается серверное картографическое ПО которое дает более широкие возможности.

В этой серии статей мы рассмотрим установку и настройку веб-сервиса, который позволит отображать на карте различные гео-данные.


Постановка задачи

Возьмем достаточно актуальную и приземленную задачу отображения объектов которые хранятся в базе данных. Источником данных буде гео-поле в базе данных PostgreSQL. На стороне сервера нам необходимо сгенерировать слой с объектами и наложить его на Google Maps. Так же необходимо все операции выполнять на бесплатном ПО с возможностью допила под собственные нужды. Также необходимо максимально уйти от использования сторонних картографических сервисов.

Инструменты

Для решения нашей задачи необходимо представлять принцип работы всей связки, поэтому рассмотрим схему:

image

В зависимости от гисовского веб-сервера можно использовать разные форматы входящих данных. В нашем случае мы будем пользоваться MapServer который может использовать векторные и растровые данные.

Источник данных нужно предварительно подготовить, это значит что нужно взять с какого либо gps-устройства координаты и импортировать их в базу данные либо в любой другой формат, который поддерживает MapServer. В нашем случае мы будем брать данные из нашего gps-трекера M2M-mini, который посредством gprs канала складывает точки на сервер в базу данных PostgreSQL.

PostgreSQL выбран исходя из того что у него есть замечательная прокладка PostGIS которая позволяет выполнять гео-запросы из базы данных. Например выбрать области которые пересекает маршрут.

В геодезии есть такое понятие как проекция. Проекция — математически определённый способ отображения поверхности эллипсоида на плоскости. Т.е. то как глобус будет разложен на плоскую карту. Проекций существует достаточно много, данные которые будут импортированы в БД, могут быть в одной проекции а отображать их нам надо будет в другой, для этого вместе с MapServer на сервер нам необходимо будет установить библиотеку PROJ которая поможет работать нам с проекциями.

Сам MapServer конфигурируется map-файлом, в котором мы опишем каким именно образом нам надо выдавать данные, откуда их брать, и как раскрашивать саму карту, как будут выглядеть дороги, маршруты, и т.д.

Итого получается, что по определенному запросу, MapServer через PostGis с помощью PROJ выбирает данные из PostgreSQL и выводит их в одном из определенных форматом, начиная от обычного изображения и заканчивая WMS (которым мы и воспользуемся для организации именно веб-сервиса). При этом все это регулируется конфигурационном map файле который указывает серверу, какую информацию откуда брать.

MapServer работает в связке с Apache и выдает информацию в браузер. Нас интересует режим работы MapServer — WMS. В этом режиме клиентская программа (десктопная или, например, Google API через специальную функцию), с помощью GET запроса, просит показать MapServer тайлы с определенными координатами, размерами и прозрачностью. В ответ на такой запрос MapServer возвращает изображения которые используются клиентской программой для наложения на карту.

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

image

Вывод

С помощью PostgreSQL/PostGis + MapServer + Google Maps мы можем решить большинство задач, которые стоят сегодня перед веб-мастерами организовывающими свой гео-сервис, и в частности нашу задачу отображения точек на карте Google maps.

Во второй части, мы рассмотрим установку MapServer и PostgreSQL/PostGis, а также их привязку между собой.

Stay tuned!
gps-tracker.com.ua
Теги:
Хабы:
+15
Комментарии 14
Комментарии Комментарии 14

Публикации

Информация

Сайт
www.m2m.ua
Дата регистрации
Дата основания
2007
Численность
11–30 человек
Местоположение
Украина

Истории