MapViewer – средство для просмотра карт
в Oracle Application Server 10g (10.1.2)

(Oracle Application Server 10g (10.1.2) MapViewer)

Источник: Официальный документ Oracle, (An Oracle White Paper), сентябрь 2005г.,
http://www.oracle.com/technology/products/mapviewer/pdf/mapviewer10g_technical_white_paper.pdf

Оглавление

  1. *Краткий обзор
  2. *Введение
  3. *Краткий технический обзор
  4. *Новые и усовершенствованные возможности, появившиеся после MapView 9.0.4
  5. *Организация доступа к функциям MapViewer с использованием API Java *5.1. Метаданные для построения карты: стили, темы и основные карты
    *5.2. Стили
    *5.3. Темы *5.3.1. Правила моделирования
    *5.3.2. Как MapViewer формулирует запросы для предварительно определенных тем
    *5.3.3. Динамические темы в запросе карты
    *5.3.4. Составление тематических карт с помощью расширенных стилей
    *5.4. Основные карты
  6. * Процесс генерации карты
  7. * MapViewer и интерфейсы прикладного программирования Java и XML
  8. * Инструментальное средство определения карты
  9. * Резюме

1. КРАТКИЙ ОБЗОР

Как говорится, изображение стоит тысячи слов. Это особенно справедливо, когда пытаешься овладеть всей сложностью взаимодействий между людьми, ресурсами, продуктами и бизнес-процессами, распределенных по географическому пространству. В течение многих столетий люди использовали карты, чтобы овладеть этими сложными отношениями и упростить их, превратив в легко употребляемые, мощные пакеты однозначной информации. Начиная с Oracle10g и Oracle Application Server 10g, основная платформа Oracle доносит эту мощную, понятную всем возможность до каждого разработчика.

Инструментальное средство Oracle Application Server MapViewer (или просто MapViewer) обеспечивает мощные сервисы визуализации геопространственных данных и отчетности. Полностью написанный на Java и эксплуатируемый в среде J2EE инструмент MapViewer предлагает разработчикам Web-приложений универсальное и гибкое средство, позволяющее визуализировать бизнес-данные и интегрировать их с картами. Для управления географическими данными карт MapViewer использует базовые возможности, включенные в Oracle10g (поставляются в составе Oracle Spatial или Oracle Locator). MapViewer скрывает от разработчиков приложений сложность запросов к пространственным данным и процесса формирования визуализированной картографической информации.

К предлагаемым MapViewer сервисам можно получить доступ по протоколу HTTP через гибкий и мощный интерфейс прикладного программирования (API) на основе XML. Используя этот API, разработчик приложений может приказать MapViewer, чтобы тот выбирал пространственные данные и генерировал карты, используя любой экземпляр базы данных Oracle. С помощью API XML пользователи и разработчики могут также настраивать внешний вид карты. Они могут контролировать визуальные характеристики карты – например, цвет фона, заголовки и символику, обычно используемые для изображения таких характеристик, как дороги, сохранять места расположения магазинов и границы владений и так далее, используя для этого расширяемые метаданные, хранящиеся в таблицах базы данных. Также возможно включать в карты динамически получаемые геопространственные данные, например, места размещения заказчиков, и наносить их поверх основной карты. Кроме того, используя API MapViewer, можно реализовать построение тематических карт (thematic mapping), когда на карте отображается распределение каких-либо атрибутов, например, плотности населения, психодемографической информации, измеряющей доход, образование и т.д., если у пользователя имеются необходимые для этого исходные данные. Начиная с Oracle Application Server 10g (9.0.4), MapViewer предлагает Java API и ряд тэгов JSP (Java Server Page), которые скрывают большую часть сложности при использовании XML. API MapViewer поддерживает четкое разделение между представлением данных и самими данными. Пользователи контролируют внешний вид карты с помощью метаданных для построения карты, которые определяют основные карты, темы карты, символы карты, правила моделирования и другую информацию изображения. Способность управлять всеми данными изображения в центральном репозитории и коллективно использовать такую информацию большим числом пользователей является ключевым преимуществом MapViewer.

