很多时候ArcGIS 拓扑分析完成后的拓扑图层需要再次加载到MapControl中,网上又很难找到相关代码片段。在研究了相关ArcObject类和接口后。
1、首先要明确在MDB与GDB中的DataSet数据集的数据加载原理:IFeatureClassContainer;和ITopologyContainer容器接口分别存放对应的要素集和拓扑集。也就是第一步获取对应的数据容器,通过容器获取需要的数据。
2、由于ITopologyContainer中获取到的是ITopology,ITopology不能直接加载到MapControl中,需要通过ITopologyLayer进行转换。PS:ITopologyLayer 继承了ILayer接口。
3、通过ILayer将拓扑分析结果加到MapControl中
分享拓扑图层加载代码:(从GDB中的数据集中加载拓扑图层,MDB )
private void 加载数据ToolStripMenuItem_Click(object sender, EventArgs e)
{
FileGDBWorkspaceFactory fac = new FileGDBWorkspaceFactory();
IWorkspace pWorkspace = fac.OpenFromFile(System.Windows.Forms.Application.StartupPath + "\\test.gdb", 0);
IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
IFeatureDataset pFeatureDataSet = pFeatureWorkspace.OpenFeatureDatase