В базах данных Oracle растровые слои могут храниться в объектах SDO_GEORASTER, доступных через расширение «Oracle Spatial». В QGIS модуль Oracle Spatial GeoRaster поддерживается библиотекой GDAL и зависит от установленной на вашем компьютере базы данных Oracle. В то время как Oracle является коммерческим ПО, для разработки и тестирования оно поставляется бесплатно. Вот один простой пример того, как загрузить растровые изображения в GeoRaster:
$ gdal_translate -of georaster input_file.tif geor:scott/tiger@orcl
Эта команда загрузит растр в таблицу GDAL_IMPORT по умолчанию, в качестве столбца под названием RASTER.
Сначала модуль Oracle GeoRaster должен быть активирован посредством Менеджера модулей (см. раздел Загрузка основных модулей QGIS). В первый раз, когда модуль GeoRaster загружается в QGIS, требуется создание соединения с базой данных Oracle, в которой содержатся данные. Для этого сначала нужно нажать кнопку Выбрать Oracle GeoRaster на панели иструментов, откроется диалоговое окно Выберите Oracle Spatial GeoRaster. Затем нужно нажать кнопку [Создать] для того, чтобы открылось диалоговое окно и ввести параметры подключения (cм. рисунок Figure_oracle_raster_1):
Имя: Ввести название для подключения к базе данных
Экземпляр СУБД: Ввести название базы данных, к которой совершается подключение
Пользователь: Ввести имя пользователя, имеющего доступ к базе данных
Пароль: Ввести пароль пользователя
Figure Oracle Raster 1:
Теперь, в диалоговом окне Выберите Oracle Spatial GeoRaster (см. рисунок Figure_oracle_raster_2), нужно выбрать подключение из выпадающего списка и использовать кнопку [Подключиться] для установки соединения. Также существует возможность править параметры подключения посредством кнопки [Правка] или использовать кнопку [Удалить] для удаления соединения из списка.
После того, как произойдет подключение, в окне блока Подчиненные наборы данных появятся названия всех таблиц, содержащих столбцы растровых данных в формате подчиненных наборов данных GDAL.
Выбрав один из таких наборов данных и нажав кнопку [ОК], можно выбрать название таблицы. Теперь будет показан другой список подчиненных наборов данных, содержащий названия колонок растровых данных из этой таблицы. Обычно это короткий список, так как большинство пользователей не держит больше 1-2 столбцов в одной таблице.
Выбрав один из приведенных наборов данных и затем нажав [ОК], можно выбрать одну из комбинаций таблица/столбец. Диалоговое окно теперь покажет все строки, содержащие объекты растровых данных. Заметьте, что теперь в списке подчиненных наборов данных отображаются пары (таблица растровых данных:идентификатор растрового изображения).
В любой момент времени можно изменить содержимое строки в блоке Выделение для того, чтобы перейти непосредственно к нужному растровому изображению или вернуться к началу и выбрать другое название таблицы.
Figure Oracle Raster 2:
Строка ввода блока Выделение также может использоваться для ввода условия WHERE в конце идентификационной строки, к примеру geor:scott/tiger@orcl,gdal_import,raster,geoid=. Смотрите http://www.gdal.org/frmt_georaster.html для более детальной информации.
И напоследок, выбрав растровое изображение из списка «Таблица растровых данных:идентификатор растрового изображения», в QGIS будет загружено растровое изображение.
Теперь диалоговое окно Выбрать Oracle Spatial GeoRaster может быть закрыто, и в следующий раз при его вызове в нем будет отображаться то же соединение, с тем же списком подчиненных наборов данных, что облегчит открытие другого изображения из того же окружения.
Примечание
Растровые изображения, содержащие пирамиды, будут отображаться быстрее, однако пирамиды должны быть созданы вне QGIS, с применением Oracle PL/SQL или gdaladdo.
Вот пример использования gdaladdo:
gdaladdo georaster:scott/tiger@orcl,georaster\_table,georaster,georid=6 -r nearest 2 4 6 8 16 32
А это пример для PL/SQL:
$ sqlplus scott/tiger
SQL> DECLARE
gr sdo_georaster;
BEGIN
SELECT image INTO gr FROM cities WHERE id = 1 FOR UPDATE;
sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN');
UPDATE cities SET image = gr WHERE id = 1;
COMMIT;
END;