2. ВВЕДЕНИЕ

Управление географическими данными традиционно велось в составляющих чью-то собственность (proprietary - проприетарных) отформатированных файлах, и они выводились (на экран или на печать) с использованием специальных GIS-приложений. База данных Oracle 10g предлагает для управления географическими данными открытое и основанное на стандартах решение, использующее Oracle Spatial или Oracle Locator. Пользователи могут загружать в базу данных все типы геометрических данных, создавать пространственные индексы и задавать пространственные SQL-запросы. Благодаря этому, Oracle становится промышленным стандартом управления геопространственными данными.

MapViewer дополняет возможности управления географическими данными базы данных Oracle, предлагая общее основанное на Web-технологиях средство доставки и рассмотрения любых географических данных в среде базы данных. При этом создается огромный потенциал для понимания и добычи географических компонент любого бизнеса за счет освобождения корпоративной информации из множества корпоративных хранилищ, в результате чего она становится доступной для основных картографических приложений. Например, бизнес-приложения типа Field Service, Transportation and Logistics, Product Lifecycle Management, Human Resources и Real Estate могут теперь формировать и визуализировать огромное количество данных, которыми они управляют, если в них имеется географический компонент типа адреса, привязанного к данным. Разработчики сервисов, основанных на местоположении объекта, издатели данных в общегосударственных и местных органах власти, а также архитекторы Web-сервисов и более традиционных приложений могут теперь легко интегрировать MapViewer в свои Web-решения.

3. КРАТКИЙ ТЕХНИЧЕСКИЙ ОБЗОР

