Импорт данных Navteq для Oracle Spatial

Как известно, компания Navteq – глобальный партнер Oracle и поставщик данных для Oracle. Главное их отличие от остальных поставщиков – это ориентированность в поставках именно на СУБД Oracle (http://solutions.oracle.com/partners/navteq). Аналогичное партнерство у Oracle существует и с компанией Teleatlas.

Компания Navteq поставляет данные в формате табличных пространств для Oracle. Это позволяет избежать утомительной загрузки данных из дампов.

Ниже я опишу процесс загрузки данных. Предварительно я скачал и распаковал партнерский пакет данных Navteq для Oracle. Пакет состоит из трех типов данных: карта, данные для маршрутизации и  данные для геокодирования. Пакет у меня за первый квартал 2008 года – общий объем 105 Гб.

Вот такой список файлов:

Тип данных Файлы Количество Объем данных
Карта MAP_EU_Q108_XX.ORA 8 штук (XX от 01 до 08) 30 Гб
Данные для маршутизации RC_EU_Q108_XX.ORA 18 штук (XX от 01 до 18) 45 Гб
Данные для геокодирования GC_EU_Q108_01.ORA 14 штук (XX от 01 до 14) 36 Гб

Continue reading ‘Импорт данных Navteq для Oracle Spatial’ »

Загрузка данных через Enterprise Manager в Windows

Если Вы хотите использовать Enterprise Manager (или как его еще называют Database Control) для резервного копирования, экспорта или импорта необходимо проделать некоторые манипуляции по правам пользователя в Windows

Обычно, когда Вы пытаетесь настроить, скажем, импорт  Oracle запрашивает от Вас пользователя в операционной системе от  имени которого будут выполняться операции:

image

После того как введете имя пользователя (даже администратора) – получите ошибку:

Validation Error
Examine and correct the following errors, then retry the operation:
RemoteOperationException: ERROR: Wrong password for user

ПРИЧИНА:

Связано это с тем, что указанный пользователь не имеет прав на выполнение так называемых батч операций  (Batch Job).

РЕШЕНИЕ:

Чтобы решить эту проблему добавьте пользователю привилегию “log on as a batch job”:

1. Запустите консоль управления правами

control panel-> administrative tools->local security settings->local policies->user rights assignments

2. Добавьте привилегию

Выберите log on as a batch job и добавьте Вашу группу или имя пользователя в список.

Завершился трехдневный Oracle Spatial Workshop

При поддержке наших европейский коллег в миграционном центре Oracle для ISV-партнеров c 17 по 19 ноября прошел трехдневный Workshop по Oracle Spatial.

Курс читал один из опытнейших специалистов по этому направлению – Альберт Годфринд (Albert Godfrind). Альберт – один из авторов самой популярной книги по Oracle Spatial — Pro Oracle Spatial for Oracle Database 11g.

На семинаре рассматривались все темы по продукту Oracle Spatial – начиная с импорта данных из SHP файлов и заканчивая использованием сетевой модели базы данных Oracle и настройкой Mapviewer.

Continue reading ‘Завершился трехдневный Oracle Spatial Workshop’ »

Загрузка шейп|shape (shp) файлов в Oracle Spatial

Shape файлы – это ГИСовский формат данных, разработанный компанией ESRI: http://en.wikipedia.org/wiki/Shapefile. Это формат де-факто стал стандартныv и большинство ГИСовского программного обеспечения умеет экспортировать в него данные. Т.е. его можно использовать как промежуточный формат для загрузки в другие форматы. Основное его достоинство — распространенность и открытость.

В комплекте базы данных Oracle (на диске с примерами) идет загрузчик shape файлов в Spatial. В версии 10.2.0.4 это загрузчик работает некорректно. Правильную версию можно взять в дистрибутиве базы данных Oracle 11.1.0.6 или 11.1.0.7 обычно он лежит в каталоге $ORACLE_HOME/md/jlib в файле sdoutl.jar. Загрузчик написан на java и имя класса oracle.spatial.util.SampleShapefileToJGeomFeature.

Его можно скачать здесь.

Если запустить этот класс без параметров, то будет выведена помощь (смотрите листинг ниже). Но есть один недокументированный факт.  Это загрузчик может осуществлять загрузку файлов DBF в различных кодировках.

К примеру, если запустить с параметрами по-умолчанию, то будет взята кодировка 1251. Для того, чтобы загрузить данные в другой кодировке ISO-8859-5 – в вызов виртуальной машины java нужно добавить параметр -Dfile.encoding=ISO-8859-5. Список кодировок можно взять здесь.

Например вот так

java -Dfile.encoding=ISO-8859-5 -cp %clpath% oracle.spatial.util.SampleShapefileToJGeomFeature -h orabi -p 1521 -s orcl -u mvdemo -d mvdemo -t %1 -f C:\maxidata\RUS_Shape_With_Names\%1 -r 8307 -g geom

В этом случа загрузка будет проведена корректно.

Параметры загрузчика:

USAGE: java -cp [ORACLE_HOME]/jdbc/lib/ojdbc14.jar;./sdoutl.jar;./sdoapi.jar SampleShapefileToJGeomFeature -h db_host -p db_port —
s db_sid -u db_username -d db_password -t db_table -f shapefile_name [-i table_id_column_name][-r srid][-g db_geometry_column][-x
max_x,min_x][-y max_y,min_y][-o tolerance]
Usage explanation (parameters used):
<-h>: Host machine with existing Oracle database
<-p>: Host machine’s port with existing Oracle database (e.g. 1521)
<-s>: Host machine’s SID with existing Oracle database
<-u>: Database user
<-d>: Database user’s password
<-t>: Table name for the result
<-f>: File name of an input Shapefile (without extension)
[-i]: Column name for unique numeric ID; if required
[-r]: Valid Oracle SRID for coordinate system; use 0 if unknown
[-g]: Preferred or valid SDO_GEOMETRY column name
[-x]: Bounds for the X dimension; use -180,180 if unknown
[-y]: Bounds for the Y dimension; use -90,90 if unknown
[-o]: Load tolerance fields (x and y) in metadata, if not specified, tolerance fields are 0.05
[-a]: Append shapefile data to an existing table
[-n]: Start ID for column specified in -i parameter
[-c]: Commit interval. Default, commits every 1000 conversions and at the end of a run
[-v]: Println interval. Default, displays every 10 conversions.

Ошибка ORA-01722: неверное число или ORA-01722: invalid number

Обычно ошибка возникает при загрузки данных из текстового файла с помощью Oracle Sqlloader. Ошибка связана с тем, что в России разделитель целой и дробной часть запятая, а в США и Европе – точка.

Если попытаться загрузить в базу некорректно отформатированные данные, то Oracle их не поймет. Выйти из этого положения можно несколькими способами. Некоторые проще, некоторые сложне. Давайте рассмотрим их. Вначале простые, к концу более сложные и, возможно, чреватые проблемами.

1. Зайти в файл и заменить все точки на запятые. Например

1|New York|NY|7322564|1|2001|8307|-73.943849000|40.669800000|
заменяем на

1|New York|NY|7322564|1|2001|8307|-73,943849000|40,669800000|

Тут всеп просто. Никаких подводных камней, кроме того, что точки могут встречаться не только в числах и это надо отслеживать, иначе испортите данные.

Например в Linux это легко сделать с помощью sed  (для Windows можно взять отсюда или использовать, скажем, perl). Команда не создает резервной копии.

sed -i ‘s/\./,/g’ filename.txt

2. В локальном файле при загрузке данных установить соответствующие параметры NLS.

Например, если загрузка осуществляется следующим скриптом батником:

sqlldr scott/tiger@orcl control=us_cities\us_cities.ctl data=us_cities\us_cities.dat

то ошибки можно избежать с помощью выполнения предварительно в bat-файле вот такой команды:

set nls_lang=american_america.CL8MSWIN1251
sqlldr scott/tiger@orcl control=us_cities\us_cities.ctl data=us_cities\us_cities.dat

Я считаю этот вариант наиболее предпочтительным.

3. Если это Windows, то можно изменить глобальные настройки NLS. Сделать это можно в реестре в веточке

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\NLS_LANG

Нужно будет вместо значения RUSSIAN_RUSSIA.CL8MSWIN1251 прописать AMERICAN_AMERICA.CL8MSWIN1251.

Это решение может очень сильно повлиять на систему в целом. Действие этого параметра может повлечь неработоспособность другого приложения.

VMWare Server 2.0

Ну вот и свершилось то, чего так долго ждали. Вышла новая версия VMWare.

Установил, создал виртуальную машину, поработал – все вроде работает. Но… Теперь начинаются но…

Для управления виртуальной машиной теперь доступен только web интерфейс

image

Может кому-то и нравится, но не мне. Требует много ресурсов, зависит от версии браузера, не очень быстр.

Но ладно – с этим может быть и смирился бы, но оказывается, что для работы с виртуальной машиной теперь приходится инсталлировать plug-in для браузера. Я использую Chrome, поэтому мне нужен plug-in именно для него 😉 Сами понимаете – такого plug-in нет и приходится запускать всеми любимый Internet Explorer.

Следующий не очень приятный момент – это убогая функциональность этой консоли. Как можно видеть из слайда ниже – можно отключить DVD, но подключить, например, другой образ с сервера в этой консоли невозможно. Можно, конечно, пойти в центральную консоль и все там сделать, но слишком много телодвижений.

image

И еще – с какого перепугу перезагрузка виртуальной машины попала в Troubleshoot

image

Короче, привыкать к новой версии и привыкать. Переходить на новую версию – решайте сами. Я пока остаюсь на 1.0.8 🙂

Семинар по Database Options. Spatial Included.

Как Вы знаете – Oracle Spatial это одна из опций базы данных Oracle. Т.е. Oracle Spatial – это составная часть базы данных, использующая все ее возможности и все остальные опции, функции и расширения, такие Oracle Real Application Cluster, Data Guard, Stream и т.д. Т.е. имеет смысл рассматривать ее не просто как отдельный компонент, а как составную часть большой и очень мощной машины.

Чтобы показать Вам все эти опции и их взаимодействие мы проводим семинар Database Options Details.

Следующий семинар будет проходить 4-5 декабря в Москве. В него будет включена секция по Oracle Spatial, Mapviewer, Семантическим сетям.

Более подробную информацию можно найти здесь DBOD v2.

Инсталляция СУБД Oracle для Linux (VMWare) – Oracle Enteprise Linux

Для работы нам понадобится

1. VMWare Server http://www.vmware.com/products/server/. Нужно скачать сам сервер и зарегистрироваться для получения серийного номер. Продукт абсолютно бесплатный. Инсталляция его проблем не приносит.

2. Oracle Enterprise Linux – можно использовать также другие версии Linux, но эту версия обладает рядом преимущест (помимо того, что она выпускается корпорацией Oracle 🙂

  • Для тестирования бесплатная
  • Легко скачать с интернет
  • Полная совместимость с Red Hat.
  • Включен ряд пакетов специально для СУБД Oracle

Качаем отсюда http://www.oracle.com/technologies/linux/index.html. Для себя я выбрал версию Oracle Enterprise Linux 4 Update 7. Достаточно пропатчена плюс достаточно консервативна с минимумом всяких рюшечек.

3. Oracle Database 11.1.0.6 for Linux берем отсюда http://www.oracle.com/technology/software/products/database/index.html

4. Желательно, но не обязательно иметь патч 11.1.0.7. Берем как обычно с metalink.oracle.com. Патч имеет номер 6890831.

5. Far 1.7. Нужен будет для удобства передачи данных на виртуальную машину. http://www.rarlab.com/download.htm

6. WinSCP Far Plugin http://winscp.net/eng/download.php. Позволяет работать с виртуальной машиной через протокол SSH, как через обычный FTP.

7. PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/. Также не обязателей, но очень удобен в работе.

Когда все это у нас есть – приступаем к инсталляции.

Continue reading ‘Инсталляция СУБД Oracle для Linux (VMWare) – Oracle Enteprise Linux’ »

Новый форум по Oracle Mapviewer

На сайте Oracle открылся новый форум по Mapviewer. Точнее даже не открылся, а отпочковался 🙂

На нем можно встретить разработчиков. Более того они очень даже охотно отвечают на заковыристые вопросы.
Адрес нового форума http://forums.oracle.com/forums/forum.jspa?forumID=727.

Кроме того напомню адрес старого форума, где есть большое количество ответов на насущные вопросы по Oracle Spatial, Mapviewer, RDF, Semantics Web и т.д.
http://forums.oracle.com/forums/forum.jspa?forumID=76. Форум достаточно живой и популярный.

Компиляции 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