扭曲 (数据管理)

摘要

使用源控制点和目标控制点转换栅格数据集。这与地理配准的方法类似。

插图

二维坐标变换的示例

使用情况

  • 必须指定源坐标和目标坐标。可供选择的变换类型(多项式的阶)取决于输入的控制点数。

  • 默认的多项式阶数将执行仿射变换。

  • 在栅格数据需要使用一个利用多项式进行建模的系统化几何校正时,“扭曲”工具会非常有用。通过使用适当阶数的多项式变换,空间变换可转换或移除变形。阶数越高,可校正的变形便越复杂。同时,所需的处理时间也越长。

  • 要确定指定阶的多项式所必需的最小链接数,则请使用以下公式:

    n = (p + 1) (p + 2) / 2

    其中 np 阶多项式变换所需的最小链接数。建议您使用大于最小链接数的值。

  • 此工具用于确定扭曲栅格的范围并将行数和列数设置为与输入栅格大致相同。由于输出栅格在 x 和 y 方向上的大小比例发生了更改,因而可能会存在一些较小的差异。所用的默认像元大小将通过用范围除以先前确定的行数和列数来计算。像元大小的值将由重采样算法使用。

  • 如果选择在“环境设置”中定义输出像元大小,将按以下公式计算行数和列数:

    columns = (xmax - xmin) / cell size rows = (ymax - ymin) / cell size
  • 可将输出结果保存为 BIL、BIP、BMP、BSQ、DAT、Esri Grid、GIF、IMG、JPEG、JPEG 2000、PNG、TIFF、MRF、CRF 格式或任意地理数据库栅格数据集。

  • 将栅格数据集存储到 JPEG 文件、JPEG 2000 文件或地理数据库时,可在环境中指定压缩类型压缩质量

  • 此工具支持多维栅格数据。要在多维栅格中的每个剖切片上运行该工具并生成多维栅格输出,必须将输出保存到 CRF。

    支持的输入多维数据集类型包括多维栅格图层、镶嵌数据集、图像服务和 CRF。

参数

标注说明数据类型
输入栅格

要转换的栅格。

Mosaic Layer; Raster Layer
源控制点

要扭曲的栅格的坐标。

Point
目标控制点

待扭曲的源栅格的坐标系。

Point
输出栅格数据集

要创建的数据集的名称、位置和格式。将栅格数据集存储到地理数据库时,请勿向栅格数据集的名称添加文件扩展名。将栅格数据集存储到 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时,可以指定压缩类型和压缩质量。

以文件格式存储栅格数据集时,需要指定文件扩展名,具体如下:

  • .bil - Esri BIL
  • .bip - Esri BIP
  • .bmp - BMP
  • .bsq - Esri BSQ
  • .dat - ENVI DAT
  • .gif - GIF
  • .img - ERDAS IMAGINE
  • .jpg - JPEG
  • .jp2 - JPEG 2000
  • .png - PNG
  • .tif - TIFF
  • .mrf - MRF
  • .crf - CRF
  • Esri Grid 无扩展名
Raster Dataset
变换类型
(可选)

指定用于平移栅格数据集的变换方法。

  • 仅平移此方法使用零阶多项式平移数据。 当数据已进行地理配准但通过微小的平移可以更好的排列数据时,通常使用该多项式。 执行零阶多项式平移只需要一个连接线。
  • 仿射变换一阶多项式(仿射)将输入点拟合为平面。
  • 二阶多项式变换二阶多项式将输入点拟合为稍微复杂一些的曲面。
  • 三阶多项式变换三阶多项式将输入点拟合为更为复杂的曲面。
  • 优化全局精度和局部精度此方法结合多项式变换并使用不规则三角网 (TIN) 插值法对全局和局部精度进行优化。
  • 样条函数变换此方法将源控制点准确地变换为目标控制点。 在输出中,控制点是准确的,只是控制点之间的栅格像素则不准确。
  • 射影变换此方法将扭曲线以使其保持平直。 进行变换时,之前平行的线可能不再保持平行。 投影变换尤其适用于倾斜的影像、扫描的地图和一些影像产品。
  • 相似变换此变换为尝试保存原始栅格形状的一阶变换。 RMS 错误会高于其他多项式变换,因为保存形状比最佳大小更重要。
String
重采样技术
(可选)

要使用的重采样算法。 默认设置为最邻近

最邻近众数选项用于分类数据,如土地利用分类。 最邻近选项是默认设置,因为它是最快的插值法,同时也因为它不会更改像元值。 请勿对连续数据(如高程表面)使用其中任何一个选项。

双线性选项和三次选项最适用于连续数据。 不建议对分类数据使用其中任何一个选项,因为像元值可能被更改。

  • 最邻近最邻近法是最快的重采样方法;因为没有新值创建,此方法可将像素值的更改内容最小化。 适用于离散数据,例如土地覆被。
  • 双线性插值法双线性插值可通过计算(距离权重)周围 4 像素的平均值来计算每个像素的值。 适用于连续数据。
  • 三次卷积插值法三次卷积插值法通过根据周围的 16 像素拟合平滑曲线来计算每个像素的值。 此操作将生成平滑影像,但可创建位于源数据中超出范围外的值。 适用于连续数据。
  • 众数重采样法众数重采样法基于 3 x 3 窗口中出现频率最高的值来确定每个像素的值。 适用于离散数据。
