|
|
|||||||||||||||||||||||||||||
|
Интеграция Oracle Spatial с Google EarthИсточник: oracle Джастин Локитц, директор по профессионально-техническому обеспечению сбыта компании Leica Geosystems
Узнайте, как использовать Oracle Locator/Oracle Spatial, GeoServer и Google Earth для создания единой, надежной системы BI с возможностями определения местоположения. Мир зациклился на технологиях для работы с местоположениями. Неважно, ищут ли люди с помощью Google Earth свои дома, отслеживают ли с помощью сотовых телефонов, поддерживающих GPS, своих детей или используют встроенные в архитектуру Oracle своих предприятий возможности, позволяющие определять местоположение. В любом из перечисленных случаев создается впечатление, что мало того, что все интересуются всей этой всячиной, связанной с местоположением, но и сама жизнь и бизнес людей также зависят от этого. Однако, как и для любого другого набора процветающих технологий при увеличении числа возможных технологических выборов, то же самое происходит и с числом сложностей и форматов данных. Вот тут-то и вступает в игру сообщество разработчиков открытого программного обеспечения. Сообщество разработчиков открытого программного обеспечения (open-source) для геопространственных технологий мало чем отличается от других подобных сообществ. Оно состоит из сотрудников академий, инженеров и архитекторов и имеет своей целью создание мощных и удобных в работе структур и технологий, которые помогают преодолевать бреши, остающиеся между коммерческими ресурсами. Например, когда дело доходит до совместного использования данных, с картами или без них, лучшим из всех является Confluence GeoServer ( http://docs.codehaus.org/display/GEOS/Home ) - сервер c открытым исходным кодом, который может использоваться для подключения несоизмеримых геопространственных источников данных. Разработчики GeoServer считают свой проект идеальным "клеем" для геопространственной Web-Сети. В принципе, GeoServer удивительно прост. Скажем, у вас имеются некоторые данные, хранящиеся в базе данных Oracle Spatial, и вы хотите опубликовать эти данные в Web в формате, который можно будет использовать другими пакетами программ, например, Google Earth. Чтобы сделать это, вы, конечно, могли бы определить таблицу стилей XML или некоторый другой процесс вывода, чтобы перевести исходные данные в KML (стандартный язык разметки Google Earth). Однако чтобы сделать это эффективно, вы, вероятно, захотите учесть все известные геометрические типы, так же, как и любые метаданные и/или данные, связанные с геометрическими формами (материал, который действительно имеет значение). Для одноразового проекта, это могло бы быть не так уж и плохо. Но если вы желаете применить ваш доморощенный механизм преобразования к нескольким наборам данных и дизайнам данных, то вам придется проделать много работы, чтобы сначала создать структуру преобразования, способную к обработке всех сложностей обоих источников данных - и вашего, и Google Earth - а затем обработать фактические преобразования. А что вы сделаете, если ваши потребности или данные (исходные и на выходе), изменятся? Применение GeoServer делает этот весь процесс намного более простым. Предоставляя возможности элементарного обеспечения связи с таблицами опции Oracle Locator/Oracle Spatial из Oracle Database, GeoServer может выполнять простые запросы ограничивающего прямоугольника Oracle Spatial (запросы первичного фильтра), преобразовывать результаты в KML и предоставлять выход KML как сервис для Google Earth для формирования изображения на карте. Это привлекательное, недорогое решение для простых геопространственных запросов. В предлагаемой статье рассказывается о том, как использовать Oracle Locator/Oracle Spatial, GeoServer и Google Earth для создания устойчивой легко сочетаемой системы для сбора, обработки и анализа деловой информации с поддержкой определения местоположения. Я надеюсь, что в конце знакомства со статьей вы сможете выйти из этого упражнения с лучшим пониманием того, как использовать открытые исходные технологии для расширения числа способов, которыми вы используете коммерческие технологии.
Oracle Locator/Oracle Spatial - учебник для начинающих Одной из самых мощных, но наименее понимаемых возможностей системы управления реляционными базами данных Oracle (начиная с Oracle Express и до Oracle Enterprise Edition) является Oracle Locator. По определению, "Oracle Locator представляет опцию Oracle Database 10 g Standard Edition и Enterprise Edition, предоставляющую базовые функциональные возможности определения местоположения, требующиеся большинству приложений заказчиков". Однако Oracle Locator предлагает намного больше этого. На самом деле, Oracle Locator дает пользователям возможность хранения информации о местоположении (геопространственной или другой), например, долготы и широты, в тех же самых таблицах и строках, что и остальная часть данных. Но Oracle Locator идет еще дальше: используя эту стандартную возможность, пользователи с теми же самыми данными могут также выполнить анализ местоположения. Так, когда вы просто хотите возвратить всю информацию о чем-то, что происходит в пределах некоторого расстояния от чего-то еще, зачем обращаться к карте или к географической информационной системе (ГИС)? Ведь Oracle Locator может сделать это для вас прямо в базе данных. И, конечно, применительно к Oracle Spatial (опция Oracle Enterprise Edition), кроличья нора становится более глубокой - намного более глубокой. По сути, Oracle Locator и Oracle Spatial - это, действительно, одно и то же. Они совместно используют один и тот же основной тип объекта (SDO_GEOMETRY), а также и те же самые метаданные и схему индексации. Однако в то время как Oracle Locator предоставляет внушительные функциональные возможности основного анализа местоположений (например, способность находить все данные, которые имеют некоторые топологические отношения с другими данными), Oracle Spatial строит поверх этого возможность для хранения и управления изображением и данными и метаданными с географической привязкой. Эта опция создает и анализирует линейные модели данных (сетевую и топологическую); превращает базирующуюся на тексте адресную информацию в долготу/широту с геокодированием; предлагает направления движения посредством интегрированного механизма маршрутизации; и выполняет глубокий многомерный пространственный анализ и глубинный анализ местоположения и других данных. Самое главное и для Oracle Locator, и для Oracle Spatial - это то, что данные и анализ являются доступными для любого клиента, который может подключиться к базе данных Oracle и делать к ней запросы.
Загрузите набор данных округов Образец набора данных, включенный в демонстрационный код counties.dmp, состоит из двух таблиц, COUNTIES и STATES, а также метаданных Oracle Spatial и связанных индексов. Чтобы загрузить этот набор данных в вашу базу данных Oracle, проделайте следующее:
Взглянем на объекты базы данных Начиная с этого момента, у вас имеется все, что нужно, чтобы начать "задавать" Oracle Locator свои вопросы об отношениях между геопространственными и не геопространственными данными. Но прежде чем продолжить, давайте рассмотрим те структуры, которые добавлены к базе данных и как они работают. Для этого:
Выходные данные должны выглядеть примерно следующим образом: Name Null? Type GEOM MDSYS.SDO_GEOMETRY COUNTY VARCHAR2(31) FIPSSTCO VARCHAR2(5) STATE VARCHAR2(30) STATE_ABRV VARCHAR2(2) FIPSST VARCHAR2(2) LANDSQMI NUMBER TOTPOP NUMBER POPPSQMI NUMBER Как можно видеть, большая часть информации в этой таблице состоит из текста (VARCHAR2) и чисел (NUMBER). Однако, строке GEOM, в которой хранятся фактические ординаты, составляющие геометрические представления для ваших округов, предписан тип базы данных MDSYS.SDO_GEOMETRY. Если более пристально взглянуть на этот тип, вы увидите, что его можно описать следующим образом: SQL> desc SDO_GEOMETRY
Из этого описания и Руководства пользователя и справочника по Oracle Spatial (http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14255/toc.htm) вы можете определить несколько характеристик сохраняемых данных:
Глядя на данные единственного столбца.... SQL> select geom from counties where county = 'San Francisco'; GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES) SDO_GEOMETRY(2003, 8265, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), видно, что вне зависимости от того, храните ли вы точки, линии или многоугольники (как в этом примере), управление всеми данными происходит в пределах одного типа (и в одном столбце). Так что вам нет необходимости волноваться об осложнениях, связанных с использованием двоичных данных; другими словами, это скорее "белый ящик", чем реализация черного ящика. При хранении данных о местоположении таким способом учитывается гибкость, наряду с доступом через такие стандартные интерфейсы доступа, как SQL, JDBC и ODBC.
Индексация R-дерева Oracle Spatial В Oracle Spatial предлагается мощная индексация, которая называется индексом в виде R-дерева. В "Руководстве пользователя и справочнике по Oracle Spatial" сказано: "пространственный индекс, как и любой другой индекс, предоставляет механизм ограничения поисков, но в нашем случае этот механизм основан на таких пространственных критериях, как пересечение и сдерживание. Пространственный индекс необходим для:
Поэтому, когда в Oracle Database создаются таблицы, которые содержат информацию о местоположении (или геопространственную, картографическую), будет хорошей практикой индексировать данные о местоположении путем использования пространственного индекса.
Сделайте запрос к данным После того как данные будут загружены, вы можете выполнить интересные операции анализа, например, следующие: "Покажите мне любые округа, которые находятся внутри, охвачены и/или касаются штата Калифорния (которые не могут быть удовлетворены непространственным запросом по скалярным атрибутам штата)". select /*+ ordered */ c.COUNTY,c.STATE_ABRV,c.TOTPOP,c.POPPSQMI from states s, counties c where s.state = 'California' and sdo_anyinteract (c.geom, s.geom) = 'TRUE'; Здесь вы просите, чтобы Oracle Database возвратила все округа, у которых имеется топологическое взаимодействие любого вида со штатом Калифорния. В результате этого запроса должны быть возвращены все округа штата Калифорния, а также округа штатов Орегон, Невада и Аризона - 74 из 3 300 округов США. Невозможно разрешить этот запрос при использовании только столбца STATE в таблице COUNTIES, потому что в таком случае не будут включены округа из других штатов, которые примыкают или имеют любое другое взаимодействие с Калифорнией. С этого момента у вас имеется надежный фундамент для выполнения еще более интересного, визуального анализа на основании таблицы COUNTIES. Прежде чем вы решите быстро и энергично приступить к использованию Oracle Locator или Oracle Spatial для управления всеми вашими данными, вы, наверное, захотите посмотреть на следующие веб-сайты и документы: oracle.com/technology/products/spatial/index.html Преобразование данных Oracle с помощью GeoServer Согласно сайту Confluence Web, GeoServer "является сервером открытого исходного кода, который подключает вашу информацию к геопространственной Web-Сети". Другими словами, как было ранее упомянуто в этой статье, GeoServer может действовать как коммуникационный мост между другими геопространственными сервисами/серверами. С помощью этого моста форматы данных могут быть легко (на лету) и динамически преобразованы. Для наших целей это огромное преимущество. Даже принимая во внимание, что вы всегда можете написать немного кода (на PL/SQL, Java, PHP), чтобы вывести данные Oracle Locator/Oracle Spatial, как KML для Google Earth, это не всегда практично. Плюс к этому - здесь то самое место, где серверы с открытым программным обеспечением, типа GeoServer, просто сияют.
Инсталляция GeoServer Чтобы начать работу с GeoServer, проделайте следующее:
Прежде, чем вы сделаете это, можно увидеть, что загружается в GeoServer по умолчанию. Для этого:
Заметим, что если вы пытаетесь создать новое хранилище данных, не установив сначала Oracle DataStore Extension for GeoServer, опции подключения Oracle в списке не обнаруживаются.
Инсталляция Oracle DataStore Extension Для инсталляции Oracle DataStore Extension for GeoServer:
Конфигурация GeoServer для Query Oracle Database После того как Oracle DataStore Extension for GeoServer был успешно инсталлирован, вы можете использовать GeoServer, чтобы делать непосредственные запросы к базе данных Oracle.
Создание хранилища данных GeoServer Data Store для Oracle Database Теперь, когда GeoServer установлен и функционирует и инсталлирована Oracle DataStore Extension, надо сконфигурировать GeoServer, чтобы можно было делать запросы к ранее импортированной таблице COUNTIES. Для этого:
Создайте для округов тип объекта GeoServer После загрузки данных вы будете хотеть создать тип объекта, представление для некоторых данных из вашего хранилища данных. Для этого:
*Примечание: В пункте d конфигурируется запрос ограничивающего прямоугольника первичного фильтра к Oracle Spatial. GeoServer в настоящее время не поддерживает общих геопространственных запросов для отыскания местоположения, типа "самый близкий сосед" или "в пределах расстояния" или других типов запросов отношений. Однако Oracle Application Server MapViewer - опция каждого сервера приложений Oracle - полностью поддерживает эти виды запросов и многие другие.
Стили карт Теперь вы готовы тестировать подключение GeoServer к вашему хранилищу данных и типу объекта. В этот момент вы должны быть в состоянии выводить данные в нескольких форматах, основанных на таблице COUNTIES. Однако, потому что вы применили к нашему объекту только простой стиль многоугольника, возможно, на ней будет можно увидеть не слишком много. После быстрого теста подключения вы создадите более интересную стилизацию набора данных. А пока:
Получите в браузере изображение карты с GeoServer Чтобы протестировать ваш объект COUNTIES, откройте новое окно браузера и перейдите к следующему URL: Это запрос WMS, который указывает GeoServer вывести изображение типа PNG шириной 800 пикселей и высотой 600 пикселей, с SRS (система координат) 4326, для объекта COUNTIES, с очень простым стилем многоугольника и в пределах ограничивающего прямоугольника следующих размеров: минимальная долгота (-177.1), минимальная широта (13.71), максимальная долгота (-61.48) и максимальная широта (76.63). После обработки вашего запроса GeoServer должен возвратить изображение, которое похоже на рисунок 6: В этот момент вы готовы интегрировать (используя объект GeoServer) вашу таблицу Oracle с Google Earth. Прежде чем сделать это, мы исследуем, как использовать стили отображения, чтобы определить более интересное и описательное предоставление информации об округах. Для этого вы должны применить новый стиль (или стилизованный описатель уровня) к вашему объекту.
Создание стилизованного описателя уровня Стилизованный описатель уровня, или SLD, делает ваши карты красочными. Он указывает серверу, как должна быть визуализирована карта - например, рисовать ли линии черным или закрасить их синим с хорошим контуром и текстовой меткой. SLD - это язык на базе XML, детализированный в открытой спецификации, доступной здесь (http://www.opengeospatial.org/docs/02-070.pdf). Файлы SLD, созданные для GeoServer, могут быть многократно использованы в любом приложении, соответствующем Web Mapping Service (WMS) (http://docs.codehaus.org/display/GEOSDOC/1.3+Style+Your+Map). На следующем шаге должен быть создан SLD для стилизации карты округов США. В упомянутой обучающей программе на веб-сайте GeoServer предлагаются детализированные команды. Альтернативно, могут использоваться как шаблоны несколько SLD, которые приходят в комплекте с GeoServer. Один SLD, который может быть использован для наших потребностей, называется popshade.sld. Чтобы увидеть описание этого SLD, проделайте следующее:
Использование разделов правил и фильтров SLD При движении по этому документу вы можете заметить несколько вещей:
<ogc:Filter xmlns:gml="http://www.opengis.net/gml"> <ogc:PropertyIsBetween> <ogc:PropertyName>PERSONS</ogc:PropertyName> <ogc:LowerBoundary> <ogc:Literal>2000000</ogc:Literal> </ogc:LowerBoundary> <ogc:UpperBoundary> <ogc:Literal>4000000</ogc:Literal> </ogc:UpperBoundary> </ogc:PropertyIsBetween> </ogc:Filter> В таблицу COUNTIES в Oracle Database включены данные атрибута округа (county) в дополнение к данным о местоположении, хранящимся в столбце GEOM. Эти данные атрибута могут использоваться, чтобы помочь нам определять правила, логику и стилизацию, которые будут иметь смысл при настройке деловой информации. Интересным элементом данных является POPPSQMI - плотность населения (количество жителей на квадратную милю для каждого округа). Когда вы применяете правила к этому набору данных, используя значения POPPSQMI, результаты будут выделены на карте.
Создание SLD для таблицы COUNTIES Настройте SLD popshade.sld для таблицы COUNTIES (и объекта COUNTIES), редактируя SLD:
Загрузка SLD округов Теперь вы будете должны загрузить наш новый SLD в GeoServer. Для этого:
Ассоциирование SLD для округов с типом Counties
Теперь вы готовы интегрировать новый объект с Google Earth.
Интеграция Oracle Locator/GeoServer с Google Earth Сейчас, когда все работы "из GeoServer в Oracle" выполнены, вы готовы приступить к заключительным шагам, посредством которых сможете интегрировать Oracle с Google Earth через GeoServer.
Используйте графический интерфейс пользователя Google Earth для просмотра данных Counties в Oracle Database В Google Earth предлагается недорогой и гибкий способ просмотра не только информации о местоположениях, но также и геопространственных отношений на карте. Так же, как Oracle Locator и Oracle Spatial могут использоваться для обеспечения на сервере как геопространственного, так и не геопространственного анализа, Google Earth может быть использован как внешний пользовательский интерфейс для этого вида информации и анализа. Однако до сих пор имелось одно возражение. В том случае, если бы вы захотели "обвенчать" Oracle Database и Google Earth, то вы должны были создать к Oracle Database заказные интерфейсы, которые могли бы выводить KML или KMZ (языки разметки Google Earth - распакованный или сжатый). Либо вы могли купить себе Google Earth Enterprise и использовать сервисы группы Google Geospatial Sales Engineering, чтобы выполнить требующуюся вам интеграцию. Теперь же имеется еще одна, третья по счету и несколько более простая и гибкая опция: использовать для вывода из Oracle Spatial GeoServer KML/KMZ и снять с себя множество тяжелых обязанностей. С помощью GeoServer можно автоматически вывести KML/KMZ из Oracle Spatial, используя любой стандартный формат WMS, который мы видели ранее, в силу чего значение "формата" изменено, например, с PNG на application/vnd.google-earth.kml+XML: Или же мы можем просто использовать KML Reflector, еще одну опцию GeoServer, которая просто инкапсулирует в упрощенный URL большую часть информации, которую мы включили бы в запрос WMS. Чтобы позволить вам сделать это, на веб-сайте GeoServer http://docs.codehaus.org/display/GEOSDOC/Google+Earth имеется несколько прекрасных инструкций, которые приводятся здесь в сжатом виде:
Автоматическое обновление сетевых данных в Google Earth Вы можете также установить свою сетевую ссылку, чтобы периодически обновлять ее представление данных. Для этого
Заключение Вместе с увеличением полноценности информации о местоположениях, точно так же растет и число легко доступных (всегда имеющихся под руками) технологий, способных к использованию информации о местоположении. Как и для большинства других технологических тенденций, расширение использования данных означает увеличение числа приложений и форматов данных, что приводит к еще большей сложности. Например, даже притом, что такие мощные инструментальные средства, как Oracle Locator/Oracle Spatial и Google Earth делают рассматриваемые данные невероятно прозрачными и непосредственно полезными, оба этих инструментальных средства также добавляют сложность в полную архитектуру. Дело в том, что они не являются неотъемлемо интегрированными в том варианте, как они обычно поступают к пользователю (и это - только один из примеров). Сегодня один из самых эффективных и популярных способов решения врожденных проблем сложности, вызванных применением коммерческих программных решений, состоит в том, чтобы использовать открытые программные средства. На сфере информации о местоположении лучшим примером открытого программного решения для наведения мостов является GeoServer. Располагая решениями типа GeoServer, мы больше не должны быть очень жесткими при выборе платформы, как это приходилось делать, когда дело доходило до создания, хранения, управления и использование данных о местоположении. Вместо этого мы можем теперь выбрать лучшее решение для работы и обратиться к сообществу разработчиков открытого программного обеспечения, чтобы они помогли нам в остальном. В предлагаемой статье было проведено исследование именно этой темы: как связать два чрезвычайно популярных и мощных решения для получения информации о местоположении - Oracle Locator/Oracle Spatial и Google Earth, используя для этого известное, хорошо поддерживаемое решение GeoServer с открытым программным кодом. К концу был не только создан способ анализа местоположения и другой информации в Oracle Database, но и, благодаря использованию Google Earth, появилась возможность непосредственно подключить поверх этой информации прекрасный пользовательский интерфейс. В целом же была создана продвинутая система сбора, обработки и анализа деловой информации масштаба предприятия. Ссылки по теме
Файлы для загрузки
|
|