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