YouTube | Facebook | X(Twitter) | RSS

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

2008/5/28 (水)

最近日記ばかりだったので久しぶりに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エンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-