名称

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 栅格。多种变体提供了三种设置结果栅格的对齐方式和像素大小的可能性。

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

第二组,由四个变体组成,允许您通过提供像素大小的参数(scalex & scaleyskewx & skewy)来设置栅格的尺寸。结果栅格的 width & height 将进行调整以适应几何图形的范围。在大多数情况下,您必须将整数 scalex & scaley 参数转换为双精度,以便 PostgreSQL 选择正确的变体。

第三组,由四个变体组成,允许您通过提供栅格的尺寸(width & height)来固定栅格的尺寸。结果栅格的像素大小参数(scalex & scaleyskewx & skewy)将进行调整以适应几何图形的范围。

最后两组的每个组的前两个变体允许您使用对齐网格的任意角(gridx & gridy)指定对齐方式,最后两个变体采用左上角(upperleftx & upperlefty)。

每个变体组都允许生成单波段栅格或多波段栅格。要生成多波段栅格,您必须提供像素类型数组 (pixeltype[])、初始值数组 (value) 和无数据值数组 (nodataval)。如果未提供,则 pixeltyped 默认为 8BUI,values 默认为 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]));