FAQ
ModelBuilder: 反復ツールで取得した値をデータの名称に割り当てることができない

ナレッジ番号:3256 | 登録日:2023/05/29 | 更新日:2023/06/21

概要

[フィーチャ選択の反復] などの反復ツールで取得した値を出力データの名称に割り当てるとエラーになる場合があります。フィーチャクラスやテーブルの名称には、特殊文字を含めることができないなどの制限があるためです。
例えば「属性値ごとにフィーチャクラスをエクスポート(分割)するツール」を実行する際、[フィールド] の値に特殊文字を含む属性を指定すると、下図のようなエラーが発生し、処理に失敗します。

フィーチャクラスやテーブルの名称に関する制限事項については、こちらのFAQ でご確認いただけます。

ここでは、処理対象の属性値を変更せずに対処する方法についてご紹介いたします。

以下の ValidateTableName 関数を使うことで半角の特殊文字をアンダースコア (_) に置換することが可能ですが、全角は処理対象としません。あらかじめご了承ください。

手順

[値の計算]ツールの詳細については、こちらのFAQ でご確認いただけます。
  1. 編集対象のモデルを開きます。カタログ ウィンドウで対象のモデルを右クリックし [開く] ボタンをクリックします。
  2. モデルの [挿入] メニュー → [モデル専用ツール] → [値の計算] ツールをクリックしツールを配置します。
    ツールの配置位置は任意ですが、反復ツールとデータ出力処理の間に配置をお願いします。
  3. [値の計算] ツール エレメントをダブルクリックし、[条件式] 欄に条件式を入力します。今回はCheckValue という自作の関数を呼び出し、[フィーチャ選択の反復] ツールで取得した [値] を使って処理を行うため以下のように入力します。
    checkValue("%値%")
    
  4. [コード ブロック] 欄に、以下のスクリプトを入力します。
    def checkValue(val):
      import arcpy
      out = arcpy.ValidateTableName(val)
      return out
    
  5. [OK] ボタンで [値の計算] ツール ダイアログを閉じます。
  6. ツールの実行順番を設定するため、前提条件変数を設定します。
    ここでは、[フィーチャ選択の反復] で出力されたデータのエレメントである「選択フィーチャ」を [値の計算] ツールの前提条件として設定します。
    さらに [値の計算] ツールの出力値である「output_value」を [フィーチャクラス → フィーチャクラス] ツールの前提条件として設定します。
  7. 出力データの名称を変更します。ここでは [フィーチャクラス → フィーチャクラス] ツールの [出力フィーチャクラス] を「%output_value%」に変更します。
  8. モデルを実行し、動作確認を行います。

※ モデルの完成イメージは下図の通りです。クリックすると画像が拡大表示されます。

メタデータ

種類

製品

バージョン