«Как найти этот дом?», «Как туда проехать?» — задумываться об этом время от времени приходиться каждому. Все вопросы, так или иначе связанные с местоположением искомого объекта, имеют непосредственное отношение к адресному плану (адресатору). Есть, конечно, карты населенного пункта и схемы маршрутов общественного транспорта: брошюры либо большие сложенные листы. Купить их можно в любом специализированном магазине, однако все они не слишком удобны для поиска необходимой информации. Например, поиск дома затруднен тем, что на большинстве карт пронумерованы только угловые дома; поиск улицы прост, только если на карте есть индексная информация (в каких квадратах расположена та или иная улица), об оптимальном маршруте и вовсе говорить не приходится. Альтернатива бумажной карте — современные Internet-технологии. На возражение, что доступ к сети имеют далеко не все, заметим, что в свое время мало у кого был телевизор — но направление развивалось, появлялись новые технологии, которые в конце концов стали общедоступными. Похожим образом развивается и предоставление с помощью Internet услуг по поиску географически привязанной информации. За этими технологиями будущее — недаром на Западе такие вещи стали уже привычными. Из сказанного вытекает ряд вопросов: как предоставить пользователю информацию, какое понадобится программное обеспечение, как сделать работу коммерчески эффективной.

Некоторые ответы я попытаюсь дать в этой статье. Речь пойдет о пилотном проекте Internet-сайта, предоставляющего пользователям адресную информацию по Ярославлю.

В основу всего проекта положен Internet-сервер, работающий под управлением Microsoft Internet Information Server 5.0 (Windows 2000). В качестве ГИС-ядра нами используется программное обеспечение фирмы Autodesk, а именно MapGuide Server 6.0. Это обусловлено следующими свойствами продукта:

  • относительная дешевизна базового комплекта плюс бесплатный компонент для просмотра карт на клиентских местах, платить за который соответственно не надо и пользователю;
  • возможность совместной работы с независимыми базами данных, которые могут работать отдельно от графической основы;
  • предоставление данных в векторном виде, что дает возможность не только просматривать карту, но и работать с ее объектами;
  • возможность создания объектов на месте клиента;
  • открытый интерфейс для программирования, что позволяет создавать собственные приложения;
  • возможность создания зеркальных серверов и др.

Основой для базы данных стал Microsoft SQL Server 2000, а в качестве клиентских рабочих мест используется базовый Autodesk MapGuide Viewer, хотя для упрощения работы пользователя решено было расширить его некоторыми дополнительными функциями и специально разработанными модулями.

Благодаря появлению в новой версии MapGuide модуля Autodesk MapGuide Dynamic Authoring Toolkit и технологии работы с XML-форматом у разработчиков Internet-приложений появилось множество возможностей по созданию так называемых web-сервисов — работающих на Internet-сервере приложений, которые обслуживают запросы, передавая клиентам результаты их обработки. Все это позволяет нам использовать динамические карты, то есть автоматически формируемые на сервере проекты для конкретного пользователя, учитывающие его запросы, права доступа и личные настройки (цвета, размеры, тип шрифтов и др.).

В результате — несколько очевидных преимуществ перед статическими проектами:

  • формирование проекта для конкретного пользователя (IP-адрес, имя и пароль, уникальный номер MapGuide Viewer и др.);
  • возможность подключать к проекту только те слои, с которыми клиент имеет право работать;
  • возможность создания временных слоев с объектами, удовлетворяющими определенным условиям (имеются в виду не SQL-фильтры, которые предоставляет MG Viewer, а web-сервис, который выполняется на сервере, создавая временные файлы с последующим их подключением к проекту) (рис. 6−7).

Как уже сказано, базовый компонент для просмотра карт (Autodesk MapGuide Viewer) дополнен рядом модулей и функций для более эффективного поиска объектов и работы с картой. Все написано на языке Visual Basic, что значительно улучшает внешний вид компонентов и web-страницы в целом, исключая при этом излишнюю загрузку HTML-кода при каждом посещении сайта.

Рассмотрим подробнее функциональные возможности модулей, специально разработанных в рамках проекта.

