摘要
根据要用于空间数据变换的已知控制点之间的输入链接坐标来计算残差和均方根误差 (RMSE)。
用法
与转换要素工具相比,优先使用此工具来确定控制点是否适合预期变换,尤其是在转换大量要素之前。
输入链接要素是代表相应控制点之间的变换链接的线。
-
变换可在直角坐标系或平面坐标系中使用。强烈建议使用投影坐标系 (PCS)。将地理坐标系 (GCS) 与经纬度值一同使用可导致意外变形或造成计算错误。
误差将通过以下三种变换方法之一进行计算:仿射、相似度和投影。每种方法都至少需要某一数量的变换链接。有关包括变换公式在内的详细信息,请参阅关于空间校正变换。
- AFFINE - 仿射变换至少需要三个变换链接。
- PROJECTIVE - 射影变换至少需要四个变换链接。
- SIMILARITY - 相似变换至少需要两个变换链接。
变换结果取决于输入链接的质量。链接应起始于已知的源位置,结束于相应的目标位置,也就是所谓的控制点。控制点建立得越好,变换的结果越准确。链接的开始和结束位置的坐标用于派生用于变换方程的参数,这些参数是源控制点和目标控制点之间的最佳拟合,正如关于要素匹配与匹配表中所述。即使使用变换参数来变换实际的源控制点,变换后的位置也不会与目标控制点位置完全匹配。这就是所谓的残差,每个变换链接都会生成残差。输入链接残差将写入包含以下字段的指定输出表格:
- Orig_FID:输入链接要素 ID
- X_Source:源的 x 坐标或来自链接的结束位置
- Y_Source:源的 y 坐标或来自链接的结束位置
- X_Destination:目标的 x 坐标或到链接的结束位置
- Y_Destination:目标的 y 坐标或到链接的结束位置
- Residual_Error:变换位置的残差
均方根误差 (RMSE) 又被称为均方根差 (RMSD),可根据残差进行计算,通常表示变换完成的质量。RMSE 值将写出到处理消息中。它还是可在脚本或模型工作流中使用的派生输出参数。
语法
CalculateTransformationErrors_edit (in_link_features, {out_link_table}, {method})
参数 | 说明 | 数据类型 |
in_link_features | 空间变换的已知控制点的输入链接要素。 | Feature Layer |
out_link_table (可选) | 包含输入链接要素 ID 及其残差的输出表。输入链接残差将写入包含以下字段的指定输出表格:
| Table |
method (可选) | 用于转换输入要素坐标的变换方法。有关详细信息,请参阅关于要素匹配与匹配表。
| String |
代码示例
CalculateTransformationErrors 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 CalculateTransformationErrors 函数。
import arcpy
arcpy.env.workspace = "C:/data/Countries.gdb"
arcpy.CalculateTransformationErrors_edit("control_Links", "output_Table", "AFFINE")
CalculateTransformationErrors 示例 2(独立脚本)
下面的独立脚本演示了如何在脚本环境中应用 CalculateTransformationErrors 函数。
import arcpy
import os
# all input data are in country.gdb and output will also go to this gdb
arcpy.env.workspace = os.path.join(os.getcwd(), "country.gdb")
try:
in_links_feats = "link_features"
out_link_table = "output_table"
# transformation method
method = "SIMILARITY"
result = arcpy.CalculateTransformationErrors_edit(in_links_feats, out_link_table, method)
# get the transformation error
error = float(result.getOutput(1))
# if error is less than 12.234 then run Transform Features
if error < 20.0:
# make a copy of the input features
arcpy.CopyFeatures_management(in_links_feats, "in_links_copy")
arcpy.TransformFeatures_edit("in_links_copy", in_links_feats, method, "out_link_table")
else:
print("Transformation error {} is too high".format(error))
except arcpy.ExecuteError as aex:
print(arcpy.GetMessages(2))
except Exception as ex:
print(ex.args[0])
环境
此工具不使用任何地理处理环境。
许可信息
- ArcGIS Desktop Basic: 否
- ArcGIS Desktop Standard: 否
- ArcGIS Desktop Advanced: 是