ArcEngine中打开各类数据源(WorkSpace)的连接

本文详细介绍了 ArcEngine 如何整合多种数据源,包括企业数据库、个人数据库、Shapefile 文件、AutoCAD dwg 文件、影像图文件及数据库中的影像数据集,并提供了相应的打开方式和示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(SDE、personal/File、ShapeFile、CAD数据、影像图、影像数据集)

转自: http://www.byywee.com/page/M0/S578/578771.html

ArcEngine 可以接管多种数据源。在开辟过程中我们应用了如下几种数据源

1.企业数据库(SDE)


   企业数据库须要应用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","版本");


SdeWorkspaceFactory sdeWkspFact=new
SdeWorkspaceFactoryClass();


IFeatureWorkspace
pFeaWksp=(IFeatureWorkspace)sdeWkspFact.Open(pPropSet,0);


此中独一须要申明的可能就是版本(version).对于没有应用版本或者第一次连接(没有建树空间数据库,当然没有版本了). 该处应用sde.DEFAULT这个版本。这是默认的版本。


iPropertySet:: setProperty


public void setProperty(string name,object value)


2.小我数据库(PersonalGeodatabase、FileGeodatabase)


ArcEngine中小我数据库为Access。


string filePath="E:\\tt.mdb";


AccessWorkspaceFactory fac=new
AccessWorkspaceFactoryClass();


IFeatureWorkspace
space=(IFeatureWorkspace)fac.OpenFromFile(filePath,0); 这是用的最多的一种体式格式.


若是是FileGeodatabasse,则将


FileGDBWorkspaceFactory pWSF =
New FileGDBWorkspaceFactory;


IFeatureWorkspace pWS1=
pWSF.OpenFromFile(sPath, 0);


 


若是用IPropertySet。如下:


//Personal Geodatabase e.g., database =
"C:\\myData\\mypGDB.mdb"


public IWorkspace open_pGDB_Workspace(string database)


{


IPropertySet propertySet = new PropertySetClass();


propertySet.SetProperty("DATABASE", database);


IWorkspaceFactory workspaceFactory = new
AccessWorkspaceFactoryClass();


return workspaceFactory.Open(propertySet, 0);


}


3.Shapefile文件


   Shapefile和Access的打开体式格式有一点雷同。也有差别。


//这是Shape地点的目次(重视:是目次)


string spacePath="E:\\shapefile";


IShapefileWorkspaceFactory fac=new
ShapefileWorkspaceFactoryClass(); IFeatureWorkspace
space=(IFeatureWorkspace)fac.OpenFromFile(spacePath,0);


IFeatureClass fc=space.openFeatureClass(“china”);


4.AutoCAD dwg文件


   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.dwg:Polyline");


IFeatureLayer layer=new CadFeatureLayerClass ();


layer.FeatureClass =polyline;


//点


IFeatureClass point=space.OpenFeatureClass ("107.dwg:Point");


layer=new CadFeatureLayerClass ();


layer.FeatureClass =point;


//面


IFeatureClass polygon=space.OpenFeatureClass
("107.dwg:Polygon");


layer=new CadFeatureLayerClass();


layer.FeatureClass =polygon;


//注记


IFeatureClass anno=space.OpenFeatureClass
("107.dwg:Annotation"); layer=new CadAnnotationLayerClass();


layer.FeatureClass =anno;


5.影像图文件


//文件路径


string filePath="E:\\image\\117.tif";


IRasterLayer rasterLayer=new RasterLayerClass();


rasterLayer.CreateFromFilePath(filePath );


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


   //数据库连接


IWorkspace space=OpenSpace();


//打开数据库的体式格式


IRasterWorkspaceEx rasterSpace=(IRasterWorkspaceEx)space;


IRasterDataset rasterDataset=rasterSpace.OpenRasterDataset
(setName.Name );


IRasterLayer rasLayer=new RasterLayerClass();


rasLayer.CreateFromDataset(rasterDataset);


IRasterWorkspaceEx:供给创建和打开栅格目次或栅格数据集的办法。


然则IRasterWorkspaceEx,IRasterWorkspace, IRasterWorkspace2都有OpenRasterDataset。IRasterWorkspace经常也可用于打开栅格数据,如: pWorkspaceFactory = new RasterWorkspaceFactoryClass();


            pRasterWorkspace = (IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);


           IRasterDataset pRasterDataset = (IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);


           IRasterLayer pRasterLayer = new RasterLayerClass();


            pRasterLayer.CreateFromDataset(pRasterDataset);

 

 

转自:http://www.cnblogs.com/caodajieup/archive/2011/10/15/2212839.html

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.dwg:Polyline");  
  IFeatureLayer layer=new CadFeatureLayerClass ();
  layer.FeatureClass =polyline;
  //点 
  IFeatureClass point=space.OpenFeatureClass ("107.dwg:Point");
  layer=new CadFeatureLayerClass ();layer.FeatureClass =point;
  //面  
  IFeatureClass polygon=space.OpenFeatureClass ("107.dwg:Polygon");
  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 
ESRI.ArcGIS.Carto.RasterLayerClass();
 pRs=new 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);
  这个也一样奇怪,呵呵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值