モデルを Python スクリプトにエクスポートするオプションは、ツールや環境が Python でどのように使用されるかを理解する上で非常に役に立ち、多くの場合、開発作業を促進します。スクリプトを編集およびコンパイルしたら、ツールボックスまたはモデルにスクリプト ツールとして追加して、別のジオプロセシング ツールとして実行できます。モデルをスクリプトにエクスポートするには、次の手順に従います。
- ModelBuilder のメニューで、[モデル] > [エクスポート] > [Python スクリプトへ] の順にクリックします。
- [保存する場所] ドロップダウン矢印をクリックし、スクリプトを保存する場所へ移動します。
- スクリプトのファイル名を入力します。
- [保存] をクリックします。
エクスポートされた Python スクリプトの編集
エクスポートしたモデルが機能しない場合があります。モデルをスクリプトにエクスポートする場合は、次の点を検討してください。
- データを上書きしたい場合、arcpy.env.overwriteOutput プロパティを True に設定します。
- モデルが、元のモデル内で作成していないレイヤやテーブル ビューを使用していた場合、[フィーチャ レイヤの作成(Make Feature Layer)] や [テーブル ビューの作成(Make Table View)] などのツールを使用して、それらのレイヤやテーブル ビューをスクリプト内に作成する必要があります。
- モデルのデータ エレメントは、エクスポートされるスクリプト内の変数に直接変換されます。データ エレメントに Python と互換性のないの名前(class、global、return など)を付けないようにします。予約済みのキーワードを一覧するには、Python のキーワード モジュールを使用してください。
import keyword print keyword.kwlist
- モデルでインライン変数置換(%workspace%、%scratchworkspace%、%n%、%i%、%variable name% など)が使用されている場合は、これらを正しい値で置き換える必要があります。
- モデルでイテレータが使用されている場合、反復処理の論理はエクスポートされません。Python のループ ステートメントで、これらを置き換える必要があります。
- リスト変数の最初の値だけがエクスポートされます。
- モデルがフィーチャ セットまたはレコード セットを使用している場合、次のコードがエクスポート内に作成されます。このコードは、Feature_Set 変数を in_memory フィーチャクラスに設定することで、NULL または無効な入力から保護しようとします。in_memory フィーチャクラスは実行時には存在しないため、実行中に存在するフィーチャクラスを指すようにパスを更新する必要があります。ワークフローに応じてロジックを変更して、エラー メッセージを渡したり、実行を停止したりすることもできます。
フィーチャ セット パラメータのあるモデルからのエクスポート
Feature_Set = arcpy.GetParameterAsText(0) if Feature_Set == '#' or not Feature_Set: Feature_Set = "in_memory\\{F15C6411-0F4F-4A68-9BAC-29D6E7874669}" # provide a default value if unspecified
- モデルが [ブランチのマージ(Merge Branch)]、[値の収集(Collect Values)]、または [値の計算(Calculate Value)] などのモデル専用ツールを使用している場合、これらのツールは、Python では実行されません。これらのツールと同等の Python 機能を実装する必要があります。たとえば、スクリプト内でブランチを行うには、if/else ロジックを使用する必要があります。
- モデルの中にサブモデルが含まれている場合、それらのサブモデル内の内容はエクスポートされません。そのため、ツールボックスを参照して、モデル ツールをスクリプト内で呼び出す必要があります。