名前

ST_AsRaster — PostGIS ジオメトリーを PostGIS ラスターに変換します。

概要

raster ST_AsRaster(geometry geom, raster ref, text pixeltype, double precision value=1, double precision nodataval=0, boolean touched=false);

raster ST_AsRaster(geometry geom, raster ref, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx, double precision gridy, text pixeltype, double precision value=1, double precision nodataval=0, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx=NULL, double precision gridy=NULL, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, text pixeltype, double precision value=1, double precision nodataval=0, double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, text[] pixeltype, double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, double precision gridx, double precision gridy, text pixeltype, double precision value=1, double precision nodataval=0, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, double precision gridx=NULL, double precision gridy=NULL, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, text pixeltype, double precision value=1, double precision nodataval=0, double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, text[] pixeltype, double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

説明

PostGIS ジオメトリーを PostGIS ラスターに変換します。多数の形式がありますが、結果ラスタのアラインメントとピクセルサイズを設定する三つの考えられる類型に分かれます。

一つ目の群は、最初の 2形式です。 アラインメント (scalex, scaley, gridx, gridy)、ピクセルタイプ、NODATA 値が提供される参照ラスターと同じとなるラスターを生成します。一般的にこの参照ラスターは、ジオメトリーを含むテーブルを参照ラスターを含むテーブルに結合して渡します。

二つ目の群は、4形式あります。ピクセルサイズ (scalex & scaleyskewx & skewy) の引数を渡してラスターのピクセル範囲を設定します。結果ラスターのwidth & heightはジオメトリーの範囲にあわせて調整されます。ほとんどの場合、PostgreSQL が正しい形式を選択するために、scalex & scaleyの整数引数を倍精度浮動小数点数にキャストしなければなりません。

三つ目の群は、4形式あります。ラスターのピクセル範囲 (width & height) を渡してラスターのピクセル範囲を固定するものです。結果ラスターのピクセルサイズ(scalex & scaleyskewx & skewy) の引数はジオメトリーの範囲にあわせて調整されます。

二つ目の群と三つ目の群の群内前半 2形式は、アラインメントグリッド (gridx & gridy) の適切な隅でアラインメントを特定します。群内後半 2形式は左上隅 (upperleftx & upperlefty) を取ります。

これらの群のそれぞれによって、1バンドまたは複数バンドのラスターを生成することができます。複数バンドのラスターを生成するには、ピクセルタイプ配列 (pixeltype[])、初期値配列 (value)、NODATA 値配列 (nodataval) を渡す必要があります。ピクセルタイプが渡されていない場合には、デフォルトは 8BUI になり、初期値については 1、NODATA値については 0になります。

出力ラスターは元のジオメトリーと同じ空間参照系になります。参照ラスターを使う形式は例外で、結果ラスターは参照ラスターと同じ SRID になります。

任意引数touchedは、デフォルトでは FALSE になります。GDAL のALL_TOUCHED ラスター化オプションに相当し、ラインまたはポリゴンに接触するピクセルが描画されます。ライン上にあるか中心点がポリゴン内部にあるピクセルが描画されるだけではありません。

これは特にジオメトリーをデータベースからST_AsPNGST_AsGDALRaster系の関数を併用して直接 JPEG や PNG に描画する際に使えます。

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

曲線ジオメトリー入力はラスター化前に線形化されます。PostGIS で操作する NURBS 曲線の入力も含みます。TIN と POLYHEDRALSURFACE にた対応していません。

例: ジオメトリーを PNG ファイルとして出力

この例では、白い背景に 150 × 150 ピクセルの領域を占める黒い円を出力します。

コード
SELECT ST_AsPNG(
    ST_AsRaster(
        ST_Buffer(ST_Point(1, 5), 10),
        150, 150,
        ARRAY['8BUI', '8BUI', '8BUI'],
        ARRAY[0, 0, 0],
        ARRAY[255, 255, 255]
    )
) AS image;
出力
image
-------------------------------
 PNG image, 150 x 150 pixels
                
Geometry figure for visual-rt-st-asraster-01

この例ではバンドを RGB チャンネルに割り当ててティール色 (118,154,118) を生成します。

コード
SELECT ST_AsPNG(
    ST_AsRaster(
        ST_Buffer('LINESTRING(50 50,150 150,150 50)'::geometry, 10, 'join=bevel'),
        200, 200,
        ARRAY['8BUI', '8BUI', '8BUI'],
        ARRAY[118, 154, 118],
        ARRAY[255, 255, 255]
    )
) AS image;
出力
image
-------------------------------
 PNG image, 200 x 200 pixels
                
Geometry figure for visual-rt-st-asraster-02