Сервер переехал на новый сайт http://www.oraclegis.com/blog. Здесь идет ретрансляция

Показаны сообщения с ярлыком Open Source. Показать все сообщения
Показаны сообщения с ярлыком Open Source. Показать все сообщения

понедельник, 10 ноября 2008 г.

Компиляции GDAL с поддержкой Oracle Spatial

Библиотека Geospatial Data Abstraction Library(GDAL)  это библиотека для работы с растровыми географическими форматами файлов данных. GDAL распространяется Open Source Geospatial Foundation на условиях лицензии X/MIT, то есть является проектом с открытым исходным кодом. Как библиотека GDAL предоставляет вызывающему приложению единую обобщённую модель данных для всех поддерживаемых форматов файлов данных. Помимо этого в состав GDAL входит набор вспомогательных программ, вызываемых из командной строки, для преобразования и обработки данных. Описание выпуска GDAL/OGR 1.5.1 (март 2008) можно найти на странице новостей.

Начиная с версии 1.6 GDAL поддерживает не только векторный формат Oracle Spatial, но также и растровый, что делает ее еще более функциональной.

С точки зрения разработчика интересен сам API для работы с этой библиотекой. Для ГИС-специалиста и DBA может оказаться интересным ряд инструментов, поставляемых в этой библиотеке:

  • ogr2ogr – утилита для преобразования ГИС данных из одного формата в другой
  • gdaltransform – утилита для преобразования слоя в другую систему координат.

К сожалению ко всей уникальности этих утилит подлита ложка дегтя: многие вендоры (в том числе и Oracle) имеют очень странную политику по отношению к клиентским библиотекам для доступа к базе данных. Поэтому, чтобы долго не думать и не подставлять свою пятую точку под удары юристов, разработчики не включают в поставку такие библиотеки. Это можно видеть из вот такой таблички, поставляемой вместе с библиотекой GDAL

Format Name Code Creation Georeferencing Compiled by default
Arc/Info Binary Coverage AVCBin No Yes Yes
Arc/Info .E00 (ASCII) Coverage AVCE00 No Yes Yes
ESRI ArcSDE SDE No Yes No, needs ESRI SDE
ESRI Shapefile ESRI Shapefile Yes Yes Yes
FMEObjects Gateway FMEObjects Gateway No Yes No, needs FME
KML KML Yes No Yes (read support needs libexpat)
Mapinfo File MapInfo File Yes Yes Yes
Oracle Spatial OCI Yes Yes No, needs OCI library
X-Plane/Flighgear aeronautical data XPLANE No Yes Yes
и т.д.        

Т.е. можно видеть, что наряду из-за различных проприетарных драйверов Oracle Spatial не скопилирован по-умолчанию. Что самое смешное – библиотеку эту вы можете легко и просто скачать с сайта, не заплатив ни копейки!

Что ж, будем исправлять сию беду.

Для этого нам понадобится

Все это качаем и инсталлируем. GDAL распаковываем в папку C:\GDAL (чтобы в папке C:\GDAL были файлы makegdal71.sln, makegdal80.sln и т.д.). Открываем файл nmake.opt и редактируем переменную MSVC_VER (указываем нужную нам версию Visual Studio) и GDAL_HOME – указываем путь. В данном случае C:\GDAL.

После того как все это проделано – давайте скомпилируем GDAL в настройках по-умолчанию. Для этого:

  1. Запустим CMD
  2. Перейдем в каталог GDAL: cd C:\GDAL
  3. Настроим переменные среды для Visual Studio
    "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat”
  4. Настроим переменные среды для Microsoft Platform SDK
    "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\SetEnv.Cmd”
  5. Запустите следующую команду set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl;
  6. В файле "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl\atlbase.h”  закомментируйте или удалите следующую строку #pragma comment(lib, "atlthunk.lib")
  7. Запустим компиляцию командой
    nmake /f makefile.vc
  8. Проинсталлируйте
    nmake /f makefile.vc install
  9. После инсталляции Вы должны получить рабочую версию GDAL. Можно проверить, запусти C:\gdal\bin\ogr2ogr.exe и получив на выходе
    image

