フィーチャの座標補正 (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 値を決めるのはユーザーです。RMSE 値が大きすぎると、残差エラーを確認して、残差エラーの大きいリンクを破棄または置換する必要が生じます。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

入力フィーチャ。このフィーチャの座標が変換されます。調整できる入力フィーチャは、ポイント、ライン、ポリゴン、またはアノテーションです。

Feature Layer
入力リンク フィーチャ

変換のために既知のコントロール ポイントをリンクする入力リンク フィーチャ。

Feature Layer
方法
(オプション)

入力フィーチャの座標変換に使用する変換方式を指定します。

  • アフィン変換アフィン変換には、少なくとも 3 つの変換リンクが必要です。これがデフォルトです。
  • 射影変換射影変換には、少なくとも 4 つの変換リンクが必要です。
  • 相似変換相似変換には、少なくとも 2 つの変換リンクが必要です。
String
出力リンク テーブル
(オプション)

入力リンクとその残差エラーを含む出力テーブル。

Table

派生した出力

ラベル説明データ タイプ
RMSE

RMSE (二乗平均平方根誤差) の値をレポートします。

Double
更新された入力フィーチャ

更新された入力フィーチャ。

フィーチャ レイヤー

arcpy.edit.TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
名前説明データ タイプ
in_features

入力フィーチャ。このフィーチャの座標が変換されます。調整できる入力フィーチャは、ポイント、ライン、ポリゴン、またはアノテーションです。

Feature Layer
in_link_features

変換のために既知のコントロール ポイントをリンクする入力リンク フィーチャ。

Feature Layer
method
(オプション)

入力フィーチャの座標変換に使用する変換方式を指定します。

  • AFFINEアフィン変換には、少なくとも 3 つの変換リンクが必要です。これがデフォルトです。
  • PROJECTIVE射影変換には、少なくとも 4 つの変換リンクが必要です。
  • SIMILARITY相似変換には、少なくとも 2 つの変換リンクが必要です。
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: No
  • Standard: No
  • Advanced: Yes

関連トピック