
Июнь 2005
Тема номера: «Новейшие технологии: Oracle Spatial, RFID, Oracle Balance Scorecard, качество информации,…»
Л. Рейнгольд, гл.специалист Управления земельными ресурсами,
А. Сорокин, гл.специалист Управления земельными ресурсами,
В.Фощанко,
ведущий специалист МУП "Центр геодезии" г.Владимир
Вывод картографической информации
средствами Oracle с использованием Web-приложения
(часть1)
Введение
Oracle Application Server MapViewer (или просто MapViewer) является программным инструментом для отображения карт. Он использует пространственные данные, управляемые компонентами базы данных для работы с картографической информацией – Oracle Spatial или Oracle Locator. MapViewer предоставляет инструменты, которые скрывают сложность и комплексность организации запросов к пространственным данным и функциям отображения карт, но в то же время предоставляет широкий набор средств для более тонкой и всесторонней настройки параметров для более опытных пользователей. Эти инструменты могут быть помещены в платформно-независимую среду разработки и использованы для интеграции с приложениями, отображающими картографические данные.
В качестве примера, иллюстрирующего возможности использование MapViewer, рассмотрим реализацию простейшего Web-приложения. В качестве клиентской части данного приложения будет задействован обычный Web-браузер. HTML-страница для отображения на стороне клиента будет динамически генерироваться при помощи пакета PL/SQL UTL_HTTP и содержать необходимые функции для навигации по отображаемому в ее составе плану-схеме. Для обеспечения картографического изображения, которое находится на странице, будет задействован MapViewer. В качестве примера приложения решим задачу отображения картографического плана-схемы земельных участков города. Таким образом, вывод картографических элементов будет являться частью более крупной информационной Web-системы. Пример приложения, использующего MapViewer, содержит пространственные таблицы Oracle Spatial и метаданные, созданные для обеспечения работы с заданными таблицами, пример организации источника данных для MapViewer, XML-запросы к MapViewer и код PL/SQL процедуры, генерирующей HTML-страницу.
Установка и настройка MapViewer
Для того, чтобы начать работать с MapViewer, необходимо иметь следующие пакеты Java и продукты Oracle, соответствующих версий или выше:
- Oracle Application Server 10g (9.0.4) или автономную версию Oracle Application Server Containers for J2EE (OC4J) версии 9.0.2 или выше. В примере мы используем версию 9.0.4. Существенных отличий при использовании более новой версии MapViewer 10.1.2 RC (Release Candidate) в рамках рассмотренного примера не обнаружено.
- Oracle Spatial или Oracle Locator (версии 8.1.6 или выше)
- Клиент Oracle (версии 8.1.7 или выше), если необходимо использовать возможности JDBC Oracle Call Interface (OCI).
- Java JDK (или JRE) версий 1.2, 1.3 или 1.4.
Все перечисленные компоненты доступны на сайте Oracle и Sun. Их использование в коммерческих целях требует соблюдения требований лицензирования.
MapViewer запускается, как OC4J Web-приложение и принимает запросы от клиентов. Его можно установить в составе полного Oracle Application Server или в виде отдельной автономной инсталляции компонента OC4J. С более подробными инструкциями по установке можно ознакомиться в соответствующей документации, прилагающейся к дистрибутиву продукта.
Если настройки MapViewer, установленные по умолчанию, необходимо изменить, можно отредактировать конфигурационный файл MapViewer mapViewerConfig.xml, который располагается по следующему пути: $ORACLE_HOME\lbs\mapviewer\conf. После того, как файл будет изменен, необходимо перезапустить MapViewer, чтобы изменения вступили в силу.
Конфигурационный файл задает следующую информацию в XML-формате:
- Информация по подключению, задаваемая в элементе <logging>;
- Информация по изображению карты, расположенная в элементе <save_images_at>;
- Ограничения по выполнению административных запросов, задаваемые в элементе <ip_monitor>;
- Web-прокси информация для настройки внешних подключений через firewall, находящаяся в элементе <web_proxy>;
- Глобальные настройки карты, расположенные в элементе <global_map_config>;
- Установки внутреннего пространственного кэша, находящиеся в элементе <spatial_data_cache>;
- Настройки и регистрация нестандартного рендера, определенные в элементе <custom_image_renderer>;
- Источники данных карты, задаваемые в элементе <map_data_source>
Подробнее остановимся лишь на последнем элементе настройки, так как он имеет непосредственное отношение к приложению, которое рассматривается в этом материале. Конечно, источник данных для карты можно настроить динамически, выполнив соответствующий XML-запрос к MapViewer, но более простым решением будет задать нужный источник данных в конфигурационном файле, чтобы он был доступен всегда. Зададим нужный нам источник данных в элементе <map_data_source>
<map_data_source name="ds_demo"
jdbc_host="hostserver"
jdbc_sid="map9"
jdbc_port="1521"
jdbc_user="map"
jdbc_password="!mappswrd"
jdbc_mode="thin"
number_of_mappers="5"
/>
- Атрибут name задает уникальное имя источника данных, которое в дальнейшем будет использовано в запросах к MapViewer.
- Параметры jdbc_host, jdbc_sid, jdbc_port, и
jdbc_user определяют информацию подключения к базе данных.
- Параметр jdbc_mode определяет, каким способом JDBC-драйвер будет обеспечивать подключение MapViewer к базе данных. По умолчанию это thin. Этот режим не требует наличия на сервере, где запущен MapViewer, установленного клиента Oracle. Также можно воспользоваться типом подключения oci8, который рекомендуется
использовать, в случае если MapViewer запущен на одной машине с сервером базы данных.
- Параметр number_of_mappers определяет, сколько одновременно может быть создано рендеров карты для обслуживания одновременно подключившихся клиентов. Каждый рендер использует в среднем от 5 до 30 мегабайт оперативной памяти. Объем памяти зависит от объема полученных и обрабатываемых в процессе генерации карты данных. Каждый запрос, для которого нельзя сразу создать рендер, ставится в очередь. Максимально возможное количество рендеров - 64.
Основные принципы взаимодействия с MapViеwer
MapViewer представляет собой специализированный компонент среднего уровня в составе Oracle Application Server и состоит из двух основных компонентов:
- подсистема рендеринга (на основе библиотеки Java-классов), которая формирует изображение картографической информации;
- прикладной интерфейс на основе XML, позволяющий управлять работой MapViewer (т.е. предоставляет программный интерфейс к функциям MapViewer).
Подсистема рендеринга подключается к базе данных Oracle посредством JDBC и выполняет доступ к пространственным данным (чтение и запись данных, хранящихся в Oracle Spatial или Oracle Locator). Также эта подсистема загружает из базы данных метаданные для настройки отображения карты (характеристики карты, стили и правила отображения данных, условные знаки и т.д.), чтобы в ходе работы применить их к извлекаемым из базы данных пространственным данным.
Использование языка XML предоставляет разработчикам приложений высокоуровневый интерфейс, при помощи которого можно отправлять картографические запросы к MapViewer и получать ответы в виде сгенерированного растрового изображения. MapViewer может взаимодействовать с такими клиентами, как Web-браузер или специально разработанное клиентское приложение, используя протокол HTTP.
Схема взаимодействия с MapViewer укладывается в два основных шага и не зависит от того, является ли это обычным клиентским запросом или некоторым административным действием (см. рисунок 1).
Для запроса клиентом картографической информации:
1. Выполняя запрос, клиент включает в него имя карты (то есть имя мета-описания хранящегося в базе данных), источник данных, центр местоположения, размеры карты, а возможно и другие данные, которые необходимы для отображения карты в нужном виде.
2. Сервер возвращает изображение карты (или URL-адрес по которому доступно это изображение) и габаритный прямоугольник (MBR - минимальный охватывающий прямоугольник) карты, а также статус, отражающий успешность выполнения запроса.
Для административных запросов, управляющих конфигурацией MapViewer:
1. Клиент запрашивает у MapViewer административное действие, посылая информацию о типе запроса и необходимые для полноты запроса значения его параметров.
2. Сервер возвращает статус запроса и запрошенную информацию.
Рисунок 1. Схема базового взаимодействия для MapViewer
Рисунок 2. Обобщенная архитектура приложения.
Структура демонстрационного приложения
Рисунок 3. Основные элементы приложения
В рассматриваемом упрощенном приложении Web-браузер выступает в качестве клиента. Он обращается к поставляемому с сервером Oracle Web-серверу Apache с запросом на выполнение PL/SQL-процедур с заданными параметрами. Процедура динамически генерирует HTML-страницу, содержащую план-схему.
HTML-страница является носителем интерфейса пользователя и средством сохранения информации о состоянии пользовательского сеанса. Она содержит ссылку на растровое изображение плана-схемы, а также набор элементов управления для навигации по отображаемому на ней плану-схеме. Элементы управления выполнены в виде сгенерированных и вставленных в тело страницы запросов к PL/SQL-процедуре: увеличить, уменьшить масштаб; сдвинуть вправо, влево, вверх, вниз. Такой подход к организации навигации позволяет сохранить информацию о состоянии текущего сеанса пользователя в контексте взаимодействия браузера и Web-сервера без привлечения дополнительных механизмов (сookies, аутентификация и т.д.).
Web-сервер, функционирующий в составе сервера Oracle, обеспечивает работу Web-сервиса. Он осуществляет передачу и прием данных в рамках HTTP-протокола. В частности, он обеспечивает параметризированный вызов PL/SQL-процедуры, отправку браузеру динамически сгенерированной HTML-страницы и сгенерированного изображения плана-схемы.
MapViewer по XML-запросу PL/SQL-процедуры на основе заранее созданной карты и связанных с ней метаданных генерирует изображение плана-схемы фрагмента населенного пункта в указанном масштабе, с указанными размерами изображения и по указанным координатам. Он возвращает PL/SQL-процедуре ссылку на изображение сгенерированного изображения.
PL/SQL-процедура работает на стороне сервера и отвечает за генерацию HTML страницы. По запросу Web-браузера она генерирует HTML-страницу, в которую включает ссылку на изображение плана-схемы. Это изображение процедура предварительно запрашивает у MapViewer по заданным в качестве параметров процедуры координатам плана и масштабу, а также генерирует управляющие элементы навигации по плану-схеме. Эти управляющие элементы содержат обращения к той же самой PL/SQL-процедуре, но уже с модифицированными относительно текущего положения и масштаба плана-схемы параметрами.
Сервер Oracle Spatial содержит таблицы с пространственными данными и метаданными, необходимыми для работы приложения. Пространственные данные проиндексированы, могут формироваться и использоваться и другими приложениями.
Окончание в следующем номере. |