示例#1
0
        /// <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);
            }
        }
示例#2
0
 //确定
 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;
     }
 }