[Все статьи]

Публикация карт на страницах Интернет сайтов

Для решения задач публикации электронных карт на страницах web-сайтов используются специальные программные инструменты – Internet Map Servers (ГИС web-сервера). Многие производители инструментария для ГИС предлагают подобные продукты: ESRI ArcIMS, MapInfo MapXtreme, Oracle MapViewer, GIS WebServer (ГИС "Панорама"). Цены на такие программные продукты довольно высоки, поэтому позволить себе их использование могут только финансово обеспеченные потребители.

Все вышеуказанные программные продукты предназначены для построения динамических web-сайтов с картографическим наполнением. На самом деле для ГИС web-серверов используется довольно простая технология – генерировать изображение с картой по запросу пользователя (картинку с участком карты) и встраивать её в страницу сайта.

Типичное web-приложение ГИС, созданное с помощью такого инструментария обладает почти всеми функциями, которыми обладает типовое настольное ГИС приложение:

  • просмотр электронных карт в различных масштабах,
  • произвольное перемещение на карте,
  • наложение информационных слоёв карты,
  • получение информации по объекту путём выбора его на карте,
  • поиск объекта на карте по его атрибутам,
  • произвольная стилизация карт,
  • и т.п.

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

На самом деле тут нет ничего нового – довольно часто на страницах сайтов встречаются отсканированные топографические карты или "скриншоты" с карт из настольных ГИС приложений. "Оживить" такие "статические" карты (картинку на странице сайта) можно, например, при помощи средcтв HTML: создать "карту" изображения (image map), т.е. разметить карту (изображение) и, например, привязав к таким размеченным участкам гиперссылки или JavaScript код.

Похожий приём используется в утилите для MapInfo – HTML Image Map. При помощи этой утилиты можно создавать целые страницы для сайтов. Результат немного "угловат", но, приложив немного усилий, можно его привести в "божеский" вид.

Например, требуется пометить условными обозначениями на карте города все пиццерии. Просто берём картинку с картой города, помечаем (рисуем в графическом редакторе) некоторыми условными знаками все пиццерии, создаём карту изображения средствами HTML.

Ну, с простыми случаями казалось бы всё понятно. А как быть, когда нужно сделать что-либо сложнее и интереснее? Допустим, имеется в распоряжении набор электронных карт (в формате, поддерживаемом какой-либо настольной ГИС) или даже настоящая база данных с пространственными данными. Эти электронные карты или база данных периодически обновляются. Неужели придётся раскошелиться на лицензию для ГИС web-сервера (несколько тысяч долларов) и нанять разработчиков, которые "прикрутят" при помощи него карты его для вашего web-сайта? Если вы уверены, что необходимо именно полноценное ГИС web-приложение, то у вас, в принципе, другого выхода и нет. При этом так же нужно будет решить вопрос с хостингом – всего скорей для полноценного ГИС web-приложения понадобится выделенный и довольно мощный сервер и постоянное соединение с вашей базой данных. Получается довольно затратное мероприятие. А не из пушки ли по комарам стреляете? Проанализируйте ваши потребности в публикации карт в Интернете – возможно, вам полноценное ГИС web-приложение и не нужно, а в таком случае и не нужен ГИС web-сервер:

  • Подумайте, нужна ли для ваших пользователей возможность выбора произвольного масштаба для просмотра карты на сайте, возможность произвольного "перемещения по карте"!?
  • Будут ли посетители вашего сайта испытывать необходимость делать запросы к вашему сайту (карте) типа: "найти и отобразить на карте, в каком пивном баре в радиусе 5 км от моего дома самое дешевое пиво" :-)
  • Нужна ли для пользователей функция, которая позволяла бы измерять более-менее точные расстояния по карте!?
  • А как на счёт того, что если пользователь "кликнет" мышкой в произвольном месте карты а в ответ ему всплывающее окно с информацией по объекту на карте, в который он "попал" кликом?

Нужно ли такое?! Полагаю, что в подавляющем большинстве случаев вы скажете, что не нужно. А если, нужно, например произвольное масштабирование, то, вспомнив, сколько стоит лицензия на ГИС web-сервер, то вы откажетесь от этой функции. Действительно, а зачем вам арабский скакун за 1000 золотых, если вам раз в неделю нужно сходить в лес за вязанкой дров?! С этой задачей ваш ослик, который вы купили на рынке за 50 золотых, вполне справится :-)

Разумеется, есть простые и эффективные решения. Можно вернуться к варианту с простым статическим изображением, размеченным средствами HTML. Что в нём не устраивает? Наверное, основная проблема это то, что если данные для публикации на карте подвергаются периодическим обновлениям, то довольно не удобно после каждого обновления переделывать страницу сайта картой. Выход – автоматизация этого процесса.

Например, вы заранее подготовили картинки с нужными участками – подложки (такие рисунки, например, можно сделать при помощи ГИС инструментов, которые имеются у вас в распоряжении - таких как MapInfo, ArcInfo или "Панорама" и т.п.). На таких подложках имеется вся необходимая "статическая" картографическая основа – улицы, водоёмы, дороги и т.п. Что если у вас в распоряжении будет программа, которая будет автоматически рисовать на таких подложках информационные слои или даже генерировать HTML? Т.е. инструмент, который будет реализовать функции, какие предлагает утилита MapInfo HTML Image Map, но более удобный в применении – вы просто настраиваете его один раз и затем, все необходимые карты и даже HTML код создаётся автоматически на основе актуальных данных. Вашей задачей останется только по необходимости запускать такую программу (или просто настроить автоматический запуск по расписанию) и выкладывать получившиеся страницы на ваш web-сайт (что, в общем, так же можно делать автоматически).

