Доступ к свойствам ST_Raster

Уровень сложности: Средний Требования к данным: Используйте собственные данные Задача: Узнайте, какие функции возвращают информацию о значении ST_Raster и как пользоваться этими функциями.

Тип ST_Raster включает несколько функций, которые возвращают свойства значения ST_Raster. Примеры использования этих функций включены в настоящем разделе. Не забудьте заменить значения в примерах SQL на значения, применимые к используемым данным.

Использование функции describe

Используйте функцию describe для получения списка свойств значения ST_Raster Выполнение функции describe без аргумента возвращает общие свойства значения ST_Raster.

Чтобы вернулись свойства о цветовой карте при наличии таковой в значении растра, включите аргумент colormap. Если значение растра не содержит цветовой карты и указан этот аргумент, возвращается ошибка. Если значение ST_Raster имеет цветовую карту, функция hasColormap возвращает значение true (1). Помимо общих свойств значения ST_Raster, указание аргумента colormap также приводит к возвращению примененного индекса цветовой схемы.

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

Возвращение общих свойств значения ST_Raster

При использовании функции describe для ST_Raster без указания аргумента запрос возвращает общие свойства каждого значения ST_Raster.

В следующих примерах показано использование выражения SELECT вместе с функцией describe для возвращения общих свойств значений ST_Raster в таблицу urban_areas. Будут возвращены только те записи, которые соответствуют критерию, указанному в выражении WHERE.

Шаги:
  1. Используйте выражение SELECT, которое приемлемо для используемой системы управления базой данных (СУБД).

    Oracle

    SELECT t.raster.describe()
    FROM URBAN_AREA t
    WHERE NAME = 'ALL_CITIES';
    

    PostgreSQL

    SELECT describe(raster)
    FROM urban_area
    WHERE name = 'all_cities';
    

    SQL Server

    SELECT raster.describe(NULL)
    FROM urban_area
    WHERE name = 'all_cities';
    

Возвращение свойств хранения для значения ST_Raster

Функция describe для ST_Raster с указанием аргумента storage возвращает общие свойства каждого значения ST_Raster, а также его свойства хранения.

В следующих примерах показано, как использовать функцию describe вместе с аргументом storage для возвращения свойств хранения ST_Raster для таблицы urban_areas.

Шаги:
  1. Используйте выражение SELECT, которое приемлемо для используемой СУБД.

    Oracle

    SELECT t.raster.describe('storage')
    FROM URBAN_AREA t
    WHERE NAME = 'ALL_CITIES';
    

    PostgreSQL

    SELECT describe(raster,'storage')
    FROM urban_area
    WHERE name = 'all_cities';
    

    SQL Server

    SELECT raster.describe('storage')
    FROM urban_area
    WHERE name = 'all_cities';
    

Возвращение индекса цветовой карты для ST_Raster

Функция describe для ST_Raster с указанием аргумента colormap возвращает общие свойства каждого значения ST_Raster, а также его индекс цветовой карты. Если значение растра не содержит цветовой карты и указан этот аргумент, возвращается ошибка.

Шаги:
  1. Используйте выражение SELECT, которое приемлемо для используемой СУБД.

    Oracle

    SELECT t.raster.describe('colormap')
    FROM URBAN_AREA t
    WHERE NAME = 'ALL_CITIES';
    

    PostgreSQL

    SELECT describe(raster,'colormap')
    FROM urban_area
    WHERE name = 'all_cities';
    

    SQL Server

    SELECT raster.describe('colormap')
    FROM urban_area
    WHERE name = 'all_cities';
    

Использование функции hasColormap для определения наличия или отсутствия цветовой карты

Используйте функцию hasColormap, чтобы определить, имеет ли значение ST_Raster индекс цветовой карты. Функция hasColormap возвращает логическое значение true, если имеется индекс цветовой карты; в противном случае возвращается значение false.

Функция hasColormap в выражении SELECT возвращает значение 1, если значение ST_Raster имеет цветовую карту, и значение 0, если не имеет.

Шаги:
  1. Oracle

    SELECT t.raster.hasColormap(), NAME 
    FROM URBAN_AREA t;
    

    PostgreSQL

    SELECT hasColormap(raster), name 
    FROM urban_area;
    

    SQL Server

    SELECT raster.hasColormap(), name 
    FROM urban_area;
    

Ограничение возвращаемого набора только теми записями, которые имеют или не имеют цветовой карты

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

Шаги:
  1. Используйте выражение SELECT, которое приемлемо для используемой СУБД.

    Oracle

    SELECT t.raster.describe('colormap')
    FROM URBAN_AREA t
    WHERE t.raster.hasColormap(raster) = 1;
    

    PostgreSQL

    SELECT describe(raster,'colormap')
    FROM urban_area
    WHERE hasColormap(raster) = 1;
    

    SQL Server

    SELECT raster.describe('colormap')
    FROM urban_area
    WHERE raster.hasColormap() = 1;
    

Использование функции hasStats для определения, была ли рассчитана статистика ST_Raster

Функция hasStats возвращает логическое значение true, если для значения ST_Raster была рассчитана статистика.

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

Чтобы рассчитать статистику используйте функцию buildStats для ST_Raster. Для удаления статистики из ST_Raster используйте функцию deleteStats.

