Інтеграція Oracle Spatial з Google Earth

Дізнайтеся, як використовувати 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, виконайте наступне:


  1. Увійдіть у ваш екземпляр бази даних Oracle як користувач із системними привілеями: $> SQLPLUS system / password.
  2. Створити нового користувача бази даних (назвіть його будь-яким вподобаним вам ім'ям – я зазвичай вибираю ім'я ORAGIS): SQL> create user oragis identified by oragis.
  3. Надайте вашому новому користувачеві привілеї ресурсу та підключення: SQL> grant resource, connect to oragis.
  4. Вийдіть з Oracle: SQL> exit.
  5. Імпортуйте (раніше експортований) файл дампа COUNTIES в схему ORAGIS (або вашого користувача): $> imp oragis / oragis file = counties.dmp full = y.

Погляньмо на об'єкти бази даних

Починаючи з цього моменту, у вас є все, що потрібно, щоб почати "задавати" Oracle Locator свої запитання про відносини між геопросторовими і не геопросторовими даними. Але перш ніж продовжити, давайте розглянемо ті структури, які додані до бази даних і як вони працюють. Для цього:


  1. Увійдіть у свою базу даних Oracle як користувач, який "володіє" даними про округах: $> sqlplus oragis / oragis.
  2. Виконайте команду DESCRIBE для таблиці округів, щоб побачити, з чого вона складається: SQL> desc counties.

Вихідні дані повинні виглядати приблизно так:

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

 



























Name


Null?


Type


SDO_GTYPE



NUMBER


COUNTY



NUMBER


SDO_POINT



MDSYS.SDO_POINT_TYPE


SDO_ELEM_INFO



MDSYS.SDO_ELEM_INFO_ARRAY


SDO_ORDINATES



MDSYS.SDO_ORDINATE_ARRAY


З цього опису і Посібники користувача й довідника з 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),
SDO_ORDINATE_ARRAY(-122.3915, 37.707813, -122.3916, 37.708401,
-122.38088, 37.710056, -122.37258, 37.718094, -122.36247, 37.715759, -122.35625, 37.730015,
-122.36532, 37.732609….))

видно, що незалежно від того, зберігайте ви точки, лінії або багатокутники (як в цьому прикладі), управління всіма даними відбувається в межах одного типу (і в одному стовпці). Так що вам немає необхідності хвилюватися про ускладнення, пов'язаних з використанням двійкових даних; іншими словами, це скоріше "білий ящик", ніж реалізація чорного ящика. При зберіганні даних про місцезнаходження таким способом враховується гнучкість, разом з доступом через такі стандартні інтерфейси доступу, як 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 з 3300 округів США. Неможливо вирішити цей запит при використанні тільки стовпця STATE в таблиці COUNTIES, тому що в такому разі не будуть включені округу з інших штатів, які примикають або мають будь-яке інше взаємодія з Каліфорнією.

З цього моменту у вас є надійний фундамент для виконання ще більш цікавого, візуального аналізу на підставі таблиці COUNTIES. Перш ніж ви вирішите швидко й енергійно приступити до використання Oracle Locator або Oracle Spatial для управління всіма вашими даними, ви, напевно, захочете подивитися на такі веб-сайти та документи:

oracle.com/technology/products/spatial/index.html
oracle.com/technology/products/spatial/htdocs/training.html
oracle.com/technology/obe/10gr2_db_vmware/datamgmt/spatial/spatial.htm

Перетворення даних Oracle за допомогою GeoServer

Згідно сайту Confluence Web, GeoServer "є сервером відкритого вихідного коду, який підключає вашу інформацію до геопросторової Web-Мережі". Іншими словами, як було раніше згадано в цій статті, GeoServer може діяти як комунікаційний міст між іншими геопросторовими сервісами / серверами. За допомогою цього моста формати даних можуть бути легко (на льоту) і динамічно перетворені. Для наших цілей це величезна перевага. Навіть беручи до уваги, що ви завжди можете написати трохи коду (на PL / SQL, Java, PHP), щоб вивести дані Oracle Locator / Oracle Spatial, як KML для Google Earth, це не завжди практично. Плюс до цього – тут те саме місце, де сервери з відкритим програмним забезпеченням, типу GeoServer, просто сяють.