String

arcpy.management.Warp(in_raster, source_control_points, target_control_points, out_raster, {transformation_type}, {resampling_type})
名称说明数据类型
in_raster

要转换的栅格。

Mosaic Layer; Raster Layer
source_control_points
[source_control_point,...]

要扭曲的栅格的坐标。

Point
target_control_points
[target_control_point,...]

待扭曲的源栅格的坐标系。

Point
out_raster

要创建的数据集的名称、位置和格式。将栅格数据集存储到地理数据库时,请勿向栅格数据集的名称添加文件扩展名。将栅格数据集存储到 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时,可以指定压缩类型和压缩质量。

以文件格式存储栅格数据集时,需要指定文件扩展名,具体如下:

  • .bil - Esri BIL
  • .bip - Esri BIP
  • .bmp - BMP
  • .bsq - Esri BSQ
  • .dat - ENVI DAT
  • .gif - GIF
  • .img - ERDAS IMAGINE
  • .jpg - JPEG
  • .jp2 - JPEG 2000
  • .png - PNG
  • .tif - TIFF
  • .mrf - MRF
  • .crf - CRF
  • Esri Grid 无扩展名
Raster Dataset
transformation_type
(可选)

指定用于平移栅格数据集的变换方法。

  • POLYORDER0此方法使用零阶多项式平移数据。 当数据已进行地理配准但通过微小的平移可以更好的排列数据时,通常使用该多项式。 执行零阶多项式平移只需要一个连接线。
  • POLYSIMILARITY此变换为尝试保存原始栅格形状的一阶变换。 RMS 错误会高于其他多项式变换,因为保存形状比最佳大小更重要。
  • POLYORDER1一阶多项式(仿射)将输入点拟合为平面。
  • POLYORDER2二阶多项式将输入点拟合为稍微复杂一些的曲面。
  • POLYORDER3三阶多项式将输入点拟合为更为复杂的曲面。
  • ADJUST此方法结合多项式变换并使用不规则三角网 (TIN) 插值法对全局和局部精度进行优化。
  • SPLINE此方法将源控制点准确地变换为目标控制点。 在输出中,控制点是准确的,只是控制点之间的栅格像素则不准确。
  • PROJECTIVE此方法将扭曲线以使其保持平直。 进行变换时,之前平行的线可能不再保持平行。 投影变换尤其适用于倾斜的影像、扫描的地图和一些影像产品。
String
resampling_type
(可选)

要使用的重采样算法。 默认设置为最邻近

  • NEAREST最邻近法是最快的重采样方法;因为没有新值创建,此方法可将像素值的更改内容最小化。 适用于离散数据,例如土地覆被。
  • BILINEAR双线性插值可通过计算(距离权重)周围 4 像素的平均值来计算每个像素的值。 适用于连续数据。
  • CUBIC三次卷积插值法通过根据周围的 16 像素拟合平滑曲线来计算每个像素的值。 此操作将生成平滑影像,但可创建位于源数据中超出范围外的值。 适用于连续数据。
  • MAJORITY众数重采样法基于 3 x 3 窗口中出现频率最高的值来确定每个像素的值。 适用于离散数据。

最邻近众数选项用于分类数据,如土地利用分类。 最邻近选项是默认设置,因为它是最快的插值法,同时也因为它不会更改像元值。 请勿对连续数据(如高程表面)使用其中任何一个选项。

双线性选项和三次选项最适用于连续数据。 不建议对分类数据使用其中任何一个选项,因为像元值可能被更改。

String

代码示例

扭曲示例 1(Python 窗口)

这是 Warp 工具的 Python 示例。

import arcpy
from arcpy import env
env.workspace = "c:/data"
source_pnt = "'234718 3804287';'241037 3804297';'244193 3801275'"
target_pnt = "'246207 3820084';'270620 3824967';'302634 3816147'"
arcpy.Warp_management("raster.img", source_pnt, target_pnt, "warp.tif", "POLYORDER1",\
                          "BILINEAR")
扭曲示例 2(独立脚本)

这是 Warp 工具的 Python 脚本示例。

##====================================
##Warp
##Usage: Warp_management in_raster source_control_points;source_control_points... 
##                       target_control_points;target_control_points... out_raster
##                       {POLYORDER_ZERO | POLYORDER1 | POLYORDER2 | POLYORDER3 | 
##                       ADJUST | SPLINE | PROJECTIVE} {NEAREST | BILINEAR | 
##                       CUBIC | MAJORITY}
    

import arcpy

arcpy.env.workspace = r"C:/Workspace"

##Warp a TIFF raster dataset with control points
##Define source control points
source_pnt = "'234718 3804287';'241037 3804297';'244193 3801275'"

##Define target control points
target_pnt = "'246207 3820084';'270620 3824967';'302634 3816147'"

arcpy.Warp_management("raster.img", source_pnt, target_pnt, "warp.tif", "POLYORDER2",\
                      "BILINEAR")

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题