Давайте теперь приступим к настроке для использования Oracle Spatial в GDAL. Для этого Вам необходимо будет проинсталлировать клиента Oracle, который можно взять по адресу http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html. Инсталлируем клиента в вариант “Administrator”.

Для настройки компиляции плагина для Oracle Spatial – будем редактировать файл C:\GDAL\nmake.opt. Нужно найти следующие строки

# Add ORACLE support.
# Uncomment the following line to enable OCI Oracle Spatial support.
#ORACLE_HOME = C:/Software/Oracle/Product/10.1.0/db_1
# Uncomment the following if you prefer to build OCI support as a plugin.
#OCI_PLUGIN = YES

Указываем путь к клиенту базы данных и раскоментируем строки. Как-то во так должно получиться

# Add ORACLE support.
# Uncomment the following line to enable OCI Oracle Spatial support.
ORACLE_HOME = C:\oracle/product/10.2.0/client_1
# Uncomment the following if you prefer to build OCI support as a plugin.
# OCI_PLUGIN = YES
Перезапускаем компиляцию и инсталляции в том же окне (или заново прогоняем настройки, указанные выше). На самом деле с make clean – немного перестраховка, но все же:

  1. nmake /f makefile.vc clean
  2. nmake /f makefile.vc
  3. nmake /f makefile.vc install

После того, как все пройдет замечательно и make не ругнется – можно потестить функционал следующей командой:

c:\gdal\bin\ogr2ogr -f OCI OCI:mvdemo/mvdemopass@orcl c:\1\rusrays.shp

где mvdemo/mvdemopass – имя и пароль пользоваетля
orcl – alias базы данных
c:\1\rusrays.shp – путь к файлу с данными, лежащими в shape


Читать далее...

пятница, 26 сентября 2008 г.

gvSIG

UPDATE1: Начиная с версии 1.1.2 gvSIG для использование Oracle Spatial не требуется инсталлировать geoDB extension. Тем не менее все равно требуется скачать библиотеке ojdbc14.jar и положить ее в нужное место (см. ниже).

В мире в настоящее время используется большое количество open source GIS и в большинстве своем эти ГИС поддерживают Oracle Spatial, т.к. очевидно, что это один из самых распространенных форматов хранения пространственных данных.
Кроме того большинство из этих проектов зарождаются, либо спонсируются государственными и мунициальными организациями.
Сегодня мы рассмотрим одну из таких систем - gvSIG.
gvSIG — свободная геоинформационная система с открытым исходным кодом. Первая рабочая версия появилась в конце 2006 года и распространялась через интернет.

Системные требования
Pentium III 800 МГц
256 Мбайт RAM
Предлагаются исходный код, и готовые сборки для:

Microsoft Windows и Windows NT
GNU/Linux i586
Mac OS X Intel.
Программа поддерживает все необходимые функции ГИС:

Pабота со слоями, благодаря которой можно отображать лишь необходимые в данный момент объекты;
Функции масштабирования карты;
Поддержка сохранения необходимых ракурсов карты;
Автоматические расчёты расстояния между объектами и площадей областей;
Размещение активных объектов на карту;
Создание профессиональных географических карт с необходимыми элементами, которые можно впоследствии печатать.
Собственно, к системе есть небольшая документация, которую можно взять здесь.
Есть также драйвер для Oracle. К сожалению, в поставке он не идет.

Итак, давайте приступим к установке.

1. Скачать

