名前

ST_AsGDALRaster — 指定されたGDALラスタ書式でラスタタイルを返します。ラスタ書式はコンパイルしたライブラリが対応するものです。ライブラリが対応する書式の一覧を得るにはST_GDALRasters()を使います。

概要

bytea ST_AsGDALRaster(raster rast, text format, text[] options=NULL, integer srid=sameassource);

説明

指定された書式でラスタタイルを返します。引数は次の通りです。

  • format 出力書式です。libgdalライブラリでコンパイルしたドライバに依存します。一般的には'JPEG', 'GTIff', 'PNG'が有効になっています。ライブラリが対応する形式の一覧を得るにはST_GDALDriversを使います。

  • options GDALオプションの文字列配列です。妥当なオプションは書式に依存します。詳細についてはGDAL Raster format optionsをご覧下さい。

  • srs 画像に埋め込むproj4textまたはsrtext (spatial_ref_sysから)です。

Availability: 2.0.0 - GDAL 1.6.0以上が必要です。

複数タイルを単一ラスタとするJPEG出力例

SELECT ST_AsGDALRaster(ST_Union(rast), 'JPEG', ARRAY['QUALITY=50']) As rastjpg
FROM dummy_rast
WHERE rast && ST_MakeEnvelope(10, 10, 11, 11);

PostgreSQLラージオブジェクト対応を使ったラスタの出力

ラスタを他の書式に出力する方法の一つとして、PostgreSQL large object export functionsの使用があります。前の例の繰り返しですが、出力も行います。サーバ側のlo関数を使うため、データベースへのスーパーユーザ権限が必要となることに注意して下さい。また、サーバネットワーク上のパスに出力します。ローカルに出力するには、psqlで、サーバのファイルシステムでなくローカルのファイルシステムに出力する等価のlo_関数を使います。

DROP TABLE IF EXISTS tmp_out ;

CREATE TABLE tmp_out AS
SELECT lo_from_bytea(0,
       ST_AsGDALRaster(ST_Union(rast), 'JPEG', ARRAY['QUALITY=50'])
        ) AS loid
  FROM dummy_rast
WHERE rast && ST_MakeEnvelope(10, 10, 11, 11);

SELECT lo_export(loid, '/tmp/dummy.jpg')
   FROM tmp_out;

SELECT lo_unlink(loid)
  FROM tmp_out;

GTIFF出力の例

SELECT ST_AsGDALRaster(rast, 'GTiff') As rastjpg
FROM dummy_rast WHERE rid=2;

-- GeoTIFFをJPEG、90%品質で圧縮して出力します
SELECT ST_AsGDALRaster(rast, 'GTiff',
  ARRAY['COMPRESS=JPEG', 'JPEG_QUALITY=90'],
  4269) As rasttiff
FROM dummy_rast WHERE rid=2;
                                

関連情報

「PostGISラスタを使ったカスタムアプリケーションの構築」, ST_GDALDrivers, ST_SRID