概要
座標変換に使用する既知のコントロール ポイント間の変換リンクの座標に基づいて、残差エラーと RMSE (二乗平均平方根誤差) を計算します。
使用法
このツールは、[フィーチャの座標補正 (Transform Features)] ツールの前に使用され、特に多数のフィーチャを変換する前に、コントロール ポイントが対象の変換に対して十分あるかどうかが判定されます。
入力リンク フィーチャは、対応するコントロール ポイント間の変換リンクを表すラインです。
-
変換は、直交座標系または平面座標系で機能します。PCS (投影座標系) を強くお勧めします。緯度と経度の値を持つ GCS (地理座標系) を使用すると、不要な歪みや計算エラーが発生する可能性があります。
エラーは、アフィン変換、相似変換、射影変換という 3 つの変換方式のいずれかに対して計算されます。各方式には、最低数の変換リンクが必要です。変換式などの詳細については、「アジャスト変換について」をご参照ください。
- アフィン変換 - アフィン変換には、少なくとも 3 つの変換リンクが必要です。
- 射影変換 - 射影変換には、少なくとも 4 つの変換リンクが必要です。
- 相似変換 - 相似変換には、少なくとも 2 つの変換リンクが必要です。
変換結果は、入力リンクの質によって異なります。リンクは既知のソース位置から開始し、対応するターゲット位置で終了します。これらの位置は、コントロール ポイントとも呼ばれます。コントロール ポイントがよりよく確立されているほど、変換結果の精度が高くなります。リンクの位置からおよび位置までの座標を使用して、変換式で使用されるパラメーターを取得します。これらは、「アジャスト変換について」で説明するように、ソースとターゲットのコントロール ポイント間で最適なものです。 変換パラメーターに基づいて実際のソース コントロール ポイントを変換した場合でも、結果の位置はターゲット コントロール ポイントの位置と一致しません。この不一致は残差エラーと呼ばれ、各変換リンクで発生します。入力リンクの残差エラーは、指定された出力テーブルに書き込まれます。このテーブルには、次のフィールドが含まれています。
- Orig_FID: 入力リンク フィーチャの ID
- X_Source: リンクのソース位置つまり始点の X 座標
- Y_Source: リンクのソース位置つまり始点の Y 座標
- X_Destination: リンクのターゲット位置つまり終点の X 座標
- Y_Destination: リンクのターゲット位置つまり終点の Y 座標
- Residual_Error: 変換後の位置の残差エラー
RMSD (二乗平均平方根偏差) とも呼ばれる RMSE (二乗平均平方根誤差) は、残差エラーに基づいて計算され、通常、得られた変換結果の適切さの尺度となります。RMSE 値は、処理メッセージに書き込まれます。これは、スクリプトまたはモデル ワークフローで使用できる派生出力パラメーターにもなります。
「アジャスト変換について」の「残差と二乗平均平方根の理解」セクションでは、残差エラーと RMSE の計算に関する詳細を示しています。 入力フィーチャとコントロール ポイントの位置正確度に関する知識を基に、許容可能な RMSE 値を決めるのはユーザーです。RMSE 値が大きすぎると、残差エラーを確認して、残差エラーの大きいリンクを破棄または置換する必要が生じます。
構文
CalculateTransformationErrors(in_link_features, {out_link_table}, {method})
パラメーター | 説明 | データ タイプ |
in_link_features | 座標変換に使用する既知のコントロール ポイント間の変換リンクである入力リンク フィーチャ。 | Feature Layer |
out_link_table (オプション) | 入力リンクのフィーチャ ID とその残差エラーを含む出力テーブル。入力リンクの残差エラーは、指定された出力テーブルに書き込まれます。このテーブルには、次のフィールドが含まれています。
| Table |
method (オプション) | 入力フィーチャの座標変換に使用する変換方式。
| String |
派生した出力
名前 | 説明 | データ タイプ |
out_rmse | RMSE (二乗平均平方根誤差) の値をレポートします。 | Double (倍精度浮動小数点数) |
コードのサンプル
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])
環境
ライセンス情報
- Basic: いいえ
- Standard: いいえ
- Advanced: はい