当需要创建一个新的workspace,连接已存在的workspace和寻找有关workspace的信息时使用IWorkspaceFactory接口。 成员
24.1、IWorkspaceFactory.ContainsWorkspace方法
[C#]
public bool ContainsWorkspace(sring parentDirectory,IFileNames filenames);
浏览文件系统查询查找workspace时,ContainsWorkspace非常有用。它提供一个parent directory和待检查的文件名称列表。如果parent directory表示这个factory的一个workspace或parent directory包含一个workspace或一个workspace的connection文件时,返回true。 [C#]
//e.g.,nameOFFile=\//nameOFFile=\
public Boolean IWorkspaceFactory_ContainsWorkspace_Example(string nameOfFile) {
//use with AccessWorkspaceFactory IWorkspaceFactory workspaceFactory=new
ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass();
//for FileGDB use ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass();
ESRI.ArcGIS.esrSystem.IFileNames fileNames=new ESRI.ArcGIS.esriSystem.FileNamesClass(); fileNames.Add(nameOfFile);
return workspaceFactory.ContainsWorkspace(\}
24.2、IWorkspaceFactory.Create方法
[C#]
public IWorkspaceName Create(string parentDirectory,string Name,IPropertySet ConnectionProperties,int hWnd);
Workspace factory由多种类型,Create会产生不同的结果。ArcSDE类型,将会产生一个新的connection文件(.sde)。ArcInfo workspace factory类型,创建一个INFO的亚文件夹。ConnectionProperties参数是个可选项,指定任何额外的所需连接属性,例如创建远程数据库workspace时的connection文件所需的server,instance,user和password。如果没有指定连接属性,这个方法将会返回一个对话框提醒用户需要属性。 [C#]
public void IWorkspaceFactory_Create_Example_Access() {
//create a new Access workspace factory IWorkspaceFactory workspaceFactory=new
ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass(); //Create a workspacename with the workspace factory IWorkspaceName
workspaceName=workspaceFactory.Create(\ //Cast for IName
ESRI.ArcGIS.esriSystem.IName name=(ESRI.ArcGIS.esriSystem.IName)workspaceName; //Open a reference to the access workspace through the name object IWorkspace pGDB_workspace=(IWorkspace)name.Open();
Console.WriteLine(\{1}\}
public void IWorkspaceFactory_Create_Example_FileGDB() {
//create a new FileGDB workspace factory IWorkspaceFactory workspaceFactory=new
ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass(); //Create a workspacename with the workspace factory IWorkspaceName
workspaceName=workspaceFactory.Create(\ //Cast for IName
ESRI.ArcGIS.esriSystem.IName name=(ESRI.ArcGIS.esriSystem.IName)workspaceName; //Open a reference to the FileGDB workspace through the name object IWorkspace fileGDB_workspace=(IWorkspace)name.Open();
Console.WriteLine(\
{1}\}
public void IWorkspaceFactory_Create_Example_ArcSDE() {
ESRI.ArcGIS.esriSystem.IPropertySet propertySet=new ESRI.ArcGIS.esriSystem.PropertySetClass(); propertySet.SetProperty(\ propertySet.SetProperty(\ propertySet.SetPropert(\ propertySet.SetProperty(\
propertySet.SetProperty(\
//Create a workspacename with the workspace factory IWorkspaceFactory workspaceFactory=new
ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass(); //Create a workspacename with the workspace factory IWorkspaceName
workspaceName=workspaceFactory.Create(\t,0);
//Cast for IName
ESRI.ArcGIS.esriSystem.IName name=(ESRI.ArcGIS.esriSystem.IName)workspaceName; //Open a reference to the sde workspace through the name object IWorkspace sde_workspace=(IWorkspace)name.Open(); //the path returned in this case weill be for the sde connection
Console.WriteLine(\}
24.3、IWorkspaceFactory.GetWorkspaceName方法
[C#]
public IWorkspaceName GetWorkspaceName(string parentDirectory,IFileNames filenames); Example [C#]
public void IWorkspaceFactory_GetWorkspaceName_Example() {
ESRI.ArcGIS.esriSystem.IFileNames fileNames=new ESRI.ArcGIS.esriSystem.FileNamesClass(); fileNames.Add(\
fileNames.Add(\
fileNames.Add(\
IWorkspaceFactory workspaceFactory=new
ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass(); IWorkspaceName
workspaceName=workspaceFactory.GetWorkspaceName(\
Console.WriteLine(workspaceName.PathName);
fileNames.Reset();
string fn=fileNames.Next(); while(fn!=null) {
Console.WriteLine(fn); fn=fileNames.Next(); }
ESRI.ArcGIS.esriSystem.IName name=(ESRI.ArcGIS.esriSystem.IName)workspaceName; IWorkspace workspace=(IWorkspace)name.Open(); }
24.4、IWorkspaceFactory.Open方法
[C#]
public IWorkspace Open(IPropertySet ConnectionProperties,int hWnd); Example [C#]
Public IWorkspace IWorkspaceFactory_Open_Example(String server,String instance,String user,String password,String database,String version) {
ESRI.ArcGIS.esriSystem.IPropertySet propertySet=new ESRI.ArcGIS.esriSystem.PropertySetClass(); propertySet.SetProperty(“SERVER”,server);