Базовый модуль дополнен следующим:

  • панорамирование карты осуществляется средней кнопкой мыши (что очень удобно и понравится пользователям AutoCAD);
  • зуммирование в пределы карты так же, как и в AutoCAD, выполняется двойным нажатием средней кнопки мыши;
  • осуществляется постоянный контроль пределов (extent) карты, не позволяющий ей «исчезнуть» с экрана. Контролируются максимальный и минимальный масштабы отображения;
  • Рис. 1
    Рис. 1
  • стандартная панель инструментов заменена перемещаемой (плавающей) в окне Internet Explorer, что, по утверждению пользователей, удобнее (рис. 1);
  • добавлено некоторое количество функций API, которые ускоряют написание дополнительных компонентов и модулей.

Для работы с адресатором создано две дополнительных формы:

  1. форма поиска по названию улицы и/или номеру дома, а также поиска по названию места (сады, микрорайоны, парки, исторически сложившиеся названия территорий и др.) (рис. 2);
  2. форма результатов поиска с функцией поиска улицы или адреса (дома) и места на карте (рис. 3).
Рис. 2
Рис. 2
Рис. 3
Рис. 3

Все формы могут перемещаться в окне Internet Explorer, хотя и являются элементами HTML-кода.

Теперь непосредственно о работе с адресатором.

При первом обращении к странице появляется запрос об установке (рис. 4) и, если дан положительный ответ, на компьютер пользователя автоматически устанавливаются все необходимые для работы компоненты. После этого загружается карта Ярославля в масштабе М1:200000 (рис. 5).

Рис. 4
Рис. 4
Рис. 5
Рис. 5

Создавая используемые слои, мы учитывали, что скорость передачи данных на наших линиях невелика: каждый новый вид, полученный в результате зуммирования, панорамирования или поиска, при загрузке занимает не более 50 Кб, что приемлемо для нормальной работы в сети. Это было сделано за счет разделения каждого слоя на группы по упрощению (генерализации) вектора для разных масштабных диапазонов.

Также было решено исключить из списка слоев, которые появляются при загрузке проекта, слой с объектами застройки. Причин тому несколько:

  • соображения секретности: на электронных картах нельзя показывать номера домов, кроме угловых (пережитки прошлых лет, но их никто не отменял);
  • финансовые соображения: показ всех домов целесообразно включить в платную услугу и отображать эти дома для конкретных пользователей;
  • «облегчение» проекта: подгрузка домов требуется не всегда (сетевая задача и т.д.).

При поиске адреса пользователь полностью или частично вводит название улицы, а также номер дома (последнее не обязательно). Запрос отправляется на Internet-сервер, который связан с базой данных (в нашем случае, напомним, MS SQL 2000), причем это может быть и другой сервер, установленный в любом месте (допустим, в управлении архитектуры). Результат поступает клиенту в XML-формате, обрабатывается и выводится в форме «Результаты поиска» (рис. 3, 6, 7). После этого пользователь может посмотреть на карте города объект застройки, который соответствует искомому адресу, выбрав его из списка адресов (рис. 6), или найти всю улицу (рис. 7). Здесь следует отметить, что при отображении домов на сервере формируется временный слой, который состоит из искомого дома и окружающих его объектов застройки в радиусе, определенном для данного пользователя в зависимости от его полномочий. При поиске улицы отображаются все принадлежащие ей дома, слой с которыми также создается на сервере исходя из прав пользователя.

Рис. 6
Рис. 6
Рис. 7
Рис. 7

В заключение скажем, что этот проект — первый шаг в создании полноценного Internet-ресурса, предоставляющего пользователям информацию о городе, которая так или иначе связана с картой. Ведется разработка компонентов для оптимизации маршрутов (сетевая задача), получения справки по объектам (при этом определяется, имеет ли пользователь право получить такую справку), работы с базой данных по предприятиям и организациям города, а также по предоставляемым ими услугам. Рассматривается возможность участия пользователей в поддержании актуального состояния карты. Дорабатывается коммерческая сторона работы сайта, что очень важно для фирмы-поставщика услуг в области картографии.