最近日記ばかりだったので久しぶりにArcObjectsナレッジです。
ArcGISの中間処理で一時的にデータを作成したい場合がありますが、C:\Temp\TempGDB.gdbのように自分でテンポラリGDBを作成するのは煩わしいです。そこで、Documents and Settingsのユーザフォルダにあるテンポラリ フォルダに一時的にデータを作成する方法です。
'****************************************************************************** ' 定義 :Private Function GetSckatchWorkspace() ' 概要 :ScratchWorkspaceの取得(ユーザ テンポラリ フォルダにWorkspaceを作成) ' 第1引数 :Boolean (オプション デフォルト値:True)PGDBを使用するかどうか ' 第2引数 :Boolean (オプション デフォルト値:True)デフォルトのWorkspaceを使用するかどうか ' 戻り値 :IWorkspace Workspace ' 備考 :このWorkspace ' 更新履歴 :2008-05-28 作成 '****************************************************************************** Private Function GetSckatchWorkspace(Optional UsePGDB As Boolean = True, Optional UseDefaultWorkspace As Boolean = True) As IWorkspace Dim pScratchWorkspaceFactory As IScratchWorkspaceFactory If UsePGDB = True Then Set pScratchWorkspaceFactory = New ScratchWorkspaceFactory 'パーソナル ジオデータベース Else Set pScratchWorkspaceFactory = New FileGDBScratchWorkspaceFactory 'ファイル ジオデータベース End If If UseDefaultWorkspace = True Then Set GetSckatchWorkspace = pScratchWorkspaceFactory.DefaultScratchWorkspace '既存のScratchWorkspace Else Set GetSckatchWorkspace = pScratchWorkspaceFactory.CreateNewScratchWorkspace '新規にScratchWorkspaceを作成 End If End Function
第1引数はワークスペースにパーソナル ジオデータベースを使用するかどうか。Falseに設定するとファイル ジオデータベースが作成されます。第2引数はArcGIS Desktopの起動時にデフォルトで作成されるテンポラリ用ジオデータベースをワークスペースとして取得するかどうか。Falseに設定すると新規にワークスペースを作成します。
このワークスペース名はUIDで与えられる名称で、Windowsの「テンポラリ フォルダの削除」を行うと消える場所に作成されます。ArcMapだと、Spatial Analystなどで使用する<temp>フォルダに相当します。
ScratchWorkspaceとは別に、メモリ内に一時的にWorkspaceを作成するInMemoryWorkspaceなんてのもあります。これは次回に。