全部產品
Search
文件中心

AnalyticDB:ST_CreateRast

更新時間:Feb 05, 2024

建立一個基於阿里雲Object Storage Service服務(OSS)的raster對象。

文法

raster ST_CreateRast(cstring url);
raster ST_CreateRast(cstring url, cstring storageOption);
raster ST_CreateRast(anyarray data , integer width, cstring storageOption, geometry extent);

參數

參數名稱

描述

url

OSS影像檔案的路徑。更多資訊,請參見Object Storage Service服務路徑

storageOption

基於JSON格式的字串,描述raster對象金字塔的分Block Storage資訊。

data

一維數組表示的柵格對象。該數組長度為柵格的列數與行數的乘積。

width

柵格列數。

extent

geometry類型表示的空間範圍(可選)。

storageOption支援的參數如下:

參數名稱

描述

類型

格式

預設值

說明

chunkdim

分塊的維度資訊

string

(w, h, b)

從原始影像中讀取分塊大小

interleaving

交錯方式

string

bsq

必須是以下一種:

  • bip:像素交錯

  • bil:行交錯

  • bsq:波段交錯

  • auto:根據原始影像自動選擇

chunk_table

寫入chunk_table名稱

string

在使用一維數組產生raster對象功能中必須指定。

說明

在通常情況下無需修改分塊和交錯資訊,僅在特殊情境下需要修改,例如:

  • 需要多波段RGB組合瀏覽,但是預設值為bsq(波段交錯) ,需要修改為bip(像素交錯)。

  • 某些影像的分塊大小為1行*n列,但是訪問請求為256行*256列的規則塊,需要修改為按照訪問請求的大小。

描述

OSS檔案路徑格式如下: oss://access_id:secrect_key@Endpoint/path_to/file。 其中Endpoint可以被省略,系統會自動尋找相應的Endpoint。如果Endpoint被省略,路徑必須以/開頭。

Endpoint為OSS的地區節點。為保證資料匯入的效能,請確保ADB PG與OSS所在地區相同,詳情請參見OSS Endpoint

樣本

-- 基於OSS儲存,指定accessID,accessKEY,endpoint
Select ST_CreateRast('OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/data/image.tif');

-- 基於MinIO,指定host和port
Select ST_CreateRast('MIO://<ak>:<ak_secret>@10.0.0.1:443/mybucket/data/image.tif');

-- 基於HDFS,指定user_name
Select ST_CreateRast('HDFS://<user_name>@10.0.0.1:8020/path/image.tif');

-- 指定分塊與交錯方式
Select ST_CreateRast('OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/data/image.tif', '{"chunkdim":"(256,256,3)","interleaving":"auto"}');

-- 指定具有Subset的NetCDF對應的影像
Select ST_CreateRast('OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/data/image.nc:hcc');

-- 指定具有Subset的HDF5對應的影像
Select ST_CreateRast('OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/data/image.hdf5://ds/hcc');

-- 從數組產生raster對象
select ST_CreateRast(ARRAY[10, 11, 8, 12],2,'{"chunktable":"rbt"}',ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326));

-- 通過array_agg多條記錄彙總產生raster對象
select ST_CreateRast((select array_agg(value) from point_table), 300, '{"chunktable":"rbt"}');