すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ST_Transform

最終更新日:Mar 29, 2026

ST_Transform は、基になる座標を変換し、画素値をリサンプリングすることで、ラスターオブジェクトをある空間参照系 (SRS) から別の空間参照系に再投影します。

構文

raster ST_Transform(raster rast,
           integer outSrid,
           cstring processExpr default '',
           cstring storageOption default '')

パラメーター

パラメーター説明
rast再投影するソースラスターオブジェクト。
outSridspatial_ref_sysターゲット空間参照系の SRID。`spatial_ref_sys` テーブルの有効な SRID である必要があります。
processExprピクセルのリサンプリングと nodata 処理をコントロールする JSON 文字列。
storageOption出力ラスターの格納方法をコントロールする JSON 文字列。

processExpr フィールド

フィールドデフォルト値説明
resampleテキストNearリサンプリングアルゴリズム。有効な値: NearAverageCubicBilinear
nodataブール値falseソースラスタ内の nodata 値を有効な値として扱うかどうかを指定します。true の場合、nodata 値を持つピクセルはリサンプリングされません。false の場合、nodata 値を持つピクセルもリサンプリングされます。
nodataValuefloat8 または float8[]NULL出力ラスタのバンドに割り当てる nodata 値。すべてのバンドに同一の値を適用する場合は単一の値を指定し、バンドごとに異なる値を適用する場合は、各バンドに対応する値を含む配列を指定します。
警告

nodata および nodataValue を注意深く設定してください。ソース ラスタに nodata 値を持つピクセルがない場合は、nodatafalse に設定し、nodataValue を省略します。そうしないと、イメージ アーティファクトが発生する可能性があります。

storageOption フィールド

フィールドデフォルト値説明
chunkingブール値ソースと同一出力ラスタをチャンク単位で保存するかどうかを指定します。
chunkdim文字列ソースと同一チャンクのディメンション。 chunkingtrue の場合にのみ有効です。
chunktable文字列''(空文字列)永続的なストレージ用のチャンクテーブル名。空または NULL の場合、ランダムな名前の一時チャンクテーブルが作成され、セッション終了時に削除されます。出力ラスタを永続化するには、テーブル名を指定してください。
compression文字列ソースと同一圧縮フォーマット。有効な値: NoneJPEGZlibPNGLZOLZ4
quality整数ソースと同一画像品質。JPEG フォーマットでのみ有効です。
interleaving文字列ソースと同一インタリーブ方式。有効な値: bip(ピクセル単位バンドインタリーブ:BIP)、bil(ライン単位バンドインタリーブ:BIL)、bsq(バンド逐次:BSQ)。
endian文字列ソースと同一バイトオーダー。NDR はリトルエンディアン、XDR はビッグエンディアンを表します。

以下の例では、ソーステーブルにロードされた GeoTIFF ファイルを使用します。

CREATE TABLE IF NOT EXISTS datasource_table (id integer, rast raster);
INSERT INTO datasource_table VALUES (
  1,
  ST_ImportFrom('rbt', '$(RAST_DATA_DIR)/512_512_1_bsq_8u_geo.tif', '{}')
);

永続的なチャンクテーブルへの出力の永続化

再投影されたラスターをセッションをまたいで保存するには、 chunktable 名を指定します。

nodata なし:

CREATE TABLE rat_transform_result (id integer, rast raster);

INSERT INTO rat_transform_result (id, rast)
SELECT
  10,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

単一の nodata 値あり (nodata 値を持つピクセルはリサンプリングされます):

INSERT INTO rat_transform_result (id, rast)
SELECT
  11,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":true,"nodatavalue":255}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

バンドごとの nodata 値あり:

INSERT INTO rat_transform_result (id, rast)
SELECT
  12,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false,"nodatavalue":[255,255,255]}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

一時的なチャンクテーブルへの出力の格納

chunktable を省略すると、出力がセッションスコープの一時テーブルに書き込まれます。セッションが終了するとテーブルは削除されるため、中間計算にのみこのパターンを使用してください。

CREATE TEMP TABLE rat_transform_result_temp (id integer, rast raster);

INSERT INTO rat_transform_result_temp (id, rast)
SELECT
  1,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false,"nodataValue":[255,255,255]}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq"}'
  )
FROM datasource_table
WHERE id = 1;