/// <summary> /// 创建拓扑集成方法 /// </summary> /// <param name="TopoName"></param> /// <param name="pFeatureDS"></param> /// <param name="FeatureClassList"></param> /// <param name="TopoDT"></param> /// <returns></returns> public ITopology2 CreateToplolgy(string TopoName, IFeatureDataset pFeatureDS, List <IFeatureClass> FeatureClassList, DataTable TopoDT) { ISchemaLock pSchemaLock = (ISchemaLock)pFeatureDS; try { pFeatureClassList = FeatureClassList; pSchemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock); //创建拓扑 ITopologyContainer2 pTopoContainer = pFeatureDS as ITopologyContainer2; ITopology2 pTopology = pTopoContainer.CreateTopology(TopoName, pTopoContainer.DefaultClusterTolerance, -1, "") as ITopology2; //添加要素 foreach (IFeatureClass pFeatureClass in FeatureClassList) { pTopology.AddClass(pFeatureClass, 5, 1, 1, false); } //添加规则 for (int i = 0; i < TopoDT.Rows.Count; i++) { string s = TopoDT.Rows[i][0].ToString(); if (TopoDT.Rows[i][2].ToString() == "") { AddTopoRules(pTopology, TopoDT.Rows[i][0].ToString(), TopoDT.Rows[i][1].ToString()); } else { AddTopoRules(pTopology, TopoDT.Rows[i][0].ToString(), TopoDT.Rows[i][1].ToString(), TopoDT.Rows[i][2].ToString()); } } //验证拓扑 IGeoDataset pGeoDataset = pTopology as IGeoDataset; IEnvelope pEnvelope = pGeoDataset.Extent; VaildateTopo(pTopology, pEnvelope); return(pTopology); } catch (COMException COMEx) { MessageBox.Show(COMEx.Message); return(null); } finally { pSchemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock); } }
//确定 private void simpleButton3_Click(object sender, EventArgs e) { try { TopoOperation topoOperation = new TopoOperation(); ITopology2 pTopology = topoOperation.CreateToplolgy(GlobalTopoVaribate.GTopoName, GlobalTopoVaribate.GFeatureDS, GlobalTopoVaribate.GTopoFeatureClassList, GlobalTopoVaribate.GRuleDT); if (pTopology != null) { MessageBox.Show("拓扑创建成功!"); } GlobalTopoVaribate.ClearAllVaribate(); this.Close(); } catch (COMException COMEx) { return; } }