⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arcenginedataconnection.txt

📁 ArcEngine数据连接 ArcEngine 可以接受多种数据源。在开发过程中我们使用了如下几种数据源 1.企业数据库2.个人数据库3.Shapefile文件4.AutoCAD dwg文件5.影
💻 TXT
字号:
转贴-ArcEngine数据连接
ArcEngine数据连接
ArcEngine 可以接受多种数据源。在开发过程中我们使用了如下几种数据源
1.企业数据库2.个人数据库3.Shapefile文件4.AutoCAD dwg文件5.影像图文件
6.数据库中的影像数据集。
下面分别列举出打开上述数据源的方式:
1.企业数据库。
  企业数据库需要使用SDE来管理,所以需要使用SDE的Workspace来表示连接。
  在AE接口中,Workspace是由Factory打开的。
  代码如下:
   //
   //准备连接参数
   //
   ESRI.ArcGIS.esriSystem.IPropertySet pPropSet=new PropertySetClass();
  pPropSet.SetProperty("server","服务器机器名" );
  pPropSet.SetProperty("instance","SDE运行的端口号");
  pPropSet.SetProperty("user","用户名");
  pPropSet.SetProperty("password","口令" );   
  pPropSet.SetProperty("version","版本");
  ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactory sdeWkspFact=new SdeWorkspaceFactoryClass(); 
  IFeatureWorkspace pFeaWksp=(IFeatureWorkspace)sdeWkspFact.Open(pPropSet,0);
   其中唯一需要解释的可能就是版本(version).对于没有使用版本或者第一次连接(没有建立空间数据库,当然没有版本了).
   该处使用sde.DEFAULT这个版本。这是默认的版本。
2.个人数据库
ArcEngine中个人数据库为Access。
string filePath="E:tt.mdb";
AccessWorkspaceFactory fac=new AccessWorkspaceFactoryClass();
IFeatureWorkspace space=(IFeatureWorkspace)fac.OpenFromFile(filePath,0);
这是用的最多的一种方式。由于Access在本机上也就没有设置用户和密码。不知道加密的
Access是如何连接的。估计也是用IPropSet吧,我们用不着,所以没有测试。
3.Shapefile文件
Shapefile和Access的打开方式有一点相同 。也有差异。
  //这是Shape所在的目录(注意:是目录);
   string spacePath="E:\\shapefile";
  ShapefileWorkspaceFactory  fac=new ESRI.ArcGIS .DataSourcesFile .ShapefileWorkspaceFactoryClass();
  IFeatureWorkspace space=(IFeatureWorkspace)fac.OpenFromFile(spacePath,0);
4.AutoCAD。
   AutoCAD文件和一般的ESRI格式不同。所以代码会有一点点奇怪 赫赫。
   假设有一个dwg文件为E:\\cad\\107.dwg
   下面是打开的代码:
   CadWorkspaceFactoryClass fac=new CadWorkspaceFactoryClass ();
  String filePath="E:\\cad";
  IFeatureWorkspace space=fac.OpenFromFile(filePath,0) as IFeatureWorkspace ;
  下面是打开FeatureClass的代码:
  //线
  IFeatureClass polyline =space.OpenFeatureClass("107.dwgolyline");  
  IFeatureLayer layer=new CadFeatureLayerClass ();
  layer.FeatureClass =polyline;
  //点 
  IFeatureClass point=space.OpenFeatureClass ("107.dwgoint");
  layer=new CadFeatureLayerClass ();
  layer.FeatureClass =point;
  //面  
  IFeatureClass polygon=space.OpenFeatureClass ("107.dwgolygon");
  ayer=new CadFeatureLayerClass();
  layer.FeatureClass =polygon;
  //注记  
  IFeatureClass anno=space.OpenFeatureClass ("107.dwg:Annotation");
  layer=new CadAnnotationLayerClass();
  layer.FeatureClass =anno;
  //其实 还有multiPatch。不演示了。
5.文件系统中的影像文件:
   //文件路径
   string filePath="E:\\image\\117.tif";
   ESRI.ArcGIS.Carto.IRasterLayer pRs=new ESRI.ArcGIS.Carto.RasterLayerClass();
  pRs.CreateFromFilePath(filePath );
  这个方法有一点奇怪。不知道大家看出来没有赫赫。
6.数据库中的影像图
  //数据库连接
  IWorkspace  space=OpenSpace();//打开数据库的方式参见1、2
  IRasterWorkspaceEx rasterSpace=(IRasterWorkspaceEx)space;
  IRasterDataset rasterDataset=rasterSpace.OpenRasterDataset (setName.Name );
  IRasterLayer rasLayer=new RasterLayerClass();
  rasLayer.CreateFromDataset(rasterDataset);
  这个也一样奇怪,呵呵。
  
  以上就是我用到过的连接方式。如果有其他的连接方式。欢迎交流。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -