GIS足迹

用地图装点生活的每个角落。MSN:gisfoot@hotmail.com。QQ交流群:42019368。

« ArcGIS Engine开发中可以利用到的资源VC6.0+ArcGIS 二次开发——简单的读取DATASET中IFeatureClass »
2007-9-25 21:28:17 | 发布:爬山虎 | 分类:二次开发 | 评论:0 | 引用:0 | 浏览:

VC6.0+ArcGIS二次开发——IFeatureClass 和IWorkspace

1、VC6.0+Arcgis Engine二次开发_读取Workspace里的IFeatureClass 

首先,查找Workspace根目录下是否存在IFeatureClass,方法如下:

 

1)用成员函数get_Datasets()获得一枚举变量,如下:

//在当前工作空间中,以查找“esriDTFeatureClass”类型

ipWorkspace->get_Datasets( esriDTFeatureClass,&ipEnumFCls );

 

2)遍历ipEnumFClsipEnumFCls->Next( &ipDT );

 

3)如果ipDT存在 则: ipFeatCls = ipDT

 

接着,查找Workspace子目录中的IFeatureClass,方法如下:

 

1)基本上同上一步,只是参数不同:

//在当前工作空间中,以查找“esriDTFeatureDataset”类型

ipWorkspace->get_Datasets( esriDTFeatureDataset,&ipEnumFCls );

 

2)同上2

 

3)如果ipDT存在,则遍历ipDTipDT->get_Subsets( &ipEnumSubFCls )

 

4)如果ipEnumSubFCls存在,则遍历ipEnumSubFClsipEnumSubFCls->Next( &ipSubDT );

 

5)如果ipSubDT存在,则ipSubFtCls = ipSubDT。此即为子目录下的IFeatureClass

 

 

此方法扩展后,可以通过get_Datasets()方法读取其他很多类型的数据,比如ITable/ITopology等等。

2、VC6.0+Arcgis Engine二次开发_获取IFeatureClass所在的IWorkspace

 

此方法比较简单,但是容易出错。关键在于IFeatureClass即可以在IWorkspace中,也可以存在于IDataset中。

一种比较合理的方式为:

      

              IDatasetPtr ipFtDt(ipFtCls);

              ipFtDt->get_Workspace( &m_ipWs );

 

而不能:

              IFeatureDatasetPtr ipFtDt;

              ipFtCls->get_FeatureDataset( &ipFtDt );

 

              ipFtDt->get_Workspace( &m_ipWs );

申明:本文系原创,如果转载,请注明:转自GIS足迹:www.gisfoot.com

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

最新评论及回复

友情链接

[Top] Powered By Z-Blog 1.8 Devo Build 80201. Theme FormerDays Design By haphic

ICP备案号正在申请。Copyright ©2008 gis足迹. All Rights Reserved.