ST_AsRaster函數應用詳解:將矢量數據轉換為柵格數據
[文章目錄]
一、函數概述
二、函數參數與分組說明
三、核心特性與注意事項
四、示例代碼
五、應用場景
六、版本依賴
七、總結
一、函數概述
ST_AsRaster是PostGIS中用于將幾何對象(如點、線、面)轉換為柵格數據的核心函數。它通過多種參數組合,靈活控制輸出柵格的空間參考、像素尺寸、對齊方式、波段數等屬性,適用于地理數據柵格化、空間分析及可視化場景。
二、函數參數與分組說明
函數共有10種變體,可歸納為3大參數分組,每組核心差異在于柵格尺寸與對齊方式的定義方法。
1. 基于參考柵格的轉換
通過已有柵格的屬性(如像素大小、原點)定義輸出柵格。
- 適用場景:需保持與現有柵格一致的空間分辨率和對齊方式(如疊加分析)。
-- 單波段
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);
關鍵參數:
- ref:參考柵格,決定輸出柵格的scalex、scaley、gridx、gridy和 SRID。
- pixeltype/pixeltype[]:像素類型(如’8BUI’表示 8 位無符號整數)。
- value[]:各波段初始值(默認全為 1)。
- touched:是否渲染與幾何對象 “接觸” 的像素(默認僅渲染內部像素)。
2. 基于像素尺寸的轉換(自動計算柵格大小)
通過指定像素尺寸(scalex、scaley)定義柵格,輸出柵格的寬度和高度由幾何對象范圍自動計算。
- 適用場景:需固定像素分辨率,動態適配幾何范圍(如遙感影像處理)。
-- 單波段(指定網格原點)
raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx, double precision gridy, text pixeltype, ...);
-- 多波段(指定左上原點)
raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, text[] pixeltype, ..., double precision upperleftx=NULL, double precision upperlefty=NULL, ...);
關鍵參數:
- scalex/scaley:像素寬度 / 高度(X/Y 方向分辨率)。
- gridx/gridy:網格原點(左下角或任意角點)。
- upperleftx/upperlefty:左上原點(替代gridx/gridy,更常用)。
- skewx/skewy:像素傾斜參數(默認 0,用于非正交柵格)。
3. 基于固定尺寸的轉換(自動計算像素尺寸)
通過指定柵格寬度和高度(width、height)定義柵格,像素尺寸由幾何對象范圍自動計算。
- 適用場景:需固定柵格像素數量(如生成固定分辨率的縮略圖)。
-- 單波段(指定網格原點)
raster ST_AsRaster(geometry geom, integer width, integer height, double precision gridx, double precision gridy, text pixeltype, ...);
-- 多波段(指定左上原點)
raster ST_AsRaster(geometry geom, integer width, integer height, text[] pixeltype, ..., double precision upperleftx=NULL, double precision upperlefty=NULL, ...);
關鍵參數:
- width/height:柵格的列數 / 行數(像素數量)。
- 其他參數與第二組類似,但scalex/scaley由幾何范圍與尺寸自動計算。
…
查看全部文章內容請轉,更多開源GIS相關知識技能分享,提供學習問答交流