Інтеграція Oracle Spatial з Google Earth, Oracle, Бази даних, статті

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

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

<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. Відредагуйте розділи назви, заголовка і резюме: CountyPopDensity
  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>

*

*