AE中加载个人数据库GDB方法探讨
2007-06-06 11:32
344 查看
AE中加载个人数据库GDB方法探讨 |
下面对AE中加载个人数据库的方法做一个总结: 个人数据库是保存在Access中的数据库。其加载方式有两种:通过名字和通过属性加载(也许不只这两种,AE中实现同一功能可以有多种方式)。 A、通过设置属性加载个人数据库。 首先通过IPropertySet接口定义要连接数据库的一些相关属性,在个人数据库中为数据库的路径,例如: IPropertySet Propset = new PropertySetClass(); Propset.SetProperty("DATABASE",@"D:\test\Ao\data\sh\MapData.mdb" ); 当定义完属性并设置属性后就可以进行打开数据库的操作了,在ArcEngine开发中存在IWorkspaceFactory、IFeatureWorkspace、IFeatureClass、IFeatureLayer等几个常用的用于打开和操作数据空间地物的接口。IWorkspaceFactory是一个用于创建和打开工作空间的接口,它是一个抽象的接口,我们在具体应用时要用对应的工作空间实例化它,如下: IWorkspaceFactory Fact = new AccessWorkspaceFactoryClass (); 如果我们打开的是SDE数据库就要用SdeWorkspaceFactoryClass实例化Fact。当我们完成了工作空间的实例化后就可以根据上边设置的属性打开对应的Access数据库了。打开方式如下: IFeatureWorkspace Workspace = Fact.Open(Propset,0) as IFeatureWorkspace; 打开Access工作空间后接下来的事情是做什么了,很简单,找到对应的地物类,赋给相应的层,通过MapControl控件添加对应的层,然后刷新地图。以下为添加某一层的代码: IFeatureClass Fcls = Workspace.OpenFeatureClass("District"); IFeatureLayer Fly = new FeatureLayerClass(); Fly.FeatureClass = Fcls; MapCtr.Map.AddLayer (Fly); MapCtr.ActiveView.Refresh(); 其中District为地物类的名字,MapCtr为AE中MapControl的对象。上边的通过属性设置加载数据空间的方式还可以用于SDE数据库,在SDE数据库加载时会介绍。 以下为通过设置属性加载Access数据库的完整C#代码: public void AddAccessDBByPro() { IPropertySet Propset = new PropertySetClass(); Propset.SetProperty("DATABASE",@"D:\test\Ao\data\sh\MapData.mdb" ); IWorkspaceFactory Fact = new AccessWorkspaceFactoryClass (); IFeatureWorkspace Workspace = Fact.Open(Propset,0) as IFeatureWorkspace; IFeatureClass Fcls = Workspace.OpenFeatureClass ("District"); IFeatureLayer Fly = new FeatureLayerClass(); Fly.FeatureClass = Fcls; MapCtr.Map.AddLayer(Fly); MapCtr.ActiveView.Refresh(); } B、通过数据库名字加载个人数据库 在这我先把完整的代码写出来,让您先跟上边的代码做个对比。以下为完整的代码: public void AddAccessDBByName() { IWorkspaceName pWorkspaceName = new WorkspaceNameClass() ; pWorkspaceName.WorkspaceFactoryProgID ="esriDataSourcesGDB.AccessWorkspaceFactory"; pWorkspaceName.PathName = @"D:\test\Ao\data\sh\MapData.mdb"; IName n = pWorkspaceName as IName ; IFeatureWorkspace Workspace = n.Open() as IFeatureWorkspace; IFeatureClass Fcls = Workspace.OpenFeatureClass ("District"); IFeatureLayer Fly = new FeatureLayerClass(); Fly.FeatureClass = Fcls; MapCtr.Map.AddLayer (Fly); MapCtr.ActiveView.Refresh(); } 细心的人已经注意到,打开Access工作空间后接下来的代码是一样的,都是找到对应的地物类,赋给相应的层,通过MapControl控件添加对应的层,然后刷新地图。现在讲解一下上边的代码,首先是创建一个个人数据库工作空间名,在指定工作空间名的ProgID,以确定打开的是什么类型的工作空间,例如在打开Access个人数据库时使用的是下边的代码: IWorkspaceName pWorkspaceName = new WorkspaceNameClass() ; pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory"; pWorkspaceName.PathName = @"D:\test\Ao\data\sh\MapData.mdb"; 属性WorkspaceFactoryProgID可以确保工作空间是AccessWorkspaceFactory,即个人数据库,同时指定要打开数据库的路径。为了打开数据库,我们通过AE的类图可以发现打开工作空间必须使用IName接口(个人认为,不一定正确,可以思考一下看有其他办法没有),所以接着定义IName对象,并把工作空间名转换成IName类型并赋值给IName对象,然后通过IName对象的Open()方法打开相应的工作空间,代码如下: IName n = pWorkspaceName as IName ; IFeatureWorkspace Workspace = n.Open () as IFeatureWorkspace; C.直接用路径访问数据库 Dim pWorkspaceFactory As IWorkspaceFactory Dim pSWorkspace As IWorkspace Set pWorkspaceFactory = New AccessWorkspaceFactory Set pWorkspace = pWorkspaceFactory.OpenFromFile("D:\data\redarrow.mdb", 0) ITable pTable=(pworksapce as IfeatrurWorkspace).open 接下来的事情就是上边提到. |
相关文章推荐
- AE中加载个人数据库GDB方法探讨
- AE中加载个人数据库GDB方法探讨
- (转)AE加载不同数据的方法(GeoDatabase空间数据管理)
- win2003上安装Oracle9I出现"加载数据库时出错:areasQueries错误"的解决方法
- AE加载不同数据的方法(GeoDatabase空间数据管理)
- 袁伟翔:数据库故障处理方法探讨
- TreeView加载数据库数据的三种方法实现三级联动
- MySQL加载 数据库连接的两个方法:
- 加载数据库驱动程序的方法和JDBC的流程
- 由加载数据库驱动的方法Class.forName()看其作用!
- 树莓派重启后数据库没有加载的解决方法
- IBM HTTP Server Plugin默认plugin-key.kdb 密钥数据库文件默认个人证书密码过期分析与解决方法
- 获得数据库对象的方法探讨(1)
- 难点总结:Jquery动态加载数据库中的数据(解答人:郭哲 方式:讲述jquery原理及一些函数的使用方法,学会看帮助文档)
- 加载地图数据的几种方法(AE + C#)
- ArcEngine GDB数据库查询方法总结
- gdb加载python脚本的方法
- 探讨了提高MySQL 数据库性能的思路,并从8个方面给出了具体的解决方法。
- JDBC加载各种数据库方法和URL
- pet.txt文件加载到数据库方法