インメモリ ワークスペースの使用

ArcGIS には、出力フィーチャクラスおよびテーブルを書き込むことができるインメモリ ワークスペースが用意されています。ジオプロセシングの出力を、ディスク上またはネットワーク上の場所に書き込む代わりに、インメモリ ワークスペースに書き込むことができます。多くの場合、インメモリ ワークスペースへのデータの書き込みは、シェープファイルやジオデータベース フィーチャクラスなどの他の形式に書き込む場合よりも大幅に高速です。ただし、インメモリ ワークスペースに書き込まれたデータは一時的なものであり、アプリケーションを閉じると削除されます。

インメモリ ワークスペースに書き込むには、in_memory というパスを使用します。

インメモリ ワークスペースへの保存

出力をインメモリ ワークスペースに書き込むかどうかを決定するときに、次の点を考慮する必要があります。

注意注意:
  • インメモリ ワークスペースに書き込まれるデータは一時的なものであり、アプリケーションを閉じると削除されます。
  • インメモリ ワークスペースに書き込むことができるのは、テーブル、フィーチャクラス、およびラスタです。
  • インメモリ ワークスペースは、拡張ジオデータベース エレメント(サブタイプ、ドメイン、リプレゼンテーション、トポロジ、ジオメトリック ネットワーク、ネットワーク データセットなど)をサポートしません。
  • インメモリ ワークスペースに、フィーチャ データセットまたはフォルダを作成することはできません。

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

データをインメモリ ワークスペースに書き込むと、コンピュータの物理メモリ(RAM)が消費されます。このワークスペースに大量のデータを書き込むと、コンピュータのメモリがすべて消費されて、追加データをメモリに書き込むことができなくなる場合があります。また、このワークスペースにデータを保存するためにコンピュータのメモリのほとんどまたはすべてを使用した場合は、ArcGIS などの計算量の多いアプリケーションを効率的に実行するために必要なメモリが不足する可能性があります。このような場合は、アプリケーション内のすべてのタスクの速度が著しく低下します。

アプリケーションの速度が低下するため、ある時点を境に、インメモリ ワークスペースを使用する計算上の利点は失われます。この時点に達すると、システムで実行中の他のアプリケーションや、利用可能な物理メモリの開始量などに影響が出ます。書き込むデータが大きすぎてアプリケーションの実行速度が低下する場合は、インメモリ ワークスペースの使用を避けてください。

インメモリ ワークスペースを使用する場合は、すべての中間データをできるだけ早く削除して、これらのデータで使用されるシステムのメモリ リソースを解放します。[削除(Delete)] ツールを使用すると、インメモリ ワークスペースにあるデータを削除できます。テーブルまたはフィーチャクラスを個別に削除することも、ワークスペース全体を削除してすべてのワークスペースの内容を消去することもできます。

インメモリ ワークスペースの場所

インメモリ ワークスペースに書き込まれるテーブル、フィーチャクラス、またはラスタには、以下のように GPInMemoryWorkspace というソース位置が設定されます。

メモリ内のソース位置

GPInMemoryWorkspace の後に続く中括弧({})で囲まれた長い文字列は、ArcGIS で作成および使用される一意の識別子です。

Python での in_memory の使用

以下に示すコード例のように、Python でも in_memory ワークスペースを使用することができます。

import arcpy

table = arcpy.CreateTable_management("in_memory", "table1")
arcpy.AddField_management(table, "Field1", "TEXT", field_length=20)

cursor = arcpy.da.InsertCursor(table, ["Field1"])
cursor.insertRow(["Hello World"])

in_memory ワークスペースは、ジオプロセシング ツールだけに有効です。これは、データを書き込むときの一般的な仮想ディレクトリではありません。

インメモリ ワークスペース内のデータを削除するには、スクリプト内で [削除] ツールを使用します。テーブルまたはフィーチャクラスを個別に削除することも、ワークスペース全体を削除してすべてのワークスペースの内容を消去することもできます。

9/14/2013