关于IWorkspaceName

Workspace对象相当于一个地理数据库,它里面保存着数据集对象,要素类,要素数据集,属性表等数据集对象。在物理级别上,它相当于地理数据库本身-----一个Access数据库或SDE数据库、coverage工作空间或者Shapefile文件夹。

WorkspaceName,顾名思义,通过它可以得到Access数据库或其他工作空间的一些最基本的一些关于Name相关的信息。

WorkspaceName类是一个组件类(CoClass),也就是说可以用New关键字进行创建,也可以通过IDatasetName.WorkspaceName属性来读写IWorkspaceName.

IWorkspaceName接口使我们可以访问WorkspaceName对象的属性信息。如果想使用WorkspaceName,我们必须设置WorkspaceFactoryProgID属性,在此基础上还要设置PathName属性或者ConnectionProperties属性。

WorkspaceName对象代表了一个已经物理上已经存在的Workspace(工作空间,比如Access数据库的madb)或者一个将要被创建的Workspace。如果Workspace已经物理上存在了,那么可以用IName.Open方法打开它(该方法返回一个Object类型,可以强制转换成IWorkspace类型),这一过程在效率上其实等价于用IWorkspacceFactory接口的Open或者OpenFromFile方法。如果Workspace在物理上还不存在并且将要被创建,用IWorkspaceFactory接口的Create方法进行创建。在一些情况下,你可能已经得到了整个Workspace对象,但是仍需要一个WorkspaceName作为代替。你可以通过Worksapce类的IDataset接口中的FullName属性(只读属性)来得到WorkspaceName对象。

Type、Category、WorkspaceFactoryProgID和BrowseName属性都返回了Workspace的信息,代表了IWorkspace中的文档信息。

    //e.g., workspacePath = "D:\data\geodatabases\Usa.mdb"
    public void IWorkspace__get_WorkspaceName(string workspacePath, IWorkspace workspace)
    {
        //Creates a new workspace name for a personal geodatabase.
        IWorkspaceName workspaceName = new WorkspaceNameClass();
        workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
        workspaceName.PathName = workspacePath;
        //Or Get a workspace name from an existing workspace.
        IDataset dataset = (IDataset)workspace; //Workspaces implement IDataset
        workspaceName = (IWorkspaceName)dataset.FullName;
    }


IWorkspceName跟IDatasetName都是继承自IName接口。

在IName接口的备注里有提到:
Name对象是一个代表性对象。通过使用Name对象,可以访问它所代表的对象的一些基本属性,而不用将整个对象调入内存。我们用IWorkspace获得一个workspace,那可是会调入内存的,而IWorkspaceName则不会,除非你用了IWorkspaceName.open.在我看来,那些继承IName的接口,基本都是为了方便创建新的data,或者进行data conversion的,当然,有时你也可以用来获取关于其它的信息,不过情况少。

通过IWorkspaceName,我们可以得到很多workspace所得不到的信息;某些data conversion就需要用IWorkspaceName而不是IWorkspace.

IDataset.Name的值跟上面说的IWorkspaceName大同小异,是一个dataset(workspace里的)的名字对象。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值