FAQ
ArcObjects でのワークスペースの作成

ナレッジ番号:5284 | 登録日:2023/07/26 | 更新日:2023/12/28

概要

このサンプル コードは、ファイル ジオデータベース、パーソナル ジオデータベース、シェープファイルのワークスペース、エンタープライズ ジオデータベースのワークスペースを作成する方法を示しています。

サンプル コード

ファイル ジオデータベースのワークスペースを作成

ファイルジオデータベース(Sample.gdb)ワークスペースを、引数で与えた path の下に作成するサンプルです。

protected override void OnClick()
{
   // file geodatabase workspace factor をインスタンス化してファイルジオデータベースを作成します。
   // Create メソッドは、ワークスペースネームオブジェクトを返します。
   Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
   IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
   //第一引数のパスは任意のものに変更してください。
   IWorkspaceName workspaceName = workspaceFactory.Create(@"C:\Example", "Sample.gdb", null,0);

   // ワークスペースネームオブジェクトを IName インタフェースにキャストして、ワークスペースをオープンします。
   IName name = (IName)workspaceName;
   IWorkspace workspace = (IWorkspace)name.Open();
   
   //作成したワークスペースのパスを表示します。
   MessageBox.Show(workspace.PathName.ToString());
}
Protected Overrides Sub OnClick()
   'file geodatabase workspace factor をインスタンス化してファイルジオデータベースを作成します。
   'Create メソッドは、ワークスペースネームオブジェクトを返します。
   Dim factoryType As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory")
   Dim workspaceFactory As IWorkspaceFactory = CType(Activator.CreateInstance(factoryType), IWorkspaceFactory)
   Dim workspaceName As IWorkspaceName = workspaceFactory.Create("C:\Example", "Sample.gdb", Nothing, 0)

   ' ワークスペースネームオブジェクトを IName インタフェースにキャストして、ワークスペースをオープンします。
   Dim Name As IName = CType(workspaceName, IName)
   Dim workspace As IWorkspace = CType(Name.Open(), IWorkspace)

   '作成したワークスペースのパスを表示します。
   MessageBox.Show(workspace.PathName.ToString())
End Sub

パーソナル ジオデータベースのワークスペースを作成

パーソナルジオデータベース(Sample.mdb)ワークスペースを、引数で与えた path の下に作成するサンプルです。

protected override void OnClick()
{
   // Access workspace factory をインスタンス化してパーソナルジオデータベースを作成します。
   // Create メソッドは、ワークスペースネームオブジェクトを返します。
   Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory");
   IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
   //第一引数のパスは任意のものに変更してください。
   IWorkspaceName workspaceName = workspaceFactory.Create(@"C:\Example", "Sample.mdb", null, 0);

   // ワークスペースネームオブジェクトを IName インタフェースにキャストして、ワークスペースをオープンします。
   IName name = (IName)workspaceName;
   IWorkspace workspace = (IWorkspace)name.Open();

   //作成したワークスペースのパスを表示します。
   MessageBox.Show(workspace.PathName.ToString());
}
Protected Overrides Sub OnClick()
   'Access workspace factory をインスタンス化してパーソナルジオデータベースを作成します。
   'Create メソッドは、ワークスペースネームオブジェクトを返します。
   Dim factoryType As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory")
   Dim workspaceFactory As IWorkspaceFactory = CType(Activator.CreateInstance(factoryType), IWorkspaceFactory)
   Dim workspaceName As IWorkspaceName = workspaceFactory.Create("C:\Example", "Sample.mdb", Nothing, 0)

   'ワークスペースネームオブジェクトを IName インタフェースにキャストして、ワークスペースをオープンします。
   Dim Name As IName = CType(workspaceName, IName)
   Dim workspace As IWorkspace = CType(Name.Open(), IWorkspace)

   '作成したワークスペースのパスを表示します。
   MessageBox.Show(workspace.PathName.ToString())
End Sub

シェープファイルのワークスペースを作成する

シェープファイルのワークスペースはフォルダなので、OS 上からフォルダを作成します(コードは省略)。

エンタープライズ(ArcSDE)ジオデータベースのワークスペースを作成

SdeWorkspaceFactory の場合、Create メソッドはジオデータベースを作成する代わりに ArcSDE 接続ファイルを作成します。

protected override void OnClick()
{
   //エンタープライズ ジオデータベースへの接続情報を作成
   IPropertySet propertySet = new PropertySetClass();
   propertySet.SetProperty("DBCLIENT", "SQLSERVER");    //サーバー名
   propertySet.SetProperty("SERVER", "localhost");        //インスタンス名
   propertySet.SetProperty("DB_CONNECTION_PROPERTIES", "LOCALHOST\\SQLEXPRESS");  //接続プロパティ
   propertySet.SetProperty("DATABASE", "geodb");    //データベース名
   propertySet.SetProperty("USER", "abc");               //ユーザー名
   propertySet.SetProperty("PASSWORD", "arcobjects");    //パスワード
 

   //ArcSDE 接続ファイルを作成
   Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
   IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
   workspaceFactory.Create(@"C:\Example", "Sample.sde", propertySet, 0);
}
Protected Overrides Sub OnClick()
   'エンタープライズ ジオデータベースへの接続情報を作成
   Dim propertySet As IPropertySet = New PropertySetClass()
   propertySet.SetProperty("SERVER", "SQLServer")          'サーバー名
   propertySet.SetProperty("INSTANCE", "ej000746")         'インスタンス名
   propertySet.SetProperty("DATABASE", "test")             'データベース名
   propertySet.SetProperty("USER", "sa")                   'ユーザー名
   propertySet.SetProperty("PASSWORD", "going2usa")        'パスワード
   propertySet.SetProperty("VERSION", "Version")           'バージョン

   'ArcSDE 接続ファイルを作成
   Dim factoryType As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory")
   Dim workspaceFactory As IWorkspaceFactory = CType(Activator.CreateInstance(factoryType), IWorkspaceFactory)
   workspaceFactory.Create("C:\Example", "Sample.sde", propertySet, 0)
End Sub

備考

その他の WorkspaceFactoryProgID の指定方法は下記ヘルプ ページをご覧ください。

IWorkspaceName.WorkspaceFactoryProgID Property

メタデータ

種類

製品