Для многих ГИС существуют инструменты для разработчика (SDK или GIS Toolkit) и можно воспользоваться ими для создания прикладных программ. Однако эти инструменты так же покупаются отдельно и довольно дороги (от нескольких десятков до нескольких сотен тысяч рублей в зависимости от типа лицензии). Но, например, для MapInfo возможна разработка по технологии OLE (немного старовато, но всё же) – и этим можно воспользоваться совершенно бесплатно (разумеется, при наличии лицензии на саму MapInfo Professional). В состав ГИС "Карта 2005" уже входит GIS Toolkit. Поэтому написание прикладных программ для работы с ГИС довольно разумная и популярная идея.
Вообще должен заметить, что по настоящему "вкусить" эффективность ГИС можно только использовав прикладные инструменты для ГИС, решающие именно ваши задачи. Использование, например, той же MapInfo Professional в том виде, в котором вы "достали её из коробки", будет не очень удобно для ваших далеко не "продвинутых" пользователей.

Ну да, скажете вы – изобретать велосипед!? Если вы можете позволить себе купить настоящий ГИС web-сервер даже для простых задач, когда нужно опубликовать пару карт и двумя-тремя информационными слоями, и потом гордиться тем, что "выкинули" сотни тысяч рублей на покупку лицензии и разработку ГИС web-приложения для вашей пустяковой задачи – тогда напрасно читаете эту статью. Если вы согласны с тем, что стоит использовать более простые решения для несложных задач, тогда можете воспользоваться таким инструментом, как EasyWebMaps. Этот инструмент работает на основе подхода, описного в этой статье – создаются картинки-подложки со "статической" картографической основой (реки и озёра, населённые пункты, дороги). Затем на эти подложки программно наносятся информационные слои на основании некоторого источника данных – создаются картинки с участками карты для публикации на сайте. Так же создаётся HTML код с данными по публикуемому информационному слою. В итоге автоматически генерируется контент (пример здесь)

Похожая технология используется, например, в работе сайта FINNRA:

FINNRA Интернет сайт

Даже прагматичные и довольно богатые финны не стали использовать ГИС web-сервер. Когда я спросил, "почему?" - они с недоумением ответили – "а зачем?". Для их задач такого простого решения вполне достаточно и оно устраивает пользователей – что, пожалуй, самое главное.

Предлагаемая технология обладает следующими преимуществами:

  • Простота
  • Нет необходимости использовать технологии для построения динамических web-сайтов. Достаточно просто размещать статические, но автоматически созданные HTML страницы.
  • Возможность встраивания в любой web-сайт в независимости от программной платформы.
  • Мизерные потребности в аппаратных ресурсах.
  • Нет необходимости постоянного подключения к источнику данных.
  • Возможность базирования web-сайта на практически любом внешнем хостинге с недорогим тарифным планом.

Тот момент, что для работы карт, созданных и опубликованных по предлагаемой технологии, не нужно постоянное подключение к источнику данных, требует дополнительного пояснения:
Под источником данных понимается, например, база данных, на основании которой вы будите создавать "динамические" (периодически обновляющиеся) информационные слои. Т.е. база данных хранит информацию о пространственном положении объектов или произошедших событий и информацию по ним. Ну, представьте себе, что вы размещаете свою базу данных на серверах провайдера хостинга или открываете доступ к своей базе из вне чтоб ваш сайт мог бы работать с ней. А если в базе хранятся какие-либо очень важные или даже конфиденциальные данные?! Это ж какую "дыру" в безопасности вы создаёте! Даже если сайт и база данных базируется на ваших серверах, то предлагаемая технология позволяет работать сайту в "offline" режиме по отношению к базе – что так же более эффективно с точки зрения надёжности и безопасности. Так же нельзя не отметить момент, что подобная технология позволяет более эффективно скрывать реальные пространственные координаты объектов, что не маловажно в некоторых случаях – в реальности публикуется картинка, работающая в "оконных" координатах, а не в реальных географических.

В данной статье не рассматривался сервис Google Maps. На мой взгляд, это довольно интересное направление, и по стоимости владения картами на web-сайте, созданными при помощи этого сервиса, оно может конкурировать со многими технологиями публикации карт в Интернете. Но т.к. я имею пока довольно общее представление о принципах разработки web-приложений при помощи Google Maps, ничего конкрет ного по этому поводу сказать не могу – это будет материал для отдельной статьи в будущем.

Так же не рассматривались варианты с построением решений на основе бесплатно распространяемых "open source" программных продуктов. Да, используя такие продукты можно значительно снизить затраты на создание web-сайта, публикующего карты. Я провёл краткое исследование этого вопроса и честно говоря не нашёл действительно хорошего и при этом простого продукта из этой категории, но это моё субъективное мнение.

Крапивин Виктор.
Февраль, 2008 г.

[На верх страницы]
Loading... Загрузка...