名称

AddRasterConstraints — 为已加载的栅格表中的特定列添加栅格约束,以约束空间参考、缩放、块大小、对齐方式、波段、波段类型以及一个标志,用于指示栅格列是否为规则块。该表必须加载数据才能推断约束。如果约束设置成功,则返回 true,否则发出通知。

概要

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 );

描述

为栅格列生成约束,这些约束用于在 raster_columns 栅格目录中显示信息。 rastschema 是表所在的表模式的名称。 srid 必须是整数,引用 SPATIAL_REF_SYS 表中的条目。

raster2pgsql 加载器使用此函数注册栅格表

要传递的有效约束名称:有关更多详细信息,请参阅第 9.2.1 节,“栅格列目录”

  • blocksize 设置 X 和 Y 块大小

  • blocksize_x 设置 X 瓦片(每个瓦片的像素宽度)

  • blocksize_y 设置 Y 瓦片(每个瓦片的像素高度)

  • extent 计算整个表的范围并应用约束,所有栅格都必须在该范围内

  • num_bands 波段数

  • pixel_types 读取每个波段的像素类型数组,确保所有波段 n 具有相同的像素类型

  • regular_blocking 设置空间唯一(没有两个栅格可以在空间上相同)和覆盖瓦片(栅格与覆盖对齐)约束

  • same_alignment 确保它们都具有相同的对齐方式,这意味着您比较的任何两个瓦片都将返回 true。请参阅ST_SameAlignment

  • srid 确保所有都具有相同的 srid

  • 更多 - 任何列出为上述函数的输入

[Note]

此函数从表中已存在的数据中推断出约束。因此,要使其工作,您必须首先创建栅格列,然后用数据加载它。

[Note]

如果您需要在应用约束后在表中加载更多数据,您可能需要运行 DropRasterConstraints,如果您的数据范围已更改。

可用性:2.0.0

示例:根据数据对列应用所有可能的约束

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}
        

示例:应用单个约束

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

另请参阅

第 9.2.1 节,“栅格列目录”ST_AddBandST_MakeEmptyRasterDropRasterConstraintsST_BandPixelTypeST_SRID