共有モデルの中間データの管理

モデル ツールの実行時には、中間データの作成と削除が実施されます。たいていの場合、中間データについて心配する必要はありません。これは、共有モデルの場合であっても同じです。ただし、時としてモデル ツールが中間データを作成できないことがあります。このようなエラーがモデルに生じたときに、問題を直接示すものではないエラー メッセージが表示されることもあります。たとえば、フォルダまたはジオデータベースが存在しないために、単にツールが出力結果を書き出すことができないということが実際の問題であっても、メッセージに「予期しないエラーです」と表示されることがあります。

また、中間データの場所を考慮しないとパフォーマンスの問題が生じる可能性があります。中間データは、リモート コンピュータや ArcSDE ジオデータベースに送信しないでください。リモート ファイル システムやリモート データベースを使用したネットワーク経由での通信のオーバーヘッドは、負荷が大きくなることが多く、モデルのパフォーマンス速度の大幅な低下の原因になることがあります。

以下に、モデルが中間データを確実に作成および削除できるようにするための最も簡単な方法を記載します。

これは次の手順で行います。

  1. カタログ ウィンドウで、モデル ツールを右クリックして、[編集] をクリックします。ModelBuilder が表示されます。
  2. ModelBuilder ですべての中間データ変数を右クリックして [出力先を固定] を選択します。[出力先を固定] の横に チェックマーク が表示されます。
  3. モデルを保存して閉じます。
  4. [ジオプロセシング] メニューの [環境] を選択し、[ワークスペース] をクリックします。
  5. [テンポラリ ワークスペース] の設定については、新しいファイル ジオデータベースを指定するか、デフォルトのジオデータベースを参照したままにします。
  6. [OK] をクリックします。
  7. カタログ ウィンドウのモデル ツールをダブルクリックしてモデルを実行し、パラメータを入力してから、[OK] をクリックします。それでもエラーが表示される場合は、すべての中間データ変数の出力先が固定されており、テンポラリ ワークスペースが正しく設定されていることをもう一度確認します。それでも問題がある場合は、次のいずれかである場合があります。
    • 中間データの問題ではない。
    • テンポラリ ワークスペース環境がモデルによってリセットされている。モデル環境設定を確認します:
      1. カタログ ウィンドウでモデル ツールを右クリックし、[プロパティ] をクリックします。
      2. [プロパティ] ダイアログ ボックスの [環境] タブをクリックします。
      3. [ワークスペース] の横のチェックボックスがオンになっている場合は、プラス記号 [+] をクリックします。
      4. [テンポラリ ワークスペース] をクリックしてハイライト表示にし、[値] ボタンをクリックします。
      5. [テンポラリ ワークスペース] の設定にワークスペースへのパスが含まれている場合は、ワークスペースが存在することを確認します(この確認は、[参照] 開く の順にクリックし、その場所を参照して行います)。ワークスペースが存在しない場合は、存在するワークスペースへのパスを入力します。

モデルによる中間データの管理方法

共有するモデルに、中間データの作成と削除に使用する場所が確保されていることを必ず確認してください。この最も簡単な方法は、上記の手順ですべての中間データを出力先固定データにするというアプローチです。

このトピックの残りの部分では、ジオプロセシングでの中間データの管理方法を詳細に説明し、問題のトラブルシューティングに必要な情報を記載します。以下のセクションでは、次の事項について説明します。

出力パスの自動生成の仕組み

ツールを起動して入力データセットを指定すると、出力データの場所が自動生成されます。自動生成されたこの名前は、テンポラリ ワークスペース が設定されている場合にはその場所を使用して構築され、設定されていない場合は現在のワークスペースの場所を使用して設定されます。出力データ変数には、変数が最終的に中間データ、管理データ、またはツール パラメータになるかどうかに関係なく、自動生成された名前が格納されます。

モデル配布時には、受領者が別のテンポラリ ワークスペースまたは現在のワークスペースの設定を使用している可能性が高く、受領者の環境設定の適用が望まれるでしょう。つまり、受領者は、モデルについてツール ダイアログ ボックスを開いて実行したときにすべての中間データを自分の環境に設定されているテンポラリ ワークスペースに書き出すことを望みます。次に記載されるよう、自動生成されたデータ変数名を変更しない限り、この状態を確保することができます。

