任何系统都离不开数据的加载,下边就
AE
中几种常用的数据加载做一个列举。以便查阅:
1、加载个人数据库
个人数据库是保存在
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();
<