2023年11月23日发(作者:)AE连接数据库的方式:access数据库、Shpile文件:









ArcEngine 可以接受多种数据源。在开发过程中我们使用了如下几种数据源

1.企业数据库2.个人数据库ile文件D dwg文件5.影像图文件

6.数据库中的影像数据集。

下面分别列举出打开上述数据源的方式:

1.企业数据库。

企业数据库需要使用SDE来管理,所以需要使用SDE的Workspace来表示连接。

在AE接口中,Workspace是由Factory打开的。

代码如下:

//

//准备连接参数

//

rtySet pPropSet=new PropertySetClass();

perty("server","服务器机器名" );

perty("instance","SDE运行的端口号");

perty("user","用户名");

perty("password","口令" );

perty("version","版本");

kspaceFactory sdeWkspFact=new SdeWorkspaceFactoryClass();

IFeatureWorkspace pFeaWksp=(IFeatureWorkspace)(pPropSet,0);

其中唯一需要解释的可能就是版本(version).对于没有使用版本或者第一次连接(没有建立空间数据库,当然没有版本了).

该处使用T这个版本。这是默认的版本。

2.个人数据库

ArcEngine中个人数据库为Access。

string filePath="E:";

AccessWorkspaceFactory fac=new AccessWorkspaceFactoryClass();

IFeatureWorkspace space=(IFeatureWorkspace)omFile(filePath,0);

这是用的最多的一种方式。由于Access在本机上也就没有设置用户和密码。不知道加密的

Access是如何连接的。估计也是用IPropSet吧,我们用不着,所以没有测试。

ile文件

Shapefile和Access的打开方式有一点相同。也有差异。

//这是Shape所在的目录(注意:是目录);

string spacePath="E:shapefile";

ShapefileWorkspaceFactory fac=new .DataSourcesFile .ShapefileWorkspaceFactoryClass();

IFeatureWorkspace space=(IFeatureWorkspace)omFile(spacePath,0);

D。

AutoCAD文件和一般的ESRI格式不同。所以代码会有一点点奇怪赫赫。

假设有一个dwg文件为E:

下面是打开的代码:

CadWorkspaceFactoryClass fac=new CadWorkspaceFactoryClass ();

String filePath="E:cad";

IFeatureWorkspace space=omFile(filePath,0) as IFeatureWorkspace ;

下面是打开FeatureClass的代码:

//线

IFeatureClass polyline =atureClass(":Polyline");

IFeatureLayer layer=new CadFeatureLayerClass ();

eClass =polyline;

//点

IFeatureClass point=atureClass (":Point");

layer=new CadFeatureLayerClass ();

eClass =point;

//面

IFeatureClass polygon=atureClass (":Polygon");

ayer=new CadFeatureLayerClass();

eClass =polygon;

//注记



IFeatureClass anno=atureClass (":Annotation");

layer=new CadAnnotationLayerClass();

eClass =anno;

//其实还有multiPatch。不演示了。

5.文件系统中的影像文件:

//文件路径

string filePath="E:";

rLayer pRs=new LayerClass();

FromFilePath(filePath );

这个方法有一点奇怪。不知道大家看出来没有赫赫。

6.数据库中的影像图

//数据库连接

IWorkspace space=OpenSpace();//打开数据库的方式参见1、2

IRasterWorkspaceEx rasterSpace=(IRasterWorkspaceEx)space;

IRasterDataset rasterDataset=sterDataset ( );

IRasterLayer rasLayer=new RasterLayerClass();

FromDataset(rasterDataset);

这个也一样奇怪,呵呵。



以上就是我用到过的连接方式。如果有其他的连接方式。欢迎交流。