概要
対応する既知のコントロール ポイント間の変換リンクに基づき、スケーリング、シフト、回転を通じて、ある位置から別の位置に入力フィーチャの座標を変換します。
使用法
-
入力フィーチャとしてポイント、ライン、またはポリゴンを指定できます。
-
入力リンク フィーチャは、対応する既知のコントロール ポイント間の変換リンクを表すラインです。リンクの始点はソース コントロール ポイントの位置で、リンクの終点は対応するターゲット コントロール ポイントの位置です。
-
変換は、直交座標系または平面座標系で機能します。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 値が大きすぎると、残差エラーを確認して、残差エラーの大きいリンクを破棄または置換する必要が生じます。
構文
arcpy.edit.TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
パラメーター | 説明 | データ タイプ |
in_features | 入力フィーチャ。このフィーチャの座標が変換されます。 | Feature Layer |
in_link_features | 変換のために既知のコントロール ポイントをリンクする入力リンク フィーチャ。 | Feature Layer |
method (オプション) | 入力フィーチャの座標補正に使用する変換方式。
| String |
out_link_table (オプション) | 入力リンクとその残差エラーを含む出力テーブル。 | Table |
派生した出力
名前 | 説明 | データ タイプ |
out_rmse | RMSE (二乗平均平方根誤差) の値をレポートします。 | Double (倍精度浮動小数点数) |
out_feature_class | 更新された入力フィーチャ。 | フィーチャ レイヤー |
コードのサンプル
TransformFeatures (フィーチャの座標補正) の例 1 (Python ウィンドウ)
次の Python ウィンドウ スクリプトは、イミディエイト モードで TransformFeatures 関数を使用する方法を示しています。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransformFeatures_edit("source_Roads.shp","control_Links.shp",
"AFFINE")
TransformFeatures (フィーチャの座標補正) の例 2 (スタンドアロン アクリプト)
次のスタンドアロン スクリプトは、TransformFeatures 関数をスクリプティング環境で適用する方法の例を示しています。
import arcpy
import os
# Set geoprocessing environments
arcpy.env.overwriteOutput = True
# function to convert link info in a text file to a line feature class
def CreateLinkFeatures(in_text_file, in_data):
sr = arcpy.Describe(in_data).spatialReference
features = [] # a list to hold polyline geometry objects
f = open(in_text_file, "r")
for line in f.readlines():
# take start/end blank spaces off
# separate the start and end point coordinates
points = line.strip().split()
point1 = arcpy.Point(float(points[1]), float(points[2]))
point2 = arcpy.Point(float(points[3]), float(points[4]))
features.append(arcpy.Polyline(arcpy.Array([point1, point2]), sr))
f.close() # close the text file
# copy the geometry objects into a feature class named Links
result = arcpy.CopyFeatures_management(features, in_data + "_links")
return result.getOutput(0)
if __name__ == "__main__":
# Make a copy of the data because
# TransformFeatures tool modifies the input data
arcpy.CopyFeatures_management(r"C:\data\Tutorial.gdb\Parcels", r"C:\data\Tutorial.gdb\Parcels_copy")
links_file = r"C:\data\TF_links.txt"
tf_link_features = CreateLinkFeatures(links_file, r"C:\data\Tutorial.gdb\Parcels")
try:
arcpy.TransformFeatures_edit(r"C:\data\Tutorial.gdb\Parcels_copy", tf_link_features)
print(arcpy.GetMessages())
except arcpy.ExecuteError as aex:
print(arcpy.GetMessages(2))
except Exception as ex:
print(ex.args[0])
環境
ライセンス情報
- Basic: いいえ
- Standard: いいえ
- Advanced: はい