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

понедельник, 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

Комментариев нет: