ジオプロセシング出力をメモリに書き込み

ジオプロセシング出力をメモリに書き込む処理は、出力をジオデータベースまたはファイルベースの形式に書き込む処理の代替手段となります。ほとんどの場合、この処理は、ディスク上の形式に書き込む処理よりも、はるかに迅速に行われます。メモリに書き込まれたデータは一時的なものであり、アプリケーションを閉じると削除されるため、メモリは、ModelBuilder のモデルまたは Python スクリプトで作成された中間データの書き込みに最適な場所です。

メモリベースのワークスペース

ArcGIS には、ジオプロセシング出力の書き込みができる 2 種類のメモリベースのワークスペースが用意されています。

注意:
  • メモリベースのワークスペースは、フィーチャ データセット、リプレゼンテーション、トポロジ、ジオメトリック ネットワーク、ネットワーク データセットなどのジオデータベース エレメントをサポートしていません。
  • フォルダーをメモリベースのワークスペース内に作成することはできません。
  • メモリベースのワークスペースは、システムの物理メモリ (つまり RAM) に格納されるため、このワークスペースに大規模なデータセットを書き込むと、システム メモリが不足する可能性があります。これにより、処理のパフォーマンスに悪影響が及ぶことがあります。

メモリ

memory は、ArcGIS Pro 向けに開発された新しいメモリベースのワークスペースであり、出力フィーチャクラス、テーブル、およびラスター データセットに対応しています。

memory ワークスペースに書き込むには、memory\ で始まりファイル拡張子がない出力データセット パスを指定します (例: memory\tempOutput)。

memory データセットを ArcGIS Pro 内のマップに追加することができます。

in_memory

レガシー:

in_memory は、ArcMap 向けに構築された旧式のメモリベースのワークスペースであり、出力フィーチャクラス、テーブル、およびラスター データセットに対応しています。

in_memory ワークスペースに書き込むには、in_memory\ で始まりファイル拡張子がない出力データセット パスを指定します (例: in_memory\tempOutput)。

メモ:

in_memory データセットを ArcGIS Pro のマップ上に表示することはできません。[ジオプロセシング] ウィンドウまたは Python ウィンドウからジオプロセシング ツールを実行し、処理の後に、出力データセットを in_memory に書き込むと、出力データセットは、プロジェクト ジオデータベースにコピーされ、そのデータセットはマップに追加されます。in_memory データセットが中間データであり、マップに追加されていない場合、プロジェクト ジオデータベースへの書き込みは行われません。

ArcGIS Pro のマップでメモリベースのデータを表示するには、memory ワークスペースを使用できます。

memory ワークスペースとは異なり、in_memory ワークスペースはサブタイプやドメインをサポートしていません。

メモリ ワークスペースの管理

メモリベースのワークスペースを使用する場合は、すべての中間データをできるだけ早く削除して、システム メモリ リソースを解放する必要があります。[削除 (Delete)] ツールを使用すると、メモリベースのワークスペース内にあるデータを削除できます。データセットを個別に削除することも、ワークスペース全体を削除してすべてのワークスペースの内容を消去することもできます。

Python でのメモリ ワークスペースの使用

Python でのメモリベースのワークスペースの使用は、ジオプロセシング ツールにのみ有効です。メモリは、ファイルやその他のデータを書き込める汎用の仮想ディレクトリではありません。

次のサンプル コードで示すように memory ワークスペースを使用します。

import arcpy
# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"
# Buffer a Roads layer, writing output to memory 
arcpy.Buffer_analysis("Roads", r"memory\Buffers", 1000)
# Erase the buffers from a Vegetation layer
arcpy.Erase_analysis("Vegetation", r"memory\Buffers", r"memory\Erased")
# Dissolve the memory output of Erase to make a final output in the gdb workspace
arcpy.Dissolve_management(r"memory\Erased", "FinalOutput")