名称

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);

栅格 ST_AsRaster(几何 geom, 整数 width, 整数 height, 双精度 gridx, 双精度 gridy, 文本 pixeltype, 双精度 value=1, 双精度 nodataval=0, 双精度 skewx=0, 双精度 skewy=0, 布尔 touched=false);

栅格 ST_AsRaster(几何 geom, 整数 width, 整数 height, 双精度 gridx=NULL, 双精度 gridy=NULL, 文本[] pixeltype=ARRAY['8BUI'], 双精度[] value=ARRAY[1], 双精度[] nodataval=ARRAY[0], 双精度 skewx=0, 双精度 skewy=0, 布尔 touched=false);

栅格 ST_AsRaster(几何 geom, 整数 width, 整数 height, 文本 pixeltype, 双精度 value=1, 双精度 nodataval=0, 双精度 upperleftx=NULL, 双精度 upperlefty=NULL, 双精度 skewx=0, 双精度 skewy=0, 布尔 touched=false);

栅格 ST_AsRaster(几何 geom, 整数 width, 整数 height, 文本[] pixeltype, 双精度[] value=ARRAY[1], 双精度[] nodataval=ARRAY[0], 双精度 upperleftx=NULL, 双精度 upperlefty=NULL, 双精度 skewx=0, 双精度 skewy=0, 布尔 touched=false);

说明

将 PostGIS 几何转换为 PostGIS 栅格。多种变体提供了三组可能性,用于设置生成栅格的对齐方式和像素大小。

第一组由前两个变体组成,生成一个具有与提供的参考栅格相同对齐方式(scalexscaleygridxgridy)、像素类型和无数据值的栅格。您通常通过将包含几何的表与包含参考栅格的表连接来传递此参考栅格。

第二组由四个变体组成,允许您通过提供像素大小(scalexscaley 以及 skewxskewy)的参数来设置栅格的尺寸。生成栅格的 widthheight 将调整为适合几何的范围。在大多数情况下,您必须将整数 scalexscaley 参数强制转换为双精度,以便 PostgreSQL 选择正确的变体。

第三组由四个变体组成,允许您通过提供栅格的尺寸(widthheight)来固定栅格的尺寸。生成栅格的像素大小(scalexscaley 以及 skewxskewy)的参数将调整为适合几何的范围。

这最后两组的每个组的前两个变体允许您使用对齐网格的任意角(gridxgridy)指定对齐,而最后两个变体采用左上角(upperleftxupperlefty)。

每个变体组允许生成一个波段栅格或多个波段栅格。要生成多个波段栅格,您必须提供一个像素类型数组(pixeltype[])、一个初始值数组(value)和一个无数据值数组(nodataval)。如果没有提供,则 pixeltyped 默认为 8BUI,值默认为 1,nodataval 默认为 0。

输出栅格将与源几何位于相同的空间参考中。唯一的例外是具有参考栅格的变体。在这种情况下,生成的栅格将获得与参考栅格相同的 SRID。

可选的 touched 参数默认为 false,并映射到 GDAL ALL_TOUCHED 栅格化选项,该选项确定是否会刻录线条或多边形触及的像素。不仅仅是线渲染路径上的像素,或者中心点在多边形内的像素。

这对于使用 ST_AsPNG 及其他 ST_AsGDALRaster 系列函数直接从数据库渲染几何的 jpeg 和 png 特别有用。

可用性:2.0.0 - 需要 GDAL >= 1.6.0。

[Note]

尚不能渲染曲线、TIN 和多面体表面等复杂几何类型,但一旦 GDAL 可以,它就应该能够渲染。

示例:将几何输出为 PNG 文件

黑色圆圈

-- this will output a black circle taking up 150 x 150 pixels --
SELECT ST_AsPNG(ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150));

仅使用 PostGIS 渲染的缓冲区的示例

-- the bands map to RGB bands - the value (118,154,118) - teal  --
SELECT ST_AsPNG(
    ST_AsRaster(
        ST_Buffer(
            ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'), 10,'join=bevel'),
            200,200,ARRAY['8BUI', '8BUI', '8BUI'], ARRAY[118,154,118], ARRAY[0,0,0]));

另请参见

ST_BandPixelTypeST_BufferST_GDALDriversST_AsGDALRasterST_AsPNGST_AsJPEGST_SRID