Используйте функцию hasStats в выражении SELECT для определения, была ли вычислена статистика по значению ST_Raster. Эта функция возвращает значение 1 для тех значений ST_Raster, которые имеют статистику, и 0 для тех, которые не имеют.

Шаги:
  1. Oracle

    SELECT t.raster.hasStats(),NAME
    FROM URBAN_AREA t;
    

    PostgreSQL

    SELECT hasStats(raster),name
    FROM urban_area;
    

    SQL Server

    SELECT raster.hasStats(),name
    FROM urban_area;
    

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

Шаги:
  1. Oracle

    UPDATE URBAN_AREA t
    SET raster = t.raster.deleteStats()
    WHERE t.raster.hasStats() = 1;
    

    PostgreSQL

    UPDATE urban_area
    SET raster = deleteStats(raster)
    WHERE hasStats(raster) = 1;
    

    SQL Server

    UPDATE urban_area
    SET raster = raster.deleteStats()
    WHERE raster.hasStats() = 1;
    

Возвращение типа сжатия ST_Raster

Функция getCompressionType возвращает свойство сжатия растра. Ниже приведены четыре возможных типов сжатия.

Чаще всего используется сжатие LZ77. Однако, для трехслойных и 8-битных данных, а также для неоднородных данных в градациях серого применяется JPEG-сжатие. Сжатие JPEG 2000 обычно применяется для 16-битных данных.

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

Шаги:
  1. Используйте выражение SELECT, которое приемлемо для используемой СУБД.

    Oracle

    SELECT t.raster.describe('storage')
    FROM URBAN_AREA t
    WHERE t.raster.getCompressionType() = 'JPEG';
    

    PostgreSQL

    SELECT describe(raster,'storage')
    FROM urban_area
    WHERE getCompressionType(raster) = 'JPEG';
    

    SQL Server

    SELECT raster.describe('storage')
    FROM urban_area
    WHERE raster.getCompressionType() = 'JPEG';
    

Определение типа пирамидной интерполяции значения ST_Raster

Тип пирамидной интерполяции — это алгоритм, используемый во время создания пирамидных слоев. Функция getInterpolationType типа ST_Raster возвращает тип интерполяции, который использовался для создания пирамидных слоев. Если пирамидный слой отсутствует, функция возвращает значение NULL. Существуют три возможных типа интерполяции: БЛИЖАЙШИЙ СОСЕД, БИЛИНЕЙНАЯ И БИКУБИЧЕСКАЯ.

Обычно, если билинейная интерполяция не используется, то применяется интерполяция «Ближайший сосед» и пирамидная интерполяция. Преимущество отдается билинейной интерполяции, так как ее результаты более точные и гладкие. Однако, билинейная интерполяция не учитывает значения пикселов предыдущего уровня. Ее нельзя использовать для данных, к которым применена цветовая карта, и не следует применять, если разрядность пиксельных данных менее 8 бит.

Следующие запросы возвращают тип пирамидной интерполяции для всех значений ST_Raster, имеющих пирамидные слои.

Шаги:
  1. Oracle

    SELECT t.raster.getInterpolationType()
    FROM URBAN_AREA t
    WHERE t.raster.getPyramidLevel() > 0;
    

    PostgreSQL

    SELECT getInterpolationType(raster)
    FROM urban_area
    WHERE getPyramidLevel(raster) > 0;
    

    SQL Server

    SELECT raster.getInterpolationType()
    FROM urban_area
    WHERE raster.getPyramidLevel() > 0;
    

Определение типа чередования канала для значения ST_Raster

Тип ST_Raster поддерживает как последовательное (BSQ), так и непрерывное (BIP) чередование канала.

ПримечаниеПримечание:

ArcObjects и приложения на основе ArcObjects, такие как ArcGIS for Desktop, только считывают данные, которые были сохранены как BSQ.

Чередование BIP применимо только к трехканальным, 8–битным данным, сохраненным в виде одного канала в последовательности (r0, g0, b0, r1, g1, b1 … rn, gn, bn), тогда как BSQ сохраняет каналы в отдельном последовательном порядке (r0...rn),(g0...gn),(b0...bn).

Следующие запросы возвращают тип чередования для каждого значения ST_Raster в столбце ST_Raster таблицы.

Шаги:
  1. Oracle

    SELECT t.raster.getInterleaveType()
    FROM URBAN_AREA t;
    

    PostgreSQL

    SELECT getInterleaveType(raster)
    FROM urban_area;
    

    SQL Server

    SELECT raster.getInterleaveType()
    FROM urban_area;
    

Определение типа пиксела для ST_Raster

Функция getPixelType возвращает тип пиксела значения ST_Raster. Следующие типы пикселов поддерживаются типом ST_Raster:

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

Шаги:
  1. Oracle

    UPDATE URBAN_AREA t
    SET raster = t.raster.buildPyramid('bilinear')
    WHERE t.raster.getPixelType() = 'UINT8';
    

    PostgreSQL

    UPDATE urban_area
    SET raster = buildPyramid(raster,'bilinear')
    WHERE getPixelType(raster) = 'UINT8';
    

    SQL Server

    UPDATE urban_area
    SET raster = raster.buildPyramid('bilinear')
    WHERE raster.getPixelType() = 'UINT8';
    

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

9/11/2013