AddRasterConstraints
Prev | 12.2. Raster Management | Next

## Name

AddRasterConstraints — Adds raster constraints to a loaded raster table for a specific column that constrains spatial ref, scaling, blocksize, alignment, bands, band type and a flag to denote if raster column is regularly blocked. The table must be loaded with data for the constraints to be inferred. Returns true if the constraint setting was accomplished and issues a notice otherwise.

## Synopsis

`boolean AddRasterConstraints(`name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true, boolean scale_y=true, boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=false, boolean num_bands=true , boolean pixel_types=true , boolean nodata_values=true , boolean out_db=true , boolean extent=true `)`;

`boolean AddRasterConstraints(`name rasttable, name rastcolumn, text[] VARIADIC constraints`)`;

`boolean AddRasterConstraints(`name rastschema, name rasttable, name rastcolumn, text[] VARIADIC constraints`)`;

`boolean AddRasterConstraints(`name rastschema, name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true, boolean scale_y=true, boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=false, boolean num_bands=true, boolean pixel_types=true, boolean nodata_values=true , boolean out_db=true , boolean extent=true `)`;

## Description

Generates constraints on a raster column that are used to display information in the `raster_columns` raster catalog. The `rastschema` is the name of the table schema the table resides in. The `srid` must be an integer value reference to an entry in the SPATIAL_REF_SYS table.

`raster2pgsql` loader uses this function to register raster tables

Valid constraint names to pass in: refer to Section 11.2.1, “Raster Columns Catalog” for more details.

- `blocksize` sets both X and Y blocksize

- `blocksize_x` sets X tile (width in pixels of each tile)

- `blocksize_y` sets Y tile (height in pixels of each tile)

- `extent` computes extent of whole table and applys constraint all rasters must be within that extent

- `num_bands` number of bands

- `pixel_types` reads array of pixel types for each band ensure all band n have same pixel type

- `regular_blocking` sets spatially unique (no two rasters can be spatially the same) and coverage tile (raster is aligned to a coverage) constraints

- `same_alignment` ensures they all have same alignment meaning any two tiles you compare will return true for. Refer to ST_SameAlignment.

- `srid` ensures all have same srid

- More -- any listed as inputs into the above functions

This function infers the constraints from the data already present in the table. As such for it to work, you must create the raster column first and then load it with data.

If you need to load more data in your tables after you have already applied constraints, you may want to run the DropRasterConstraints if the extent of your data has changed.

Availability: 2.0.0

## Examples: Apply all possible constraints on column based on data

    CREATE TABLE myrasters(rid SERIAL primary key, rast raster);
    INSERT INTO myrasters(rast)
    SELECT ST_AddBand(ST_MakeEmptyRaster(1000, 1000, 0.3, -0.3, 2, 2, 0, 0,4326), 1, '8BSI'::text, -129, NULL);

    SELECT AddRasterConstraints('myrasters'::name, 'rast'::name);

    -- verify if registered correctly in the raster_columns view --
    SELECT srid, scale_x, scale_y, blocksize_x, blocksize_y, num_bands, pixel_types, nodata_values
        FROM raster_columns
        WHERE r_table_name = 'myrasters';

     srid | scale_x | scale_y | blocksize_x | blocksize_y | num_bands | pixel_types| nodata_values
    ------+---------+---------+-------------+-------------+-----------+-------------+---------------
     4326 |       2 |       2 |        1000 |        1000 |         1 | {8BSI}      | {0}

## Examples: Apply single constraint

    CREATE TABLE public.myrasters2(rid SERIAL primary key, rast raster);
    INSERT INTO myrasters2(rast)
    SELECT ST_AddBand(ST_MakeEmptyRaster(1000, 1000, 0.3, -0.3, 2, 2, 0, 0,4326), 1, '8BSI'::text, -129, NULL);

    SELECT AddRasterConstraints('public'::name, 'myrasters2'::name, 'rast'::name,'regular_blocking', 'blocksize');
    -- get notice--
    NOTICE:  Adding regular blocking constraint
    NOTICE:  Adding blocksize-X constraint
    NOTICE:  Adding blocksize-Y constraint

## See Also

Section 11.2.1, “Raster Columns Catalog”, ST_AddBand, ST_MakeEmptyRaster, DropRasterConstraints, ST_BandPixelType, ST_SRID

Prev | Up | Next
unionarg | Home | DropRasterConstraints