名称

ST_Rescale — 仅通过调整比例(或像素大小)对栅格进行重采样。使用最近邻(英语或美式拼写)、双线性、三次、三次样条、Lanczos、最大或最小重采样算法计算新像素值。默认值为最近邻。

语法

raster ST_Rescale(raster rast, double precision scalexy, text algorithm=NearestNeighbor, double precision maxerr=0.125);

raster ST_Rescale(raster rast, double precision scalex, double precision scaley, text algorithm=NearestNeighbor, double precision maxerr=0.125);

描述

仅通过调整比例(或像素大小)对栅格进行重采样。使用以下重采样算法之一计算新像素值

  • 最近邻(英语或美式拼写)

  • 双线性

  • 三次

  • 三次样条

  • Lanczos

  • 最大

  • 最小

默认值为最近邻,这是最快的,但会产生最差的插值。

scalexscaley 定义新的像素大小。scaley 通常必须为负值才能获得方向良好的栅格。

当新的 scalex 或 scaley 不是栅格宽度或高度的除数时,结果栅格的范围将扩展为包含所提供栅格的范围。如果您想确保保留确切的输入范围,请参阅 ST_Resize

maxerr 是重采样算法对变换近似的阈值(以像素单位为单位)。如果未指定 maxerr,则使用默认值 0.125,该值与 GDAL gdalwarp 实用程序中使用的值相同。如果设置为零,则不进行近似。

[Note]

请参阅:GDAL Warp 重采样方法了解更多详情。

[Note]

ST_Rescale 与 ST_SetScale 的不同之处在于,ST_SetScale 不会对栅格进行重采样以匹配栅格范围。ST_SetScale 仅更改栅格的元数据(或地理参考)以更正最初指定的错误比例。ST_Rescale 产生的栅格具有不同的宽度和高度,可计算为适合输入栅格的地理范围。ST_SetScale 不会修改栅格的宽度或高度。

可用性:2.0.0 需要 GDAL 1.6.1+

增强:添加了 3.4.0 最大和最小重采样选项

已更改:2.1.0 可处理无 SRID 的栅格

示例

一个简单的示例,将栅格从 0.001 度像素大小重新缩放为 0.0015 度像素大小。

-- the original raster pixel size
SELECT ST_PixelWidth(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, 4269), '8BUI'::text, 1, 0)) width

   width
----------
0.001

-- the rescaled raster raster pixel size
SELECT ST_PixelWidth(ST_Rescale(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, 4269), '8BUI'::text, 1, 0), 0.0015)) width

   width
----------
0.0015

另请参阅

ST_ResizeST_ResampleST_SetScaleST_ScaleXST_ScaleYST_Transform