ST_AsRaster — Converte uma geometria PostGIS para um raster 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);
Converte uma geometria PostGIS para um raster PostGIS. As diversas variantes oferecem três grupos de possibilidades para configurar o alinhamento e o tamanho do pixel do raster resultante.
O primeiro grupo, composto pelas duas primeiras variantes, produz um raster tendo o mesmo alinhamento (scalex, scaley, gridx e gridy), tipo pixel e valor nodata como foi fornecido pelo raster referência. Você geralmente passa este raster referência unindo a tabela que contém a geometria com a que contém o raster referência.
O segundo grupo, composto por quatro variantes, permite que você fixe dimensões do raster fornecendo os parâmetros do tamanho de um pixel (scalex & scaley e skewx & skewy). O width & height do raster resultante será ajustado para caber na extensão da geometria. Na maioria dos casos, você deve cast integer scalex & scaley argumentos para dobrar a precisão para que o PostgreSQL escolha a variante correta.
O terceiro grupo, composto por quatro variantes, permite que você conserte dimensões do raster fornecendo elas (width & height). Os parâmetros do tamanho do pixel (scalex & scaley and skewx & skewy) do raster resultante será ajustado para caber na extensão da geometria.
As duas primeiras variantes de cada um destes dois últimos grupos permite que você especifique o alinhamento com um canto aleatório da rede de alinhamento (gridx & gridy) e as duas últimas variantes pegam o canto esquerdo mais alto (upperleftx & upperlefty).
Cada grupo de variantes permite a produção de uma ou várias bandas raster. Para produzir várias, você deve fornecer um arranjo de tipos pixel (pixeltype[]), um arranjo de valores iniciais (value) e um de valores nodata (nodataval). Se não fornecidos pixeltyped torna-se 8BUI, valores para 1 e nodataval para 0.
O raster de saída terá a mesma referência espacial que a geometria fonte. A única exceção é para variantes com raster referência. Neste caso, o raster resultante terá o mesmo SRID do raster referência.
O parâmetro opcional touched é falso e mapeia a opção rasterização GDAL ALL_TOUCHED, a qual determina se pixeis tocados por linhas ou polígonos serão queimados. Não apenas aqueles no caminho de renderização de linha, ou aqueles cujo ponto central está dentro do polígono.
Isto é particularmente útil para renderizar jpegs e pngs de geometrias diretamente do banco de dados quando usando em conjunto com ST_AsPNG e outra família ST_AsGDALRaster de funções.
Disponibilidade: 2.0.0 - requer GDAL >= 1.6.0.
Curved geometry inputs are linearized before rasterization, including NURBSCurve inputs handled by PostGIS. TIN and PolyhedralSurface inputs are not supported.
This example outputs a black circle on a white background, occupying 150 by 150 pixels.
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
This example maps bands to RGB channels, producing the teal value (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
ST_BandPixelType, ST_Buffer, ST_GDALDrivers, ST_AsGDALRaster, ST_AsPNG, ST_AsJPEG, ST_SRID