データ変数の変更済みステート

ModelBuilder 内の変数の値を変更する度に、変更があったものとみなされます。変数を変更すると、ArcGIS は、変更後の値の使用が求められており、それ以降の再度の変更はないという方針で動作します。変更後の変数に他のユーザのコンピュータに存在しないフォルダまたはワークスペースへのパスが含まれている場合は、モデルにエラーが生じます。

変数が出力データセットであり、値が空または未変更の場合は、ジオプロセシング ツールによってパスが自動生成されます。このことを利用して、出力データセット パラメータを変更しないで、ジオプロセシングでパスを自動生成するとよいでしょう。

ModelBuilder では、変更済みとみなされるデータ変数であるかどうかを判断する方法がありません。ただし、既存の値を削除して(空欄にして)モデル全体の整合チェックを実行すれば、変数の変更済みステートをリセットできます。整合チェックを実行したときに出力値が空欄であることが確認されると、中間データについて新しい名前が自動生成され、未変更のデータ変数としてマークされます。ただし、次に説明するように、変数について [出力先を固定] を設定する方がより適切な方法です。

出力先固定データの使用

中間データの場所を(説明するロジックで)ModelBuilder に管理させることを選択する場合もあるでしょう。出力先を固定するデータ変数を設定するには、変数を右クリックし、[出力先を固定] オプションをクリックします。変数について出力先の固定を設定すると、ModelBuilder 内の出力パスを変更できなくなります(パラメータ制御が常に利用不可能になります)。つまり、出力先固定データの変更済みステートを変更することはできず、モデルを実行するたびにデータに対して新しいパスが自動生成されます。

出力先固定データの詳細

%scratchworkspace% の使用

カスタム スクリプト ツールでは、出力パスが自動生成される場合とされない場合があります。自動生成されない場合は、以下に示すように、出力パスに ModelBuilder の変数置換を使用できます。

変数置換の使用

変数置換を使用する際の主な問題に、ツールを実行したときにほとんどの場合 %scratchworkspace% がシステム フォルダになるのかジオデータベースになるのかを判断できないという点があります。ModelBuilder でモデルを構築したときのテンポラリ ワークスペースがシェープファイル ワークスペース(フォルダ)であった場合は、ModelBuilder によってフィーチャ データセット名に自動的に .shp が追加されています(つまり、%scratchworkspace%/temp と入力した場合は、ModelBuilder によって自動的に %scratchworkspace%/temp.shp に置換されています)。後になってから、テンポラリ ワークスペースをファイル ジオデータベースに変更して、そのダイアログ ボックスでモデル ツールを実行すると、ジオデータベースでは .shp のピリオドのような特殊文字を使用できないため、temp.shp をファイル ジオデータベースに書き出そうとしたときにモデルにエラーが生じます。

テンポラリ ワークスペースのタイプを安全に予測できるのは、次の 2 つの場合だけです。

  • ツールを ArcGIS Server 上で実行している場合
  • テンポラリ フォルダを格納した推奨の [ToolShare] フォルダ構造を使用している場合

いずれの場合についても、以下に詳しく説明しています。

ArcGIS Server のテンポラリ ワークスペース

サーバ ツールをサーバ上で実行すると、ArcGIS Server では使用するツール用の一意なジョブ フォルダが作成されます。このジョブ フォルダは、scratch という名前のフォルダで、以下に示すように scratch.gdb という名前のファイル ジオデータベースがこのフォルダ内にあります。

中間データと出力データの場所

ArcGIS Server では、アプリケーション レベルのテンポラリ ワークスペース環境が一意なテンポラリ フォルダの場所に設定されます。ツール レベル、モデル レベル、またはモデル プロセス レベルのテンポラリ ワークスペースの設定は無視されます。サーバ ツールを実行すると、データ変数の出力先が固定されておらず、かつ変更されている場合を除いて、ジョブ フォルダのテンポラリ ワークスペースを使用するよう、中間または出力先が固定された出力データ変数がリセットされます。

