阅读:1837回复:1
创建拓扑(topology)
<P>各位大哥:下面是我在创建拓扑时用的代码,但运行时总是出问题()</P>
<P>IWorkspaceFactory pWSFact = new AccessWorkspaceFactoryClass();</P> <P> IWorkspace pWorkspace = pWSFact.OpenFromFile(fullFileName,0);//打开工作空间</P> <P>/* 下面的是联结数据库用的,我现在用文件,所以注释了 </P> <P> // IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;</P> <P> // IWorkspace pWorkspace = DataBaseConnectClass.getIWorkspace();</P> <P>*/</P> <P> IFeatureWorkspace pFeatureWorkspace = new WorkspaceClass();<BR> pFeatureWorkspace = pWorkspace as IFeatureWorkspace;<BR> <BR> <BR> IDataset pDataset = new FeatureDatasetClass();<BR> pDataset = pFeatureWorkspace.OpenFeatureDataset("GDB_FeatureDataset");//GDB_FeatureDataset为.mdb文件中的一个表格里面存有FeatureDataset数据<BR> <BR> <BR> //IDataset pDataset = pFeatureWorkspace.OpenFeatureClass("WS_GX")//该处也是数据库的<BR> <BR> ITopologyContainer pTopoContainer = pDataset as ITopologyContainer;</P> <P> <BR> ITopology pTopo = new TopologyClass();<BR> pTopo = pTopoContainer.CreateTopology("Topo" ,pTopoContainer.DefaultClusterTolerance ,-1 ,"");//</P> <P> IFeatureClassContainer pFeatClassContainer = pDataset as IFeatureClassContainer;<BR> IFeatureClass pFeatureClass = new FeatureClassClass();<BR> pFeatureClass = pFeatClassContainer.get_ClassByID(3);//get_ClassByName("FeatureInspector");//在该处无论是用ID或Name获取FeatureClass总是出错。下面的程序还没有运行过,如也有错误请指出来<BR> pTopo.AddClass(pFeatureClass,5,1,1,false);</P> <P> ITopologyRule pRule = new TopologyRuleClass();</P> <P> pRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoOverlap;<BR> pRule.OriginClassID = pFeatureClass.ObjectClassID;<BR> pRule.AllOriginSubtypes = true; <BR> pRule.Name = "No Dangles";</P> <P> //Add the rule to the topology<BR> ITopologyRuleContainer pRuleContainer = pTopo as ITopologyRuleContainer;<BR> pRuleContainer.AddRule(pRule);</P> <P> //Create the second rule<BR> pRule = new TopologyRuleClass();<BR> pRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoDangles;<BR> pRule.OriginClassID = pFeatureClass.ObjectClassID;<BR> pRule.AllOriginSubtypes = true;<BR> pRule.Name = "No Overlap" ;</P> <P> if(pRuleContainer.get_CanAddRule(pRule))pRuleContainer.AddRule(pRule);</P> |
|
1楼#
发布于:2006-04-26 13:40
<P><BR> pFeatureClass = pFeatClassContainer.get_ClassByID(3);</P>
<P>//get_ClassByName("FeatureInspector");//在该处无论是用ID或Name获取FeatureClass总是出错。下面的程序还没有运行过,如也有错误请指出来<BR> </P> <P>我觉得最好直接用</P> <P>pFeatureClass = pFeatClassContainer.get_Class(n);//n你自己知道的</P> |
|