名前

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=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はこの関数を使ってラスタテーブルを登録します。

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

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

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

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

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

  • num_bands バンド数

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

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

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

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

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

[注記]

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

[注記]

制約を適用した後にデータをさらにロードする必要がある場合には、データ範囲が変わるなら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);


-- raster_columnsビューに正しく登録されたかの確認 --
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');
-- 警告が表示されます --
NOTICE:  Adding regular blocking constraint
NOTICE:  Adding blocksize-X constraint
NOTICE:  Adding blocksize-Y constraint

関連情報

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