ArcGIS Server では、常にテンポラリ ジオデータベースにテンポラリ フォルダが作成され、テンポラリ ワークスペース環境がテンポラリ フォルダに設定されるため、すべての出力パスに変数置換を安全に使用できます。次に例を示します。

%scratchworkspace%/output_buffer.shp
%scratchworkspace%/scratch.gdb/outBuffer

共有フォルダ構造の使用

ツール共有の構造」には、以下に示す [ToolShare] フォルダと呼ばれる推奨フォルダ構造についての記載があります。

Toolshare フォルダ構造

この [ToolShare] フォルダ構造は、LAN で共有する場合であっても、ArcGIS Server に公開する場合であっても、ツールの共有に適しています。

ArcGIS Server によって作成される一意なジョブ フォルダのように、[ToolShare] フォルダにも テンポラリ フォルダと scratch.gdb が格納されることに注目してください。中間データを常にこのテンポラリ フォルダに書き出すようにモデルを設定する場合は、次の手順に従います。

  • モデル環境のテンポラリ ワークスペースを共有フォルダ内のテンポラリ フォルダに設定します。
  • 相対パスを使用するようツールボックスを設定します。
  • モデルで、中間データに変数置換を使用します。

    %scratchworkspace%/output_buffer.shp
     %scratchworkspace%/scratch.gdb/outBuffer

モデル パラメータで %scratchworkspace% を使用する場合は、モデル レベルのテンポラリ ワークスペースではなく、アプリケーション レベルのテンポラリ ワークスペースが取得されるので、この方法は、中間データなどパラメータではないデータ変数に限って使用します。

LAN 経由でツールボックスを共有する際にこの方法を使用すると、ツール実行時に中間データがこのテンポラリ フォルダに書き込まれます。次にコンフィグレーションの例を示します。

コンフィグレーション例
  • \\pondermatic のユーザが、フォルダ接続をあなたの共有フォルダ \\cogitator\GPTools に追加します。
  • このユーザが [RetailFunctions] ツールボックス内のツールを開いて実行します。
  • [RetailFunctions] ツールボックスは相対パスで格納されているため、テンポラリ ワークスペース %scratchworkspace% の場所が \\cogitator\GPTools\scratch に拡張され、すべての中間データが \\cogitator\GPTools\Scratch に書き出されます。

LAN 経由での共有にこの方法を使用するかどうかは、各ユーザが決定できます。まず、共有フォルダへのデータ書き出しを他のユーザに許可するかどうかを検討します。次に、LAN 経由でのデータの書き出しは、一般的にローカル ディスクへの書き出しよりも低速であるという点を考慮します。ツールのユーザによって設定されたテンポラリ ワークスペース環境を使用することが望ましいでしょう。ただし、上述のとおり、テンポラリ ワークスペースをフォルダまたはジオデータベースのどちらに設定しているかを判断することはできません。この方法を使えば、テンポラリ ワークスペースの種類がわかります。

インメモリ ワークスペースへのテンポラリ データの書き出し

ジオプロセシングには、フィーチャやテーブルを書き出すことのできるインメモリ ワークスペースが用意されています。

インメモリ ワークスペースの詳細

  • 注意注意:

    インメモリ ワークスペースに書き出すことができるのは、テーブルとフィーチャクラス(ポイント、ライン、ポリゴン)だけです。インメモリ ワークスペースは、サブタイプ、ドメイン、リプレゼンテーション、トポロジ、ジオメトリック ネットワーク、ネットワーク データセットのような拡張ジオデータベース エレメントをサポートしていません。書き出すことができるのは、シンプル フィーチャとテーブルだけです。

    テンポラリ ワークスペース環境をインメモリ ワークスペースに設定しないでください。メモリ内はシンプル フィーチャとテーブルであることがわかっている出力に限って使用します。

インメモリ ワークスペースを使用する場合は、細心の注意を払ってください。インメモリ ワークスペースに書き込むデータセットは、小さくなることがわかっている場合に限定する必要があります。

スクリプトにおけるテンポラリ データ

スクリプトでは、多くの場合、テンポラリ データを書き込むための場所を構築する必要があります。

スクリプトでのテンポラリ データの作成の詳細

関連項目


7/10/2012