Вставка изображений в таблицу, содержащую столбец ST_Raster
Чтобы вставить растровые данные в столбец растров с типом ST_Raster, необходимо указать соответствующий источник данных. Если источник данных из другого столбца ST_Raster, необходимо конвертировать его в формат типа ST_Raster. Конвертация выполняется конструктором ST_Raster.
Конструктор ST_Raster может принимать два источника данных: файл TIFF или объект ST_PixelData.
Рядом отображаются выражения SQL INSERT с тремя возможными источниками данных для каждой из трех поддерживаемых систем управления базами данных.
Вставка значений растра из одного столбца ST_Raster в другой
Шаги:
-
Вставьте результаты запроса из существущего столбца ST_Raster в другой столбец ST_Raster.
Oracle
INSERT INTO URBAN_AREA (RASTER,NAME) SELECT RASTER,'BOSTON' FROM BOSTON_AREA;
PostgreSQL
INSERT INTO urban_area (raster) SELECT raster FROM boston_area;
SQL Server
INSERT INTO urban_area (raster) SELECT raster FROM boston_area;
Конвертация файла TIFF в ST_Raster
Шаги:
-
При помощи конструктора ST_Raster конвертируйте файл TIFF в тип ST_Raster и вставьте его в столбец ST_Raster.
Oracle
INSERT INTO URBAN_AREA VALUES(SDE.ST_RASTER('C:\milwakee.tif','compression=lz77');
PostgreSQL
INSERT INTO urban_area VALUES (st_raster('C:\milwaukee.tif','compression=lz77));
SQL Server
INSERT INTO urban_area VALUES(st_raster::construct('C:\milwaukee.tif',NULL,'compression=lz77'));
Внимание:Убедитесь, что указанный путь к TIFF-файлу является допустимым для сервера, на котором хранятся база данных и файл.
Конвертация значения ST_PixelData в ST_Raster
Шаги:
-
Конвертируйте значение ST_PixelData в значение ST_Raster, используя конструктор ST_Raster, и вставьте его в столбец ST_Raster.
Oracle
DECLARE data SDE.ST_PIXELDATA; BEGIN SELECT t.raster.getPixelData('level=1') INTO DATA FROM ALANTA t; INSERT INTO URBAN_AREA VALUES (sde.st_raster(data, 'compression=lz77')); END; /
PostgreSQL
DROP FUNCTION IF EXISTS insert_pixeldata(); CREATE OR REPLACE FUNCTION insert_pixeldata() RETURNS void AS ' DECLARE data st_pixeldata; BEGIN SELECT getPixelData(image, 'level=1' ) INTO data FROM atlanta; INSERT INTO urban_area VALUES (st_raster(data,''compression=lz77'')); END;' LANGUAGE plpgsql; SELECT insert_pixeldata(); DROP FUNCTION IF EXISTS insert_pixeldata();
SQL Server
DECLARE @data ST_Pixeldata; SET @data = (SELECT image.getPixelData('level=1') FROM atlanta); INSERT INTO urban_area VALUES (ST_Raster::construct(NULL, @data, 'compression=lz77'));
Связанные темы
9/11/2013