Рабочий процесс: создание каталога растров с помощью SQL

Уровень сложности: Расширенный Требования к данным: Используйте собственные данные Задача: Более подробно о том, как создать таблицу растров, инициализировать столбец ST_Raster в таблице, добавить записи в таблицу, сформировать пирамидные слои и статистику в ST_Raster и затем зарегистрировать таблицу в базе геоданных для создания каталога растров.

Каталог растров — это компонент ArcObjects, в котором хранятся наборы растровых данных с пространственной привязкой. Каталог растров можно создать и заполнить в SQL, используя тип ST_Raster, с помощью рабочего процесса, описанного в этом разделе.

В каждом из следующих разделов содержатся примеры для выполнения задачи создания каталога растров в системе управления базами данных. Указанные примеры можно изменить в соответствии с вашими данными.

Создание таблицы со столбцом ST_Raster

Шаги:
  1. Откройте редактор SQL, например, SQL*Plus для Oracle, pgsql или pgAdminIII для PostgreSQL или окно Query Editor в Microsoft Management Studio для SQL Server.
  2. Используйте выражение CREATE TABLE для создания таблицы со столбцом ST_Raster и строковым столбцом.

    В этих примерах создается таблица urban_area. Таблица содержит два столбца: name и raster.

    Oracle

    CREATE TABLE urban_area 
    (name varchar2(255), sde.st_raster raster);
    

    PostgreSQL

    CREATE TABLE urban_area 
    (name varchar(255), sde.st_raster raster);
    

    SQL Server

    CREATE TABLE urban_area 
    (name varchar(255), dbo.st_raster raster);
    

Инициализация столбца ST_Raster для хранения растровых значений

Используйте функцию ST_Raster_Util для инициализации столбца ST_Raster. Данная функция добавляет ссылку на растровый столбец в таблицы метаданных растра ArcSDE и создает таблицу растровых блоков и вспомогательную таблицу растров, а также триггеры добавления, обновления и удаления растрового столбца. После выполнения этой функции растровый столбец регистрируется в ArcSDE, а его функциональность становится доступной. Запись добавляется в системные таблицы table_registry, column_registry и raster_columns. Однако столбец не будет доступен как объект каталога растров ArcGIS до его регистрации в базе геоданных.

Шаги:
  1. Используйте утилиту ST_Raster для инициализации столбца ST_Raster в таблице urban_area.

    Oracle

    BEGIN SDE.ST_RASTER_UTIL.INITIALIZE 
    ('urban_area','raster',4326,'defaults'); END; /
    

    PostgreSQL

    SELECT st_raster_util_initialize 
    ('urban_area','raster',4326,'DEFAULTS');
    

    SQL Server

    EXEC ST_Raster_Util.Initialize 
    'sde','bobby','urban_area','raster',4326,NULL,'DEFAULTS'
    

Добавление растрового значения в столбец ST_Raster

Выражение INSERT добавляет строку в таблицу.

В этих примерах столбец name заполняется строкой "MILWAUKEE", а конструктор ST_Raster преобразует файл GeoTIFF в тип ST_Raster.

Шаги:
  1. Используйте SQL-выражение INSERT, чтобы добавить изображение в столбец ST_Raster. Используйте собственный TIFF-файл вместо milwaukee.tif.

    Oracle

    INSERT INTO URBAN_AREA 
    ('MILWAUKEE',SDE.ST_RASTER('C:\milwaukee.tif'));
    
    COMMIT;
    

    PostgreSQL

    INSERT INTO urban_area 
    ('milwaukee',sde.st_raster('C:\milwaukee.tif'));
    

    SQL Server

    INSERT INTO urban_area 
    ('milwaukee',dbo.ST_Raster::construct('C:\milwaukee.tif'));
    
    ВниманиеВнимание:

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

  2. В данный момент можно применить дополнительные выражения INSERT или же функцию мозаики ST_Raster к существующим значениям растрового столбца с помощью выражения UPDATE. Эти выражения повторяются, пока все данные не будут загружены в столбец ST_Raster.
  3. Используйте SQL-выражение UPDATE для сохранения мозаики в существующем растровом столбце.

    Oracle

    UPDATE URBAN_AREA T
    SET RASTER = T.RASTER.MOSAIC('C:\milwaukee2.tif')
    WHERE NAME = 'MILWAUKEE';
    
    COMMIT;
    

    PostgreSQL

    UPDATE urban_area 
    SET raster = mosaic(RASTER,'C:\milwaukee2.tif') 
    WHERE name = 'milwaukee';
    

    SQL Server

    UPDATE urban_area 
    SET raster = raster.mosaic('C:\milwaukee2.tif') 
    WHERE name = 'milwaukee';
    

Построение пирамид

После загрузки исходных данных создаются пирамидные слои с помощью функции ST_Raster buildPyramid. Создайте пирамидные слои для всех растровых значений или используйте выражение WHERE для выбора растровых значений, для которых требуется построить пирамидные слои.

Все пирамидные слои создаются с использованием билинейной интерполяции.

