名前

AddRasterConstraints — ロードされたラスタテーブルの特定のカラムにラスタ制約を追加します。制約には空間参照系、スケール、ブロックサイズ、アラインメント、バンド、バンド型、ラスタカラムが規則正しいブロックかどうかを示すフラグがあります。テーブルは制約が推論されるためのデータがロードされなければなりません。制約の設定が完了するとtrueを返し、問題があると通知を返します。

概要

boolean AddRasterConstraints(name rasttable, name rastcolumn, boolean srid, boolean scale_x, boolean scale_y, boolean blocksize_x, boolean blocksize_y, boolean same_alignment, boolean regular_blocking, 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=true, 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はこの関数を使ってラスタテーブルラスタテーブルを登録します。

渡すのに妥当な制約名は次の通りです。詳細情報については「ラスタカラムカタログ」を参照して下さい。

  • blocksize ブロックのXとY両方のサイズを指定します

  • blocksize_x Xタイル(タイル毎のピクセル幅)を設定します

  • blocksize_y Yタイル(タイル毎のピクセル幅)を設定します

  • extent テーブル全体の範囲を計算し、全てのラスタがこの範囲内にある制約を適用します

  • num_bands バンド数

  • pixel_types バンドごとにピクセルタイプを読み、全てのバンドが同じピクセルタイプであることを確認するためのものです。

  • regular_blocking 全てのタイルが規則正しいブロックになっていることを示すフラグを適用します。

  • same_alignment 同じアラインメントを持つことを確認するためのものです。任意の2タイルについて比較するとtrueを返すという意味です。ST_SameAlignmentを参照して下さい。

  • srid 全て同じSRIDを持っていることを確認するためのものです。

  • その他 -- 上の関数の中に入力一覧が挙げられています。

[注記]

この関数はテーブル内に存在するデータから制約を推論します。動作させるには、ラスタカラムを生成し、データをロードする必要があります。

[注記]

制約を適用した後にデータをさらにロードする必要がある場合には、データ範囲が変わるならDropRasterConstraintsを使います。

初出: 2.0.0

例: 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', -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}
		

例: 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', -129, NULL);

SELECT AddRasterConstraints('public'::name, 'myrasters2'::name, 'rast'::name,'regular_blocking', 'blocksize');
-- get notice--
NOTICE:  Adding regular blocking constraint
INFO:  The regular_blocking constraint is just a flag indicating that the column "rast" is regularly blocked.  As no function exist yet to assert that a raster column is regularly blocked, it is up to the end-user to ensure that the column is truely regularly blocked.
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 85 at assignment
NOTICE:  Adding blocksize-X constraint
NOTICE:  Adding blocksize-Y constraint

関連情報

「ラスタカラムカタログ」, ST_AddBand, ST_MakeEmptyRaster, DropRasterConstraints, ST_BandPixelType, ST_SRID