名前

ST_SetBandIndex — データベース外バンドの外部バンド番号の更新

概要

raster ST_SetBandIndex(raster rast, integer band, integer outdbindex, boolean force=false);

説明

データベース外バンドの外部バンド番号を更新します。データベース外バンドと関連する外部ラスタファイルには触れません。

[注記]

forceがTRUEの場合には、外部ラスタファイルとPostGISラスタとの互換性 (例:アラインメント、ピクセル対応)確認のためのテストを行いません。このモードは、バンドが外部ラスタファイル内で移動する場所を対象としています。

[注記]

内部的には、このメソッドは、存在するパス情報を更新する替わりに、PostGISラスタのbandで指定したバンドを新しいバンドに置き換えます。

Availability: 2.5.0

Code
WITH foo AS (
    SELECT ST_AddBand(
        NULL::raster,
        '/home/pele/devel/geo/postgis-git/raster/test/regress/loader/Projected.tif',
        NULL::int[]
    ) AS rast
)
SELECT
    1 AS query,
    bandnum,
    regexp_replace(path, '^.*/', '') AS path,
    outdbbandnum
FROM ST_BandMetaData(
    (SELECT rast FROM foo),
    ARRAY[1, 3, 2]::int[]
) AS metadata
UNION ALL
SELECT
    2, bandnum,
    regexp_replace(path, '^.*/', ''),
    outdbbandnum
FROM ST_BandMetaData((
        SELECT
            ST_SetBandIndex(rast,
                2,
                1
            ) AS rast
        FROM foo
    ),
    ARRAY[1, 3, 2]::int[]
) AS metadata
ORDER BY 1, 2;

In the second result set, band 2 still points at the same file but now reads external band 1.

出力:
query | bandnum | path          | outdbbandnum
-------+---------+---------------+--------------
     1 |       1 | Projected.tif |            1
     1 |       2 | Projected.tif |            2
     1 |       3 | Projected.tif |            3
     2 |       1 | Projected.tif |            1
     2 |       2 | Projected.tif |            1
     2 |       3 | Projected.tif |            3