Інсталяція GeoServer

Щоб почати роботу з GeoServer, виконайте наступне:


  1. Перейдіть на домашню сторінку Confluence-GeoServer (http://docs.codehaus.org/display/GEOS/Home).
  2. Прочитайте частина дрібного шрифту і передумов (http://docs.codehaus.org/display/GEOSDOC/Quickstart) з документа Quickstart.
  3. Завантажте (http://docs.codehaus.org/display/GEOS/Latest) і встановіть останню версію GeoServer.
  4. Завантажте (http://downloads.sourceforge.net/geoserver/geoserver-1.5.0-oracle-plugin.zip) і встановіть останню версію Oracle DataStore Extension for 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. Для цього:


  1. Клацніть по Config знову: http://localhost:8080/geoserver/config/index.do.
  2. Клацніть по Data: http://localhost:8080/geoserver/config/data/index.do.
  3. Клацніть по Stores: http://localhost:8080/geoserver/config/data/store.do.
  4. Клацніть по New: http://localhost:8080/geoserver/config/data/storeNew.do.
  5. Виберіть Oracle зі списку властивостей і назвіть ваше сховище oragis (див. малюнок 1).


    Малюнок 1: Виберіть Oracle як новий GeoServer DataStore [розташований у каталозі / technology/pub/images/lokitz-spatial-geoserver-f1.gif; у всіх інших зображеннях використовується ту ж саму угоду про іменах]


  6. Залиште topp як значення за замовчуванням для простору імен і заповніть інформацію про хості, порте, імені користувача, паролі та примірнику (СІД або сервіс) для екземпляра Oracle, в який ви імпортували таблицю COUNTIES (див. малюнок 2).
  7. Клацніть по кнопці Submit.


    Малюнок 2: Створення нового Oracle DataStore в рамках структури GeoServer


  8. Клацніть по кнопці Apply у лівому верхньому куті, а потім по кнопці Save. У цей момент ваше сховище даних повинне бути збережене і завантажено (як файл XML) без інцидентів.

Створіть для округів тип об'єкта GeoServer

Після завантаження даних ви будете хотіти створити тип об'єкта, уявлення для деяких даних з вашого сховища даних. Для цього:


  1. Cнова перейдіть до меню Config -> Data: http://localhost:8080/geoserver/config/data/index.do
  2. Клацніть по FeatureType: http://localhost:8080/geoserver/config/data/typeSelect.do.
  3. Натисніть New: http://localhost:8080/geoserver/config/data/typeNew.do.
  4. Виберіть oragis::: COUNTIES зі списку Feature Type Name (Див. малюнок 3).


    Малюнок 3: Вибір таблиці COUNTIES для вашого нового об'єкта GeoServer


  5. Клацніть по New.
  6. Заповнити форму об'єкта наступними значеннями (див. рис. 4):
    a. Стиль: багатокутник.
    b. SRS: 4326.
    c. Тема: COUNTIES.
    d. Обмежує прямокутник: клікніть по Generate.
    e. Залиште іншим значенням їх значення за замовчуванням.

* Примітка: У пункті d конфігурується запит би прямокутника первинного фільтра до Oracle Spatial. GeoServer в даний час не підтримує загальних геопросторових запитів для відшукання місця розташування, типу "найближчий сусід" або "в межах відстані" або інших типів запитів відносин. Однак Oracle Application Server MapViewer – опція кожного сервера додатків Oracle – повністю підтримує ці види запитів і багато інших.


  1. Клацніть по Submit.


    Малюнок 4: Створення типу об'єкта для ваших даних COUNTIES


  2. Клацніть по кнопці Apply у лівому верхньому куті, а потім по Save. У цей момент ваш тип об'єкта (метадані) повинен бути збережений і завантажений (як файл XML) без інцидентів.

Стилі карт

Тепер ви готові тестувати підключення GeoServer до вашого сховища даних і типу об'єкта. У цей момент ви повинні бути в змозі виводити дані в декількох форматах, заснованих на таблиці COUNTIES. Однак, тому що ви застосували до нашого об'єкту тільки простий стиль багатокутника, можливо, на ній буде можна побачити не надто багато. Після швидкого тесту підключення ви створите цікавішу стилізацію набору даних. А поки:


  1. На домашній сторінці GeoServer клікніть по WMS Capabilities: Http://localhost:8080/geoserver/wms?service=WMS&request=GetCapabilities.
  2. Тут ви побачите документ / сторінку XML зі списком можливостей вашої реалізації GeoServer. За допомогою прокрутки переглядайте список, поки не знайдете рядок <Name> topp: COUNTIES </ Name>. Тут вам буде сказано, що саме в змозі вивести сервер WMS, як частина GeoServer, (див. малюнок 5).


Малюнок 5: Висновок GeoServer в WMS-XML

Отримайте в браузері зображення карти з GeoServer

Щоб протестувати ваш об'єкт COUNTIES, відкрийте нове вікно браузера і перейдіть до наступного URL:
http://localhost:8080/geoserver//wms?service=WMS&request=GetMap&format=image/
png&width=800&height=600&srs=EPSG:4326&layers=topp:COUNTIES
&styles=polygon&bbox=-177.1,13.71,-61.48,76.63

Це запит WMS, який вказує GeoServer вивести зображення типу PNG шириною 800 пікселів і висотою 600 пікселів, з SRS (система координат) 4326, для об'єкта COUNTIES, з дуже простим стилем багатокутника і в межах би прямокутника наступних розмірів: мінімальна довгота (-177.1), мінімальна широта (13.71), максимальна довгота (-61.48) і максимальна широта (76.63).

Після обробки вашого запиту GeoServer повинен повернути зображення, яке схоже на малюнок 6:


Малюнок 6: Приклад виведення WMS для типу об'єкта COUNTIES

У цей момент ви готові інтегрувати (використовуючи об'єкт GeoServer) вашу таблицю Oracle з Google Earth. Перш ніж зробити це, ми досліджуємо, як використовувати стилі відображення, щоб визначити більш цікаве і описову надання інформації про округах. Для цього ви повинні застосувати новий стиль (або стилізований описувач рівня) до вашого об'єкта.

Створення стилізованого описувача рівня

Стилізований описувач рівня, або SLD, робить ваші карти барвистими. Він вказує сервера, як повинна бути візуалізувати карта – наприклад, малювати чи лінії чорним або зафарбувати їх синім з гарним контуром і текстової UA. 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, виконайте наступне:


  1. Перейдіть до каталогу [GEOSERVER_HOME] data_dirstyles.
  2. У текстовому редакторі відкрийте popshade.sld.

Використання розділів правил і фільтрів SLD

При русі по цьому документу ви можете помітити кілька речей:


  • Усередині тега <FeatureTypeStyle> є кілька розділів <Rule>.
  • У межах розділів з правилами (rules) є розділи фільтра (<ogc:Filter..>), які описують, які скалярні властивості слід шукати для заданого типу, а також, яку логіку виконувати. Наприклад, у першому розділі правил є фільтр, який визначає, що це правило застосовується лише до даних в межах об'єкта, для якого значення PERSONS лежить між 2 000 000 і 4 000 000.
<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:


  1. Збережіть копію popshade.sld в іншому каталозі (поза data_dir) як countypopshade.sld.
  2. Відредагуйте розділи назви, заголовка і резюме: <Name> CountyPopDensity </ Name>
  3. Створіть кілька нових розділів правил, щоб при візуалізації даних GeoServer, він повернув би п'ять або шість стилів затінення, заснованих на значеннях POPPSQMI.
  4. Для першого правила визначте фільтр, який вивчає значення POPPSQMI і застосовує конкретний колір і стиль тексту на підставі рядків, де POPPSQMI менше 10:
    <Rule>
    <!– like a linesymbolizer but with a fill too –>
    <ogc:Filter xmlns:gml=”http://www.opengis.net/gml”>
    <ogc:PropertyIsLessThan>
    <ogc:PropertyName>POPPSQMI</ogc:PropertyName>
    <ogc:Literal>10</ogc:Literal>
    </ogc:PropertyIsLessThan>
    </ogc:Filter>
    <PolygonSymbolizer>
    <Fill>
    <! – CssParameters allowed are fill (the color) and fill-opacity ->
    <CssParameter Name="fill"> # 0000FF </ CssParameter>
    <CssParameter Name="fill-opacity"> 0.7 </ CssParameter>
    </Fill>
    </PolygonSymbolizer>
    <TextSymbolizer>
    <Label>
    <ogc:PropertyName> COUNTY </ ogc: PropertyName>
    </Label>
    <Font>
    <CssParameter Name="font-family"> Times New Roman </ CssParameter>
    <CssParameter Name="font-style"> Normal </ CssParameter>
    <CssParameter Name="font-size"> 10 </ CssParameter>
    </Font>
    <Fill>
    <CssParameter Name="fill"> # 000000 </ CssParameter>
    </Fill>
    </TextSymbolizer>
    </Rule>

  5. Потім створіть декілька правил з фільтрами, де значення POPPSQMI лежить в інтервалі:
    <Rule>
    <!– like a linesymbolizer but with a fill too –>
    <ogc:Filter xmlns:gml=”http://www.opengis.net/gml”>
    <ogc:PropertyIsBetween>
    <ogc:PropertyName> POPPSQMI </ ogc: PropertyName>
    <ogc:LowerBoundary>
    <ogc:Literal>10</ogc:Literal>
    </ogc:LowerBoundary>
    <ogc:UpperBoundary>
    <ogc:Literal>1000</ogc:Literal>
    </ogc:UpperBoundary>
    </ogc:PropertyIsBetween>
    </ogc:Filter>
    <PolygonSymbolizer>
    <Fill>
    <! – CssParameters allowed are fill (the color) and fill-opacity ->
    <CssParameter Name="fill"> # 00FF00 </ CssParameter>
    <CssParameter Name="fill-opacity"> 0.7 </ CssParameter>
    </Fill>
    </PolygonSymbolizer>
    <TextSymbolizer>
    <Label>
    <ogc:PropertyName>COUNTY</ogc:PropertyName>
    </Label>

    <Font>
    <CssParameter Name="font-family"> Times New Roman </ CssParameter>
    <CssParameter Name="font-style"> Normal </ CssParameter>
    <CssParameter Name="font-size"> 10 </ CssParameter>
    </Font>
    <Fill>
    <CssParameter Name="fill"> # 000000 </ CssParameter>
    </Fill>
    </TextSymbolizer>
    </Rule>


  6. І, нарешті, створіть правило для значень POPPSQMI, які перевищують 30 000:
    <Rule>
    <!– like a linesymbolizer but with a fill too –>
    <ogc:Filter xmlns:gml=”http://www.opengis.net/gml”>
    <ogc:PropertyIsGreaterThan>
    <ogc:PropertyName> POPPSQMI </ ogc: PropertyName>
    <ogc:Literal>30000</ogc:Literal>
    </ogc:PropertyIsGreaterThan>
    </ogc:Filter>
    <PolygonSymbolizer>
    <Fill>
    <! – CssParameters allowed are fill (the color) and fill-opacity ->
    <CssParameter Name="fill"> # FF0000 </ CssParameter>
    <CssParameter Name="fill-opacity"> 0.7 </ CssParameter>
    </Fill>
    </PolygonSymbolizer>
    <TextSymbolizer>
    <Label>
    <ogc:PropertyName>COUNTY</ogc:PropertyName>
    </Label>

    <Font>
    <CssParameter Name="font-family"> Times New Roman </ CssParameter>
    <CssParameter Name="font-style"> Normal </ CssParameter>
    <CssParameter name=”font-size”>10</CssParameter>
    </Font>
    <Fill>
    <CssParameter name=”fill”>#000000</CssParameter>
    </Fill>
    </TextSymbolizer>
    </Rule>


  7. Приклад закінченого (добре структурованого) файлу ви можете знайти тут: завантажити демонстраційний код.
  8. Збережіть свій новий SLD.

Завантаження SLD округів

Тепер ви будете повинні завантажити наш новий SLD в GeoServer. Для цього:


  1. Перейдіть кстраніце Config -> Data -> Style для GeoServer: http://localhost:8080/geoserver/config/data/style.do.
  2. Клацніть по New, щоб створити новий стиль, заснований на вашому SLD: http://localhost:8080/geoserver/config/data/styleNew.do. Дайте файлу popshade.sld нове ім'я – countypopdensity (див. малюнок 7).


    Малюнок 7: Призначення нового стилю GeoServer (SLD)


  3. Знайдіть і виберіть створений вами файл countypopshade.sld (див. рисунок 8)
  4. Клацніть по кнопці Submit.


    Малюнок 8: Створення стилю GeoServer, заснованого на вашому замовний SLD


  5. Клацніть по кнопці Apply у лівому верхньому куті, а потім по кнопці Save. У цей момент ваш стиль повинен бути збережений і завантажений (як файл XML) без інцидентів.

Асоціювання SLD для округів з типом Counties


  1. Перейдіть до меню Config -> Data -> FeatureType.
  2. Виберіть oragis: COUNTIES зі списку Feature Types, І клацніть по кнопці Edit.
  3. Виберіть countypopdensity зі списку Styles (Див. малюнок 9).


    Малюнок 9: Оновлення типу об'єктів COUNTIES за допомогою вашого нового стилю


  4. За допомогою прокрутки дійдіть до низу сторінки і клацніть по кнопці Submit.
    Клацніть по кнопці Apply у лівому верхньому куті, а потім по кнопці Save. У цей момент ваш оновлений тип об'єкта повинен бути збережений і завантажений (як файл XML) без інцидентів.
    Тепер повторно запустіть ваш запит WMS, замінивши countypopdensity для багатокутника параметром Style:
    http://localhost:8080/geoserver//wms?service=WMS&request=GetMap&format=image/png&width=800&height=600&srs =
    EPSG: 4326 & layers = topp: COUNTIES & styles = countypopdensity & bbox =- 177.1,13.71, -61.48,76.63.
  5. Повернене зображення повинне тепер виглядати приблизно так, як на малюнку 10:


    Рисунок 10: Приклад вихідних даних WMS для типу об'єкта COUNTIES з використанням вашого нового стилю

    Як бачите, GeoServer використовує деякі фільтри та інші метадані для створення запиту до бази даних Oracle, який повертає набір даних, що підходить для тематичного затінення. "За лаштунками" запит, який створюється для повернення набору результатів у межах би прямокутника (-177.1,13.71, -61.48,76.63), використовує оператор Oracle Locator / Oracle Spatial, який називається SDO_FILTER. Щоправда, немає ніякого простого способу розширити сервер WMS, що входить до складу GeoServer, щоб використовувати більш складні запити, типу того, який ви використовували в розділі "Запит до даних". Але ви могли б, звичайно, використовувати Oracle Spatial та MapViewer Oracle Application Server для розробки додатків, дійсно, що враховують ускладнені запити, які виводяться за допомогою власних сервісів WMS Oracle Application Server MapViewer.


  6. Щоб відобразити ваші персональні налаштування, ви можете побажати використовувати вищезгадані процедури для оновлення countypopshade.sld у відповідності з вашим власним смаком.

Тепер ви готові інтегрувати новий об'єкт з 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:
http://localhost:8080/geoserver//wms?service=WMS&request=GetMap&format=application/
vnd.google-earth.kmz + XML & width = 1024 & height = 1024 & srs = EPSG: 4326 & layers = topp: COUNTIES
&styles=countypopdensity

Або ж ми можемо просто використовувати KML Reflector, ще одну опцію GeoServer, яка просто інкапсулює у спрощений URL більшу частину інформації, яку ми включили б до запиту WMS.

Щоб дозволити вам зробити це, на веб-сайті GeoServer http://docs.codehaus.org/display/GEOSDOC/Google+Earth є кілька прекрасних інструкцій, які наводяться тут у стислому вигляді:


  1. Запустіть Google Earth.
  2. Рухайте глобус, поки ви не наведете його на шукану вами частина Сполучених Штатів Америки (див. малюнок 11).


    Рисунок 11: Наведення Google Earth на шукану вами точку Америки


  3. Виберіть з меню Add пункт Network Link (Див. малюнок 12).


    Рисунок 12: Відкриття меню Network Link Google Earth


  4. Назвіть вашу мережеву посилання як на зразок County Pop Density ("Щільність населення округу).
  5. Введіть у поле Link URL KML / KMZ для вашого GeoServer (див. малюнок 13):


    Малюнок 13: Додавання інформації про мережеву посиланням для вашого примірника GeoServer

    Зауважимо: згідно web-сторінці GeoServer-Google Earth (як зазначалося вище), утиліта відбивача KML (KLM Reflector) була розроблена, щоб дати користувачам можливість легко виводити KML / KMZ, не маючи необхідності "вилизувати" запити WMS.


  6. Клацніть по кнопці OK.
  7. Тепер ви повинні побачити ваші дані округів, поміщені поверх поставляються Google Earth даних (див. малюнки 14 і 15). Дуже круто!


Малюнок 14: Збільшуйте і зменшуйте розмір вікна і панорамув карту на різні області, щоб побачити нові уявлення даних


Малюнок 15: Ваші Oracle-дані для округів, інтегровані з Google Earth

Автоматичне оновлення мережевих даних в Google Earth

Ви можете також встановити свою мережеву посилання, щоб періодично оновлювати її подання даних. Для цього


  1. Клацніть правою кнопкою миші за вашою посиланням County Pop Density в розділі Places в Google Earth (див. малюнок 16).


    Рисунок 16: Редагування властивостей мережевий посилання


  2. Клацніть по вкладці Refresh і перемкніть деякі з опцій оновлення.

Висновок

Разом зі збільшенням повноцінності інформації про місцезнаходження, точно так само зростає і кількість легко доступних (завжди є під руками) технологій, здатних до використання інформації про місцезнаходження. Як і для більшості інших технологічних тенденцій, розширення використання даних означає збільшення кількості програм і форматів даних, що призводить до ще більшої складності. Наприклад, навіть при тому, що такі потужні інструментальні засоби, як Oracle Locator / Oracle Spatial і Google Earth роблять аналізовані дані неймовірно прозорими і безпосередньо корисними, обидва цих інструментальних кошти також додають складність у повну архітектуру. Справа в тому, що вони не є невід'ємно інтегрованими в тому варіанті, як вони зазвичай надходять до користувача (і це – тільки один з прикладів). Сьогодні один з найбільш ефективних і популярних способів вирішення вроджених проблем складності, викликаних застосуванням комерційних програмних рішень, полягає в тому, щоб використовувати відкриті програмні кошти.

На сфері інформації про місцезнаходження кращим прикладом відкритого програмного рішення для наведення мостів є GeoServer. Маючи в своєму розпорядженні рішеннями типу GeoServer, ми більше не повинні бути дуже жорсткими при виборі платформи, як це доводилося робити, коли справа доходила до створення, зберігання, управління та використання даних про місцезнаходження. Замість цього ми можемо тепер вибрати найкраще рішення для роботи і звернутися до спільноти розробників відкритого програмного забезпечення, щоб вони допомогли нам в іншому.

У пропонованій статті було проведено дослідження саме цієї теми: як зв'язати два надзвичайно популярних і потужних рішення для отримання інформації про розташування – Oracle Locator / Oracle Spatial і Google Earth, використовуючи для цього відоме, добре підтримуване рішення GeoServer з відкритим програмним кодом. До кінця був не тільки створений спосіб аналізу місця розташування та іншої інформації в Oracle Database, але і, завдяки використанню Google Earth, з'явилася можливість безпосередньо підключити поверх цієї інформації прекрасний користувальницький інтерфейс. У цілому ж була створена просунута система збору, обробки та аналізу ділової інформації масштабу підприємства.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*