Для инсталляция необходимо скачать
а) сам gvsig: http://www.gvsig.gva.es/index.php?id=1306&L=2&K=1
Отсюда берем версию 1.0.2. К сожалению, версия 1.1 не имеет готового драйвера к СУБД Oracle.
б) geoDB расширение (оно отвечает за поддержку Oracle): http://www.gvsig.gva.es/index.php?id=1656&L=2&K=1 
Берем само собой для версии 1.0.2.
в) драйвер ojdbc14.jar. Разработчики рекомендуют брать версию 1.4. Взять можно с сайта Oracle: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html link. Забираем версию 10.2.0.4. Файлик ojdbc14.jar.

2. Инсталляция

Основная инсталляция достаточно простая. Сложностей не возникает. Только под линуксом возникает небольшая сложность. При инсталляции gvSIG свою версию java (1.4.2) кидает в папку /root/gvSIG/jre. Это не позволяет в дальнейшем запускать gvSIG под обычным пользователем. Для решения проблемы нужно проинсталлировать в режиме по умолчанию. Скопировать jre в общедоступную папку. Проинсталлировать повторно, но при инсталляции указать наш jre в соответствующей папке.

После этого нужно проинсталлировать geoDB расширение, а файлик ojdbc14.jar положить в папку /opt/gvSIG_1.0.2/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/ (я инсталлировал в папку /opt/gvSIG_1.02

3. Запуск

Запускается файликом /opt/gvSIG_1.0.2/bin/gvSIG.sh (для линукса) и из меню в Windows.

1 

После запуска нужно настроить соединения с базой данных Oracle. Для этого заходим в меню Show->Geographic database connections wizard. В меню жмем Add и попадаем в диалог настройки соединения.

image

Настраиваем соединение.

gvSIG готов к работе с СУБД Oracle.

4. Работа

gvSIG умеет работать с Oracle Spatial, но он налагает ряд требований на таблицы, содержащие данные. Одно из них – это наличие первичного ключа (Primary Key). Кроме того, для редактирования необходимо также иметь триггер, заполняющий соответствующее поле.

Давайте, создадим таблицу, удовлетворяющую требованиям. Эта таблица будет содержать информацию о ресторанах в городе:

Также создаем индекс. Без индекса ничего работать не будет.

CREATE TABLE restaurants

  ( id   NUMBER PRIMARY KEY,  name VARCHAR2(30),  geom mdsys.sdo_geometry);

CREATE INDEX restaurants_spat_idx ON restaurants  (geom)  indextype IS mdsys.spatial_index;

Создаем также последовательность для генерации первичного ключа

CREATE SEQUENCE restaurants_pk_seq;

Создаем триггер для заполнения первичного ключа:

CREATE OR REPLACE TRIGGER RESTAURANTS_PK_TRIG BEFORE

   INSERT ON RESTAURANTS FOR EACH ROW BEGIN :new.id:=restaurants_pk_seq.nextval;

END;

Теперь необходимо зарегистрировать таблицу как слой

 INSERT INTO user_sdo_geom_metadata VALUES  ('restaurants','geom',

    MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005),MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005)) ,8307);

Теперь необходимо настроить отображение информации в gvSIG:

а) Запускаем gvSIG
б) Выбираем в Document Types – View, затем New
в) Появится новый View с именем Untitles – 0. Выбираем его и жмем Properties

image

г) Даем название, указываем проекцию базы данных. В нашем случае это будет WGS 84, Geodesica. Это обязательно сделать.

image

д) Соглашаемся и закрываем. Далее выбираем наше View. Жмем Open.

image

е) В панели инструментов выбираем Add Layer. В диалоге нам нужна закладка GeoBD. Выбираем соединение. Выбираем слой, который необходимо подключить.

image

ж) В результате откроется выбранный слой, с которым можно работать

image

з) Этот слой можно редактировать. Для этого слева щелкаем на названии слоя правой кнопкой и выбираем Start edition

image 
и) В панели инструментов выбираем инструмент Point. Щелкаем, делаем точки :) Для завершения редактирования и сохранения щелкаем правой кнопкой на слой и говорим “Finish edition”. Соглашаемся, что хотим сохранить слой.


Читать далее...