Доступ к свойствам 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.
-
Используйте выражение 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.
-
Используйте выражение 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, а также его индекс цветовой карты. Если значение растра не содержит цветовой карты и указан этот аргумент, возвращается ошибка.
-
Используйте выражение 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, если не имеет.
-
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 для возвращения тех записей, которые или имеют, или не имеют цветовой карты.
-
Используйте выражение 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 для тех, которые не имеют.
-
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. Затем статистика по этим значениям растра удаляется.
-
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 возвращает свойство сжатия растра. Ниже приведены четыре возможных типов сжатия.
- НЕТ (NONE): данные сохраняются без сжатия.
- LZ77: LZ77 использует сжатие длины без потерь; лучше всего подходит для данных с низкой степенью изменений или при невозможности использовать другие алгоритмы сжатия.
- JPEG: JPEG расшифровывается как Joint Photographic Experts Group — комитет, который разработал этот стандарт сжатия. JPEG — тип сжатия с потерей качества. Сжатие JPEG может применяться только к 8-битным данным, которые не имеют индекса цветовой карты.
- JP2: этот тип сжатия основан на «коротковолновом» формате JPEG 2000. Такой тип сжатия может применяться как к 8-битным, так и к 16-битным данным.
Чаще всего используется сжатие LZ77. Однако, для трехслойных и 8-битных данных, а также для неоднородных данных в градациях серого применяется JPEG-сжатие. Сжатие JPEG 2000 обычно применяется для 16-битных данных.
В этих примерах аргумент storage указывается для функции describe, а функция getCompressionType используется в выражении WHERE для возвращения только тех значений ST_Raster, которые имеют сжатие JPEG.
-
Используйте выражение 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, имеющих пирамидные слои.
-
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 таблицы.
-
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:
- 1bit: 1-битные данные
- 4bit: 4-битные данные
- uint8: 8-битное целое число без знака
- int8: 8-битное целое число со знаком
- uint16: 16-битное целое число без знака
- int16: 16-битное целое число со знаком
- uint32: 32-битное целое число без знака
- int32: 32-битное целое число со знаком
- float: число с плавающей точкой обычной точности
- double: число с плавающей точкой двойной точности
Следующие выражения обновления строят пирамидальные слои для всех значений ST_Raster в столбце ST_Raster, однако только если тип пиксела в значении ST_Raster является 8-битным целым числом без знака.
-
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';