Компонент сервера приложений Oracle MapViewer (ставший доступным после появления выпуска 9.0.2) написан на Java и эксплуатируется в Oracle Container for J2EE (OC4J). Компонент MapViewer поставляется в составе сервера приложений Oracle, но можно просто загрузить и MapViewer, и автономный OC4J из сети технологий Oracle (Oracle Technology Network – http://otn.oracle.com/). Как только они будут получены, необходимо развернуть MapViewer в OC4J. После задействования MapViewer будет вести прослушивание запросов клиентов, которые могут быть в очень широком диапазоне: от запросов карты до административных запросов, типа определения источника данных или распечатки списка предварительно определенных карт для источника данных. Все запросы будут посылаться, используя метод POST HTTP, а контент запросов будет закодирован в формате XML (детали API XML MapViewer будут описаны в этой статье позже). Если ваше приложение использует API Java или тэги JSP, то они займутся преобразованием вашего запроса в документ XML и отправят его, используя POST HTTP.

Когда получен запрос на карту, MapViewer анализирует его и отыскивает в базе данных релевантные пространственные данные, а также метаданные карты (символика, принципы построения карты). Затем формируется изображение карты, которое может быть визуализировано с помощью стандартного браузера и (при желании) сохранено в указанном формате в локальной файловой системе. В большинстве случаев MapViewer посылает затем закодированный в XML ответ, указывающий на успешное завершение, назад клиенту. На рис.1 представлена “с высоты птичьего полета” архитектура и общий поток данных для этого процесса.

Рисунок 1. Архитектура MapViewer

Задавая выполняющемуся экземпляру MapViewer запрос на карту, клиент должен определить источник данных. Источник данных подсказывает MapViewer: какую надо использовать схему базы данных, чтобы отыскать данные карты и метаданные для построения карты. Источники данных могут быть определены динамически через административные запросы к MapViewer. Для каждого источника данных MapViewer установит одно или более подключений JDBC к указанному пользователю базы данных, а также создаст указанное количество реализаций картопостроителя, чтобы обработать запросы на карты для этого источника данных. Инфраструктура для управления этой загрузкой обеспечивается опцией пула подключений сервера приложений Oracle.

Метаданные для построения карт управляют внешним видом сгенерированных карт. Эти метаданные включают символы карты, типы шрифтов текста, шаблоны областей и линий, правила моделирования, которые объединяют “пространственные” таблицы с уровнями или темами карты и определения основных карт. Метаданные для построения карт хранятся в схеме базы данных (как на приведенном выше рис. 1), и индивидуальные пользователи могут или определить персонифицированные метаданные для их частного использования, или общие метаданные могут быть совместно использованы группой пользователей. Например, организация может определить ряд обычно используемых символов карты, которыми смогут совместно пользоваться пользователи из многих отделов. А затем и каждый отдел сможет определить свои собственные уровни карты и основные карты, используя для этого общедоступные символы карты.

4. НОВЫЕ И УСОВЕРШЕНСТВОВАННЫЕ ВОЗМОЖНОСТИ, ПОЯВИВШИЕСЯ ПОСЛЕ MAPVIEW 9.0.4

К числу новых и усовершенствованных возможностей, появившихся после MapViewer v9.0.4 относятся:

Пользователи определяют темы GeoRaster (изображение), которые могут быть сформированы наряду с нормальными векторными темами.

    • Поддержка 10g Topology и сетевых моделей данных

MapViewer может формировать пространственные объекты, которые будут храниться в 10g Topology или в сетевых моделях данных. Можно выполнять ограниченные функции сетевого анализа и результаты их выполнения наносить на карту.

    • Прозрачная поддержка JPEG и формата PNG

Теперь MapViewer поддерживает индексированные карты PNG с прозрачным фоном и карты JPEG.

    • Поддержка спецификации Web Map Server 1.1.1 консорциума Open Geospatial Consortium

MapViewer поддерживает формирование данных, полученных с использованием протокола Web Map Service (WMS) открытого консорциума GIS (OGC).

    • Поддержка Workspace Manager

Workspace Manager – это опция базы данных Oracle, позволяющая работать в базе данных с несколькими версиями одной или нескольких таблиц. Вы можете запросить карту из определенного рабочего пространства, для определенной контрольной точки в рабочем пространстве, или для точки, близкой к определенной дате в рабочем пространстве.

    • Динамическое преобразование системы координат в запросе на карту

Пользователи могут определить в запросе карты SRID (ID пространственной ссылки или ID эталонной системы координат), и MapViewer преобразует данные темы, если они определены не для указанного SRID.

    • Поддержка карт SVG

Теперь MapViewer поддерживает вывод карт в форматах SVG Basic, SVG Compressed и SVG Tiny. При генерации карты SVG можно определить атрибуты для темы, возвращаемой с получающейся картой SVG, которая затем может быть отображена во всплывающем окне, следующем за курсором, по мере того, как вы передвигаетесь по карте SVG. Кроме того, с помощью таких инструментальных средств как Java Script можно также настраивать уровни в сгенерированной карте SVG и управлять ими.

    • Источник данных контейнера как источник данных карты

Теперь MapViewer позволяет вам использовать определенный в контейнере OC4J источник данных как источник данных карты.

    • Усовершенствования стиля

Было принято несколько усовершенствований к имеющимся стилям. Стиль линии теперь поддерживает стрелки, к тому же, стиль линии может использоваться как граница стиля области. Отображения стилей текста и маркеров можно проконтролировать дополнительно с использованием новой поддержки векторов ориентации.

    • Временные стили в запросе карты

Теперь можно создавать динамически определенные стили (то есть, временные стили) для использования их с запросом карты.

    • Опция ограничения тем для ограничения объема отображенных данных

Теперь в запросе карты для ограничения диапазона пользовательских данных, наносимых на карту, можно использовать новый элемент <bounding_themes>.

    • Высокая готовность и MapViewer

Теперь MapViewer дает возможность более эффективно использовать опции высокой готовности (например, выравнивание нагрузки, и кластеры) сервера приложений Oracle.

5. ОРГАНИЗАЦИЯ ДОСТУПА К ФУНКЦИЯМ MAPVIEWER С ИСПОЛЬЗОВАНИЕМ API JAVA

Разработчики Web-приложений могут извлечь преимущества из мощных сервисов MapViewer. В этом разделе иллюстрируется взаимодействие клиентов с MapViewer. В описываемом случае клиент может быть или программой Java, или компонентом Java Server Page Web-страницы. При обсуждении предполагается, что:

Примечание 1: [Информацию о том, как установить и развернуть MapViewer и добавить источник данных, можно найти в MapViewerUser’s Guide ( “Руководстве пользователя по MapViewer”)]

Если экземпляр MapViewer выполняется на сервере приложений Oracle или в OC4J, к нему можно получить доступ через URL сервиса. В следующем примере используется URL сервиса http://foo.com/mapviewer/omserver.

Дополнительно предположим, что в источнике данных mvdemo есть основная карта, названная demo_map и определенная как часть ее метаданных для построения карты. Чтобы получить карту с центром в области Сан-Франциско (долгота/широта:-122.40, 37.80), размером 400 ширину на 360 пикселей в высоту, покрывающую область 2.5 десятичных градуса (сверху донизу), используйте следующий сегмент кода Java:

import oracle.lbs.mapclient.*;
String serverUrl = “http://foo.com/mapviewer/omserver”;
MapViewer mapClient = new MapViewer(serverUrl);
mapClient.setDataSourceName("mvdemo");
mapClient.setBaseMapName("demo_map");
mapClient.setCenterAndSize(-122.40, 37.80, 2.5);
mapClient.setDeviceSize(new Java .awt.Dimension (400,300));
mapClient.setImageFormat(MapViewer.FORMAT_PNG_URL);
boolean response = mapClient.run();
if (response)
System.out.println(“URL of generated map:”+
     mapViewer.getGeneratedMapImageURL());
else
    System.err.println(“Error from MapViewer service.”);

Заметьте, что изображение самой карты будет сгенерировано и сохранено как файл PNG на том хосте, где фактически выполняется сервис MapViewer.

Относящиеся к API Java детали можно найти в “Руководстве пользователя MapViewer”. В этом документе содержатся также типовые программы, показывающие, как сформулировать и послать XML-запросы к картам непосредственно из программ на Java или PL/SQL.

В последующих разделах основные концепции MapViewer, API XML и процесс формирования изображения описываются более детализировано.

5.1. Метаданные для построения карты: стили, темы и основные карты

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

5.2. Стили

Стилем называется визуальный атрибут, который может использоваться для представления пространственной характеристики. Символы и легенды основной карты для представления характеристик точек, линий и областей определяются и сохраняются как индивидуальные стили. Каждый стиль имеет уникальное имя и определяет один или несколько графических элементов в синтаксисе XML.

Каждый стиль относится к одному из следующих типов:

Все стили хранятся в таблице пользователя системы MDSYS, но доступны каждому пользователю через его собственное представление USER_SDO_STYLES.

Любая географическая характеристика, типа дороги, может быть отображена по-другому, если для этого будут назначены или применены дополнительные стили, даже притом, что основная геометрическая структура самой характеристики идентична. Рисунок 2 служит примером одной и той же дороги, формируемой с использованием трех различных типов линий.

Рисунок 2. Одинаковая геометрия, различные типы линии

Отметьте, что представления XML для каждого типа стиля являются собственностью Oracle, но эти определения стиля определены в “Руководстве пользователя MapViewer”. В будущем, по мере того как будет разрабатываться и “взрослеть” стандарт для такого рода информации (изображений), MapViewer также присоединится к его поддержке.

5.3. Темы

Тема (theme) – это визуальное представление специфического уровня данных. Концептуально, каждая тема связана с определенным пространственным уровнем геометрии, то есть, со столбцом типа 7 MDSYS .SDO_GEOMETRY в таблице или представлении. Например, тема по имени US_States могла бы быть связана со столбцом GEOM типа MDSYS.SDO_GEOMETRY в таблице STATES.

Есть несколько типов поддерживаемых в MapViewer тем, поддержка которых зависит от того, как эти темы были созданы. Статические темы называют предопределенными (предварительно определенными) темами, определения которых хранятся в представлении USER_SDO_THEMES пользователя базы данных. Другим типом являются динамические темы (иногда их также называют темами JDBC), которые более просты и определяются “на лету” в рамках каждого запроса карты.

Начиная с выпуска 10.1.2 MapViewer, основная поддержка изображений с географической привязкой, хранящихся в Oracle Spatial 10g GeoRaster, может также быть сформирована через темы GeoRaster. Определение темы GeoRaster может быть или сохранено в базе данных как предопределенная тема, или динамически создано приложением. Рисунок 3 является иллюстрацией обычных векторных тем, налагающихся поверх темы изображения. Детали того, как использовать темы GeoRaster, можно найти в “Руководстве пользователя MapViewer”.

Рисунок 3. Тема GeoRaster, перекрытая векторными темами

В фактическое определение предопределенной темы включаются: имя базовой таблицы или представления, имя столбца геометрии и одно или несколько правил моделирования, которые связывают стили со строками базовой таблицы. Обычно правила моделирования оказываются наиболее интересной частью определения темы; они будут обсуждаться в следующем разделе.

5.3.1. Правила моделирования

Для предварительно определенной темы может иметься одно или несколько правил моделирования. Каждое правило моделирования указывает MapViewer на две вещи:

Каждое правило моделирования кодируется в XML в соответствии с приведенными ниже соглашениями. В приводимом ниже примере правило является частью темы, названной theme_us_airports, базовая таблица которой содержит данные об аэропорте и имеет, например, такие столбцы, как GEOM, NAME и RUNWAY_NUMBER.

<rule>
<features style="c.black gray">
runway_number &gt; 1
</features>
<label column="name" style="t.airport name">
1
</label>
</rule>

В этом правиле, как и в каждом из правил моделирования, есть две части: <features> и <label>. Элемент <features> сообщает MapViewer, какие строки должны быть выбраны, и какой стиль следует использовать при формировании из этих строк геометрических форм. Для определения строк можно использовать, как значение элемента <features>, любую допустимую фразу WHERE (без самого ключевого слова WHERE). В этом случае будут выбраны все строки, удовлетворяющие условию SQL “runway_number> 1”, и для изображения геометрии аэропорта для этих строк будет использован стиль цвета c.black gray.

Отметьте, что из-за ограничений XML символ ‘>’ в соответствии с синтаксисом XML представлен как ‘&gt;’. Во время выполнения это представление будет преобразовано MapViewer обратно в символ ‘>’, чтобы можно было сформулировать надлежащий запрос SQL.

Вторая часть предшествующего правила моделирования – это (дополнительный) элемент <label>, который может принимать два значения: 0 или 1. Когда значение этого элемента есть 1, MapViewer попытается при генерации карты помечать аэропорты. Текст метки будет получаться из столбца 9 NAME, а стиль текста будет t.airport name. Заметьте, что если задание метки не является необходимым, вы можете опустить элемент <label> или указать для него значение 0.

Также заметьте, что при ссылке на характеристику или метку стиля имя стиля может принять форму <user>:<style_name>, например, MDSYS:t.airport name. Такое имя заставляет MapViewer применить названный стиль из схемы указанного пользователя, в нашем случае, пользователя MDSYS. Таким образом, в составе стандартной пользовательской схемы (например, MyOrgSchema) можно определить все основные символы карты организации, и добиться того, чтобы все другие пользователи пользовались ей совместно, не записывая один и тот же набор символов карты по много раз.

5.3.2. Как Mapviewer формулирует запросы для предварительно определенных тем

В предварительно определенной теме для каждого правила моделирования MapViewer будет формулировать SQL-запрос, чтобы отыскать пространственные данные. Если в теме будет задано несколько правил, то SQL-запрос для каждого из них будет объединен, для чего будет использована SQL-конструкция UNION ALL. В следующем примере, где theme_us_airports появляется в запросе, определяющем центр (-122.40, 37.80) и размер (5) карты, сформулированный MapViewer запрос будет приблизительно таким:

SELECT GEOM, 'c.black gray', NAME, 't.airport name', 1
FROM AIRPORTS
WHERE MDSYS.SDO_FILTER(GEOM,
MDSYS.SDO_GEOMETRY(2003, NULL, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
MDSYS.SDO_ORDINATE_ARRAY(-125.1777, 35.3, -119.6222,40.3)),
'querytype=WINDOW') = 'TRUE'
AND (runway_number > 1);
Оператор SELECT структурирован и является позиционно зависимым. Первый элемент в списке SELECT всегда является столбцом геометрии. Второй и четвертый элементы в списке SELECT соответствуют стилям имени характеристики и метки, указанным в правиле моделирования темы. Последний элемент SELECT является литеральным значением ‘1’, которое указывает MapViewer, что все строки результирующего множества должны быть помечены. Третий элемент списка SELECT – это столбец, который содержит фактический текст метки, также определенный в правиле моделирования. Оператор SDO_FILTER (автоматически сгенерированный MapViewer) и условие характеристики (предлагаемое в вышеупомянутом примере правила моделирования) объединены вместе во фразе WHERE.

Список SELECT будет иметь тот же самый порядок и те же типы данных для каждого правила моделирования, и вследствие этого может быть объединен с использованием UNION ALL, если для темы имеется несколько правил моделирования. Несколько правил моделирования требуются, например, в тех случаях, когда различные наборы строк для темы выбираются на основании различных условий, и каждый набор строк имеет свои собственные стили формирования и маркирования изображения. Например, если в таблице хранятся геометрические формы для автомагистралей между штатами, государственных дорог, городских улиц и улиц пригородных поселков, в запросе к MapViewer можно указать, что каждый из этих типов дорог на карте должен быть представлен по-разному. В этом случае должно иметься четыре набора правил моделирования, на которые будут делаться ссылки.

5.3.3. Динамические темы в запросе карты

Для динамических тем, определенных на базе запросов одной карты, может быть определено только одно правило моделирования. Это правило неявно определяется путем указания всего SQL-запроса и 10 необходимых стилей характеристик и меток в определении темы. Способ определения немного отличается от способа определения для предварительно определенных тем, обсуждавшихся выше. Следующий пример определяет динамическую тему как часть запроса карты.

<map_request>
…
<theme name="sales_by_region">
<jdbc_query spatial_column ="region"
datasource="mvdemo"
label_column="manager"
render_style="V.SALES COLOR"
label_style="T.SMALL TEXT"
> select region, manager from foo_sales_2001
</jdbc_query>
</theme>
…
</map_request>

В этом случае определяется динамическая тема, названная sales_by_region. Запрос, который выбирает строки/характеристики для этой темы, имеет вид SELECT REGION, MANAGER FROM FOO_SALES_2001. Имена стилей характеристики метки определены как атрибуты render_style и label_style, соответственно. Заметьте, что информация подключения базы данных перечислена явно, как часть определения темы.

Кроме того, хотя фактические данные для темы могут быть получены из различных баз данных (как указано в информации подключения базы данных), стили, на которые ссылаются, будут всегда извлекаться из источника данных, указанного в полном запросе карты.

5.3.4. Составление тематических карт с помощью расширенных стилей

Простое построение тематических карт (thematic mapping) может быть достигнуто путем применения в теме расширенных стилей печати. Предположим, что вы хотите сформировать классификацию по округам таким образом, чтобы округ с более высокой плотностью населения был представлен более темным цветом. Чтобы сделать это, определите расширенный стиль, в котором имеется ряд цветов, и для каждого цвета назначьте для плотности населения диапазон значений. Например, округа с населением меньше 50 000 могли бы иметь желтый цвет, с населением от 50 000 до 250 000 – оранжевый, округа с населением от 250 000 до 1 000 000 светло-красный цвет, и так далее.

Предположим, что для представления относительных значений плотности населения будет использоваться стиль, который называется V.POP DENSITY. После того как для стиля будут установлены диапазоны значений, определите тему, которая использует в качестве стиля характеристики V.POP DENSITY, так же, как и для стандартных тем. Однако, в отличие от процедуры со стандартными темами, для этой расширенной темы необходимо также определить столбец основной таблицы, который содержит фактическую плотность населения. Это позволяет гарантировать, что MapViewer будет в состоянии отобразить в стиле V.POP DENSITY ряд цветов на строки (округа), выбранные для этой темы. Для подобного определения используется атрибут column элемента <rule> в следующем правиле моделирования:

<rule column="pop_density">
<features style="V.POP DENSITY">
</features>
</rule>

После того как эта тема была определена, ее можно использовать, как любую другую предварительно определенную тему. На рисунке 4 показано сформированное изображение, в котором каждая область округа представлена цветом, отражающим значение плотности населения, приписанное этому округу.

Рисунок 4. Простая тематическая карта

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

<theme_name="sales_by_region_2">
<jdbc_query spatial_column="region"
datasource="mvdemo"
label_column="manager"
render_style="V.SALES COLORS"
label_style="T.SMALL TEXT"
>
SELECT region, manager, sales_2003 FROM foo_sales_2003
</jdbc_query>

В предыдущем примере для расширенного стиля необходим столбец атрибута SALES_2003, и он включен в список SELECT запроса темы.

5.4. Основные карты

Для формирования основной карты предварительно определенные темы могут быть сгруппированы. Подобная группировка обеспечивает удобный способ включить в запрос карты несколько тем. Заметьте, что в основную карту могут быть включены только предопределенные темы, но не динамические темы, определения которых не сохраняются после каждого обработанного запроса карты. Определения основных карт сохраняются в представлении пользователя USER_SDO_MAPS.

Для каждой темы, перечисленной в основной карте, может быть предложен минимальный и максимальный масштаб карты. Это обеспечивает мощный механизм, используемый для выборочного показа тем, основанного на масштабе текущей карты. Например, при формировании карты штата Нью-Йорк было бы невозможно эффективно отобразить уличную сеть такого города, как Нью-Йорк. Однако, при просмотре Манхеттена, приложение могло бы заодно хотеть изобразить все местные улицы. Эта особенность MapViewer делает возможной подобный тип выборочного включения информации, основанного на характере приложения.

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

6. ПРОЦЕСС ГЕНЕРАЦИИ КАРТЫ

В этом разделе детализируется конкретный процесс генерации карты. Чтобы в ответ на запрос карты MapViewer мог сгенерировать карту, должны быть выполнены следующие условия:

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

  • Если запрос карты ссылается на имя основной карты, упомянутая основная карта должна быть определена в метаданных для построения карты представления USER_SDO_MAPS. Для каждого пользователя базы данных должно быть определено это представление, так как в нем должны храниться все предварительно определенные основные карты этого пользователя. Основная карта, по сути дела, определяет, какие предварительно определенные темы должны быть сформированы, и в каком порядке.
  • Для всех предварительно определенных тем основной карты, а также для тех предварительно определенных тем, на которые явно ссылаются в запросе карты, в представлении пользователя USER_SDO_THEMES должны иметься соответствующие определения тем.
  • Для всех стилей, на которые ссылаются изо всех тем (как предварительно определенных, так и динамических), в представлении пользователя USER_SDO_STYLES должно иметься соответствующее определение стиля. Или, в том случае, если на имя стиля ссылаются в форме <пользователь>:<имя>, использованный стиль должен существовать в представлении USER_SDO_STYLES для указанного пользователя.

Если все перечисленные выше условия выполнены, MapViewer формирует все темы, которые неявно или явно определены в запросе карты. Этот технологический процесс состоит из следующих шагов:

  1. MapViewer создает пустое изображение и заполняет его в соответствии с размером и цветом фона, определенными в запросе карты.
  2. На пустое изображение накладываются все темы, являющиеся частью основной карты (если она указана в запросе карты). Темы формируются в том порядке, в котором они перечислены в определении основной карты. В частности, все темы изображения будут всегда сформированы до формирования любых векторных (обычных) тем.
  3. Перед формированием темы MapViewer, базируясь на правилах моделирования темы, формулирует SQL-оператор запроса. Затем он выполняет запрос и выбирает данные для этой темы из базы данных. Этот процесс известен как “подготовка темы”, которую необходимо сформировать. Для сокращения числа повторных выборок геометрических данных будет использоваться внутренний кэш геометрических объектов. Кроме того, как часть подготовки темы, подтверждаются все стили, на которые ссылаются в теме, и если они еще не во внутреннем кэше стилей, они (стили) будут выбраны из источника данных.
  4. Любые явно указанные темы (будь то предварительно определенные или динамические) в запросе карты подготавливаются и формируются поверх того же самого изображения согласно порядку, в котором они перечислены в запросе.
  5. Если есть какие-то индивидуальные геохарактеристики (GeoFeatures), перечисленные в запросе карты, они наносятся поверх изображения.
  6. Для тем, имеющих характеристики, которые нужно снабдить метками, имеет место процесс аннотации. MapViewer автоматически обнаруживает все коллизии меток и определяет оптимальное положение для каждого текста метки (если имеется место для его размещения). Темы помечаются в том же самом порядке, как они были сформированы.
  7. Если затребованы заголовки карты, сноски, легенды, логотип карты и другие опции, они выводятся на карту.

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

7. MAPVIEWER И ИНТЕРФЕЙСЫ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ JAVA И XML

MapViewer выставляет свои сервисы через API XML, который разработчики приложений могут использовать при формулировании XML-запросов карты для MapViewer и при парсинге XML-ответов из него. Через API XML приложение может:

Начиная с выпуска 9.0.4 MapViewer, API XML встроен в API Java, чтобы разработчики Java-приложений могли легко использовать новый API, вместо того чтобы управлять непосредственно XML-запросами карты.

Информацию об API XML и Java можно найти в MapViewer User’s Guide (“Руководстве пользователя MapViewer”).

8. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО ОПРЕДЕЛЕНИЯ КАРТЫ

Для помощи в создании и управлении картографическими метаданными Oracle предлагает в сети Oracle Technology Network неподдерживаемую утилиту (Map Definition Tool).

9. РЕЗЮМЕ

Компонент MapViewer предлагает разработчикам Web-приложений универсальное средство для визуализации бизнес-данных и их интеграции с картами. Он использует для управления географическими картографическими данными основные возможности, включенные в Oracle10g (Oracle Spatial или Oracle Locator). С его помощью удается скрыть от разработчиков приложений сложность пространственных запросов к данным и процесса формирования карт. Разработчики могут легко интегрировать MapViewer в свои приложения. Разблокируя корпоративную информацию во многих корпоративных хранилищах и делая ее доступной для основных картографических приложений, мы создаем огромный потенциал для понимания и использования географических составляющих любого бизнеса.

Oralce Application Server 10g (10.1.2) MapViewer
September 2005
Author: L.J. Quan and Jayant Sharma
Contributing Authors: Chuck Murray
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.
Worldwide Inquiries:
Phone: +1.650.506.7000
Fax: +1.650.506.7200
oracle.com
Copyright © 2005, Oracle. All rights reserved.
This document is provided for information purposes only and the
contents hereof are subject to change without notice.
This document is not warranted to be error-free, nor subject to any
other warranties or conditions, whether expressed orally or implied
in law, including implied warranties and conditions of merchantability
or fitness for a particular purpose. We specifically disclaim any
liability with respect to this document and no contractual obligations
are formed either directly or indirectly by this document. This document
may not be reproduced or transmitted in any form or by any means,
electronic or mechanical, for any purpose, without our prior written permission.
Oracle, JD Edwards, PeopleSoft, and Retek are registered trademarks of
Oracle Corporation and/or its affiliates. Other names may be trademarks
a