ArcGIS Desktop

  • ドキュメント
  • サポート

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

値の計算 (Calculate Value)

  • サマリー
  • 使用法
  • 構文
  • 環境
  • ライセンス情報

サマリー

[値の計算 (Calculate Value)] ツールでは、指定した Python 式に基づいて、値が返されます。

使用法

  • このツールは、ModelBuilder で使用するためのツールで、Python スクリプトでは使用できません。

  • ModelBuilder では [データ タイプ] パラメーターを使用することにより、[値の計算 (Calculate Value)] ツールの出力を他のツールと連結できるようにしています。たとえば、[値の計算 (Calculate Value)] ツールを使用して距離を計算し、この距離を [バッファー (Buffer)] ツールの [バッファー距離] パラメーターへの入力として使用する場合は、[データ タイプ] パラメーターの長さの単位を指定します。

  • このツールでは、ModelBuilder で作成しておいた変数を使用できますが、式パラメーター中に使用する対象の変数を [値の計算 (Calculate Value)] ツールに接続することはできません。そのような変数を式中に使用するには、変数名をパーセント記号 (%) で囲まなければなりません。たとえば、「Input」という名前の変数を 100 で除算する場合、式は「%Input%/100」のようになります。

    注意: 前の式では、「Input = 123」の場合、式は 1 を返します。小数点以下が必要な場合は、式の値に小数点と小数を追加します。以下に例を示します。「%Input%/100.00」と指定した場合は、1.23 が返されます。式中に変数を使用するもう 1 つの例を、下の図に示します。

    [値の計算 (Calculate Value)] ツールでのモデル変数の使用
    注意:

    式中で、文字列型のインライン変数は、引用符で囲む必要があります (「"%string variable%"」のように指定します)。インライン変数が数値 (double、long) 型なら、引用符は必要ありません (「%double%」のように指定すれば済みます)。

  • 式の作成に使用できる形式は、標準 Python 形式のみです。他のスクリプト言語は、サポートされていません。

  • [値の計算 (Calculate Value)] ツールで評価の対象となるのは、簡易な算術式です。以下に例を示します。

    • 3+5
    • 9*8
    • 4+(9/3)
  • [値の計算 (Calculate Value)] ツールでは、Python の math モジュールを使用することによって、複雑な数値演算の実行を実現しています。math モジュールにアクセスするには、使用する関数の先頭に「math」を付けます。以下に例を示します。

    • math.sqrt(25)
    • math.cos(0.5)
  • 定数も math モジュールを介してサポートされます。以下に例を示します。

    • math.pi
  • arcgis.rand() 関数はサポートの対象です。arcgis.rand() 関数は ArcGIS ツール用に作成されたものであり、Python Rand() 関数と混同しないようにしてください。以下は、arcgis.rand() の使用例です。

    • 0 から 10 までの整数の一様分布から派生したランダム値の演算:arcgis.rand("Integer 0 10")
    • 平均値が 10、標準偏差が 3 の正規分布から派生したランダム値の演算:arcgis.rand("Normal 10 3")

    注意:

    式 arcgis.rand は、小文字で入力する必要があります。

  • 通常は、[条件式] パラメーターで式を入力します。複数行の計算や論理演算 (if、then) などの複雑な式を入力する場合は、[コード ブロック] パラメーターを使用する必要があります。[コード ブロック] パラメーターは単独では使用できません。[条件式] パラメーターと併用する必要があります。

  • [コード ブロック] パラメーターで定義しておいた変数は、式から参照できます。

    [条件式] と [コード ブロック] の使用

  • 関数は [コード ブロック] パラメーターで定義して、式から呼び出せます。下の例では、ランダムな入力値に応じた、風向を示す文字列が関数によって返されます。Python では、def キーワードの後に関数の名前と関数の入力パラメーターを付けて、関数を定義します。この例で、関数は getWind であり、パラメーターとして指定されているのは 1 つ (wind) だけです。値を関数から返すには、return キーワードを使用します。

    [コード ブロック] での関数の定義
  • [条件式] パラメーターを介して変数を渡し、[コード ブロック] でインライン変数を指定して if-else ロジックを使用することができます (次の図を参照)。[コード ブロック] に入力した場合、InputCellSize 変数が空であるかどうかがチェックされた後、条件に基づいて値が返されます。

    「if」~「else」の例

  • Python のメソッドは、このツールの [条件式] パラメーター内に直接使用できます。たとえば、入力値に小数部分 (この例では、入力テーブルのフィールド値) が含まれていて、その小数部分の値をインライン変数置換で別のツールの出力名に含めたい場合は、[値の計算 (Calculate Value)] ツールの [条件式] で、Python メソッド「replace」を使用して小数部分を置換するという方法をとります。

    Python メソッド「replace」の例

  • [コード ブロック] パラメーターでは、Python モジュールを呼び出し、replace などのメソッドを結合またはスタックできます。下の例では、[コード ブロック] に time モジュールをインポートして、「Fri Mar 19 2010 09:42:39 」のような現在の日付と時刻が返されるようにしています。この戻り値は、[フォルダーの作成 (Create Folder)] ツールでフォルダーに名前を付けるために使用されます。フォルダーの名前にはスペースまたは句読点を含めることができないので、置換の必要なエレメントごとにメソッドをスタックして、Python の replace メソッドを使用しなければなりません。この例で、結果として得られるフォルダーの名前は「FriMar192010094239」などです。

    Python の time モジュールの例

  • モデル内の値の演算を行う場合に、バッファー距離値と長さ単位を必要とする [バッファー (Buffer)] などのツールで演算処理後の値を使用する場合は、以下の操作を行う必要があります。

    • コード ブロックで距離値とともに長さ単位を返す。
    • 下に示すように、リターンのデータ タイプを変更する。
    • 式の結果が長さ単位の値に変換されるようにデータ タイプのパラメーターを長さ単位に設定する。
    [値の計算 (Calculate Value)] をバッファー距離として使用

  • [値の計算 (Calculate Value)] ツールの出力は、[Plus]、[Greater Than]、[Less Than] などの [Spatial Analyst] ツール (格納場所: [Spatial Analyst] ツールボックス/[算術演算] ツールセット) で直接使用することができます。[値の計算 (Calculate Value)] の出力を使用するには、出力データ タイプを [構築されたラスター] に変更します。この出力データ タイプ形式は、セル値が数式または定数で表されるラスター サーフェスです。

    [構築されたラスター] データ タイプ

  • Python では、適切なインデントも構文の一部です。インデント レベル (スペース 2 つまたはスペース 4 つ) は、[コード ブロック] 全体にわたって一貫している限り、問題にはなりません。

  • モデル変数は、[コード ブロック] からはアクセスできません。そのような変数は、式を介して [コード ブロック] に受け渡す必要があります。この受け渡しを行うには、[コード ブロック] で定義を作成し、その定義を [条件式] ボックスで参照します。

  • リスト タイプのモデル変数を [条件式] で使用しないでください。ModelBuilder でのリスト変数の動作の仕組み上、[値の計算 (Calculate Value)] はリスト変数の最初の値を使用して一度実行され、リスト変数のその他の値は [値の計算 (Calculate Value)] に渡されません。

  • 注意:

    Python スクリプトを作成する場合、[値の計算 (Calculate Value)] ツールでなく、標準 Python ステートメントを使用します。

構文

CalculateValue_management (expression, {code_block}, {data_type})
パラメーター説明データ タイプ
expression

評価される Python 式。

SQL Expression
code_block
(オプション)

追加の Python コード。コード ブロックのコードは [条件式] パラメーターで参照できます。

String
data_type
(オプション)

Python 式から返された出力のデータ タイプ。[値の計算 (Calculate Value)] を他のツールと連結するためには、このパラメーターを ModelBuilder で使用する必要があります。

String

環境

このツールはジオプロセシング環境を使用していません

ライセンス情報

  • ArcGIS Desktop Basic: はい
  • ArcGIS Desktop Standard: はい
  • ArcGIS Desktop Advanced: はい

関連トピック

  • 一般ツールセットの概要

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • スタッフ ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
© Copyright 2016 Environmental Systems Research Institute, Inc. | プライバシー | リーガル