S​T_MosaicFrom

将指定的raster对象进行镶嵌操作,合并成为一个新的raster对象。

语法

raster ST_MosaicFrom(
  raster source[],
  cstring chunkTableName,
	cstring storageOption default '{}', 
  cstring mosaicOption default '{}'
);

参数

参数名称

描述

source

需要拼接的源raster对象。

chunkTableName

拼接完成的块表名称,必须符合数据库表名规范。

storageOption

JSON字符串表示的返回结果的存储选项。

mosaicOption

JSON字符串表示的返回结果的镶嵌操作选项。

storageOption是基于JSON格式的字符串,描述raster对象分块存储信息。支持的参数如下:

参数名称

描述

类型

默认值

说明

chunking

是否使用分块存储

boolean

与参考影像一致

/

chunkdim

分块的维度信息

string

与参考影像一致

在chunking=true下才有效,格式为:(w, h, b)

interleaving

交错方式

string

与参考影像一致

必须是以下一种:

  • bip : 像素交错

  • bil : 行交错

  • bsq : 波段交错

  • auto :根据原始影像自动选择

compression

压缩算法类型

string

与参考影像一致

目前只支持:

  • none

  • jpeg

  • zlib

  • png

  • lzo

  • lz4

  • zstd

  • snappy

  • jp2k

quality

压缩质量

integer

与参考影像一致

只针对jpeg/jp2k压缩算法。

mosaicOption是基于JSON格式的字符串,描述镶嵌算法的具体信息。支持的参数如下:

参数名称

描述

类型

默认值

说明

srid

输出栅格对象的空间参考SRID值

integer

左上角影像srid

srid与cell_size必须同时指定。

cell_size

输出栅格对象像素大小

float8[]

左上角影像cell_size

  • 以长度为2的浮点型数组[cell_size_x,cell_size_y]格式指定。

  • srid与cell_size必须同时指定。

resample

重采样方式

text

'Near'

栅格重采样方式,支持:

  • 'Near'

  • 'Average'

  • 'Cubic'

  • 'Bilinear'

nodata

源影像的nodata值是否有效

bool

false

  • 如果为true,表示源影像的nodata是有效的,像元值为nodata的像元不参与重采样计算

  • 如果为false,表示源影像的nodata是无效的,像元值为nodata的像元参与重采样计算。

nodataValue

按波段指定新的nodata值

float8

float8[]

NULL

nodataValue可指定为单个值或数组;如果指定为单个值表示输出栅格对象的所有波段使用同一个nodata值;如果指定为数组,则数组元素个数必须与栅格的波段数一致。

color_balance

是否匀色

bool

false

设置是否进行匀色。

step

匀色计算步长

integer

0.1

color_balance为true时有效,步长越大,可以更快地获得结果,但可能无法得到最优解。

iteration

匀色计算迭代次数

integer

50000

color_balance为true时有效,迭代次数越多匀色效果越好,但会增加耗时。

parallel

并行度

integer

1

设置操作并行度。取值范围为1~64。

描述

镶嵌函数会创建一个新的raster对象。

所有指定的raster对象需要满足以下条件:

  • 具有相同的波段数。

  • 所有的raster对象要么都进行了地理参考,要么都不是。如果都是地理参考,则采用世界坐标镶嵌且SRID或仿射参数可不相同。

  • 指定raster对象的像素类型可以不同。

该函数提供了基于gamma矫正技术实现的匀色能力。基本过程如下:

  1. 首先,生成全局颜色平面。对所有参与镶嵌的raster对象进行重采样,通过多项式拟合生成全局像素矩阵,用作匀色基准面。

  2. 然后,依次计算每个raster对象对应的局部颜色平面(双线性插值),近似代替整个栅格对象的像素矩阵。

  3. 最后,计算生成raster对象上每个像素位置对应的全局颜色平面和局部颜色平面上的像素值,并通过对gamma矫正参数进行计算来实现颜色矫正,以达到最终的匀色效果。

示例

Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', ''))
Update raster_table Set raster_obj = ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic','{"srid":4326,"cell_size":[0.00002,0.00002]}') where id = 11;

--nodata
Insert Into rat_mosaicfrom Values(110, ST_MosaicFrom(Array(select rast from rat_mosaicfrom where id < 5), 'rbt_mosaic','{"chunking":true, "chunkdim":"(256,256,3)","compression":"jpeg","quality":75, "interleaving":"bsq","celltype":"8bui"}','{"resample":"Average","srid":4326,"cell_size":[0.00002,0.00002],"nodata":true, "nodataValue":[255,255,255]}'));

-- 并行
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', '{"srid":4326,"cell_size":[0.00002,0.00002],"parallel":4}'))

-- 匀色
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', '{"srid":4326,"cell_size":[0.00002,0.00002], "color_balance":true, "parallel":4}'))