Вставка изображений в таблицу, содержащую столбец ST_Raster

Чтобы вставить растровые данные в столбец растров с типом ST_Raster, необходимо указать соответствующий источник данных. Если источник данных из другого столбца ST_Raster, необходимо конвертировать его в формат типа ST_Raster. Конвертация выполняется конструктором ST_Raster.

Конструктор ST_Raster может принимать два источника данных: файл TIFF или объект ST_PixelData.

Рядом отображаются выражения SQL INSERT с тремя возможными источниками данных для каждой из трех поддерживаемых систем управления базами данных.

Вставка значений растра из одного столбца ST_Raster в другой

Шаги:
  1. Вставьте результаты запроса из существущего столбца 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

Шаги:
  1. При помощи конструктора 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

Шаги:
  1. Конвертируйте значение 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