テンポラリ領域にジオデータベースを作成する方法

      2017/11/22

最近日記ばかりだったので久しぶりに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なんてのもあります。これは次回に。

 - GIS