名稱

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 載入器使用此函式來註冊網格表格

要傳入的有效約束名稱:有關更多詳細資訊,請參閱第 10.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