Шаги:
  1. Используйте функцию buildPyramid.

    В этих примерах выражение WHERE используется для выбора растровых значений, для которых необходимо построить пирамидные слои, с помощью интерполяции ближайшего соседа или билинейной интерполяции.

    Oracle

    UPDATE URBAN_AREA T
    SET RASTER =
    T.RASTER.BUILDPYRAMID('nearest,level=-1')
    WHERE NAME = 'MILWAUKEE';
    
     COMMIT;
    
    UPDATE URBAN_AREA T
    SET RASTER =
    T.RASTER.BUILDPYRAMID('bilinear,level=-1')
    WHERE NAME = 'TOKYO';
    
    COMMIT;
    

    PostgreSQL

    UPDATE urban_area
    SET raster = buildpyramid(raster,'nearest,level=-1')
    WHERE name = 'milwaukee';
    
    UPDATE urban_area
    SET raster = buildpyramid(raster,'bilinear,level=-1')
    WHERE name = 'tokyo';
    

    SQL Server

    UPDATE urban_area
    SET raster = raster.buildPyramid('bilinear,level=-1')
    WHERE name = 'milwaukee';
    
    UPDATE urban_area
    SET raster = raster.buildPyramid('nearest,level=-1')
    WHERE name = 'tokyo';
    

Построение статистики растра

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

Используйте выражение WHERE, если необходимо указать, для каких строк таблицы необходимо сформировать статистику.

Шаги:
  1. Используйте функцию buildStats в SQL-выражении UPDATE.

    Oracle

    UPDATE URBAN_AREA T
    SET RASTER = T.RASTER.BUILDSTATS() 
    WHERE NAME = 'MILWAUKEE';
    
    COMMIT;
    

    PostgreSQL

    UPDATE urban_area 
    SET raster = buildstats(raster) 
    WHERE name = 'milwaukee';
    

    SQL Server

    UPDATE urban_area 
    SET raster = raster.buildStats(NULL) 
    WHERE name = 'milwaukee';
    

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

Шаги:
  1. Используйте функцию buildStats и укажите уровень для вычисления статистики.

    В этих примерах статистика вычисляется на шестом уровне пирамидного слоя.

    ПодсказкаПодсказка:

    Если уровень не указан, по умолчанию используется базовый уровень, который можно задать как значение 0.

    Oracle

    UPDATE URBAN_AREA T 
    SET RASTER = T.RASTER.BUILDSTATS(6) 
    WHERE NAME = 'MILWAUKEE';
    

    PostgreSQL

    UPDATE urban_area 
    SET raster = buildstats(raster,6) 
    WHERE name = 'milwaukee';
    

    SQL Server

    UPDATE urban_area 
    SET raster = buildStats.raster(6) 
    WHERE name = 'milwaukee';
    

Регистрация таблицы в базе геоданных

Любая таблица, которая содержит один растровый столбец с пространственной привязкой, может быть преобразована в каталог растров ArcObjects. Функция ST_Raster_Util регистрирует растровый столбец в ArcSDE и после ее выполнения таблицу можно преобразовать в каталог растров, зарегистрировав ее в базе геоданных. Так как растровый столбец в этом примере уже инициализирован, его можно зарегистрировать в базе геоданных.

Используйте ArcGIS for Desktop для регистрации таблицы в базе геоданных, тем самым создав каталог растров.

Шаги:
  1. Запустите ArcMap и откройте окно Каталога или запустите ArcCatalog.
  2. Подключитесь к базе геоданных, содержащей таблицу urban_area.

    Подключения к базе геоданных создаются в папке Подключения к базам данных (Database Connections) в дереве Каталога (Catalog). Подключитесь к базе геоданных, как владелец таблицы urban_area.

  3. Щелкните правой кнопкой на таблице urban_area и выберите Зарегистрировать в базе геоданных (Register with Geodatabase).
  4. Нажмите кнопку Да (Yes) в диалоговом окне, сообщающем о том, что столбец ObjectID будет добавлен в таблицу.

    Для базы геоданных требуется наличие ObjectID — столбца уникальных значений (также не NULL).

Значок таблицы изменится на значок каталога растров, что говорит о том, что таблица преобразуется в каталог растров.

Обновление статистики базы геоданных

Для обеспечения оптимальной производительности ArcSDE использует стоимостную оптимизацию СУБД для выбора наилучшего плана выполнения задачи при выполнении обновлений или запросов. Стоимостная оптимизация в свою очередь использует обновленную статистику СУБД для определения наилучшего плана выполнения задачи.

Самый простой способ обновления статистики СУБД в базе геоданных — использовать ArcGIS. Используйте инструмент геообработки Анализировать наборы данных (Analyze Datasets), открываемый с помощью команды Анализировать (Analyze) в ArcGIS for Desktop, для обновления статистики.

Шаги:
  1. Запустите ArcCatalog или ArcMap и откройте окно Каталог (Catalog).
  2. Подключитесь к базе данных, содержащей каталог растров urban_area.

    Убедитесь, что вы подключились как владелец каталога растров.

  3. Щелкните правой кнопкой мыши на каталоге растров urban_area.
  4. Выберите пункт Управление (Manage) и щелкните Анализ (Analyze).
  5. Убедитесь, что каталог растров urban_area выбран в списке Наборы данных для анализа (Datasets to Analyze) и щелкните мышью за пределами списка.
  6. Выберите опцию Анализировать исходные таблицы (Analyze Base Tables) для обновления исходной таблицы растра.
  7. Нажмите ОК.

Связанные темы

5/25/2014