名稱

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)。如果未提供,則像素類型預設為 8BUI,值預設為 1,無資料值預設為 0。

輸出網格將與來源幾何圖形位於相同的空間參考中。唯一的例外是具有參考網格的變體。在這種情況下,結果網格將獲得與參考網格相同的 SRID。

可選的 touched 參數預設為 false,並對應於 GDAL ALL_TOUCHED 柵格化選項,該選項決定是否將燒錄由線條或多邊形接觸的像素。而不僅僅是在線條呈現路徑上的像素,或其中心點位於多邊形內的像素。

當與 ST_AsPNG 和其他 ST_AsGDALRaster 系列函式結合使用時,這對於直接從資料庫呈現幾何圖形的 jpeg 和 png 檔案特別有用。

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

[Note]

目前還無法呈現複雜的幾何圖形類型,例如曲線、TINS 和多面體曲面,但一旦 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]));