Name

ST_Rescale — 通过仅调整栅格的比例(或像素大小)来重新采样栅格。 新的像素值是使用 NearestNeighbor(英语或美式拼写)、Bilinear、Cubic、CubicSpline、 Lanczos、Max或Min重采样算法计算的。 默认为NearestNeighbor。

Synopsis

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);

描述

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

  • NearestNeighbor (英语或美式拼写)

  • Bilinear

  • Cubic

  • CubicSpline

  • Lanczos

  • Max

  • Min

默认值是“NearestNeighbor”,它速度最快,但插值效果最差。

scalex scaley 定义新的像素大小。 为了获得良好定向的栅格,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